mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-10-24 09:52:07 -09:00
package/qt6: add qmake functionality
The qmake functionality had been missing due to the new host/target build requirement, to get it working the main parts of the qt5 qmake has been kept, we're still making our own device spec which we use to run qmake with along with passing some additional device options for our flags/cross-compiler. qt6 has its own cross-compiling qmake wrapper script. However, that hardcodes the paths to different places than where we have them. QT6_INSTALL_QT_CONF will be used by the qmake-package infrastructure later so it is put in qt6.mk, even though currently it's only used by qt6base. A big thanks to Angelo Compagnucci for the encouragement and testing. [dario: fix HostData and add the target install dirs in qt.conf.in, quote QT_QMAKE_DEVICE_OPTIONS, use TARGET_CFLAGS/TARGET_CXXFLAGS, change the commit message] Signed-off-by: Jesse Van Gavere <jesseevg@gmail.com> Tested-by: Angelo Compagnucci <angelo@amarulasolutions.com> Tested-by: Richard GENOUD <richard.genoud@bootlin.com> Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> Signed-off-by: Arnout Vandecappelle <arnout@rnout.be>
This commit is contained in:
committed by
Arnout Vandecappelle
parent
a2142664e9
commit
42d7900bbc
@@ -12,3 +12,15 @@ QT6_SITE = https://download.qt.io/archive/qt/$(QT6_VERSION_MAJOR)/$(QT6_VERSION)
|
||||
QT6_GIT = git://code.qt.io
|
||||
|
||||
include $(sort $(wildcard package/qt6/*/*.mk))
|
||||
|
||||
# The file "qt.conf" can be used to override the hard-coded paths that are
|
||||
# compiled into the Qt library. We need it to make "qmake" relocatable and
|
||||
# tweak the per-package install paths
|
||||
define QT6_INSTALL_QT_CONF
|
||||
rm -f $(HOST_DIR)/bin/qt.conf
|
||||
sed -e "s|@@HOST_DIR@@|$(HOST_DIR)|" -e "s|@@STAGING_DIR@@|$(STAGING_DIR)|" \
|
||||
$(QT6BASE_PKGDIR)/qt.conf.in > $(HOST_DIR)/bin/qt.conf
|
||||
endef
|
||||
|
||||
# Variable for other Qt applications to use
|
||||
QT6_QMAKE = $(HOST_DIR)/bin/qmake -spec devices/linux-buildroot-g++
|
||||
|
||||
34
package/qt6/qt6base/qmake.conf
Normal file
34
package/qt6/qt6base/qmake.conf
Normal file
@@ -0,0 +1,34 @@
|
||||
# Qt6 has a mechanism to support "device" profiles, so that people can
|
||||
# specify the compiler, compiler flags and so on for a specific device.
|
||||
|
||||
# We leverage this mechanism in the Buildroot packaging of qt6 to
|
||||
# simplify cross-compilation: we have our own "device" definition, which
|
||||
# allows us to easily pass the cross-compiler paths and flags from our
|
||||
# qt6.mk.
|
||||
|
||||
include(../common/linux_device_pre.conf)
|
||||
|
||||
# modifications to g++-unix.conf
|
||||
QMAKE_CC = $${CROSS_COMPILE}gcc
|
||||
QMAKE_CXX = $${CROSS_COMPILE}g++
|
||||
QMAKE_LINK = $${CROSS_COMPILE}g++
|
||||
|
||||
# modifications to gcc-base.conf
|
||||
QMAKE_CFLAGS += $${BR_COMPILER_CFLAGS}
|
||||
QMAKE_CXXFLAGS += $${BR_COMPILER_CXXFLAGS}
|
||||
# Remove all optimisation flags, we really only want our own.
|
||||
QMAKE_CFLAGS_OPTIMIZE =
|
||||
QMAKE_CFLAGS_OPTIMIZE_DEBUG =
|
||||
QMAKE_CFLAGS_OPTIMIZE_FULL =
|
||||
QMAKE_CFLAGS_OPTIMIZE_SIZE =
|
||||
QMAKE_CFLAGS_DEBUG =
|
||||
QMAKE_CXXFLAGS_DEBUG =
|
||||
QMAKE_CFLAGS_RELEASE =
|
||||
QMAKE_CXXFLAGS_RELEASE =
|
||||
CONFIG += nostrip
|
||||
|
||||
QMAKE_LIBS += -lrt -lpthread -ldl
|
||||
QMAKE_CFLAGS_ISYSTEM =
|
||||
|
||||
include(../common/linux_device_post.conf)
|
||||
load(qt_config)
|
||||
1
package/qt6/qt6base/qplatformdefs.h
Normal file
1
package/qt6/qt6base/qplatformdefs.h
Normal file
@@ -0,0 +1 @@
|
||||
#include "../../linux-g++/qplatformdefs.h"
|
||||
11
package/qt6/qt6base/qt.conf.in
Normal file
11
package/qt6/qt6base/qt.conf.in
Normal file
@@ -0,0 +1,11 @@
|
||||
[Paths]
|
||||
Prefix=/usr
|
||||
HostPrefix=@@HOST_DIR@@
|
||||
HostData=@@STAGING_DIR@@/usr
|
||||
Sysroot=@@STAGING_DIR@@
|
||||
SysrootifyPrefix=true
|
||||
TargetSpec=devices/linux-buildroot-g++
|
||||
ArchData=/usr/lib/qt6
|
||||
LibraryExecutables=/usr/lib/qt6/libexec
|
||||
Plugins=/usr/lib/qt6/plugins
|
||||
QmlImports=/usr/lib/qt6/qml
|
||||
@@ -436,5 +436,19 @@ define QT6BASE_RM_SBOMS
|
||||
endef
|
||||
QT6BASE_TARGET_FINALIZE_HOOKS += QT6BASE_RM_SBOMS
|
||||
|
||||
define QT6BASE_MAKE_BR_SPEC
|
||||
$(INSTALL) -m 0644 -D $(QT6BASE_PKGDIR)/qmake.conf \
|
||||
$(@D)/mkspecs/devices/linux-buildroot-g++/qmake.conf
|
||||
$(INSTALL) -m 0644 -D $(QT6BASE_PKGDIR)/qplatformdefs.h \
|
||||
$(@D)/mkspecs/devices/linux-buildroot-g++/qplatformdefs.h
|
||||
endef
|
||||
|
||||
QT6BASE_CONF_OPTS += \
|
||||
-DQT_QMAKE_DEVICE_OPTIONS="CROSS_COMPILE=$(TARGET_CROSS);BR_COMPILER_CFLAGS=$(TARGET_CFLAGS);BR_COMPILER_CXXFLAGS=$(TARGET_CXXFLAGS)"
|
||||
|
||||
QT6BASE_PRE_CONFIGURE_HOOKS += QT6BASE_MAKE_BR_SPEC
|
||||
|
||||
QT6BASE_POST_INSTALL_STAGING_HOOKS += QT6_INSTALL_QT_CONF
|
||||
|
||||
$(eval $(cmake-package))
|
||||
$(eval $(host-cmake-package))
|
||||
|
||||
Reference in New Issue
Block a user