xref: /OK3568_Linux_fs/yocto/meta-qt5/recipes-qt/qt5/nativesdk-qtbase_git.bb (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunDESCRIPTION = "SDK version of Qt/[X11|Mac|Embedded]"
2*4882a593SmuzhiyunDEPENDS = "nativesdk-zlib qtbase-native"
3*4882a593SmuzhiyunSECTION = "libs"
4*4882a593SmuzhiyunHOMEPAGE = "http://qt-project.org"
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunLICENSE = "GFDL-1.3 & BSD-3-Clause & ( GPL-3.0-only & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0-or-later | LGPL-3.0-only | The-Qt-Company-Commercial )"
7*4882a593SmuzhiyunLIC_FILES_CHKSUM = " \
8*4882a593Smuzhiyun    file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
9*4882a593Smuzhiyun    file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
10*4882a593Smuzhiyun    file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \
11*4882a593Smuzhiyun    file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \
12*4882a593Smuzhiyun    file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \
13*4882a593Smuzhiyun    file://LICENSE.QT-LICENSE-AGREEMENT;md5=c8b6dd132d52c6e5a545df07a4e3e283 \
14*4882a593Smuzhiyun"
15*4882a593Smuzhiyun
16*4882a593SmuzhiyunQT_MODULE = "qtbase"
17*4882a593Smuzhiyun
18*4882a593Smuzhiyuninherit pkgconfig
19*4882a593Smuzhiyun
20*4882a593Smuzhiyunrequire nativesdk-qt5.inc
21*4882a593Smuzhiyunrequire qt5-git.inc
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun# it's already included with newer oe-core, but include it here for dylan
24*4882a593SmuzhiyunFILESEXTRAPATHS =. "${FILE_DIRNAME}/qtbase:"
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun# common for qtbase-native, qtbase-nativesdk and qtbase
27*4882a593Smuzhiyun# Patches from https://github.com/meta-qt5/qtbase/commits/b5.15-shared
28*4882a593Smuzhiyun# 5.15.meta-qt5-shared.4
29*4882a593SmuzhiyunSRC_URI += "\
30*4882a593Smuzhiyun    file://0001-Add-linux-oe-g-platform.patch \
31*4882a593Smuzhiyun    file://0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch \
32*4882a593Smuzhiyun    file://0003-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch \
33*4882a593Smuzhiyun    file://0004-configure-bump-path-length-from-256-to-512-character.patch \
34*4882a593Smuzhiyun    file://0005-Disable-all-unknown-features-instead-of-erroring-out.patch \
35*4882a593Smuzhiyun    file://0006-Pretend-Qt5-wasn-t-found-if-OE_QMAKE_PATH_EXTERNAL_H.patch \
36*4882a593Smuzhiyun    file://0007-Delete-qlonglong-and-qulonglong.patch \
37*4882a593Smuzhiyun    file://0008-Replace-pthread_yield-with-sched_yield.patch \
38*4882a593Smuzhiyun    file://0009-Add-OE-specific-specs-for-clang-compiler.patch \
39*4882a593Smuzhiyun    file://0010-linux-clang-Invert-conditional-for-defining-QT_SOCKL.patch \
40*4882a593Smuzhiyun    file://0011-tst_qlocale-Enable-QT_USE_FENV-only-on-glibc.patch \
41*4882a593Smuzhiyun    file://0012-Disable-ltcg-for-host_build.patch \
42*4882a593Smuzhiyun    file://0013-Qt5GuiConfigExtras.cmake.in-cope-with-variable-path-.patch \
43*4882a593Smuzhiyun    file://0014-corelib-Include-sys-types.h-for-uint32_t.patch \
44*4882a593Smuzhiyun    file://0015-Define-QMAKE_CXX.COMPILER_MACROS-for-clang-on-linux.patch \
45*4882a593Smuzhiyun    file://0016-tst_qpainter-FE_-macros-are-not-defined-for-every-pl.patch \
46*4882a593Smuzhiyun    file://0017-Define-__NR_futex-if-it-does-not-exist.patch \
47*4882a593Smuzhiyun    file://0018-Revert-Fix-workaround-in-pthread-destructor.patch \
48*4882a593Smuzhiyun    file://0019-tst_QPluginLoader-Simplify-creating-a-fake-pointer-i.patch \
49*4882a593Smuzhiyun    file://0021-rcc-Just-dcument-file-name-without-full-path-to-redu.patch \
50*4882a593Smuzhiyun    file://0022-testlib-don-t-track-the-build-or-source-directories.patch \
51*4882a593Smuzhiyun"
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun# common for qtbase-native and nativesdk-qtbase
54*4882a593Smuzhiyun# Patches from https://github.com/meta-qt5/qtbase/commits/b5.15-native
55*4882a593Smuzhiyun# 5.15.meta-qt5-native.4
56*4882a593SmuzhiyunSRC_URI += " \
57*4882a593Smuzhiyun    file://0023-Always-build-uic-and-qvkgen.patch \
58*4882a593Smuzhiyun    file://0024-Avoid-renameeat2-for-native-sdk-builds.patch \
59*4882a593Smuzhiyun"
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun# CMake's toolchain configuration of nativesdk-qtbase
62*4882a593SmuzhiyunSRC_URI += " \
63*4882a593Smuzhiyun    file://OEQt5Toolchain.cmake \
64*4882a593Smuzhiyun"
65*4882a593Smuzhiyun
66*4882a593SmuzhiyunPACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src"
67*4882a593Smuzhiyun
68*4882a593SmuzhiyunFILES:${PN}-dev += " \
69*4882a593Smuzhiyun    ${OE_QMAKE_PATH_ARCHDATA}/mkspecs \
70*4882a593Smuzhiyun    ${OE_QMAKE_PATH_LIBS}/*.prl \
71*4882a593Smuzhiyun"
72*4882a593Smuzhiyun
73*4882a593SmuzhiyunFILES:${PN} += " \
74*4882a593Smuzhiyun    ${SDKPATHNATIVE}/environment-setup.d \
75*4882a593Smuzhiyun    ${OE_QMAKE_PATH_PLUGINS} \
76*4882a593Smuzhiyun    ${OE_QMAKE_PATH_LIBS}/metatypes \
77*4882a593Smuzhiyun"
78*4882a593Smuzhiyun
79*4882a593Smuzhiyun# qttools binaries are placed in a subdir of bin in order to avoid
80*4882a593Smuzhiyun# collisions with qt4. This would trigger debian.bbclass to rename the
81*4882a593Smuzhiyun# package, since it doesn't detect binaries in subdirs. Explicitly
82*4882a593Smuzhiyun# disable package auto-renaming for the tools-package.
83*4882a593SmuzhiyunDEBIAN_NOAUTONAME:${PN} = "1"
84*4882a593Smuzhiyun
85*4882a593SmuzhiyunPACKAGECONFIG ?= ""
86*4882a593SmuzhiyunPACKAGECONFIG[gui] = "-gui -qpa offscreen,-no-gui,"
87*4882a593SmuzhiyunPACKAGECONFIG[imageformats] = "-qt-libpng -qt-libjpeg -gif -ico, -no-libpng -no-libjpeg -no-ico -no-gif,"
88*4882a593SmuzhiyunPACKAGECONFIG[openssl] = "-openssl,-no-openssl,openssl,libssl"
89*4882a593Smuzhiyun
90*4882a593SmuzhiyunQT_CONFIG_FLAGS += " \
91*4882a593Smuzhiyun    -shared \
92*4882a593Smuzhiyun    -silent \
93*4882a593Smuzhiyun    -no-pch \
94*4882a593Smuzhiyun    -pkg-config \
95*4882a593Smuzhiyun    ${PACKAGECONFIG_CONFARGS} \
96*4882a593Smuzhiyun"
97*4882a593Smuzhiyun
98*4882a593Smuzhiyun# qtbase is exception, as these are used as install path for sysroots
99*4882a593SmuzhiyunOE_QMAKE_PATH_HOST_DATA = "${libdir}${QT_DIR_NAME}"
100*4882a593SmuzhiyunOE_QMAKE_PATH_HOST_LIBS = "${libdir}"
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun# for qtbase configuration we need default settings
103*4882a593Smuzhiyun# since we cannot set empty set filename to a not existent file
104*4882a593Smuzhiyundeltask generate_qt_config_file
105*4882a593Smuzhiyun
106*4882a593Smuzhiyundo_configure() {
107*4882a593Smuzhiyun    # Regenerate header files when they are included in source tarball
108*4882a593Smuzhiyun    # Otherwise cmake files don't set PRIVATE_HEADERS correctly
109*4882a593Smuzhiyun    rm -rf ${S}/include
110*4882a593Smuzhiyun    mkdir -p ${S}/.git || true
111*4882a593Smuzhiyun
112*4882a593Smuzhiyun    ${S}/configure -v \
113*4882a593Smuzhiyun        -${QT_EDITION} -confirm-license \
114*4882a593Smuzhiyun        -sysroot ${STAGING_DIR_TARGET} \
115*4882a593Smuzhiyun        -no-gcc-sysroot \
116*4882a593Smuzhiyun        -system-zlib \
117*4882a593Smuzhiyun        -dbus-runtime \
118*4882a593Smuzhiyun        -no-accessibility \
119*4882a593Smuzhiyun        -no-cups \
120*4882a593Smuzhiyun        -no-sql-mysql \
121*4882a593Smuzhiyun        -no-sql-sqlite \
122*4882a593Smuzhiyun        -no-opengl \
123*4882a593Smuzhiyun        -no-xcb \
124*4882a593Smuzhiyun        -no-feature-bearermanagement \
125*4882a593Smuzhiyun        -no-icu \
126*4882a593Smuzhiyun        -verbose \
127*4882a593Smuzhiyun        -release \
128*4882a593Smuzhiyun        -prefix ${OE_QMAKE_PATH_PREFIX} \
129*4882a593Smuzhiyun        -bindir ${OE_QMAKE_PATH_BINS} \
130*4882a593Smuzhiyun        -libdir ${OE_QMAKE_PATH_LIBS} \
131*4882a593Smuzhiyun        -datadir ${OE_QMAKE_PATH_DATA} \
132*4882a593Smuzhiyun        -sysconfdir ${OE_QMAKE_PATH_SETTINGS} \
133*4882a593Smuzhiyun        -docdir ${OE_QMAKE_PATH_DOCS} \
134*4882a593Smuzhiyun        -headerdir ${OE_QMAKE_PATH_HEADERS} \
135*4882a593Smuzhiyun        -archdatadir ${OE_QMAKE_PATH_ARCHDATA} \
136*4882a593Smuzhiyun        -libexecdir ${OE_QMAKE_PATH_LIBEXECS} \
137*4882a593Smuzhiyun        -plugindir ${OE_QMAKE_PATH_PLUGINS} \
138*4882a593Smuzhiyun        -qmldir ${OE_QMAKE_PATH_QML} \
139*4882a593Smuzhiyun        -translationdir ${OE_QMAKE_PATH_TRANSLATIONS} \
140*4882a593Smuzhiyun        -testsdir ${OE_QMAKE_PATH_TESTS} \
141*4882a593Smuzhiyun        -hostbindir ${OE_QMAKE_PATH_HOST_BINS} \
142*4882a593Smuzhiyun        -hostdatadir ${OE_QMAKE_PATH_HOST_DATA} \
143*4882a593Smuzhiyun        -external-hostbindir ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} \
144*4882a593Smuzhiyun        -no-glib \
145*4882a593Smuzhiyun        -no-iconv \
146*4882a593Smuzhiyun        -silent \
147*4882a593Smuzhiyun        -nomake examples \
148*4882a593Smuzhiyun        -nomake tests \
149*4882a593Smuzhiyun        -no-compile-examples \
150*4882a593Smuzhiyun        -platform ${OE_QMAKE_PLATFORM_NATIVE} \
151*4882a593Smuzhiyun        -xplatform ${OE_QMAKE_PLATFORM} \
152*4882a593Smuzhiyun        ${QT_CONFIG_FLAGS}
153*4882a593Smuzhiyun}
154*4882a593Smuzhiyun
155*4882a593Smuzhiyundo_install() {
156*4882a593Smuzhiyun    qmake5_base_do_install
157*4882a593Smuzhiyun
158*4882a593Smuzhiyun    # remove things unused in nativesdk, we need the headers and libs
159*4882a593Smuzhiyun    rm -rf ${D}${datadir} \
160*4882a593Smuzhiyun           ${D}${libdir}/cmake \
161*4882a593Smuzhiyun           ${D}${libdir}/pkgconfig
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun    # Install CMake's toolchain configuration
164*4882a593Smuzhiyun    mkdir -p ${D}${datadir}/cmake/OEToolchainConfig.cmake.d/
165*4882a593Smuzhiyun    install -m 644 ${WORKDIR}/OEQt5Toolchain.cmake ${D}${datadir}/cmake/OEToolchainConfig.cmake.d/
166*4882a593Smuzhiyun
167*4882a593Smuzhiyun    # Fix up absolute paths in scripts
168*4882a593Smuzhiyun    sed -i -e '1s,#!/usr/bin/python,#! ${USRBINPATH}/env python,' \
169*4882a593Smuzhiyun        ${D}${OE_QMAKE_PATH_QT_ARCHDATA}/mkspecs/features/uikit/devices.py
170*4882a593Smuzhiyun}
171*4882a593Smuzhiyun
172*4882a593Smuzhiyunfakeroot do_generate_qt_environment_file() {
173*4882a593Smuzhiyun    mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d/
174*4882a593Smuzhiyun    script=${D}${SDKPATHNATIVE}/environment-setup.d/qt5.sh
175*4882a593Smuzhiyun
176*4882a593Smuzhiyun    echo 'export PATH=${OE_QMAKE_PATH_HOST_BINS}:$PATH' > $script
177*4882a593Smuzhiyun    echo 'export OE_QMAKE_CFLAGS="$CFLAGS"' >> $script
178*4882a593Smuzhiyun    echo 'export OE_QMAKE_CXXFLAGS="$CXXFLAGS"' >> $script
179*4882a593Smuzhiyun    echo 'export OE_QMAKE_LDFLAGS="$LDFLAGS"' >> $script
180*4882a593Smuzhiyun    echo 'export OE_QMAKE_CC="$CC"' >> $script
181*4882a593Smuzhiyun    echo 'export OE_QMAKE_CXX="$CXX"' >> $script
182*4882a593Smuzhiyun    echo 'export OE_QMAKE_LINK="$CXX"' >> $script
183*4882a593Smuzhiyun    echo 'export OE_QMAKE_AR=$AR' >> $script
184*4882a593Smuzhiyun    echo 'export OE_QMAKE_OBJCOPY=$OBJCOPY' >> $script
185*4882a593Smuzhiyun    echo 'export OE_QMAKE_STRIP=$STRIP' >> $script
186*4882a593Smuzhiyun    echo 'export QT_CONF_PATH=${OE_QMAKE_PATH_HOST_BINS}/qt.conf' >> $script
187*4882a593Smuzhiyun    echo 'export OE_QMAKE_LIBDIR_QT=`qmake -query QT_INSTALL_LIBS`' >> $script
188*4882a593Smuzhiyun    echo 'export OE_QMAKE_INCDIR_QT=`qmake -query QT_INSTALL_HEADERS`' >> $script
189*4882a593Smuzhiyun    echo 'export OE_QMAKE_MOC=${OE_QMAKE_PATH_HOST_BINS}/moc' >> $script
190*4882a593Smuzhiyun    echo 'export OE_QMAKE_UIC=${OE_QMAKE_PATH_HOST_BINS}/uic' >> $script
191*4882a593Smuzhiyun    echo 'export OE_QMAKE_RCC=${OE_QMAKE_PATH_HOST_BINS}/rcc' >> $script
192*4882a593Smuzhiyun    echo 'export OE_QMAKE_QDBUSCPP2XML=${OE_QMAKE_PATH_HOST_BINS}/qdbuscpp2xml' >> $script
193*4882a593Smuzhiyun    echo 'export OE_QMAKE_QDBUSXML2CPP=${OE_QMAKE_PATH_HOST_BINS}/qdbusxml2cpp' >> $script
194*4882a593Smuzhiyun    echo 'export OE_QMAKE_QT_CONFIG=`qmake -query QT_INSTALL_LIBS`${QT_DIR_NAME}/mkspecs/qconfig.pri' >> $script
195*4882a593Smuzhiyun    echo 'export OE_QMAKE_PATH_HOST_BINS=${OE_QMAKE_PATH_HOST_BINS}' >> $script
196*4882a593Smuzhiyun    echo 'export QMAKESPEC=`qmake -query QT_INSTALL_LIBS`${QT_DIR_NAME}/mkspecs/linux-oe-g++' >> $script
197*4882a593Smuzhiyun
198*4882a593Smuzhiyun    # Use relocable sysroot
199*4882a593Smuzhiyun    sed -i -e 's:${SDKPATHNATIVE}:$OECORE_NATIVE_SYSROOT:g' $script
200*4882a593Smuzhiyun}
201*4882a593Smuzhiyun
202*4882a593Smuzhiyundo_generate_qt_environment_file[umask] = "022"
203*4882a593Smuzhiyunaddtask generate_qt_environment_file after do_install before do_package
204*4882a593Smuzhiyun
205*4882a593SmuzhiyunSRCREV = "358aebba7280d6d2b59b1f740747a4a3d1b7a54a"
206