From patchwork Thu Aug 14 15:32:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 4245 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 67E864207C for ; Thu, 14 Aug 2025 17:33:24 +0200 (CEST) Received: by mail-ed1-f71.google.com with SMTP id 4fb4d7f45d1cf-6188b766f8esf890892a12.3 for ; Thu, 14 Aug 2025 08:33:24 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1755185604; cv=pass; d=google.com; s=arc-20240605; b=cpJlufqSOVIflfZDzlxP1o+1uYL0fiSPNp4sH9Z3DHFt49Y75fSYr3bryzCLzVgJvP sPXhcFk885RdDkbAoIpbSnbhAYaeCd/un/t2+H7Lm8Spe8TrfaDW9doL9DVDBPb7G+ML jwm8nD3FMeUkw+lBrJV9HFZ2ltIi77gMyFZrmTdzM7AF0xr7yNCp+cpopaD/XDDSTV/x 8LZhjmt+GSqKN0hnUgNLsr6DKrozaOyE3uG9jpdLVcyfU7Mn84bZqWY3ZTd0MaHx2Kdb GxrkSdkHeXxiblcoMaIwNOM9P3MzWpamprR/gEHyK4feiIXwzEqXkthRtnwoXlL4QLdd 2lNA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=bBbk7qXnYOA/nop6dNmOQDOBHUHKn8rKNm/100Hv5QQ=; fh=D8xjs1817yb2/V9hEP2y8BKk50BYbbuAzHf+AQqVtcY=; b=f82hEC0HXS9+6aBC+PPUlcLc1N72QCA78LpYGF+iy9HJ4MKxLeaXGiZ28o3uYFsUaP NnjgGGVShIzVqjAHx819NTYzrGBsAqtY2wqvbusZ2PNe8ys9QXKn5+sc14PA5GZfnhlM IeJQfR+SJvB7OPLyb1ORN8HuchXg+Js9mnj5q+/Zi2/ok2jq/I2iV8fpOw/Iqncw6LT8 UqJBvX2RE1IweHbzPntP7PmqN1/IhBQxQs0bp+F7O4mhDKUvMi8Rx7UsR4vnOtAcKbkI fDqiqLPvgpCr6Ji+kcv8qNc79zzBxYTAZJSMijjl7DMn5NRqbpNkoCPgwBSCXgLqiyTt ar3A==; darn=patchwork.amarulasolutions.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=SDy2l3aH; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=pass header.i=@amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1755185604; x=1755790404; darn=patchwork.amarulasolutions.com; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=bBbk7qXnYOA/nop6dNmOQDOBHUHKn8rKNm/100Hv5QQ=; b=bjTjo3kM0qABPt810JmdQpO1zSJPNYYgqZJVuHk44DotBje/bfNCKb5LcGzq97Y/i9 UZjPtko1Ots0SzS3YDM8HlMeRVYasHUwG3dLNVBVzVjq5zerAmFXMJTzbMhLWrX9y5xd F7ZCL0T8QzdClgFvWiLxVYbsO4G5e4v/qdEjw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755185604; x=1755790404; h=list-unsubscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-beenthere:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=bBbk7qXnYOA/nop6dNmOQDOBHUHKn8rKNm/100Hv5QQ=; b=a3ShGCc44XIhNm6HxHGCxmNx9iUyAz3D4Whl690dvJHFgeMx8YsS+x5+Y//LJjFvZB 9rvGghK9Dl4QWWg6VNlTbPdc/QZhZFBuZUHnoOD01tcHAgcv7Yu+uifzC8IT6cgiGoH1 q9EkW60Va6ibDQyIpa7BtVVHOBYxNWBFTiQ+lx0IEOzfKdMQgE7qwhHCqfHSFhbIuEeE 0mlcFAVyr7d6+7Tn7RNW9eAwfIMHc4ti13J6s0moXCKhDKpEXR2KwRkRmNP0aVglJ84l wcW7gsIeiXCpeNwMUG79N+Q8T+mtvoa3KberpQYbQ31GcYFbUCYKqHIM3LRwimkNp1m7 n7Zg== X-Forwarded-Encrypted: i=2; AJvYcCVjR4/xQWrernRorONIwd210apBh2iT/T05TvFwQhzi/ClcbRI6BAOAzWfi4F00YWkVqtX+SxQvwDB5dWEA@patchwork.amarulasolutions.com X-Gm-Message-State: AOJu0YwxSWR6HpofWQ6NL9p84jzZ8DrIL5cw2Ci+ukO0KfZr2Z6Xm78P vcQpx+SZQBLHXyJUZsytc2Bax8pUBa8W0aj6RFTb9B/450WKhE9xgXSshZeMBpA6gGUYnA== X-Google-Smtp-Source: AGHT+IF7vy0Be0cdSevnNIxj5KD1PUtNIGKUW/P011bi4VM1Tmo+pK5N/mVoZuY/jPv1ZLJfJmEHdg== X-Received: by 2002:a05:6402:5205:b0:617:5be3:bba9 with SMTP id 4fb4d7f45d1cf-6188ba1b45bmr3219395a12.22.1755185603802; Thu, 14 Aug 2025 08:33:23 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com; h=AZMbMZcIIFLWCWYNHBwpL0hpA7uQZR2dA9wkwSCW+kd+85QWog== Received: by 2002:a05:6402:a0d0:b0:60c:44d6:282c with SMTP id 4fb4d7f45d1cf-6188a3698d6ls944790a12.1.-pod-prod-04-eu; Thu, 14 Aug 2025 08:33:21 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWD6HIhAYjAPTehXRkaGTjvkWDHAqs0T1CwwruWD1dKo/rejfLRW/UbS/vJP4gTMWsjJ6X9/L0BH1mUFgnd@amarulasolutions.com X-Received: by 2002:a17:907:60d1:b0:ae3:b2b7:7f2f with SMTP id a640c23a62f3a-afcb98fc895mr344279766b.40.1755185601240; Thu, 14 Aug 2025 08:33:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1755185601; cv=none; d=google.com; s=arc-20240605; b=HTA6/jlq2+GdwzBsZ1nSrFXPMBmldXI8cib4N5wMkqiw9RKQB9qkLSy8HyStDyH1Xc IBPAd/i9YtPpC+QXIwEMvObXwBLFCvdtGPglE13KNDTKiZzDdp9zrN0qfS4Q22jYFiVA x+gktdJzVV4w9uIl67nktPYa/GOAGIbJ6HmDwPwFLgrI66FyQb71Xi6FYjVGzyFDiora 1MrWQIlqqzLlEy1PTrUemu48P7J/zlO0zwhx+uHJcN+gHDni8XeXRxbOsPkXN53gPMSw 3kLEx+qZuGpQrBYuPBoNlTN+S+ezuns/eQVVo9hPR5kQ3j99429dM413+V9Yc72lTyHY aTHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=/UVV26tK45QFSOx6uuH60vDni796S+uZz8/iozC+1c8=; fh=kzGFCcnZl9M6ebmn2/yTXEdOM0EjAgDm0V04tEOk+Rk=; b=IxWlfABNoXV7zdQr7dftE8TYz2xZzG5F//KaH4vvPEjzjGl0tCFx6n/YyndvoIGqMQ oqh6rHtw2YEZRGV1dr/3ZQik6voYorL2G3+qWCE+6/8pSfn2emXsLC4RJsqvxxQL4lhg HTFbDDphPESTDdH4u7nW+Y2fjDsw2vJV0m5wemyrjEtLrV1zl/myxm4DWQA4WZ+CWuoA uYqIv4HBP5k9YHJ6Mx7ZYPE4TWYNSdcNG21jhJz5d3ptjCKmA1y0p5le3Z3e4sb/SxRW zTzCAmm1ub4lKUoveSbdU5+QBNAROqwSADT2HUhNhNjgRFFb4hefVXkU/LhBitoksmJw ke6Q==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=SDy2l3aH; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=pass header.i=@amarulasolutions.com Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) by mx.google.com with SMTPS id a640c23a62f3a-af98bc88372sor1020531166b.16.2025.08.14.08.33.21 for (Google Transport Security); Thu, 14 Aug 2025 08:33:21 -0700 (PDT) Received-SPF: pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; X-Forwarded-Encrypted: i=1; AJvYcCUnGhoQ+VxRa6su0prZ2uD1uPhaffFL4FL0gYaLcL+9rBSLFWcpzU51izuGQn05nyEv3TpoxnUKHl0SvUoh@amarulasolutions.com X-Gm-Gg: ASbGncsxiGdK8vESCScObZH7+9FVPhPZpIH0sOVUWo9Ug7eBIladELj4/V/aJYXcleQ u0bBF4YPL3UlR4Rm0JllQRwZWIPhvYcRC0aMK2G7iFiqxIBzrLoiS3tfejx/KHeNv9JVUc1gE33 f7BZjWMo51DMKuaFHP8QbNzlcEpQ28aWE8IP2dlCL4oeNIfCsUnaMwmouf0yB2V+OFXoGUgSWuc xL6U6vvSxu7g2xgTQTbARb7k4jr+05I2wPCmWUFODjT0XSLDxOxmpSlSlOG0avXj5OKZZHY80x0 nLDY1qBl8oRVIHrjHXNaHskIFypOpXTcDknI4kbo49TSQYFjBIB4aHC23Q+Lpr3wqANePODrb/p MaOb+lYBtyCvfzKhz5qX9Aux3Rvw1K1nPZ4GXo/HXPwk9PpaZ26xIG9HAJRgg1nlz5Ek/WbsBLS Qr X-Received: by 2002:a17:907:72c4:b0:ae3:7255:ba53 with SMTP id a640c23a62f3a-afcb9926c82mr357431766b.53.1755185600696; Thu, 14 Aug 2025 08:33:20 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.fritz.box ([2001:871:248:acda:9b30:e43:d6cd:c58f]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-af91a21c022sm2561928966b.101.2025.08.14.08.33.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Aug 2025 08:33:20 -0700 (PDT) From: Dario Binacchi To: buildroot@buildroot.org Cc: Andreas Naumann , Angelo Compagnucci , Jesse Van Gavere , Roy Kollen Svendsen , Thomas Petazzoni , Andrea Ricchi , Giuseppe D'Angelo , linux-amarula@amarulasolutions.com, Angelo Compagnucci , Dario Binacchi Subject: [RFC v3 1/5] package/qt6: Add qmake functionality Date: Thu, 14 Aug 2025 17:32:55 +0200 Message-ID: <20250814153259.6822-2-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250814153259.6822-1-dario.binacchi@amarulasolutions.com> References: <20250814153259.6822-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 X-Original-Sender: dario.binacchi@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=SDy2l3aH; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=pass header.i=@amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , From: Jesse Van Gavere 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 the biggest difference is that where previously qt.conf was used to fixup per-paths builds, this is now always created with changed contents so qmake looks at the correct target directories. A big thanks to Angelo Compagnucci for the encouragement and testing. Signed-off-by: Jesse Van Gavere Tested-by: Angelo Compagnucci [dario: fix HostData in qt.conf.in] Signed-off-by: Dario Binacchi --- Changes v2 -> v3: - Drop package/qt6/qt6base/qt6base.mk.save package/qt6/qt6.mk | 18 +++++++++++++++ package/qt6/qt6base/qmake.conf.in | 36 +++++++++++++++++++++++++++++ package/qt6/qt6base/qplatformdefs.h | 1 + package/qt6/qt6base/qt.conf.in | 7 ++++++ package/qt6/qt6base/qt6base.mk | 18 +++++++++++++++ 5 files changed, 80 insertions(+) create mode 100644 package/qt6/qt6base/qmake.conf.in create mode 100644 package/qt6/qt6base/qplatformdefs.h create mode 100644 package/qt6/qt6base/qt.conf.in diff --git a/package/qt6/qt6.mk b/package/qt6/qt6.mk index 33cbf7551f23..2d51c69269ac 100644 --- a/package/qt6/qt6.mk +++ b/package/qt6/qt6.mk @@ -12,3 +12,21 @@ 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 + +ifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y) +define QT6_QT_CONF_FIXUP + $(QT6_INSTALL_QT_CONF) +endef +endif + +# Variable for other Qt applications to use +QT6_QMAKE = $(HOST_DIR)/bin/qmake -spec devices/linux-buildroot-g++ diff --git a/package/qt6/qt6base/qmake.conf.in b/package/qt6/qt6base/qmake.conf.in new file mode 100644 index 000000000000..ebb8497d2df5 --- /dev/null +++ b/package/qt6/qt6base/qmake.conf.in @@ -0,0 +1,36 @@ +# 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 = + +@EGLFS_DEVICE@ + +include(../common/linux_device_post.conf) +load(qt_config) diff --git a/package/qt6/qt6base/qplatformdefs.h b/package/qt6/qt6base/qplatformdefs.h new file mode 100644 index 000000000000..99e9a2792329 --- /dev/null +++ b/package/qt6/qt6base/qplatformdefs.h @@ -0,0 +1 @@ +#include "../../linux-g++/qplatformdefs.h" diff --git a/package/qt6/qt6base/qt.conf.in b/package/qt6/qt6base/qt.conf.in new file mode 100644 index 000000000000..fee209f38c00 --- /dev/null +++ b/package/qt6/qt6base/qt.conf.in @@ -0,0 +1,7 @@ +[Paths] +Prefix=/usr +HostPrefix=@@HOST_DIR@@ +HostData=@@STAGING_DIR@@/usr +Sysroot=@@STAGING_DIR@@ +SysrootifyPrefix=true +TargetSpec=devices/linux-buildroot-g++ diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/qt6base.mk index 51a4f1b5be7f..697d1a96a920 100644 --- a/package/qt6/qt6base/qt6base.mk +++ b/package/qt6/qt6base/qt6base.mk @@ -55,6 +55,9 @@ QT6BASE_CONF_OPTS = \ -DFEATURE_system_zlib=ON \ -DFEATURE_system_libb2=ON +QT6BASE_CFLAGS = $(TARGET_CFLAGS) +QT6BASE_CXXFLAGS = $(TARGET_CXXFLAGS) + # x86 optimization options. While we have a BR2_X86_CPU_HAS_AVX512, it # is not clear yet how it maps to all the avx512* options of Qt, so we # for now keeps them disabled. @@ -431,5 +434,20 @@ define QT6BASE_RM_USR_MKSPECS endef QT6BASE_TARGET_FINALIZE_HOOKS += QT6BASE_RM_USR_MKSPECS +define QT6BASE_MAKE_BR_SPEC + mkdir -p $(@D)/mkspecs/devices/linux-buildroot-g++/ + sed 's/@EGLFS_DEVICE@/$(QT6BASE_EGLFS_DEVICE)/g' \ + $(QT6BASE_PKGDIR)/qmake.conf.in > \ + $(@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="$(QT6BASE_CFLAGS)";BR_COMPILER_CXXFLAGS="$(QT6BASE_CXX_FLAGS)" + +QT6BASE_PRE_CONFIGURE_HOOKS += QT6BASE_MAKE_BR_SPEC + +QT6BASE_POST_INSTALL_STAGING_HOOKS += QT6_INSTALL_QT_CONF + $(eval $(cmake-package)) $(eval $(host-cmake-package))