# Maintainer: J. Peter Mugaas <jpmugaas@suddenlink.net>

_realname=zopfli
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=1.0.3
pkgrel=3
pkgdesc="A C library to perform very good, but slow, deflate or zlib compression (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clangarm64')
url="https://github.com/google/zopfli"
license=('spdx:Apache-2.0')
msys2_references=(
  'anitya: 6604'
  'archlinux: zopfli'
)
depends=("${MINGW_PACKAGE_PREFIX}-cc-libs")
makedepends=("${MINGW_PACKAGE_PREFIX}-cmake"
             "${MINGW_PACKAGE_PREFIX}-cc")
source=("https://github.com/google/zopfli/archive/${_realname}-${pkgver}.tar.gz"
        "7554e4d34e7000b0595aa606e7d72357cf46ba86.patch"
        "win32-fixes.patch")
sha256sums=('e955a7739f71af37ef3349c4fa141c648e8775bceb2195be07e86f8e638814bd'
            '3a3c002af41a8b066984362216099152ee127f2a31335bc6a3360f96d3a88366'
            '3adb302978fb0c47adf0eeb641b6674add71fd6af9a22497fbeffb991e78dddd')

# Helper macros to help make tasks easier #
apply_patch_with_msg() {
  for _patch in "$@"
  do
    msg2 "Applying $_patch"
    patch -Nbp1 -i "${srcdir}/$_patch"
  done
}

del_file_exists() {
  for _fname in "$@"
  do
    if [ -f $_fname ]; then
      rm -rf $_fname
    fi
  done
}
# =========================================== #


prepare() {
  cd "${srcdir}/zopfli-zopfli-${pkgver}"
  del_file_exists CMakeLists.txt

#  sed -i -e "/^CFLAGS = / s/$/ $CFLAGS/" \
#    -e "/^CXXFLAGS = / s/$/ $CXXFLAGS/" Makefile
  apply_patch_with_msg 7554e4d34e7000b0595aa606e7d72357cf46ba86.patch \
     win32-fixes.patch
}

build() {
  mkdir -p "${srcdir}"/build-${MSYSTEM}-shared && cd "${srcdir}"/build-${MSYSTEM}-shared

  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 \
      -G'MSYS Makefiles' \
      -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
      "${extra_config[@]}" \
      -DBUILD_SHARED_LIBS=ON \
      -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
      ../zopfli-zopfli-${pkgver}
  make

  mkdir -p "${srcdir}"/build-${MSYSTEM}-static && cd "${srcdir}"/build-${MSYSTEM}-static
  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
    ${MINGW_PREFIX}/bin/cmake \
      -G'MSYS Makefiles' \
      -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
      "${extra_config[@]}" \
      -DBUILD_SHARED_LIBS=OFF \
      -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
      ../zopfli-zopfli-${pkgver}
  make
}

package() {
  #shared
  cd "${srcdir}"/build-${MSYSTEM}-shared
  # -- zopfli
  install -Dm755 "zopfli.exe" "${pkgdir}${MINGW_PREFIX}/bin/zopfli.exe"
  install -Dm644 "../zopfli-zopfli-${pkgver}/src/zopfli/zopfli.h" "${pkgdir}${MINGW_PREFIX}/include/zopfli.h"
  install -Dm755 "libzopfli.dll" "${pkgdir}${MINGW_PREFIX}/bin/libzopfli.dll"
  install -Dm644 "libzopfli.dll.a" "${pkgdir}${MINGW_PREFIX}/lib/libzopfli.dll.a"
  # -- zopfipng
  install -Dm755 "zopflipng" "${pkgdir}${MINGW_PREFIX}/bin/zopflipng"

  install -Dm644 "../zopfli-zopfli-${pkgver}/src/zopflipng/zopflipng_lib.h" "${pkgdir}${MINGW_PREFIX}/include/zopflipng_lib.h"

  install -Dm755 "libzopflipng.dll" "${pkgdir}${MINGW_PREFIX}/bin/libzopflipng.dll"
  install -Dm755 "libzopflipng.dll.a" "${pkgdir}${MINGW_PREFIX}/lib/libzopflipng.dll.a"

  #static
  cd "${srcdir}"/build-${MSYSTEM}-static
  #  -- zopfli
  install -Dm644 "libzopfli.a" "${pkgdir}${MINGW_PREFIX}/lib/libzopfli.a"
  install -Dm644 "../zopfli-zopfli-${pkgver}/README" "${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}/README"
  # -- zopfipng
  install -Dm755 "libzopflipng.a" "${pkgdir}${MINGW_PREFIX}/lib/libzopflipng.a"
  install -Dm644 "../zopfli-zopfli-${pkgver}/README.zopflipng" "${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}/README.zopflipng"
}
