# Maintainer of AUR version: drakkan <nicola.murino at gmail dot com>
pkgname=mingw-w64-clang-aarch64-libffi
pkgver=3.7.1
pkgrel=1
pkgdesc="Portable foreign function interface library (mingw-w64-clang-aarch64)"
arch=(any)
url="http://sourceware.org/libffi"
_url="https://github.com/libffi/libffi"
depends=(mingw-w64-clang-aarch64-crt)
makedepends=(mingw-w64-clang-aarch64-configure)
options=(staticlibs !buildflags !strip)
license=(MIT)
source=(libffi-$pkgver.tar.gz::$_url/archive/refs/tags/v$pkgver.tar.gz)
sha256sums=('df80a3ff1d3421ac2ae0e368575f82f30383f932481ecf2dd1d5f7f88c92f547')
b2sums=('c7527bf092321198065151f12f8651b0ae1266dbea5d3cced9dc164c5e89a1d1d6e4d34649ab6feb574a7756f7628f495a3832b1a4913c12095c95c913443952')

_architectures="aarch64-w64-mingw32"

prepare() {
  cd "${srcdir}/libffi-${pkgver}"
  autoreconf -fiv
  if [[ $pkgname =~ .*-clang-.* ]]; then
    sed -i -e '2iac_cv_c_bigendian=no' configure
  fi
}

build() {
  export USE_COMPILER_WRAPPERS=1
  cd "${srcdir}/libffi-${pkgver}"
  unset LDFLAGS
  for _arch in ${_architectures}; do
    source mingw-clang-env $_arch
    mkdir -p build-${_arch} && pushd build-${_arch}
    local extra_args
    [[ $pkgname =~ .*-clang-.* ]] && extra_args+=--disable-symvers
    ${_arch}-configure \
      --target=${_arch} \
      --enable-pax_emutramp \
      $extra_args
    make
    popd
  done
}

package() {
  export USE_COMPILER_WRAPPERS=1
  for _arch in ${_architectures}; do
    source mingw-clang-env $_arch
    cd "${srcdir}/libffi-${pkgver}/build-${_arch}"
    make DESTDIR="${pkgdir}" install
    rm "$pkgdir/usr/${_arch}/share/info/dir"
    find "$pkgdir/usr/${_arch}" -name '*.exe' -exec $STRIP {} \;
    find "$pkgdir/usr/${_arch}" -name '*.dll' -exec $STRIP --strip-unneeded {} \;
    find "$pkgdir/usr/${_arch}" -name '*.a' -o -name '*.dll' | xargs $STRIP -g
  done
}

# vim:set ts=2 sw=2 et:
