# Maintainer: Jeroen Ooms <jeroen@berkeley.edu>

_realname=aws-sdk-cpp
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=1.11.893
pkgrel=1
pkgdesc="AWS SDK for C++ (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
url="https://github.com/aws/aws-sdk-cpp"
msys2_repository_url='https://github.com/aws/aws-sdk-cpp'
msys2_references=(
  'archlinux: aws-sdk-cpp'
)
license=('spdx:Apache-2.0')
depends=(
  "${MINGW_PACKAGE_PREFIX}-cc-libs"
  "${MINGW_PACKAGE_PREFIX}-aws-c-common"
  "${MINGW_PACKAGE_PREFIX}-aws-c-event-stream"
  "${MINGW_PACKAGE_PREFIX}-aws-crt-cpp"
  "${MINGW_PACKAGE_PREFIX}-zlib"
)
makedepends=(
  "${MINGW_PACKAGE_PREFIX}-cc"
  "${MINGW_PACKAGE_PREFIX}-cmake"
  "${MINGW_PACKAGE_PREFIX}-ninja"
  "${MINGW_PACKAGE_PREFIX}-python"
)
source=("${url}/archive/${pkgver}/${_realname}-${pkgver}.tar.gz"
        "0001-fix-dll-import-libary-folder.patch"
        "0002-include-missing-header.patch"
        "0003-remove-dllimport-attribute-from-default-constructors.patch")
sha256sums=('e544cc1d30b5bc438df6f8ee2447bce49c1ebe0941b059dc704f563fe37aebe8'
            'ffa3b28970cce12ba24856d9245e2581c6cb4da7faf740377e99f6ef84bcffc4'
            '4f63d68068ef67e960bd6d95b146f30d55bd3595188bc4ceb9b8f1f00ae1dd1f'
            'c9203ec62f417223d69b3a39aab8a50dee4a9bd1e75c0a094e94078d7befe215')

apply_patch_with_msg() {
  for _patch in "$@"
  do
    msg2 "Applying $_patch"
    patch -Nbp1 -i "${srcdir}/$_patch"
  done
}

prepare() {
  cd "${_realname}-${pkgver}"
  apply_patch_with_msg \
    0001-fix-dll-import-libary-folder.patch \
    0002-include-missing-header.patch \
    0003-remove-dllimport-attribute-from-default-constructors.patch

  # For clang
  sed -e "s/-fPIC//g" -i cmake/compiler_settings.cmake

  find . -name "*.orig" -exec rm -f {} \;
}

build() {
  declare -a _cmake_opts=(
    -GNinja
    -DCMAKE_INSTALL_PREFIX="${MINGW_PREFIX}"
    -DCMAKE_PREFIX_PATH="${MINGW_PREFIX}"
    -DCMAKE_MODULE_PATH="${MINGW_PREFIX}"/lib/cmake
    -DAWS_SDK_WARNINGS_ARE_ERRORS=OFF
    -DBUILD_ONLY="access-management;config;identity-management;lambda;s3;sts;transfer"
    -DENABLE_UNITY_BUILD=ON
    -DENABLE_TESTING=OFF
    -DBUILD_DEPS=OFF
    -DPYTHON_EXECUTABLE=${MINGW_PREFIX}/bin/python
    -S "${_realname}-${pkgver}"
  )
  if check_option "debug" "n"; then
    _cmake_opts+=("-DCMAKE_BUILD_TYPE=Release")
  else
    _cmake_opts+=("-DCMAKE_BUILD_TYPE=Debug")
  fi

  msg2 "Building static library"

  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
    cmake \
      "${_cmake_opts[@]}" \
      -DBUILD_SHARED_LIBS=OFF \
      -B build-${MSYSTEM}-static

  cmake --build build-${MSYSTEM}-static

  msg2 "Building shared library"

  LDFLAGS+=" -Wl,--export-all-symbols" \
  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
    cmake \
      "${_cmake_opts[@]}" \
      -DBUILD_SHARED_LIBS=ON \
      -B build-${MSYSTEM}-shared

  cmake --build build-${MSYSTEM}-shared
}

package() {
  DESTDIR="${pkgdir}" cmake --install build-${MSYSTEM}-static

  DESTDIR="${pkgdir}" cmake --install build-${MSYSTEM}-shared

  install -Dm644 "${srcdir}/${_realname}-${pkgver}/LICENSE" \
    "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE"
}
