190 lines
6.7 KiB
Bash
190 lines
6.7 KiB
Bash
# Template file for 'qt5-webengine'
|
|
pkgname=qt5-webengine
|
|
version=5.15.0
|
|
revision=1
|
|
archs="x86_64* i686* armv[67]* ppc64* aarch64*"
|
|
wrksrc="qtwebengine-everywhere-src-${version}"
|
|
build_style=qmake
|
|
configure_args="--
|
|
-webengine-icu -webengine-ffmpeg -webengine-opus -webengine-webp
|
|
-webengine-pepper-plugins -webengine-printing-and-pdf -webengine-proprietary-codecs
|
|
-webengine-pulseaudio -webengine-spellchecker -webengine-webrtc -webengine-geolocation
|
|
$(vopt_if sndio '-sndio') -webengine-kerberos"
|
|
# Rely on auto detection (fails if forced for cross builds) -webengine-alsa
|
|
hostmakedepends="qt5-qmake gperf ninja qt5-host-tools flex pkg-config
|
|
which perl python protobuf"
|
|
makedepends="qt5-webchannel-devel qt5-location-devel qt5-tools-devel qt5-devel
|
|
qt5-declarative-devel libevent-devel snappy-devel icu-devel ffmpeg-devel
|
|
libwebp-devel opus-devel cups-devel nss-devel minizip-devel libxslt-devel
|
|
libvpx-devel re2-devel libXtst-devel libXcursor-devel libXcomposite-devel
|
|
jsoncpp-devel harfbuzz-devel lcms2-devel protobuf-devel pulseaudio-devel
|
|
libXrandr-devel MesaLib-devel mit-krb5-devel alsa-lib-devel $(vopt_if sndio sndio-devel)"
|
|
short_desc="Cross-platform application and UI framework (QT5) - WebEngine component"
|
|
maintainer="John <me@johnnynator.dev>"
|
|
license="GPL-3.0-or-later, LGPL-3.0-or-later"
|
|
homepage="https://qt.io/"
|
|
distfiles="http://download.qt.io/official_releases/qt/${version%.*}/${version}/submodules/qtwebengine-everywhere-src-${version}.tar.xz"
|
|
checksum=c38e2fda7ed1b7d5a90f26abf231ec0715d78a5bc39a94673d8e39d75f04c5df
|
|
patch_args="-Np1"
|
|
|
|
build_options="sndio"
|
|
|
|
if [ "$CROSS_BUILD" ]; then
|
|
hostmakedepends+=" nss-devel libevent-devel qt5-location-devel
|
|
qt5-declarative-devel"
|
|
fi
|
|
|
|
if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
|
|
makedepends+=" musl-legacy-compat"
|
|
fi
|
|
|
|
if [ "$XBPS_LIBC" = "musl" ]; then
|
|
hostmakedepends+=" musl-legacy-compat"
|
|
fi
|
|
|
|
if [ "$XBPS_WORDSIZE" -eq 32 ]; then
|
|
nodebug=yes # prevent OOM
|
|
fi
|
|
|
|
if [ ! "$XBPS_WORDSIZE" = "$XBPS_TARGET_WORDSIZE" ]; then
|
|
broken="webengine can be built only if word size matches"
|
|
fi
|
|
|
|
if [ "$XBPS_TARGET_ENDIAN" != "le" ]; then
|
|
broken="webengine only supports little endian"
|
|
fi
|
|
|
|
if [ "$XBPS_NO_ATOMIC8" ]; then
|
|
hostmakedepends+=" libatomic-devel"
|
|
fi
|
|
|
|
# ppc64 still needs libatomic here, as does s390x but we don't have that
|
|
case "$XBPS_MACHINE" in
|
|
ppc64*) hostmakedepends+=" libatomic-devel"
|
|
esac
|
|
|
|
if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
|
|
makedepends+=" libatomic-devel"
|
|
fi
|
|
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
ppc64*) makedepends+=" libatomic-devel"
|
|
esac
|
|
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
armv7l*) broken="ERROR at //skia/BUILD.gn:707:11: Undefined identifier.";;
|
|
# configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
|
|
armv6l*) broken="ERROR at //build/toolchain/gcc_toolchain.gni:102:3: Duplicate definition.";;
|
|
esac
|
|
|
|
_bootstrap_gn() {
|
|
# Bootstrap gn (generate ninja)
|
|
echo "Bootstrapping 'gn'"
|
|
cd ${wrksrc}/src/3rdparty/gn
|
|
CFLAGS="$CFLAGS_host" CXXFLAGS="$CXXFLAGS_host" LDFLAGS="$LDFLAGS_host" \
|
|
PKGCONFIG=/usr/bin/pkgconfig PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig" \
|
|
python2 build/gen.py --no-last-commit-position --out-path \
|
|
${wrksrc}/src/3rdparty/gn/out/Release --cc "$CC_host" \
|
|
--cxx "$CXX_host" --ld "$CXX_host" --ar "$AR_host"
|
|
ninja -C out/Release gn
|
|
cd ${wrksrc}
|
|
}
|
|
|
|
_cleanup_wrksrc_leak() {
|
|
if [ -d "${PKGDESTDIR}/usr/lib/cmake" ]; then
|
|
# Replace references to ${wrksrc} in cmake files
|
|
vsed -i ${PKGDESTDIR}/usr/lib/cmake/*/*.cmake \
|
|
-e "s;${wrksrc}/host;/usr/lib/qt5;g" \
|
|
-e "s;devices/void-${XBPS_CROSS_TRIPLET}-g++;linux-g++;g"
|
|
fi
|
|
if [ -d "${PKGDESTDIR}/usr/lib/pkgconfig" ]; then
|
|
# Replace references to ${wrksrc} in pkgconfig files
|
|
vsed -i ${PKGDESTDIR}/usr/lib/pkgconfig/*.pc \
|
|
-e "s;${wrksrc}/host;/usr/lib/qt5;g" \
|
|
-e "s;devices/void-${XBPS_CROSS_TRIPLET}-g++;linux-g++;g"
|
|
fi
|
|
# Remove QMAKE_PRL_BUILD_DIR from hint files for static libraries
|
|
# and replace references to ${wrksrc}
|
|
find ${PKGDESTDIR} -iname "*.prl" -exec sed -i "{}" \
|
|
-e "/^QMAKE_PRL_BUILD_DIR/d" \
|
|
-e "s;-L${wrksrc}/qtbase/lib;-L/usr/lib;g" \;
|
|
# Replace ${wrksrc} in project include files
|
|
find ${PKGDESTDIR} -iname "*.pri" -exec sed -i "{}" \
|
|
-e "s;${wrksrc}/qtbase;/usr/lib/qt5;g" \;
|
|
}
|
|
|
|
post_patch() {
|
|
if [ "$build_option_sndio" ]; then
|
|
mkdir -p ${wrksrc}/src/3rdparty/chromium/media/audio/{sndio,openbsd}
|
|
cp ${FILESDIR}/sndio-files/sndio_*put.* \
|
|
${wrksrc}/src/3rdparty/chromium/media/audio/sndio
|
|
cp ${FILESDIR}/sndio-files/audio_manager_openbsd.* \
|
|
${wrksrc}/src/3rdparty/chromium/media/audio/openbsd
|
|
for f in "${FILESDIR}"/sndio-patches/*.patch; do
|
|
cd src/3rdparty/chromium/
|
|
echo "Applying $f"
|
|
patch -Np0 -i "$f"
|
|
cd "$wrksrc"
|
|
done
|
|
fi
|
|
}
|
|
|
|
pre_configure() {
|
|
export PATH=${PATH/\/builddir\/.xbps-qt5-webengine\/wrappers:/}
|
|
cp ${FILESDIR}/resolv_compat.h ${wrksrc}/src/3rdparty/chromium/net/dns
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
armv5*|armv6*) # Disable "yield" assembler instruction
|
|
vsed -i src/3rdparty/chromium/base/allocator/partition_allocator/spin_lock.cc \
|
|
src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/spin_lock.cc \
|
|
-e 's;"yield";"nop";'
|
|
;;
|
|
esac
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
*-musl) export CXXFLAGS+=" -D_POSIX_THREAD_ATTR_STACKSIZE=2097152";;
|
|
esac
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
mips*) # sgidefs.h is in /usr/include/asm
|
|
for f in \
|
|
qtwebengine/src/3rdparty/chromium/third_party/lss/linux_syscall_support.h \
|
|
qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/common/android/include/asm-mips/fpregdef.h \
|
|
qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/common/android/include/asm-mips/regdef.h \
|
|
qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/common/android/include/asm-mips/asm.h \
|
|
qtwebengine/src/3rdparty/chromium/third_party/tcmalloc/vendor/src/base/linux_syscall_support.h \
|
|
qtwebengine/src/3rdparty/chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h \
|
|
qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h; do
|
|
vsed -i $f -e "s;<sgidefs.h>;<asm/sgidefs.h>;"
|
|
done
|
|
# Assume that RGBA order is correct for big endian CPUs
|
|
vsed -i qtwebengine/src/3rdparty/chromium/skia/config/SkUserConfig.h \
|
|
-e '/#error Read the comment at this location/d'
|
|
;;
|
|
esac
|
|
|
|
if [ "$CROSS_BUILD" ]; then
|
|
_bootstrap_gn
|
|
fi
|
|
}
|
|
|
|
pre_build() {
|
|
export NINJAJOBS=${makejobs}
|
|
}
|
|
|
|
qt5-webengine-devel_package() {
|
|
depends="qt5-devel>=${version} ${sourcepkg}>=${version}_${revision}"
|
|
short_desc+=" - development files"
|
|
pkg_install() {
|
|
vmove usr/include
|
|
vmove usr/lib/cmake
|
|
vmove usr/lib/pkgconfig
|
|
vmove usr/lib/qt5/mkspecs
|
|
#TODO: FIX!!!
|
|
if [ -z "$CROSS_BUILD" ]; then
|
|
vmove usr/lib/qt5/plugins/designer
|
|
fi
|
|
vmove "usr/lib/*.so"
|
|
vmove "usr/lib/*.prl"
|
|
vmove "usr/lib/*.la"
|
|
_cleanup_wrksrc_leak
|
|
}
|
|
}
|