# Template file for 'webkit2gtk'
pkgname=webkit2gtk
version=2.26.2
revision=1
wrksrc="webkitgtk-${version}"
build_style=cmake
build_helper="gir"
configure_args="-DPORT=GTK -DUSE_LD_GOLD=OFF
 -DCMAKE_CXX_FLAGS_RELEASE=-DNDEBUG
 -DCMAKE_CXX_FLAGS_DEBUG=-DNDEBUG
 -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=-DNDEBUG
 -DCMAKE_C_FLAGS_RELEASE=-DNDEBUG
 -DCMAKE_C_FLAGS_DEBUG=-DNDEBUG
 -DCMAKE_C_FLAGS_RELWITHDEBINFO=-DNDEBUG
 -DCMAKE_LINKER=${XBPS_CROSS_TRIPLET}-gcc
 -DRUBY_VERSION=2.6
 -DRUBY_CONFIG_INCLUDE_DIR=${XBPS_CROSS_BASE}/usr/include/ruby-2.6.0
 -DENABLE_GTKDOC=OFF -DUSE_GSTREAMER_GL=OFF -DUSE_WPE_RENDERER=OFF
 -DENABLE_JIT=$(vopt_if jit ON OFF)
 -DENABLE_C_LOOP=$(vopt_if jit OFF ON)
 -DENABLE_INTROSPECTION=$(vopt_if gir ON OFF)
 -DENABLE_WAYLAND_TARGET=$(vopt_if wayland ON OFF)
 -DENABLE_X11_TARGET=$(vopt_if x11 ON OFF)
 -DENABLE_SAMPLING_PROFILER=$(vopt_if sampling_profiler ON OFF)
 -DENABLE_BUBBLEWRAP_SANDBOX=$(vopt_if bubblewrap ON OFF)"
hostmakedepends="perl python pkg-config gperf flex ruby gettext glib-devel geoclue2
 $(vopt_if wayland wayland-devel)"
makedepends="at-spi2-core-devel libjpeg-turbo-devel libpng-devel
 harfbuzz-devel gst-plugins-base1-devel gst-plugins-bad1-devel sqlite-devel
 libsoup-devel libxslt-devel gnutls-devel icu-devel enchant-devel
 dbus-glib-devel libwebp-devel gtk+-devel gtk+3-devel libgudev-devel
 libsecret-devel ruby-devel geoclue2-devel libnotify-devel hyphen-devel
 woff2-devel freetype-devel libopenjpeg2-devel libatomic-devel
 qt5-devel $(vopt_if x11 libXt-devel)
 $(vopt_if wayland 'MesaLib-devel libxkbcommon-devel wayland-devel wayland-protocols')"
short_desc="GTK+3 port of the WebKit2 browser engine"
maintainer="Enno Boland <gottox@voidlinux.org>"
license="LGPL-2.1-or-later, BSD-2-Clause"
homepage="https://webkitgtk.org/"
distfiles="${homepage}/releases/webkitgtk-${version}.tar.xz"
checksum=6b80f0637a80818559ac8fd50db3b394f41cb61904fb9b3ed65fa51635806512

build_options="gir wayland x11 bubblewrap jit sampling_profiler"
build_options_default="gir wayland x11 bubblewrap"

desc_option_bubblewrap="Enable bubblewrap sandbox"
desc_option_jit="JavaScript JIT (Only some architectures)"
desc_option_sampling_profiler="Sampling profiler support (JIT + glibc only)"

# detection + runtime
if [ "$build_option_bubblewrap" ]; then
	hostmakedepends+=" bubblewrap xdg-dbus-proxy"
	makedepends+=" libseccomp-devel"
	depends+=" bubblewrap xdg-dbus-proxy"
fi

# only a few platform support JIT
case "$XBPS_TARGET_MACHINE" in
	aarch64*|x86_64*|mips*)
		build_options_default+=" jit"
		if [ "$XBPS_TARGET_LIBC" = "glibc" ]; then
			build_options_default+=" sampling_profiler"
		elif [ "$build_option_sampling_profiler" ]; then
			broken="sampling_profiler is only supported on glibc"
		fi
		;;
	i686*)
		# JIT requires SSE2 so disabled by default
		# it's also currently broken
		if [ "$build_option_jit" ]; then
			broken="OffsetExtractor: No magic values found."
		fi
		;;
	*)
		if [ "$build_option_jit" ]; then
			broken="JIT is not supported on ${XBPS_TARGET_MACHINE}"
		fi
		;;
esac

# extra validation
if [ "$build_option_sampling_profiler" -a -z "$build_option_jit" ]; then
	broken="sampling_profiler requires JIT"
fi

pre_configure() {
	# work around large debug symbols on 32-bit hosts
	if [ "$XBPS_WORDSIZE" = "32" ]; then
		export CFLAGS="${CFLAGS/-g/-g1}"
		export CXXFLAGS="${CXXFLAGS/-g/-g1}"
		export LDFLAGS+=" -Wl,--no-keep-memory"
	fi

	# the above is not enough for 32-bit ppc and debug
	case "$XBPS_TARGET_MACHINE" in
		ppc64*) ;;
		ppc*)
			export CFLAGS="${CFLAGS/-O2/-Os}"
			export CXXFLAGS="${CXXFLAGS/-O2/-Os}"
			;;
	esac
}

post_install() {
	vlicense Source/WebCore/LICENSE-APPLE
	vlicense Source/WebCore/LICENSE-LGPL-2.1
	vlicense Source/WebCore/LICENSE-LGPL-2
}

webkit2gtk-devel_package() {
	depends="gtk+3-devel libsoup-devel ${sourcepkg}>=${version}_${revision}"
	short_desc+=" - development files"
	pkg_install() {
		vmove usr/include
		vmove usr/lib/pkgconfig
		if [ "$build_option_gir" ]; then
			vmove usr/share/gir-1.0
		fi
		vmove "usr/lib/*.so"
	}
}
