# Maintainer: Alexey Pavlov <alexpux@gmail.com>
# Contributor: Martell Malone <martellmalone@gmail.com>

_realname=headers
_mingw_suff=mingw-w64-cross
pkgbase="${_mingw_suff}-mingwarm64-${_realname}"
_targetpkgs=("${_mingw_suff}-mingwarm64-${_realname}")
pkgname=("${_targetpkgs[@]}")
pkgver=12.0.0dev
pkgrel=3
pkgdesc="MinGW-w64 headers for cross-compiler"
arch=('i686' 'x86_64')
url="https://www.mingw-w64.org/"
msys2_repository_url="https://github.com/Windows-on-ARM-Experiments/mingw-woarm64"
license=('custom')
groups=("${_mingw_suff}-toolchain" "${_mingw_suff}")
makedepends=('git' 'autotools')
options=('!strip' '!libtool' '!emptydirs' '!buildflags')
_commit='41a713605cd1630eec5622b4b16e847c0df65a7f'
source=("mingw-w64"::"git+https://github.com/Windows-on-ARM-Experiments/mingw-woarm64.git#commit=$_commit")
sha256sums=('db619494079c0cc8b27547fdc28496a228060e9c78f374129b5947742bb1d9f7')
msys2_references=(
  'archlinux: mingw-w64-headers'
  'cpe: cpe:/a:mingw-w64:mingw-w64'
)

_build() {
  _target=$1
  unset CC CXX

  if [[ "${_target}" == "x86_64-w64-mingw32ucrt" ]]; then
    _default_msvcrt=ucrt
    _default_win32_winnt=0x603  # Windows 8.1
  elif [[ "${_target}" == "aarch64-w64-mingw32" ]]; then
    _default_msvcrt=ucrt
    _default_win32_winnt=0xA00  # Windows 10
  else
    _default_msvcrt=msvcrt
    _default_win32_winnt=0x601  # Windows 7
  fi

  msg "Configuring ${_target} headers"
  mkdir -p ${srcdir}/headers-${_target} && cd ${srcdir}/headers-${_target}
  ${srcdir}/mingw-w64/mingw-w64-headers/configure \
  --build=${CHOST} \
  --host=${_target} \
  --prefix=/opt/${_target} \
  --enable-sdk=all \
  --with-default-win32-winnt=${_default_win32_winnt} \
  --with-default-msvcrt=${_default_msvcrt}
}

_package() {
  _target=$1
  msg "Installing ${_target} headers"
  cd ${srcdir}/headers-${_target}
  make DESTDIR=${pkgdir} install

  rm ${pkgdir}/opt/${_target}/include/pthread_signal.h
  rm ${pkgdir}/opt/${_target}/include/pthread_time.h
  rm ${pkgdir}/opt/${_target}/include/pthread_unistd.h
}

build() {
  for _pkg in "${_targetpkgs[@]}"; do
    case "$_pkg" in
      "${_mingw_suff}-ucrt64-${_realname}") _build "x86_64-w64-mingw32ucrt" ;;
      "${_mingw_suff}-mingw32-${_realname}") _build "i686-w64-mingw32" ;;
      "${_mingw_suff}-mingw64-${_realname}") _build "x86_64-w64-mingw32" ;;
      "${_mingw_suff}-mingwarm64-${_realname}") _build "aarch64-w64-mingw32" ;;
    esac
  done
}

package_mingw-w64-cross-mingwarm64-headers() {
  conflicts=("${_mingw_suff}-${_realname}<=12.0.0.r0.g819a6ec2e-1")
  _package "aarch64-w64-mingw32"
}
