xref: /OK3568_Linux_fs/yocto/poky/meta/recipes-sato/webkit/webkitgtk_2.36.8.bb (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunSUMMARY = "WebKit web rendering engine for the GTK+ platform"
2*4882a593SmuzhiyunHOMEPAGE = "https://www.webkitgtk.org/"
3*4882a593SmuzhiyunBUGTRACKER = "https://bugs.webkit.org/"
4*4882a593Smuzhiyun
5*4882a593SmuzhiyunLICENSE = "BSD-2-Clause & LGPL-2.0-or-later"
6*4882a593SmuzhiyunLIC_FILES_CHKSUM = "file://Source/JavaScriptCore/COPYING.LIB;md5=d0c6d6397a5d84286dda758da57bd691 \
7*4882a593Smuzhiyun                    file://Source/WebCore/LICENSE-APPLE;md5=4646f90082c40bcf298c285f8bab0b12 \
8*4882a593Smuzhiyun                    file://Source/WebCore/LICENSE-LGPL-2;md5=36357ffde2b64ae177b2494445b79d21 \
9*4882a593Smuzhiyun                    file://Source/WebCore/LICENSE-LGPL-2.1;md5=a778a33ef338abbaf8b8a7c36b6eec80 \
10*4882a593Smuzhiyun                    "
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunSRC_URI = "https://www.webkitgtk.org/releases/${BP}.tar.xz \
13*4882a593Smuzhiyun           file://0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch \
14*4882a593Smuzhiyun           file://0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch \
15*4882a593Smuzhiyun           file://0001-Fix-build-without-opengl-or-es.patch \
16*4882a593Smuzhiyun           file://reproducibility.patch \
17*4882a593Smuzhiyun           file://0001-When-building-introspection-files-do-not-quote-CFLAG.patch \
18*4882a593Smuzhiyun           "
19*4882a593SmuzhiyunSRC_URI[sha256sum] = "0ad9fb6bf28308fe3889faf184bd179d13ac1b46835d2136edbab2c133d00437"
20*4882a593Smuzhiyun
21*4882a593Smuzhiyuninherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gtk-doc
22*4882a593Smuzhiyun
23*4882a593SmuzhiyunANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
24*4882a593SmuzhiyunREQUIRED_DISTRO_FEATURES = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'opengl', '', d)}"
25*4882a593Smuzhiyun
26*4882a593SmuzhiyunCVE_PRODUCT = "webkitgtk webkitgtk\+"
27*4882a593Smuzhiyun
28*4882a593SmuzhiyunDEPENDS = " \
29*4882a593Smuzhiyun          ruby-native \
30*4882a593Smuzhiyun          gperf-native \
31*4882a593Smuzhiyun          cairo \
32*4882a593Smuzhiyun          harfbuzz \
33*4882a593Smuzhiyun          jpeg \
34*4882a593Smuzhiyun          atk \
35*4882a593Smuzhiyun          libwebp \
36*4882a593Smuzhiyun          gtk+3 \
37*4882a593Smuzhiyun          libxslt \
38*4882a593Smuzhiyun          libtasn1 \
39*4882a593Smuzhiyun          libnotify \
40*4882a593Smuzhiyun          gstreamer1.0 \
41*4882a593Smuzhiyun          gstreamer1.0-plugins-base \
42*4882a593Smuzhiyun          "
43*4882a593Smuzhiyun
44*4882a593SmuzhiyunPACKAGECONFIG_SOUP ?= "soup2"
45*4882a593SmuzhiyunPACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd wayland x11', d)} \
46*4882a593Smuzhiyun                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'webgl opengl', '', d)} \
47*4882a593Smuzhiyun                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', 'webgl gles2', d)} \
48*4882a593Smuzhiyun                   ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl-or-es', '', d)} \
49*4882a593Smuzhiyun                   enchant \
50*4882a593Smuzhiyun                   libsecret \
51*4882a593Smuzhiyun                   ${PACKAGECONFIG_SOUP} \
52*4882a593Smuzhiyun                  "
53*4882a593Smuzhiyun
54*4882a593SmuzhiyunPACKAGECONFIG[wayland] = "-DENABLE_WAYLAND_TARGET=ON,-DENABLE_WAYLAND_TARGET=OFF,wayland libwpe wpebackend-fdo wayland-native"
55*4882a593SmuzhiyunPACKAGECONFIG[angle] = "-DUSE_ANGLE_WEBGL=ON,-DUSE_ANGLE_WEBGL=OFF"
56*4882a593SmuzhiyunPACKAGECONFIG[x11] = "-DENABLE_X11_TARGET=ON,-DENABLE_X11_TARGET=OFF,virtual/libx11 libxcomposite libxdamage libxrender libxt"
57*4882a593SmuzhiyunPACKAGECONFIG[geoclue] = "-DENABLE_GEOLOCATION=ON,-DENABLE_GEOLOCATION=OFF,geoclue"
58*4882a593SmuzhiyunPACKAGECONFIG[enchant] = "-DENABLE_SPELLCHECK=ON,-DENABLE_SPELLCHECK=OFF,enchant2"
59*4882a593SmuzhiyunPACKAGECONFIG[gles2] = "-DENABLE_GLES2=ON,-DENABLE_GLES2=OFF,virtual/libgles2"
60*4882a593SmuzhiyunPACKAGECONFIG[webgl] = "-DENABLE_WEBGL=ON,-DENABLE_WEBGL=OFF,virtual/egl"
61*4882a593SmuzhiyunPACKAGECONFIG[opengl] = "-DENABLE_GRAPHICS_CONTEXT_GL=ON,-DENABLE_GRAPHICS_CONTEXT_GL=OFF,virtual/egl"
62*4882a593SmuzhiyunPACKAGECONFIG[opengl-or-es] = "-DUSE_OPENGL_OR_ES=ON,-DUSE_OPENGL_OR_ES=OFF"
63*4882a593SmuzhiyunPACKAGECONFIG[libsecret] = "-DUSE_LIBSECRET=ON,-DUSE_LIBSECRET=OFF,libsecret"
64*4882a593SmuzhiyunPACKAGECONFIG[libhyphen] = "-DUSE_LIBHYPHEN=ON,-DUSE_LIBHYPHEN=OFF,libhyphen"
65*4882a593SmuzhiyunPACKAGECONFIG[woff2] = "-DUSE_WOFF2=ON,-DUSE_WOFF2=OFF,woff2"
66*4882a593SmuzhiyunPACKAGECONFIG[openjpeg] = "-DUSE_OPENJPEG=ON,-DUSE_OPENJPEG=OFF,openjpeg"
67*4882a593SmuzhiyunPACKAGECONFIG[systemd] = "-DUSE_SYSTEMD=ON,-DUSE_SYSTEMD=off,systemd"
68*4882a593SmuzhiyunPACKAGECONFIG[reduce-size] = "-DCMAKE_BUILD_TYPE=MinSizeRel,-DCMAKE_BUILD_TYPE=Release,,"
69*4882a593SmuzhiyunPACKAGECONFIG[lcms] = "-DUSE_LCMS=ON,-DUSE_LCMS=OFF,lcms"
70*4882a593SmuzhiyunPACKAGECONFIG[soup2] = "-DUSE_SOUP2=ON,-DUSE_SOUP2=OFF,libsoup-2.4,,,soup3"
71*4882a593SmuzhiyunPACKAGECONFIG[soup3] = ",,libsoup,,,soup2"
72*4882a593SmuzhiyunPACKAGECONFIG[journald] = "-DENABLE_JOURNALD_LOG=ON,-DENABLE_JOURNALD_LOG=OFF,systemd"
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun# webkitgtk is full of /usr/bin/env python, particular for generating docs
75*4882a593Smuzhiyundo_configure[postfuncs] += "setup_python_link"
76*4882a593Smuzhiyunsetup_python_link() {
77*4882a593Smuzhiyun	if [ ! -e ${STAGING_BINDIR_NATIVE}/python ]; then
78*4882a593Smuzhiyun		ln -s `which python3` ${STAGING_BINDIR_NATIVE}/python
79*4882a593Smuzhiyun	fi
80*4882a593Smuzhiyun}
81*4882a593Smuzhiyun
82*4882a593SmuzhiyunEXTRA_OECMAKE = " \
83*4882a593Smuzhiyun		-DPORT=GTK \
84*4882a593Smuzhiyun		${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DENABLE_INTROSPECTION=ON', '-DENABLE_INTROSPECTION=OFF', d)} \
85*4882a593Smuzhiyun		${@bb.utils.contains('GTKDOC_ENABLED', 'True', '-DENABLE_GTKDOC=ON', '-DENABLE_GTKDOC=OFF', d)} \
86*4882a593Smuzhiyun		-DENABLE_MINIBROWSER=ON \
87*4882a593Smuzhiyun                -DPYTHON_EXECUTABLE=`which python3` \
88*4882a593Smuzhiyun                -DENABLE_BUBBLEWRAP_SANDBOX=OFF \
89*4882a593Smuzhiyun                -DENABLE_GAMEPAD=OFF \
90*4882a593Smuzhiyun		"
91*4882a593Smuzhiyun
92*4882a593Smuzhiyun# Javascript JIT is not supported on ARC
93*4882a593SmuzhiyunEXTRA_OECMAKE:append:arc = " -DENABLE_JIT=OFF "
94*4882a593Smuzhiyun# By default 25-bit "medium" calls are used on ARC
95*4882a593Smuzhiyun# which is not enough for binaries larger than 32 MiB
96*4882a593SmuzhiyunCFLAGS:append:arc = " -mlong-calls"
97*4882a593SmuzhiyunCXXFLAGS:append:arc = " -mlong-calls"
98*4882a593Smuzhiyun
99*4882a593Smuzhiyun# Needed for non-mesa graphics stacks when x11 is disabled
100*4882a593SmuzhiyunCXXFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_NO_X11=1', d)}"
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun# Javascript JIT is not supported on powerpc
103*4882a593SmuzhiyunEXTRA_OECMAKE:append:powerpc = " -DENABLE_JIT=OFF "
104*4882a593SmuzhiyunEXTRA_OECMAKE:append:powerpc64 = " -DENABLE_JIT=OFF "
105*4882a593Smuzhiyun
106*4882a593Smuzhiyun# ARM JIT code does not build on ARMv4/5/6 anymore
107*4882a593SmuzhiyunEXTRA_OECMAKE:append:armv5 = " -DENABLE_JIT=OFF "
108*4882a593SmuzhiyunEXTRA_OECMAKE:append:armv6 = " -DENABLE_JIT=OFF "
109*4882a593SmuzhiyunEXTRA_OECMAKE:append:armv4 = " -DENABLE_JIT=OFF "
110*4882a593Smuzhiyun
111*4882a593SmuzhiyunEXTRA_OECMAKE:append:mipsarch = " -DUSE_LD_GOLD=OFF "
112*4882a593SmuzhiyunEXTRA_OECMAKE:append:powerpc = " -DUSE_LD_GOLD=OFF "
113*4882a593Smuzhiyun
114*4882a593Smuzhiyun# JIT and gold linker does not work on RISCV
115*4882a593SmuzhiyunEXTRA_OECMAKE:append:riscv32 = " -DUSE_LD_GOLD=OFF -DENABLE_JIT=OFF"
116*4882a593SmuzhiyunEXTRA_OECMAKE:append:riscv64 = " -DUSE_LD_GOLD=OFF -DENABLE_JIT=OFF"
117*4882a593Smuzhiyun
118*4882a593Smuzhiyun# JIT not supported on MIPS either
119*4882a593SmuzhiyunEXTRA_OECMAKE:append:mipsarch = " -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON "
120*4882a593Smuzhiyun
121*4882a593Smuzhiyun# JIT not supported on X32
122*4882a593Smuzhiyun# An attempt was made to upstream JIT support for x32 in
123*4882a593Smuzhiyun# https://bugs.webkit.org/show_bug.cgi?id=100450, but this was closed as
124*4882a593Smuzhiyun# unresolved due to limited X32 adoption.
125*4882a593SmuzhiyunEXTRA_OECMAKE:append:x86-x32 = " -DENABLE_JIT=OFF "
126*4882a593Smuzhiyun
127*4882a593SmuzhiyunSECURITY_CFLAGS:remove:aarch64 = "-fpie"
128*4882a593SmuzhiyunSECURITY_CFLAGS:append:aarch64 = " -fPIE"
129*4882a593Smuzhiyun
130*4882a593SmuzhiyunFILES:${PN} += "${libdir}/webkit2gtk-4.*/injected-bundle/libwebkit2gtkinjectedbundle.so"
131*4882a593Smuzhiyun
132*4882a593SmuzhiyunRRECOMMENDS:${PN} += "ca-certificates shared-mime-info"
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun# http://errors.yoctoproject.org/Errors/Details/20370/
135*4882a593SmuzhiyunARM_INSTRUCTION_SET:armv4 = "arm"
136*4882a593SmuzhiyunARM_INSTRUCTION_SET:armv5 = "arm"
137*4882a593SmuzhiyunARM_INSTRUCTION_SET:armv6 = "arm"
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun# https://bugzilla.yoctoproject.org/show_bug.cgi?id=9474
140*4882a593Smuzhiyun# https://bugs.webkit.org/show_bug.cgi?id=159880
141*4882a593Smuzhiyun# JSC JIT can build on ARMv7 with -marm, but doesn't work on runtime.
142*4882a593Smuzhiyun# Upstream only tests regularly the JSC JIT on ARMv7 with Thumb2 (-mthumb).
143*4882a593SmuzhiyunARM_INSTRUCTION_SET:armv7a = "thumb"
144*4882a593SmuzhiyunARM_INSTRUCTION_SET:armv7r = "thumb"
145*4882a593SmuzhiyunARM_INSTRUCTION_SET:armv7ve = "thumb"
146*4882a593Smuzhiyun
147*4882a593Smuzhiyun# introspection inside qemu-arm hangs forever on musl/arm builds
148*4882a593Smuzhiyun# therefore disable GI_DATA
149*4882a593SmuzhiyunGI_DATA_ENABLED:libc-musl:armv7a = "False"
150*4882a593SmuzhiyunGI_DATA_ENABLED:libc-musl:armv7ve = "False"
151*4882a593Smuzhiyun
152*4882a593Smuzhiyun# Can't be built with ccache
153*4882a593SmuzhiyunCCACHE_DISABLE = "1"
154*4882a593Smuzhiyun
155*4882a593SmuzhiyunPACKAGE_PREPROCESS_FUNCS += "src_package_preprocess"
156*4882a593Smuzhiyunsrc_package_preprocess () {
157*4882a593Smuzhiyun        # Trim build paths from comments in generated sources to ensure reproducibility
158*4882a593Smuzhiyun        sed -i -e "s,${WORKDIR},,g" \
159*4882a593Smuzhiyun            ${B}/JavaScriptCore/DerivedSources/*.h \
160*4882a593Smuzhiyun            ${B}/JavaScriptCore/DerivedSources/yarr/*.h \
161*4882a593Smuzhiyun            ${B}/JavaScriptCore/PrivateHeaders/JavaScriptCore/*.h \
162*4882a593Smuzhiyun            ${B}/WebKit2Gtk/DerivedSources/webkit2/*.cpp \
163*4882a593Smuzhiyun            ${B}/WebKit2Gtk/DerivedSources/webkit2/*.h
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun}
166*4882a593Smuzhiyun
167