# Maintainer: Alexey Pavlov <Alexpux@gmail.com>
# Contributor: Martell Malone <martellmalone@gmail.com>
# Contributor: Renato Silva <br.renatosilva@gmail.com>
# Contributor: Ray Donnelly <mingw.android@gmail.com>

_external_minizip=yes
_realname=zlib
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=1.2.12
pkgrel=1
pkgdesc="Compression library implementing the deflate compression method found in gzip and PKZIP (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64')
license=(ZLIB)
url="https://www.zlib.net/"
depends=($([[ "$_external_minizip" != "yes" ]] && echo "${MINGW_PACKAGE_PREFIX}-bzip2"))
makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools")
options=('staticlibs')
source=("https://zlib.net/current/${_realname}-${pkgver}.tar.gz"
        01-zlib-1.2.11-1-buildsys.mingw.patch
        03-dont-put-sodir-into-L.mingw.patch
        04-fix-largefile-support.patch
        "https://patch-diff.githubusercontent.com/raw/madler/zlib/pull/607.patch"
        06-add-64bit-functions-and-fix-typos.patch
        07-Add-no-undefined-to-link-to-enable-build-shared-vers.patch
        08-Add-bzip2-library-to-pkg-config-file.patch)
sha256sums=('91844808532e5ce316b3c010929493c0244f3d37593afd6de04f71821d5136d9'
            'a2037e1dd1857a18c7b6059628a5c42c9b1122a45187048a44cccd52541b803f'
            '3d039f42194aade91dadf4174f55fd6db349fd8044db93875bed1042dcfe1f31'
            '4d8ebda55b95d19cd7c467c486d4c42d2bad6db9ff5dca361f6d8c24120e5f30'
            'f35eb05334a4f8d7b40b6c5610a6369f654863b5fa1a19c2507888f918025238'
            '6677eff383727cef5f6d142892fd1c78b5012e080dcede3d0651f96e9330c4e6'
            'fb83292f494f649ea7f1835aa4abea61acc593d7f90625741d42cd99cac0e075'
            '0be98a7e660e7c068856f08b9e92d6c73a6b0d88c3e29a9716140b147f7c23c5')

prepare() {
  cd ${srcdir}/${_realname}-${pkgver}
  grep -A 24 '^  Copyright' zlib.h > LICENSE

  patch -p1 -i ${srcdir}/01-zlib-1.2.11-1-buildsys.mingw.patch
  patch -p2 -i ${srcdir}/03-dont-put-sodir-into-L.mingw.patch
  patch -p1 -i ${srcdir}/04-fix-largefile-support.patch
  patch -p1 -i ${srcdir}/607.patch
  if [ "${_external_minizip}" != "yes" ]; then
    patch -p2 -i ${srcdir}/06-add-64bit-functions-and-fix-typos.patch
    cd ${srcdir}/${_realname}-${pkgver}/contrib/minizip
    patch -p1 -i ${srcdir}/07-Add-no-undefined-to-link-to-enable-build-shared-vers.patch
    patch -p1 -i ${srcdir}/08-Add-bzip2-library-to-pkg-config-file.patch
    autoreconf -fi
  fi
}

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

  CHOST=${MINGW_CHOST} \
  ../${_realname}-${pkgver}/configure \
    --prefix=${MINGW_PREFIX} \
    --shared

  make

  # build minizip
  if [ "${_external_minizip}" != "yes" ]; then
    [[ -d "${srcdir}/build-mz-${MSYSTEM}" ]] && rm -rf "${srcdir}/build-mz-${MSYSTEM}"
    mkdir -p "${srcdir}/build-mz-${MSYSTEM}" && cd "${srcdir}/build-mz-${MSYSTEM}"
    CFLAGS+=" -DHAVE_BZIP2"
    ../${_realname}-${pkgver}/contrib/minizip/configure \
      --prefix=${MINGW_PREFIX} \
      --build=${MINGW_CHOST} \
      --host=${MINGW_CHOST} \
      --target=${MINGW_CHOST} \
      --enable-demos \
      LIBS="-lbz2"
    make
  fi
}

check() {
  cd "${srcdir}/build-${MSYSTEM}"
  make test
}

package() {
  cd "${srcdir}/build-${MSYSTEM}"
  make DESTDIR="${pkgdir}" install
  install -Dm644 "${srcdir}/${_realname}-${pkgver}/LICENSE" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE"

  # install minizip
  if [ "${_external_minizip}" != "yes" ]; then
    cd cd "${srcdir}/build-mz-${MSYSTEM}"
    make DESTDIR="${pkgdir}" install
  fi
}
