mirror of
http://code.qt.io/yocto/meta-qt6.git
synced 2026-01-01 13:58:07 +00:00
Add support for qmake
This commit is contained in:
parent
a6f3f48553
commit
bcb8c13a7f
|
|
@ -1,39 +1,7 @@
|
|||
inherit cmake python3native
|
||||
inherit cmake python3native qt6-paths
|
||||
|
||||
DEPENDS_prepend = "qtbase-native "
|
||||
|
||||
# Install locations:
|
||||
# Executables [PREFIX/bin]
|
||||
QT6_INSTALL_BINDIR = "${bindir}"
|
||||
# Header files [PREFIX/include]
|
||||
QT6_INSTALL_INCLUDEDIR = "${includedir}"
|
||||
# Libraries [PREFIX/lib]
|
||||
QT6_INSTALL_LIBDIR = "${libdir}"
|
||||
# Arch-dependent data [PREFIX]
|
||||
QT6_INSTALL_ARCHDATADIR = "${libdir}"
|
||||
# Plugins [ARCHDATADIR/plugins]
|
||||
QT6_INSTALL_PLUGINSDIR = "${libdir}/plugins"
|
||||
# Helper programs ARCHDATADIR/libexec otherwise
|
||||
QT6_INSTALL_LIBEXECDIR = "${libexecdir}"
|
||||
# QML2 imports [ARCHDATADIR/qml]
|
||||
QT6_INSTALL_QMLDIR = "${libdir}/qml"
|
||||
# "Arch-independent data [PREFIX]
|
||||
QT6_INSTALL_DATADIR = "${datadir}"
|
||||
# Documentation [DATADIR/doc]
|
||||
QT6_INSTALL_DOCDIR = "${datadir}/doc"
|
||||
# Translations [DATADIR/translations]
|
||||
QT6_INSTALL_TRANSLATIONSDIR = "${datadir}/translations"
|
||||
# Settings used by Qt programs [PREFIX/etc/xdg]
|
||||
QT6_INSTALL_SYSCONFDIR = "${sysconfdir}/xdg"
|
||||
# Examples [PREFIX/examples]
|
||||
QT6_INSTALL_EXAMPLESDIR = "${datadir}/examples"
|
||||
# Tests [PREFIX/tests]
|
||||
QT6_INSTALL_TESTSDIR = "${datadir}/tests"
|
||||
# Module description files directory [DATADIR/modules]
|
||||
QT6_INSTALL_DESCRIPTIONSDIR = "${datadir}/modules"
|
||||
# Mkspecs files [PREFIX/mkspecs]
|
||||
QT6_INSTALL_MKSPECSDIR = "${datadir}/mkspecs"
|
||||
|
||||
EXTRA_OECMAKE += "\
|
||||
-DQT_CMAKE_DEBUG_EXTEND_TARGET=ON \
|
||||
-DQT_HOST_PATH:PATH=${RECIPE_SYSROOT_NATIVE}/usr/ \
|
||||
|
|
|
|||
32
classes/qt6-paths.bbclass
Normal file
32
classes/qt6-paths.bbclass
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# Install locations:
|
||||
|
||||
# Executables [PREFIX/bin]
|
||||
QT6_INSTALL_BINDIR ?= "${bindir}"
|
||||
# Header files [PREFIX/include]
|
||||
QT6_INSTALL_INCLUDEDIR ?= "${includedir}"
|
||||
# Libraries [PREFIX/lib]
|
||||
QT6_INSTALL_LIBDIR ?= "${libdir}"
|
||||
# Arch-dependent data [PREFIX]
|
||||
QT6_INSTALL_ARCHDATADIR ?= "${libdir}"
|
||||
# Plugins [ARCHDATADIR/plugins]
|
||||
QT6_INSTALL_PLUGINSDIR ?= "${libdir}/plugins"
|
||||
# Helper programs ARCHDATADIR/libexec otherwise
|
||||
QT6_INSTALL_LIBEXECDIR ?= "${libexecdir}"
|
||||
# QML2 imports [ARCHDATADIR/qml]
|
||||
QT6_INSTALL_QMLDIR ?= "${libdir}/qml"
|
||||
# "Arch-independent data [PREFIX]
|
||||
QT6_INSTALL_DATADIR ?= "${datadir}"
|
||||
# Documentation [DATADIR/doc]
|
||||
QT6_INSTALL_DOCDIR ?= "${docdir}"
|
||||
# Translations [DATADIR/translations]
|
||||
QT6_INSTALL_TRANSLATIONSDIR ?= "${datadir}/translations"
|
||||
# Settings used by Qt programs [PREFIX/etc/xdg]
|
||||
QT6_INSTALL_SYSCONFDIR ?= "${sysconfdir}/xdg"
|
||||
# Examples [PREFIX/examples]
|
||||
QT6_INSTALL_EXAMPLESDIR ?= "${datadir}/examples"
|
||||
# Tests [PREFIX/tests]
|
||||
QT6_INSTALL_TESTSDIR ?= "${datadir}/tests"
|
||||
# Module description files directory [DATADIR/modules]
|
||||
QT6_INSTALL_DESCRIPTIONSDIR ?= "${datadir}/modules"
|
||||
# Mkspecs files [PREFIX/mkspecs]
|
||||
QT6_INSTALL_MKSPECSDIR ?= "${libdir}/mkspecs"
|
||||
287
classes/qt6-qmake.bbclass
Normal file
287
classes/qt6-qmake.bbclass
Normal file
|
|
@ -0,0 +1,287 @@
|
|||
OE_QMAKE_PATH_PREFIX = "${prefix}"
|
||||
OE_QMAKE_PATH_HEADERS = "${QT6_INSTALL_INCLUDEDIR}"
|
||||
OE_QMAKE_PATH_LIBS = "${QT6_INSTALL_LIBDIR}"
|
||||
OE_QMAKE_PATH_ARCHDATA = "${QT6_INSTALL_ARCHDATADIR}"
|
||||
OE_QMAKE_PATH_DATA = "${QT6_INSTALL_DATADIR}"
|
||||
OE_QMAKE_PATH_BINS = "${QT6_INSTALL_BINDIR}"
|
||||
OE_QMAKE_PATH_LIBEXECS = "${QT6_INSTALL_LIBEXECDIR}"
|
||||
OE_QMAKE_PATH_PLUGINS = "${QT6_INSTALL_PLUGINSDIR}"
|
||||
OE_QMAKE_PATH_QML = "${QT6_INSTALL_QMLDIR}"
|
||||
OE_QMAKE_PATH_TRANSLATIONS = "${QT6_INSTALL_TRANSLATIONSDIR}"
|
||||
OE_QMAKE_PATH_DOCS = "${QT6_INSTALL_DOCDIR}"
|
||||
OE_QMAKE_PATH_SETTINGS = "${sysconfdir}"
|
||||
OE_QMAKE_PATH_EXAMPLES = "${QT6_INSTALL_EXAMPLESDIR}"
|
||||
OE_QMAKE_PATH_TESTS = "${QT6_INSTALL_TESTSDIR}"
|
||||
OE_QMAKE_PATH_HOST_PREFIX = ""
|
||||
OE_QMAKE_PATH_HOST_PREFIX_class-target = "${STAGING_DIR_NATIVE}"
|
||||
OE_QMAKE_PATH_HOST_BINS = "${QT6_INSTALL_BINDIR}"
|
||||
OE_QMAKE_PATH_HOST_DATA = "${QMAKE_MKSPEC_PATH_TARGET}"
|
||||
OE_QMAKE_PATH_HOST_LIBS = "${STAGING_LIBDIR}"
|
||||
OE_QMAKE_PATH_EXTERNAL_HOST_BINS = "${STAGING_BINDIR_NATIVE}"
|
||||
|
||||
# This is useful for target recipes to reference native mkspecs
|
||||
QMAKE_MKSPEC_PATH_NATIVE = "${STAGING_LIBDIR_NATIVE}"
|
||||
QMAKE_MKSPEC_PATH_TARGET = "${STAGING_LIBDIR}"
|
||||
|
||||
QMAKE_MKSPEC_PATH = "${QMAKE_MKSPEC_PATH_TARGET}"
|
||||
QMAKE_MKSPEC_PATH_class-native = "${QMAKE_MKSPEC_PATH_NATIVE}"
|
||||
QMAKE_MKSPEC_PATH_class-nativesdk = "${QMAKE_MKSPEC_PATH_NATIVE}"
|
||||
|
||||
# hardcode linux, because that's what 0001-Add-linux-oe-g-platform.patch adds
|
||||
XPLATFORM_toolchain-clang = "linux-oe-clang"
|
||||
XPLATFORM ?= "linux-oe-g++"
|
||||
|
||||
OE_QMAKE_PLATFORM_NATIVE = "${XPLATFORM}"
|
||||
OE_QMAKE_PLATFORM = "${XPLATFORM}"
|
||||
|
||||
# Add -d to show debug output from every qmake call, but it prints *a lot*, better to add it only to debugged recipe
|
||||
OE_QMAKE_DEBUG_OUTPUT ?= ""
|
||||
|
||||
# Look through supplied directories recursively by default
|
||||
OE_QMAKE_RECURSIVE ?= "-r"
|
||||
|
||||
# Paths in .prl files contain SYSROOT value
|
||||
SSTATE_SCAN_FILES += "*.pri *.prl *.prf"
|
||||
|
||||
# drop default -e and add needed OE_QMAKE vars explicitly
|
||||
# the problem is that when generated Makefile has:
|
||||
# CFLAGS = -pipe $(OE_QMAKE_CFLAGS) -O2 -pthread -D_REENTRANT -Wall -W -fPIC $(DEFINES)
|
||||
# then OE_QMAKE_CFLAGS are exported and used correctly, but then whole CFLAGS is overwritten from env (and -fPIC lost and build fails)
|
||||
EXTRA_OEMAKE = " \
|
||||
MAKEFLAGS='${PARALLEL_MAKE}' \
|
||||
OE_QMAKE_CC='${OE_QMAKE_CC}' \
|
||||
OE_QMAKE_CXX='${OE_QMAKE_CXX}' \
|
||||
OE_QMAKE_CFLAGS='${OE_QMAKE_CFLAGS}' \
|
||||
OE_QMAKE_CXXFLAGS='${OE_QMAKE_CXXFLAGS}' \
|
||||
OE_QMAKE_LINK='${OE_QMAKE_LINK}' \
|
||||
OE_QMAKE_LDFLAGS='${OE_QMAKE_LDFLAGS}' \
|
||||
OE_QMAKE_AR='${OE_QMAKE_AR}' \
|
||||
OE_QMAKE_STRIP='${OE_QMAKE_STRIP}' \
|
||||
OE_QMAKE_INCDIR_QT='${STAGING_DIR_TARGET}/${OE_QMAKE_PATH_HEADERS}' \
|
||||
"
|
||||
|
||||
OE_QMAKE_QMAKE = "${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qmake"
|
||||
export OE_QMAKE_CC = "${CC}"
|
||||
export OE_QMAKE_CFLAGS = "${CFLAGS}"
|
||||
export OE_QMAKE_CXX = "${CXX}"
|
||||
export OE_QMAKE_CXXFLAGS = "${CXXFLAGS}"
|
||||
export OE_QMAKE_LINK = "${CXX}"
|
||||
export OE_QMAKE_LDFLAGS = "${LDFLAGS}"
|
||||
export OE_QMAKE_AR = "${AR}"
|
||||
export OE_QMAKE_STRIP = "echo"
|
||||
|
||||
# qmake reads if from shell environment
|
||||
export OE_QMAKE_QTCONF_PATH = "${WORKDIR}/qt.conf"
|
||||
|
||||
inherit qt6-paths remove-libtool
|
||||
|
||||
generate_target_qt_config_file() {
|
||||
qtconf="$1"
|
||||
cat > "${qtconf}" <<EOF
|
||||
[Paths]
|
||||
Prefix = ${OE_QMAKE_PATH_PREFIX}
|
||||
Headers = ${OE_QMAKE_PATH_HEADERS}
|
||||
Libraries = ${OE_QMAKE_PATH_LIBS}
|
||||
ArchData = ${OE_QMAKE_PATH_ARCHDATA}
|
||||
Data = ${OE_QMAKE_PATH_DATA}
|
||||
Binaries = ${OE_QMAKE_PATH_BINS}
|
||||
LibraryExecutables = ${OE_QMAKE_PATH_LIBEXECS}
|
||||
Plugins = ${OE_QMAKE_PATH_PLUGINS}
|
||||
Qml2Imports = ${OE_QMAKE_PATH_QML}
|
||||
Translations = ${OE_QMAKE_PATH_TRANSLATIONS}
|
||||
Documentation = ${OE_QMAKE_PATH_DOCS}
|
||||
Settings = ${OE_QMAKE_PATH_SETTINGS}
|
||||
Examples = ${OE_QMAKE_PATH_EXAMPLES}
|
||||
Tests = ${OE_QMAKE_PATH_TESTS}
|
||||
HostBinaries = ${OE_QMAKE_PATH_BINS}
|
||||
HostData = ${OE_QMAKE_PATH_ARCHDATA}
|
||||
HostLibraries = ${OE_QMAKE_PATH_LIBS}
|
||||
HostSpec = ${OE_QMAKE_PLATFORM}
|
||||
TargetSpec = ${OE_QMAKE_PLATFORM}
|
||||
ExternalHostBinaries = ${OE_QMAKE_PATH_BINS}
|
||||
Sysroot =
|
||||
EOF
|
||||
}
|
||||
|
||||
do_generate_qt_config_file() {
|
||||
generate_qt_config_file_paths
|
||||
generate_qt_config_file_effective_paths
|
||||
}
|
||||
|
||||
generate_qt_config_file_paths() {
|
||||
cat > ${OE_QMAKE_QTCONF_PATH} <<EOF
|
||||
[Paths]
|
||||
Prefix = ${OE_QMAKE_PATH_PREFIX}
|
||||
Headers = ${OE_QMAKE_PATH_HEADERS}
|
||||
Libraries = ${OE_QMAKE_PATH_LIBS}
|
||||
ArchData = ${OE_QMAKE_PATH_ARCHDATA}
|
||||
Data = ${OE_QMAKE_PATH_DATA}
|
||||
Binaries = ${OE_QMAKE_PATH_BINS}
|
||||
LibraryExecutables = ${OE_QMAKE_PATH_LIBEXECS}
|
||||
Plugins = ${OE_QMAKE_PATH_PLUGINS}
|
||||
Qml2Imports = ${OE_QMAKE_PATH_QML}
|
||||
Translations = ${OE_QMAKE_PATH_TRANSLATIONS}
|
||||
Documentation = ${OE_QMAKE_PATH_DOCS}
|
||||
Settings = ${OE_QMAKE_PATH_SETTINGS}
|
||||
Examples = ${OE_QMAKE_PATH_EXAMPLES}
|
||||
Tests = ${OE_QMAKE_PATH_TESTS}
|
||||
HostBinaries = ${OE_QMAKE_PATH_HOST_BINS}
|
||||
HostData = ${OE_QMAKE_PATH_HOST_DATA}
|
||||
HostLibraries = ${OE_QMAKE_PATH_HOST_LIBS}
|
||||
HostSpec = ${OE_QMAKE_PLATFORM_NATIVE}
|
||||
TargetSpec = ${OE_QMAKE_PLATFORM}
|
||||
ExternalHostBinaries = ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}
|
||||
Sysroot = ${STAGING_DIR_TARGET}
|
||||
EOF
|
||||
}
|
||||
|
||||
generate_qt_config_file_effective_paths() {
|
||||
cat >> ${OE_QMAKE_QTCONF_PATH} <<EOF
|
||||
[EffectivePaths]
|
||||
HostBinaries = ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}
|
||||
HostLibraries = ${STAGING_LIBDIR_NATIVE}
|
||||
HostData = ${OE_QMAKE_PATH_HOST_DATA}
|
||||
HostPrefix = ${STAGING_DIR_NATIVE}
|
||||
EOF
|
||||
}
|
||||
#
|
||||
# Allows to override following values (as in version 5.0.1)
|
||||
# Prefix The default prefix for all paths.
|
||||
# Documentation The location for documentation upon install.
|
||||
# Headers The location for all headers.
|
||||
# Libraries The location of installed libraries.
|
||||
# LibraryExecutables The location of installed executables required by libraries at runtime.
|
||||
# Binaries The location of installed Qt binaries (tools and applications).
|
||||
# Plugins The location of installed Qt plugins.
|
||||
# Imports The location of installed QML extensions to import (QML 1.x).
|
||||
# Qml2Imports The location of installed QML extensions to import (QML 2.x).
|
||||
# ArchData The location of general architecture-dependent Qt data.
|
||||
# Data The location of general architecture-independent Qt data.
|
||||
# Translations The location of translation information for Qt strings.
|
||||
# Examples The location for examples upon install.
|
||||
# Tests The location of installed Qt testcases.
|
||||
# Settings The location for Qt settings. Not applicable on Windows.
|
||||
|
||||
# For bootstrapped
|
||||
# Sysroot The location of target sysroot
|
||||
# HostPrefix The prefix for host tools when cross compiling (building tools for both systems)
|
||||
# HostBinaries The location where to install host tools
|
||||
# HostData The location where to install host data
|
||||
# ExternalHostBinaries The location where we already have host tools (when cross compiling, but reusing existing tools)
|
||||
# TargetSpec The location where to install target mkspec
|
||||
# HostSpec The location where to install host mkspec
|
||||
|
||||
# qmake works fine with separate B, use it by default
|
||||
SEPB = "${WORKDIR}/build"
|
||||
B = "${SEPB}"
|
||||
|
||||
CONFIGURESTAMPFILE = "${WORKDIR}/qmake5_base_configure.sstate"
|
||||
|
||||
qmake5_base_preconfigure() {
|
||||
if [ -n "${CONFIGURESTAMPFILE}" -a -e "${CONFIGURESTAMPFILE}" ]; then
|
||||
if [ "`cat ${CONFIGURESTAMPFILE}`" != "${BB_TASKHASH}" -a "${S}" != "${B}" ]; then
|
||||
echo "Previously configured separate build directory detected, cleaning ${B}"
|
||||
rm -rf ${B}
|
||||
mkdir ${B}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
qmake5_base_postconfigure(){
|
||||
if [ -n "${CONFIGURESTAMPFILE}" ]; then
|
||||
echo ${BB_TASKHASH} > ${CONFIGURESTAMPFILE}
|
||||
fi
|
||||
}
|
||||
|
||||
EXTRAQCONFFUNCS ??= ""
|
||||
|
||||
do_configure[prefuncs] += "qmake5_base_preconfigure ${EXTRAQCONFFUNCS}"
|
||||
do_configure[postfuncs] += "qmake5_base_postconfigure"
|
||||
|
||||
addtask generate_qt_config_file after do_patch before do_configure
|
||||
|
||||
do_configure () {
|
||||
if [ -z "${QMAKE_PROFILES}" ]; then
|
||||
PROFILES="`ls ${S}/*.pro`"
|
||||
else
|
||||
PROFILES="${QMAKE_PROFILES}"
|
||||
bbnote "qmake using profiles: '${QMAKE_PROFILES}'"
|
||||
fi
|
||||
|
||||
if [ ! -z "${EXTRA_QMAKEVARS_POST}" ]; then
|
||||
AFTER="-after"
|
||||
QMAKE_VARSUBST_POST="${EXTRA_QMAKEVARS_POST}"
|
||||
bbnote "qmake postvar substitution: '${EXTRA_QMAKEVARS_POST}'"
|
||||
fi
|
||||
|
||||
if [ ! -z "${EXTRA_QMAKEVARS_PRE}" ]; then
|
||||
QMAKE_VARSUBST_PRE="${EXTRA_QMAKEVARS_PRE}"
|
||||
bbnote "qmake prevar substitution: '${EXTRA_QMAKEVARS_PRE}'"
|
||||
fi
|
||||
|
||||
if [ ! -z "${EXTRA_QMAKEVARS_CONFIGURE}" ]; then
|
||||
QMAKE_VARSUBST_CONFIGURE="${EXTRA_QMAKEVARS_CONFIGURE}"
|
||||
bbnote "qmake configure substitution: '${EXTRA_QMAKEVARS_CONFIGURE}'"
|
||||
fi
|
||||
|
||||
# for config.tests to read this
|
||||
export QMAKE_MAKE_ARGS="${EXTRA_OEMAKE}"
|
||||
|
||||
CMD="${OE_QMAKE_QMAKE} -makefile -o Makefile ${OE_QMAKE_DEBUG_OUTPUT} ${OE_QMAKE_RECURSIVE} $QMAKE_VARSUBST_PRE $AFTER $PROFILES $QMAKE_VARSUBST_POST -- $QMAKE_VARSUBST_CONFIGURE"
|
||||
${OE_QMAKE_QMAKE} -makefile -o Makefile ${OE_QMAKE_DEBUG_OUTPUT} ${OE_QMAKE_RECURSIVE} $QMAKE_VARSUBST_PRE $AFTER $PROFILES $QMAKE_VARSUBST_POST -- $QMAKE_VARSUBST_CONFIGURE || die "Error calling $CMD"
|
||||
}
|
||||
|
||||
do_install_class-native() {
|
||||
oe_runmake install INSTALL_ROOT=${D}
|
||||
find "${D}" -ignore_readdir_race -name "*.la" -delete
|
||||
if ls ${D}${libdir}/pkgconfig/Qt5*.pc >/dev/null 2>/dev/null; then
|
||||
sed -i "s@-L${STAGING_LIBDIR}@-L\${libdir}@g" ${D}${libdir}/pkgconfig/Qt5*.pc
|
||||
fi
|
||||
}
|
||||
|
||||
qmake5_base_fix_install() {
|
||||
STAGING_PATH=$1
|
||||
if [ -d ${D}${STAGING_PATH} ] ; then
|
||||
echo "Some files are installed in wrong directory ${D}${STAGING_PATH}"
|
||||
cp -ra ${D}${STAGING_PATH}/* ${D}
|
||||
rm -rf ${D}${STAGING_PATH}
|
||||
# remove empty dirs
|
||||
TMP=`dirname ${D}${STAGING_PATH}`
|
||||
while test ${TMP} != ${D}; do
|
||||
rmdir ${TMP}
|
||||
TMP=`dirname ${TMP}`;
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
do_install() {
|
||||
# Fix install paths for all
|
||||
find . -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_TARGET},(INSTALL_ROOT),g"
|
||||
find . -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_HOST},(INSTALL_ROOT),g"
|
||||
find . -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_NATIVE},(INSTALL_ROOT),g"
|
||||
|
||||
oe_runmake install INSTALL_ROOT=${D}
|
||||
|
||||
# everything except HostData and HostBinaries is prefixed with sysroot value,
|
||||
# but we cannot remove sysroot override, because that's useful for pkg-config etc
|
||||
# concurrent builds may cause qmake to regenerate Makefiles and override the above
|
||||
# sed changes. If that happens, move files manually to correct location.
|
||||
qmake5_base_fix_install ${STAGING_DIR_TARGET}
|
||||
qmake5_base_fix_install ${STAGING_DIR_HOST}
|
||||
qmake5_base_fix_install ${STAGING_DIR_NATIVE}
|
||||
|
||||
# Replace host paths with qmake built-in properties
|
||||
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' {} \;
|
||||
|
||||
# Replace host paths with pkg-config built-in variable
|
||||
find ${D} -name "*.pc" -exec \
|
||||
sed -i -e 's|prefix=${STAGING_DIR_HOST}|prefix=|g' \
|
||||
-e 's|${STAGING_DIR_HOST}|${pc_sysrootdir}|g' {} \;
|
||||
|
||||
# Replace resolved lib path with the lib name
|
||||
find ${D} -name "*.cmake" -exec \
|
||||
sed -i -e 's@/[^;]*/lib\([^;]*\)\.\(so\|a\)@\1@g' {} \;
|
||||
|
||||
}
|
||||
112
recipes-qt/qt6/qtbase/0001-Add-linux-oe-g-platform.patch
Normal file
112
recipes-qt/qt6/qtbase/0001-Add-linux-oe-g-platform.patch
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
From bfec530b6e512e1721eb8de0841f5bf445787597 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Jansa <Martin.Jansa@gmail.com>
|
||||
Date: Mon, 15 Apr 2013 04:29:32 +0200
|
||||
Subject: [PATCH 1/3] Add linux-oe-g++ platform
|
||||
|
||||
* This qmake.conf unlike other platforms reads most variables from
|
||||
shell environment, because it's easier for qt recipes to export
|
||||
*FLAGS or CC specific for given recipe
|
||||
|
||||
Upstream-Status: Inappropriate [embedded specific]
|
||||
too OE specific, probably cannot be upstreamed
|
||||
|
||||
Change-Id: I0591ed5da0d61d7cf1509d420e6b293582f1863c
|
||||
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
|
||||
---
|
||||
mkspecs/features/qt.prf | 6 ++---
|
||||
mkspecs/features/qt_functions.prf | 2 +-
|
||||
mkspecs/linux-oe-g++/qmake.conf | 39 ++++++++++++++++++++++++++++
|
||||
mkspecs/linux-oe-g++/qplatformdefs.h | 1 +
|
||||
4 files changed, 44 insertions(+), 4 deletions(-)
|
||||
create mode 100644 mkspecs/linux-oe-g++/qmake.conf
|
||||
create mode 100644 mkspecs/linux-oe-g++/qplatformdefs.h
|
||||
|
||||
diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf
|
||||
index 3a71376029..dd6020f1fe 100644
|
||||
--- a/mkspecs/features/qt.prf
|
||||
+++ b/mkspecs/features/qt.prf
|
||||
@@ -148,7 +148,7 @@ import_plugins:qtConfig(static) {
|
||||
plug_name = $$QMAKE_PREFIX_STATICLIB$${plug}$$qtPlatformTargetSuffix().$$QMAKE_EXTENSION_STATICLIB
|
||||
plug_path = $$eval(QT_PLUGIN.$${plug}.PATH)
|
||||
isEmpty(plug_path): \
|
||||
- plug_path = $$[QT_INSTALL_PLUGINS/get]
|
||||
+ plug_path = $$[QT_INSTALL_PLUGINS]
|
||||
LIBS += $$plug_path/$$plug_type/$$plug_name
|
||||
} else {
|
||||
LIBS += -l$${plug}$$qtPlatformTargetSuffix()
|
||||
@@ -271,8 +271,8 @@ for(ever) {
|
||||
# static builds: link qml import plugins into the target.
|
||||
contains(all_qt_module_deps, qml): \
|
||||
qtConfig(static):import_plugins:!host_build:!no_import_scan {
|
||||
- exists($$[QT_INSTALL_QML/get]): \
|
||||
- QMLPATHS *= $$[QT_INSTALL_QML/get]
|
||||
+ exists($$[QT_INSTALL_QML]): \
|
||||
+ QMLPATHS *= $$[QT_INSTALL_QML]
|
||||
|
||||
# run qmlimportscanner
|
||||
qtPrepareTool(QMLIMPORTSCANNER, qmlimportscanner, , system)
|
||||
diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf
|
||||
index 45d4492788..b952104d99 100644
|
||||
--- a/mkspecs/features/qt_functions.prf
|
||||
+++ b/mkspecs/features/qt_functions.prf
|
||||
@@ -76,7 +76,7 @@ defineTest(qtHaveModule) {
|
||||
defineTest(qtPrepareTool) {
|
||||
cmd = $$eval(QT_TOOL.$${2}.binary)
|
||||
isEmpty(cmd) {
|
||||
- cmd = $$[QT_HOST_BINS]/$$2
|
||||
+ cmd = $$[QT_HOST_BINS/get]/$$2
|
||||
exists($${cmd}.pl) {
|
||||
$${1}_EXE = $${cmd}.pl
|
||||
cmd = perl -w $$system_path($${cmd}.pl)
|
||||
diff --git a/mkspecs/linux-oe-g++/qmake.conf b/mkspecs/linux-oe-g++/qmake.conf
|
||||
new file mode 100644
|
||||
index 0000000000..c202c47fa1
|
||||
--- /dev/null
|
||||
+++ b/mkspecs/linux-oe-g++/qmake.conf
|
||||
@@ -0,0 +1,39 @@
|
||||
+#
|
||||
+# qmake configuration for linux-g++ with modifications for building with OpenEmbedded
|
||||
+#
|
||||
+
|
||||
+MAKEFILE_GENERATOR = UNIX
|
||||
+CONFIG += incremental
|
||||
+QMAKE_INCREMENTAL_STYLE = sublib
|
||||
+
|
||||
+include(../common/linux.conf)
|
||||
+
|
||||
+# QMAKE_<TOOL> (moc, uic, rcc) are gone, overwrite only ar and strip
|
||||
+QMAKE_AR = $$(OE_QMAKE_AR) cqs
|
||||
+QMAKE_STRIP = $$(OE_QMAKE_STRIP)
|
||||
+
|
||||
+include(../common/gcc-base-unix.conf)
|
||||
+
|
||||
+# *FLAGS from gcc-base.conf
|
||||
+QMAKE_CFLAGS += $$(OE_QMAKE_CFLAGS)
|
||||
+QMAKE_CXXFLAGS += $$(OE_QMAKE_CXXFLAGS)
|
||||
+QMAKE_LFLAGS += $$(OE_QMAKE_LDFLAGS)
|
||||
+
|
||||
+include(../common/g++-unix.conf)
|
||||
+
|
||||
+# tc settings from g++-base.conf
|
||||
+QMAKE_CC = $$(OE_QMAKE_CC)
|
||||
+QMAKE_CXX = $$(OE_QMAKE_CXX)
|
||||
+
|
||||
+QMAKE_LINK = $$(OE_QMAKE_LINK)
|
||||
+QMAKE_LINK_SHLIB = $$(OE_QMAKE_LINK)
|
||||
+QMAKE_LINK_C = $$(OE_QMAKE_LINK)
|
||||
+QMAKE_LINK_C_SHLIB = $$(OE_QMAKE_LINK)
|
||||
+QMAKE_CFLAGS_ISYSTEM =
|
||||
+# for the SDK
|
||||
+isEmpty(QMAKE_QT_CONFIG):QMAKE_QT_CONFIG = $$(OE_QMAKE_QT_CONFIG)
|
||||
+
|
||||
+include(../oe-device-extra.pri)
|
||||
+
|
||||
+load(device_config)
|
||||
+load(qt_config)
|
||||
diff --git a/mkspecs/linux-oe-g++/qplatformdefs.h b/mkspecs/linux-oe-g++/qplatformdefs.h
|
||||
new file mode 100644
|
||||
index 0000000000..5d22fb4101
|
||||
--- /dev/null
|
||||
+++ b/mkspecs/linux-oe-g++/qplatformdefs.h
|
||||
@@ -0,0 +1 @@
|
||||
+#include "../linux-g++/qplatformdefs.h"
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
From fd50da53d4de86fe3a9e3eca24a7ae3e5c0f53fa Mon Sep 17 00:00:00 2001
|
||||
From: Holger Freyther <zecke@selfish.org>
|
||||
Date: Wed, 26 Sep 2012 17:22:30 +0200
|
||||
Subject: [PATCH 2/3] qlibraryinfo: allow to set qt.conf from the outside using
|
||||
the environment
|
||||
|
||||
Allow to set a qt.conf from the outside using the environment. This allows
|
||||
to inject new prefixes and other paths into qmake. This is needed when using
|
||||
the same qmake binary to build qt/x11 and qt/embedded
|
||||
|
||||
Upstream-Status: Inappropriate [embedded specific]
|
||||
again very OE specific to read everything from environment (reusing the same
|
||||
qmake from sstate and replacing all configured paths in it with qt.conf from
|
||||
environment).
|
||||
|
||||
Change-Id: I41595c6ce7514e8f197d0a19a1308c9460037d1b
|
||||
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
|
||||
---
|
||||
src/corelib/global/qlibraryinfo.cpp | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp
|
||||
index c8c7c0bf9b..90e81d0990 100644
|
||||
--- a/src/corelib/global/qlibraryinfo.cpp
|
||||
+++ b/src/corelib/global/qlibraryinfo.cpp
|
||||
@@ -183,7 +183,10 @@ void QLibrarySettings::load()
|
||||
QSettings *QLibraryInfoPrivate::findConfiguration()
|
||||
{
|
||||
#ifdef QT_BUILD_QMAKE
|
||||
- QString qtconfig = qmake_libraryInfoFile();
|
||||
+ QByteArray config = getenv("OE_QMAKE_QTCONF_PATH");
|
||||
+ QString qtconfig = QFile::decodeName(config);
|
||||
+ if(qtconfig.isEmpty() || !QFile::exists(qtconfig))
|
||||
+ qtconfig = qmake_libraryInfoFile();
|
||||
if (QFile::exists(qtconfig))
|
||||
return new QSettings(qtconfig, QSettings::IniFormat);
|
||||
#else
|
||||
26
recipes-qt/qt6/qtbase/0003-Sysrootify-qmake.patch
Normal file
26
recipes-qt/qt6/qtbase/0003-Sysrootify-qmake.patch
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
From 512da3f0552d3ab190b39e801987c11d3d209f88 Mon Sep 17 00:00:00 2001
|
||||
From: Samuli Piippo <samuli.piippo@qt.io>
|
||||
Date: Mon, 17 Feb 2020 15:33:55 +0200
|
||||
Subject: [PATCH 3/3] Sysrootify qmake
|
||||
|
||||
For cross-compilations we need to enable qmake to sysrootify
|
||||
the install paths.
|
||||
|
||||
Change-Id: I47d210f89203e32da59a1e41fcd6ebd28e968b25
|
||||
---
|
||||
cmake/QtBuild.cmake | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake
|
||||
index 4456ea99f1..89c37a3706 100644
|
||||
--- a/cmake/QtBuild.cmake
|
||||
+++ b/cmake/QtBuild.cmake
|
||||
@@ -3944,7 +3944,7 @@ function(qt_generate_qconfig_cpp)
|
||||
set(QT_CONFIG_STRS "")
|
||||
|
||||
qt_add_string_to_qconfig_cpp("")
|
||||
- qt_add_string_to_qconfig_cpp("false")
|
||||
+ qt_add_string_to_qconfig_cpp("true")
|
||||
qt_add_string_to_qconfig_cpp("bin")
|
||||
qt_add_string_to_qconfig_cpp("lib")
|
||||
qt_add_string_to_qconfig_cpp(".")
|
||||
|
|
@ -13,6 +13,12 @@ inherit qt6-cmake
|
|||
include recipes-qt/qt6/qt6.inc
|
||||
include recipes-qt/qt6/qt6-git.inc
|
||||
|
||||
SRC_URI += "\
|
||||
file://0001-Add-linux-oe-g-platform.patch \
|
||||
file://0002-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch \
|
||||
file://0003-Sysrootify-qmake.patch \
|
||||
"
|
||||
|
||||
DEPENDS = "\
|
||||
freetype \
|
||||
pcre2 \
|
||||
|
|
@ -96,10 +102,14 @@ PACKAGECONFIG[dbus] = "-DFEATURE_dbus=ON,-DFEATURE_dbus=OFF,dbus"
|
|||
PACKAGECONFIG[udev] = "-DFEATURE_libudev=ON,-DFEATURE_libudev=OFF,udev"
|
||||
PACKAGECONFIG[zstd] = "-DFEATURE_zstd=ON,-DFEATURE_zstd=OFF,zstd"
|
||||
|
||||
EXTRA_OECMAKE += " \
|
||||
EXTRA_OECMAKE += "\
|
||||
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
|
||||
"
|
||||
|
||||
EXTRA_OECMAKE_append_class-target = "\
|
||||
-DCMAKE_SKIP_RPATH=ON \
|
||||
"
|
||||
|
||||
SYSROOT_DIRS += "${prefix}/mkspecs"
|
||||
|
||||
do_install_append() {
|
||||
|
|
@ -107,6 +117,10 @@ do_install_append() {
|
|||
-e '/QT_SOURCE_TREE/,+2d' \
|
||||
-e '/CMAKE_INSTALL_PREFIX/,+2d'
|
||||
|
||||
if [ ! -e ${D}/${QT6_INSTALL_MKSPECSDIR}/oe-device-extra.pri ]; then
|
||||
touch ${D}/${QT6_INSTALL_MKSPECSDIR}/oe-device-extra.pri
|
||||
fi
|
||||
|
||||
# confligs with qttools module cmake files
|
||||
rm -rf ${D}${libdir}/cmake/Qt6Tools
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user