meta-qt6/classes/qt6-cmake.bbclass
Samuli Piippo 79ee80eef5 Add workaround for broken harfbuzz cmake config
Latest harfbuzz 6.0.0 has bad cmake config that uses absolute paths,
which breaks static builds for Qt. Add workaroud that causes Qt
to use pkg-config to find correct paths for libs and includes.

From qtshadertools build:
ninja: error: '/usr/lib/libharfbuzz.so.0.60000.0', needed by
'lib/libQt6ShaderTools.a', missing and no known rule to make it

Change-Id: I9f8bca0d4b9648e58c008e4064ff4f7b88f5f4f0
Reviewed-by: Mikko Gronoff <mikko.gronoff@qt.io>
(cherry picked from commit 23feda4f5b)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2023-01-11 19:38:44 +00:00

49 lines
2.7 KiB
Plaintext

inherit cmake python3native perlnative pkgconfig qt6-paths
DEPENDS:prepend = "qtbase-native "
QT_MESSAGE_LOG_LEVEL ?= "STATUS"
EXTRA_OECMAKE += "\
-DQT_CMAKE_DEBUG_EXTEND_TARGET=ON \
-DQT_BUILD_INTERNALS_NO_FORCE_SET_INSTALL_PREFIX=ON \
-DCMAKE_MESSAGE_LOG_LEVEL=${QT_MESSAGE_LOG_LEVEL} \
"
QT_FORCE_BUILD_TOOLS ?= "OFF"
EXTRA_OECMAKE:append:class-target = "\
-DQT_HOST_PATH:PATH=${RECIPE_SYSROOT_NATIVE}${prefix_native}/ \
-DQT_FORCE_BUILD_TOOLS=${QT_FORCE_BUILD_TOOLS} \
-D__harfbuzz_broken_config_file=TRUE \
"
EXTRA_OECMAKE:append:class-nativesdk = "\
-DQT_HOST_PATH:PATH=${RECIPE_SYSROOT_NATIVE}${prefix_native}/ \
-DQT_FORCE_BUILD_TOOLS=ON \
"
EXTRA_OECMAKE += "\
-DINSTALL_ARCHDATADIR:PATH=${@os.path.relpath(d.getVar('QT6_INSTALL_ARCHDATADIR'), d.getVar('prefix') + '/')} \
-DINSTALL_BINDIR:PATH=${@os.path.relpath(d.getVar('QT6_INSTALL_BINDIR'), d.getVar('prefix') + '/')} \
-DINSTALL_DATADIR:PATH=${@os.path.relpath(d.getVar('QT6_INSTALL_DATADIR'), d.getVar('prefix') + '/')} \
-DINSTALL_DESCRIPTIONSDIR:PATH=${@os.path.relpath(d.getVar('QT6_INSTALL_DESCRIPTIONSDIR'), d.getVar('prefix') + '/')} \
-DINSTALL_DOCDIR:PATH=${@os.path.relpath(d.getVar('QT6_INSTALL_DOCDIR'), d.getVar('prefix') + '/')} \
-DINSTALL_EXAMPLESDIR:PATH=${@os.path.relpath(d.getVar('QT6_INSTALL_EXAMPLESDIR'), d.getVar('prefix') + '/')} \
-DINSTALL_INCLUDEDIR:PATH=${@os.path.relpath(d.getVar('QT6_INSTALL_INCLUDEDIR'), d.getVar('prefix') + '/')} \
-DINSTALL_LIBDIR:PATH=${@os.path.relpath(d.getVar('QT6_INSTALL_LIBDIR'), d.getVar('prefix') + '/')} \
-DINSTALL_LIBEXECDIR:PATH=${@os.path.relpath(d.getVar('QT6_INSTALL_LIBEXECDIR'), d.getVar('prefix') + '/')} \
-DINSTALL_PLUGINSDIR:PATH=${@os.path.relpath(d.getVar('QT6_INSTALL_PLUGINSDIR'), d.getVar('prefix') + '/')} \
-DINSTALL_QMLDIR:PATH=${@os.path.relpath(d.getVar('QT6_INSTALL_QMLDIR'), d.getVar('prefix') + '/')} \
-DINSTALL_SYSCONFDIR:PATH=${@os.path.relpath(d.getVar('QT6_INSTALL_SYSCONFDIR'), d.getVar('prefix') + '/')} \
-DINSTALL_TESTSDIR:PATH=${@os.path.relpath(d.getVar('QT6_INSTALL_TESTSDIR'), d.getVar('prefix') + '/')} \
-DINSTALL_TRANSLATIONSDIR:PATH=${@os.path.relpath(d.getVar('QT6_INSTALL_TRANSLATIONSDIR'), d.getVar('prefix') + '/')} \
-DINSTALL_MKSPECSDIR:PATH=${@os.path.relpath(d.getVar('QT6_INSTALL_MKSPECSDIR'), d.getVar('prefix') + '/')} \
"
do_install:append() {
# Replace host paths with qmake built-in properties QTBUG-84725
find ${D} \( -name "*.pri" -or -name "*.prl" \) -exec \
sed -i -e 's|${STAGING_DIR_NATIVE}|$$[QT_HOST_PREFIX/get]|g' \
-e 's|${STAGING_DIR_HOST}|$$[QT_SYSROOT]|g' \
-e '/QMAKE_PRL_BUILD_DIR/d' {} \;
}
export QT_DISABLE_SHADER_DISK_CACHE = "1"