# Maintainer: Alexey Pavlov <alexpux@gmail.com>
# Contributor: Renato Silva <br.renatosilva@gmail.com>
# Contributor: Zach Bacon <11doctorwhocanada@gmail.com>
# Contributor: Ray Donnelly <mingw.android@gmail.com>
# Contributor: Tim Stahlhut <stahta01@gmail.com>

_realname=wxWidgets
_wx_basever=3.0
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
provides=("${MINGW_PACKAGE_PREFIX}-wxmsw${_wx_basever}")
pkgbase=mingw-w64-${_realname}
pkgver=${_wx_basever}.5.1
pkgrel=3
pkgdesc="A C++ library that lets developers create applications for Windows, Linux and UNIX (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32')
license=("custom:wxWindows")
url="https://www.wxwidgets.org/"
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
         "${MINGW_PACKAGE_PREFIX}-expat"
         "${MINGW_PACKAGE_PREFIX}-libjpeg-turbo"
         "${MINGW_PACKAGE_PREFIX}-libpng"
         "${MINGW_PACKAGE_PREFIX}-libtiff"
         "${MINGW_PACKAGE_PREFIX}-xz"
         "${MINGW_PACKAGE_PREFIX}-zlib"
        )
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc"
             "${MINGW_PACKAGE_PREFIX}-python")
checkdepends=("${MINGW_PACKAGE_PREFIX}-cppunit")
options=('strip' 'staticlibs' 'buildflags')
source=(https://github.com/wxWidgets/wxWidgets/releases/download/v${pkgver}/wxWidgets-${pkgver}.tar.bz2
        "001-wxWidgets-3.0.2-relocate-prefix-in-bin-wx-config.patch"
        "002-wxWidgets-3.0.2-relax-abi-compatibility-gcc.patch"
        "003-wxWidgets-3.0.2-fix-access-sample.patch"
        "004-wxWidgets-3.0-clang-windows-link.patch")
sha256sums=('440f6e73cf5afb2cbf9af10cec8da6cdd3d3998d527598a53db87099524ac807'
            '7c3b8f6ba275a448a5e82d64c4914acd5aefb8bbb952389688f3e7167a787c56'
            '3138f7b84bf988892f62167afc6fa640ac154b629b243d86413f7c811e508713'
            'b8684dca94b288a023a8a3d55ad56bce87570576ead71670a237d909ff1c3625'
            'b8b49b1df4a7c53d72c7c117606ac9dc44589da474ca58f0806b107469f33dcb')

prepare() {
  cd "${srcdir}"/${_realname}-${pkgver}

  patch -p1 -i "${srcdir}"/001-wxWidgets-3.0.2-relocate-prefix-in-bin-wx-config.patch
  patch -p1 -i "${srcdir}"/002-wxWidgets-3.0.2-relax-abi-compatibility-gcc.patch
  patch -p1 -i "${srcdir}"/003-wxWidgets-3.0.2-fix-access-sample.patch
  # squashed upstream commits
  # https://github.com/wxWidgets/wxWidgets/commit/c0f2f3801150ea9c6640f3fdced1d9120938f0d7
  # and
  # https://github.com/wxWidgets/wxWidgets/commit/e8a7bae0a750bcb5d8aadc45629d2c9adaf2106c
  patch -p1 -i "${srcdir}"/004-wxWidgets-3.0-clang-windows-link.patch
}

#check() {
  #cd "${srcdir}"/build-${CARCH}/samples && make
  #cd "${srcdir}"/build-${CARCH}-static/samples && make

  #cd "${srcdir}"/build-${CARCH}/tests && make || true
  #cd "${srcdir}"/build-${CARCH}-static/tests && make || true
#}

build() {
  #CXXFLAGS+=" -std=gnu++11"
  [[ -d "${srcdir}"/build-${CARCH} ]] && rm -rf "${srcdir}"/build-${CARCH}
  mkdir -p "${srcdir}"/build-${CARCH} && cd "${srcdir}"/build-${CARCH}

  # Hack for clang32 in CI
  if [[ -n "${CI}" && "${MSYSTEM}" == "CLANG32" ]]; then
    unset MAKEFLAGS
  fi

  ../${_realname}-${pkgver}/configure \
    --prefix=${MINGW_PREFIX} \
    --host=${MINGW_CHOST} \
    --target=${MINGW_CHOST} \
    --build=${MINGW_CHOST} \
    --enable-shared \
    --enable-iniconf \
    --enable-iff \
    --enable-permissive \
    --enable-unicode \
    --enable-graphics_ctx \
    --enable-accessibility \
    --disable-mediactrl \
    --disable-monolithic \
    --disable-mslu \
    --disable-precomp-headers \
    --with-msw \
    --with-opengl \
    --with-libpng=sys \
    --with-libjpeg=sys \
    --with-libtiff=sys \
    --with-zlib=sys \
    --with-expat=sys \
    --with-regex=builtin

  make #VERBOSE=1

  #CXXFLAGS+=" -std=gnu++11"
  [[ -d "${srcdir}"/build-${CARCH}-static ]] && rm -rf "${srcdir}"/build-${CARCH}-static
  mkdir -p "${srcdir}"/build-${CARCH}-static && cd "${srcdir}"/build-${CARCH}-static

  ../${_realname}-${pkgver}/configure \
    --prefix=${MINGW_PREFIX} \
    --host=${MINGW_CHOST} \
    --target=${MINGW_CHOST} \
    --build=${MINGW_CHOST} \
    --enable-static \
    --disable-shared \
    --enable-iniconf \
    --enable-iff \
    --enable-permissive \
    --enable-unicode \
    --enable-graphics_ctx \
    --enable-accessibility \
    --disable-mediactrl \
    --disable-monolithic \
    --disable-mslu \
    --disable-precomp-headers \
    --with-msw \
    --with-opengl \
    --with-libpng=builtin \
    --with-libjpeg=builtin \
    --with-libtiff=builtin \
    --with-zlib=builtin \
    --with-expat=builtin \
    --with-regex=builtin

  make #VERBOSE=1
}

package() {
  cd "${srcdir}"/build-${CARCH}-static
  make DESTDIR="${pkgdir}" install
  mv ${pkgdir}${MINGW_PREFIX}/bin/wx-config{,-static}

  cd "${srcdir}"/build-${CARCH}
  make DESTDIR="${pkgdir}" install

  mv ${pkgdir}${MINGW_PREFIX}/lib/*.dll ${pkgdir}${MINGW_PREFIX}/bin

  # Add missing file with exe extension (Likely bug in wxWidgets makefile)
  cp -f ${pkgdir}${MINGW_PREFIX}/bin/wxrc-${_wx_basever} ${pkgdir}${MINGW_PREFIX}/bin/wxrc-${_wx_basever}.exe

  # License files
  cd "${srcdir}"/${_realname}-${pkgver}/docs
  install -Dm644 preamble.txt "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/preamble.txt"
  install -Dm644 licence.txt  "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/licence.txt"
  install -Dm644 licendoc.txt "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/licendoc.txt"
  install -Dm644 lgpl.txt     "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/lgpl.txt"
  install -Dm644 gpl.txt      "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/gpl.txt"
  install -Dm644 xserver.txt  "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/xserver.txt"
}
