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

_realname=FreeImage
pkgbase=mingw-w64-freeimage
pkgname="${MINGW_PACKAGE_PREFIX}-freeimage"
provides=("${MINGW_PACKAGE_PREFIX}-${_realname}")
conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}")
replaces=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=3.18.0
pkgrel=2
pkgdesc="Library project for developers who would like to support popular graphics image formats (mingw-w64)"
arch=('any')
license=('GPL' 'custom:FIPL')
url="https://freeimage.sourceforge.io/"
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
         "${MINGW_PACKAGE_PREFIX}-jxrlib"
         "${MINGW_PACKAGE_PREFIX}-libjpeg-turbo"
         "${MINGW_PACKAGE_PREFIX}-libpng"
         "${MINGW_PACKAGE_PREFIX}-libtiff"
         "${MINGW_PACKAGE_PREFIX}-libraw"
         "${MINGW_PACKAGE_PREFIX}-libwebp"
         "${MINGW_PACKAGE_PREFIX}-openjpeg2"
         "${MINGW_PACKAGE_PREFIX}-openexr")
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc"
             "${MINGW_PACKAGE_PREFIX}-iconv"
             "${MINGW_PACKAGE_PREFIX}-pkg-config"
             "dos2unix" "make")
options=('strip' 'staticlibs' '!buildflags')
source=("https://downloads.sourceforge.net/sourceforge/freeimage/${_realname}${pkgver//./}.zip"
        'FreeImage-3.17.0_mingw-makefiles.patch'
        'FreeImage-3.18.0_unbundle.patch')
sha256sums=('f41379682f9ada94ea7b34fe86bf9ee00935a3147be41b6569c9605a53e438fd'
            'df3845a61b45fdb0426c4466e48e2478e63effb721cb0b1f2521952390c57290'
            '029960951b743bbf78557d78cd3ac5c417146b169f65aaf9fc2c7a914a87611b')

prepare() {
  cd ${srcdir}/${_realname}

  patch -p1 -i ${srcdir}/FreeImage-3.18.0_unbundle.patch
  patch -p1 -i ${srcdir}/FreeImage-3.17.0_mingw-makefiles.patch

  # remove all included libs to make sure these don't get used during compile
  rm -r Source/Lib* Source/ZLib Source/OpenEXR

  # clear files which cannot be built due to dependencies on private headers
  # (see also unbundle patch)
  > Source/FreeImage/PluginG3.cpp
  > Source/FreeImageToolkit/JPEGTransform.cpp

  # sanitize encodings / line endings
  for file in `find . -type f -name '*.c' -or -name '*.cpp' -or -name '*.h' -or -name '*.txt' -or -name Makefile`; do
    ${MINGW_PREFIX}/bin/iconv -f ISO-8859-15 -t UTF-8 ${file} > ${file}.new && \
    sed -i 's|\r||g' ${file}.new && \
    touch -r ${file} ${file}.new && mv ${file}.new ${file}
  done

  #cp -f ${srcdir}/Makefile.mingw-w64 ${srcdir}/FreeImage/Makefile.mingw-w64

  # Generate source list
  sh ./gensrclist.sh
  sh ./genfipsrclist.sh
}

build() {
  cd ${srcdir}/${_realname}

  mkdir -p ${srcdir}/build-${CARCH}
  lndir ${srcdir}/FreeImage ${srcdir}/build-${CARCH}

  plain "Build shared version..."
  cd ${srcdir}/build-${CARCH}
  make \
    MINGW_TARGET=${MINGW_CHOST} \
    -f Makefile.gnu

  make \
    MINGW_TARGET=${MINGW_CHOST} \
    -f Makefile.fip
}

package() {
  install -d "${pkgdir}${MINGW_PREFIX}"/lib
  install -d "${pkgdir}${MINGW_PREFIX}"/bin
  install -d "${pkgdir}${MINGW_PREFIX}"/include
  install -d "${pkgdir}${MINGW_PREFIX}"/share/doc/FreeImage

  cd ${srcdir}/build-${CARCH}
  install -m755 Dist/libfreeimage-*.dll "${pkgdir}${MINGW_PREFIX}"/bin/
  install -m644 Dist/libfreeimage.dll.a "${pkgdir}${MINGW_PREFIX}"/lib/
  install -m755 Dist/libfreeimageplus-*.dll "${pkgdir}${MINGW_PREFIX}"/bin/
  install -m644 Dist/libfreeimageplus.dll.a "${pkgdir}${MINGW_PREFIX}"/lib/
  install -m644 Dist/FreeImage.h "${pkgdir}${MINGW_PREFIX}"/include/
  install -m644 Dist/FreeImagePlus.h "${pkgdir}${MINGW_PREFIX}"/include/

  install -m644 Whatsnew.txt "${pkgdir}${MINGW_PREFIX}"/share/doc/FreeImage/
  install -m644 license-fi.txt "${pkgdir}${MINGW_PREFIX}"/share/doc/FreeImage/
  install -m644 license-gplv2.txt "${pkgdir}${MINGW_PREFIX}"/share/doc/FreeImage/
  install -m644 license-gplv3.txt "${pkgdir}${MINGW_PREFIX}"/share/doc/FreeImage/

  install -m644 Dist/libfreeimage.a "${pkgdir}${MINGW_PREFIX}"/lib/
  install -m644 Dist/libfreeimageplus.a "${pkgdir}${MINGW_PREFIX}"/lib/
}
