# Maintainer: Antonio Rojas <arojas@archlinux.org>
# Maintainer: Felix Yan <felixonmars@archlinux.org>

# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
#  - patch for chromium GN
#  - patch for chromium skia
#  - patch for chromium to run blink bindings generation single threaded
#  - patch for chromium aw snap on ARM
#  - restrict job count on v7 - RAM constraints

highmem=1

pkgname=qt6-webengine
_qtver=6.2.4
pkgver=${_qtver/-/}
pkgrel=2
arch=(x86_64)
url='https://www.qt.io'
license=(GPL3 LGPL3 FDL custom)
pkgdesc='Provides support for web applications using the Chromium browser project'
depends=(qt6-webchannel qt6-positioning libxcomposite libxrandr pciutils libxss libxkbfile 
         libevent snappy nss libxslt minizip ffmpeg re2 libvpx libxtst ttf-font)
makedepends=(cmake ninja python2 python gperf jsoncpp qt6-tools pipewire nodejs qt6-websockets)
optdepends=('pipewire: WebRTC desktop sharing under Wayland')
groups=(qt6)
options=(debug)
_pkgfn="${pkgname/6-/}-everywhere-src-$_qtver"
source=(https://download.qt.io/official_releases/qt/${pkgver%.*}/$_qtver/submodules/$_pkgfn.tar.xz
        qt6-webengine-ffmpeg5.patch
        https://download.qt.io/official_releases/qt/6.2/CVE-2022-1096-qtwebengine-6.2.diff
        0001-ARM-toolchain-fixes.patch
        0002-Fix-ARM-skia-ICE.patch
        0003-Run-blink-bindings-generation-single-threaded.patch)
sha256sums=('2e3e96b7a0335b1f683fecf8863ff2930b1bed4df00ce2ff064fa26d0a49e2b1'
            'c50d3019626183e753c53a997dc8a55938847543aa3178d4c51f377be741c693'
            '331117c3aebe6ae35a630e743a3e03018e66347a2a44d39963c383f083763008'
            '3dba0f507498ed078dbe5dc5753c593fa6babb7252be1cb964c404b62bf600ab'
            '20f5f470bdd350e40046eb11cd786730aaa777a2ad6b68d004f7464313792320'
            '005e5c1476b2c6e8edd6ab0637315cf268060090a7d3a89060a339f9ce4c9851')

prepare() {
  patch -d $_pkgfn/src/3rdparty -p1 < qt6-webengine-ffmpeg5.patch # Fix build with ffmpeg 5
  patch -d $_pkgfn -p1 < CVE-2022-1096-qtwebengine-6.2.diff

  cd $_pkgfn

  if [[ $CARCH == "armv7h" ]]; then
    export MAKEFLAGS="-j4"
    export ALARM_NINJA_JOBS="2"
  fi
  cd "$srcdir/$_pkgfn/src/3rdparty"
  patch -p1 -i ${srcdir}/0001-ARM-toolchain-fixes.patch
  patch -p1 -i ${srcdir}/0002-Fix-ARM-skia-ICE.patch
  patch -p1 -i ${srcdir}/0003-Run-blink-bindings-generation-single-threaded.patch
}

build() {
  cmake -B build -S $_pkgfn -G Ninja \
    -DCMAKE_TOOLCHAIN_FILE=/usr/lib/cmake/Qt6/qt.toolchain.cmake \
    -DQT_FEATURE_webengine_system_ffmpeg=ON \
    -DQT_FEATURE_webengine_system_icu=ON \
    -DQT_FEATURE_webengine_system_libevent=ON \
    -DQT_FEATURE_webengine_proprietary_codecs=ON \
    -DQT_FEATURE_webengine_kerberos=ON \
    -DQT_FEATURE_webengine_webrtc_pipewire=ON \
    -DQT_FEATURE_webengine_full_debug_info=ON
  cmake --build build
}

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

  install -Dm644 "$srcdir"/${_pkgfn}/src/3rdparty/chromium/LICENSE "$pkgdir"/usr/share/licenses/${pkgname}/LICENSE.chromium
}