# Maintainer: Alexey Pavlov <alexpux@gmail.com>

_realname=libmariadbclient
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=3.1.12
pkgrel=1
pkgdesc="MariaDB client libraries (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32')
url="https://mariadb.org/"
license=('LGPL')
makedepends=("${MINGW_PACKAGE_PREFIX}-cmake"
             "${MINGW_PACKAGE_PREFIX}-ninja")
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
         "${MINGW_PACKAGE_PREFIX}-curl"
         #"${MINGW_PACKAGE_PREFIX}-openssl"
         "${MINGW_PACKAGE_PREFIX}-zlib")
#optdepends=("${MINGW_PACKAGE_PREFIX}-curl")
options=('!strip' 'staticlibs')
source=(#"https://downloads.mariadb.org/interstitial/connector-c-${pkgver}/source-tgz/mariadb-connector-c-${pkgver}-src.tar.gz"
        http://mirror.mephi.ru/mariadb/connector-c-${pkgver}/mariadb-connector-c-${pkgver}-src.tar.gz{,.asc}
        001-mingw-build.patch
        002-fix-prototype.patch
        003-gcc-fix-use_VA_ARGS.patch
        004-fix-cmake-ifelse.patch)
sha256sums=('2f5ae14708b4813e4ff6857d152c22e6fc0e551c9fa743c1ef81a68e3254fe63'
            'SKIP'
            'a5ef33cae8a5a5b06c5b5686628bb8e9419f6bd2305343c63e952f4da1fa0fac'
            '346695ce8f10c2c426f880240ef7bbe7b8d70c6e58b0cc30483735c2b2d53261'
            'fc08055e5d63e310e2658b15f6e1f00b59f2aad2dec37560c01954fac6af4a6e'
            'f418e0b4d7e1061a4d030c1a33c6c23dab75b47150d760f6a553c1c39b9d1268')
validpgpkeys=("199369E5404BD5FC7D2FE43BCBCB082A1BB943DB") #MariaDB Package Signing Key <package-signing-key@mariadb.org>

prepare() {
  cd ${srcdir}/mariadb-connector-c-${pkgver}-src
  patch -p1 -i ${srcdir}/001-mingw-build.patch
  patch -p1 -i ${srcdir}/002-fix-prototype.patch
  patch -p1 -i ${srcdir}/003-gcc-fix-use_VA_ARGS.patch
  patch -p1 -i ${srcdir}/004-fix-cmake-ifelse.patch
}

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

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

  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
  ${MINGW_PREFIX}/bin/cmake.exe \
    -G "Ninja" \
    -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
    "${_extra_config[@]}" \
    -DWITH_EXTERNAL_ZLIB=ON \
    -DWITH_MYSQLCOMPAT=OFF \
    -DWITH_SSL="SCHANNEL" \
    -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=STATIC \
    -DCLIENT_PLUGIN_DIALOG=STATIC \
    -DCLIENT_PLUGIN_REMOTE_IO=OFF \
    -DCLIENT_PLUGIN_PVIO_NPIPE=STATIC \
    -DCLIENT_PLUGIN_PVIO_SHMEM=STATIC \
    -DCLIENT_PLUGIN_CLIENT_ED25519=OFF \
    -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=STATIC \
    -DCLIENT_PLUGIN_SHA256_PASSWORD=STATIC \
    -DCLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD=STATIC \
    -DCLIENT_PLUGIN_MYSQL_OLD_PASSWORD=STATIC \
    ../mariadb-connector-c-${pkgver}-src

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

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

  ln -s "${pkgdir}${MINGW_PREFIX}"/include/mariadb "${pkgdir}${MINGW_PREFIX}"/include/mysql

  if [ "${CARCH}" = "i686" ]; then
    rm -f ${pkgdir}${MINGW_PREFIX}/lib/libmariadb.dll.a
    ${MINGW_PREFIX}/bin/gendef -a ${pkgdir}${MINGW_PREFIX}/bin/libmariadb.dll
    ${MINGW_PREFIX}/bin/dlltool -k -d libmariadb.def -l ${pkgdir}${MINGW_PREFIX}/lib/libmariadb.dll.a
  fi

  cp "${pkgdir}${MINGW_PREFIX}"/lib/{libmariadb,libmysqlclient}.dll.a
  cp "${pkgdir}${MINGW_PREFIX}"/lib/{libmariadb,libmysqlclient_r}.dll.a
  cp "${pkgdir}${MINGW_PREFIX}"/lib/{libmariadbclient,libmysqlclient}.a
  cp "${pkgdir}${MINGW_PREFIX}"/lib/{libmariadbclient,libmysqlclient_r}.a

  local _PRE_WIN="$(cygpath -m ${MINGW_PREFIX})"

  for pcfile in  "${pkgdir}${MINGW_PREFIX}"/lib/pkgconfig/*.pc; do
    sed -s "s|${_PRE_WIN}|${MINGW_PREFIX}|g" -i "${pcfile}"
  done
}
