# Maintainer: Nazar Mishturak <nazar m x at gmail dot com>

_realname=mbedtls
pkgbase="mingw-w64-${_realname}"
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=2.26.0
pkgrel=2
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32')
url='https://tls.mbed.org/'
pkgdesc="Portable cryptographic and SSL/TLS library, aka polarssl (mingw-w64)."
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
         "${MINGW_PACKAGE_PREFIX}-libwinpthread")
makedepends=("${MINGW_PACKAGE_PREFIX}-cmake"
             "${MINGW_PACKAGE_PREFIX}-ninja")
license=('Apache')
options=('strip' '!debug' 'staticlibs')
source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/ARMmbed/mbedtls/archive/v${pkgver}.tar.gz"
        'symlink-test.patch'
        'dll-location.patch'
        'enable-features.patch'
        'add-winpthread-library.patch')
sha256sums=('37949e823c7e1f6695fc56858578df355da0770c284b1c1304cfc8b396d539cd'
            '5c5e684de4e6295b838bd4aa3cb560221ca3b86fceab5632db15d97f6aa1e66f'
            'c6ed7ebe8bf21148e3f96eef62d1be1f5aacf3bff926dcf0837f2ff1d8fb5b2a'
            'ca8e32685891e3c167a0cb67ee4525b1889a3f59a0b5b0161deaf2869656a00b'
            '17bcdbcabc75cbf850de8ae4479b2017526684f183de063b817555270fc00fd0')

prepare() {
  cd "${srcdir}/${_realname}-${pkgver}"
  patch -p1 -i "${srcdir}/symlink-test.patch"
  patch -p1 -i "${srcdir}/dll-location.patch"
  patch -p1 -i "${srcdir}/enable-features.patch"
  patch -p1 -i "${srcdir}/add-winpthread-library.patch"
}

build() {
  declare -a _extra_config
  if check_option "debug" "n"; then
    _extra_config+=("-DCMAKE_BUILD_TYPE=Release")
  else
    _extra_config+=("-DCMAKE_BUILD_TYPE=Debug")
  fi

  [[ -d "${srcdir}/build-${MINGW_CHOST}" ]] && rm -rf "${srcdir}/build-${MINGW_CHOST}"
  mkdir -p "${srcdir}/build-${MINGW_CHOST}" && cd "${srcdir}/build-${MINGW_CHOST}"

  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
  ${MINGW_PREFIX}/bin/cmake.exe \
    -G "Ninja" \
    "${_extra_config[@]}" \
    -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
    -DENABLE_PROGRAMS=ON \
    -DENABLE_TESTING=ON \
    -DMBEDTLS_FATAL_WARNINGS=OFF \
    -DUSE_SHARED_MBEDTLS_LIBRARY=ON \
    -DUSE_STATIC_MBEDTLS_LIBRARY=ON \
    ../${_realname}-${pkgver}

  ${MINGW_PREFIX}/bin/cmake.exe --build ./
}

check() {
  cd "${srcdir}/build-${MINGW_CHOST}"
  cp -p library/*.dll tests/ # Tests are dynamically linked
  ${MINGW_PREFIX}/bin/cmake.exe --build ./ --target test || true
}

package () {
  cd "${srcdir}/build-${MINGW_CHOST}"
  DESTDIR=${pkgdir} ${MINGW_PREFIX}/bin/cmake.exe --build ./ --target install

  # rename generic utils
  local _prog _baseprog
  for _prog in "$pkgdir${MINGW_PREFIX}"/bin/*.exe; do
    _baseprog=$(basename "$_prog")
    mv "$_prog" "${_prog//$_baseprog/mbedtls_$_baseprog}"
  done

  install -Dm644 "${srcdir}/${_realname}-${pkgver}/LICENSE" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE"
}
