From patchwork Fri Sep 25 06:42:52 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 4853 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id C869940CA6 for ; Fri, 25 Sep 2026 08:43:11 +0200 (CEST) Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-49e7631c43asf6260135e9.3 for ; Thu, 24 Sep 2026 23:43:11 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1790318591; cv=pass; d=google.com; s=arc-20260327; b=qGbTZKCwCp1FvpfJYZnPRoMOi0aDNqj044MEE8/eXqw2dZElxucK/XHeaVcU4bbB81 axJvBTNjkCjGowkRE3gasES3A9IA/XwmOiSDCNsqahiNTWKcpcpQqPolROyQNsJYzjo2 7X0g5FpxDYz0c8IjtDAO1/9hzZbwF1viipwPqAgAE8sy1xp4Qk0qLb7heC6KNc4EykiP cAzsJKudSDWwY4kSN8nwr7u4kMB8Huu+2jOGagGVMxZHlvDyNEekFUMmmiNxxSyUrTU3 AEXkmfrR7prfQAIgRnIpq18rngcdmrcGLFiw11xLdcsosT/s4QZ2uVfzPKbrWT4pjuLE LPQQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; 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=T3db3BD4/Pg4dE+VOovr/OqO4+ElqoCP9AO5EfU74C8=; fh=yQTBfSea+fT6PascV9gw7PCCgBvhXniWtCmZF+pN7bw=; b=O1LtTmWn4HVcvT5xNS+Ej4ZKtsRigGuYkUEVkliJxA9aT85Cl7E3NliGbosRYDD6vi 1fUDU+ne2sziFrnbgHknhNSFzgLNxNWs7ArFclLEjbKkfGtdNqyQKjwr2r0LtoqCtQRu lDu4iJm2EV9c1WmIbdImnveqpSO59F9RZ0Wcg+fv2CFVEf9t5+5O44mAjzOiwf0AGtIU qcO5TcDvuyWCIe0zmcKWszoY240NdVjm0UZRJFfqxVi6HgLpKjvo9/4UtHIV305CCcHW AGQhzCGCH8MrlnwTxR4fYYVEtG6QVqYo5Jq09EVDRLV+v9KNHaRewyieNOZcelkI2jLS jPgw==; darn=patchwork.amarulasolutions.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=INO3qbC3; 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=neutral header.i=@amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1790318591; x=1790923391; darn=patchwork.amarulasolutions.com; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:content-type :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:content-type; bh=T3db3BD4/Pg4dE+VOovr/OqO4+ElqoCP9AO5EfU74C8=; b=UAbWhY8hU+NVLRYFgw7+NBSVfFpMoOlqHsFAMm46UAGb/3/Gwqh+Q+3HirLMyyjAP5 axRbo0Ev3E2iiYvH+FOzSNOTyJ6i+Z1nBWRBBR2Qfb7b/KNapv2FvhrpKRTljz/n8eR/ 6KmuE5uglh8UDpfmZ6o86zOaf0OFjTamkC0UY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790318591; x=1790923391; h=list-unsubscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :content-type:x-original-authentication-results:x-original-sender :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:x-gm-gg:x-beenthere:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=T3db3BD4/Pg4dE+VOovr/OqO4+ElqoCP9AO5EfU74C8=; b=0BcsbCKryOUHI6wo9ZSljbelK841+Xo8L2kAvovxk5Xq8flc0EIDEKfRcODWKjhAPJ ji7qMFYOTD8OiakaoLRI8XK1gvg9PWpvUrTjrzY38tJP1VGU2P3NDFmf3PEOOCzEX0M0 u862SV/GJN7jLNrpBjsIHijxbR1i/SnLpkxq6qrG0I9NVJZDzljsUTAE34oPB1zvatkr EFbORgSwvQSb7mO5V2mrS/6bjCc+s+5SQiUDGJWINYalfYw0XVtaCZUvjib6MteI4A8i 5LFNsbF2T83YTI+XgVpBlO5clbHqZKqq9idQt7MSkiuKJC/XNDuojQ5bDYby3LzEYytI iBHA== X-Forwarded-Encrypted: i=2; AKwUvBw71bnx0S3lUurD0+57gQQj5AnAprKEZDYFb5L+OP0zSAYXE9NLemn177oW0qPWx/GxrBwfSiJinyKwSDP/@patchwork.amarulasolutions.com X-Gm-Message-State: AFuF++lvVY44ZjKPsUzEPao9Qxz+jCyJ4BYkmir9S2NTyFEIEYfqqZnn TVuKBQ0scF4+evMZvnGRsLUpRObehut4A9537o1jDZzhIEeBjHF0DsR5A2x9bHOnY4aVkMz04E/ VLA== X-Received: by 2002:a05:600d:8482:20b0:49f:c451:b4ab with SMTP id 5b1f17b1804b1-49fe67bc264mr58923715e9.29.1790318591466; Thu, 24 Sep 2026 23:43:11 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com; h="ATskLddWo8/89uTJYhPphG8/hcQcMh6AR2AmfCGjMPGcOl4ilA==" Received: by 2002:a05:600c:4f47:b0:49f:c0e9:8978 with SMTP id 5b1f17b1804b1-49ff23497fels2293735e9.1.-pod-prod-02-eu; Thu, 24 Sep 2026 23:43:10 -0700 (PDT) X-Forwarded-Encrypted: i=2; AKwUvByeOs+KPP4EvWcFPCdOdQ7O4hfLVO6VH0l0FZTIkNF2+MGUxqACx9PCQJcKXOcvNFPmPSGDR4lipr7NxdOw@amarulasolutions.com X-Received: by 2002:a05:600c:3b01:b0:49f:bd3c:bc27 with SMTP id 5b1f17b1804b1-49fe6712096mr80158505e9.34.1790318590014; Thu, 24 Sep 2026 23:43:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1790318590; cv=none; d=google.com; s=arc-20260327; b=i+4LFsJuESW++k0WzYudG8INbNTfreMGKQtcvm88k3KMMpPUnXUG8Hk7FzkhSLeuux cJn43TPdr+bV4d7blMTHLVQgRNJpt+W267Ks053+KTNDx7jpZ1DCx5C/nKTt2YYGVnuc bDFig6hxgPbGz1em+/1qv3Y4NsaiSqtG4Co0GN1pJ/LpRpZUXeqFujOLBjbW1x38W1V0 uylHgxYP/CCt9JPzdQS5vMb3awPQx6xBxp18Sa26MqB5jYtNo/78ka6SNDD3j2U8BvJi h8K7xMJ4zieFvh0lYW2K1LcVfRvpchs0vShpx7IBdQZAvIbt5c1X9UGQUjXOxH0Pvb1T AEfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=20auQNm3uDX8WZ3w7I7my/2cXqw2hZACGqb8ZiB1RLY=; fh=Ds4dPnB064deH2Mc4ityCcQlVe/pOLr+QgZBweeFXjQ=; b=Be/U+CLE62hR533mD06PhHNchWTtpoVj1aLAJSWxJ3pQrqdUHrPGMpsSAwYCuIW/AW frccIr0lVPDywe5gJb+p6SzJtPv7x0hccXWzV5rxC2LRKT4r05yaHynqx/LnxXlRxF6t x/dWyUDxCG2sUPPg5QA6+qKvZMioIA7n1gL9GyvUVgkf3xMEk7b3N480KtNnbcnTPfVh 8/AYvcAFWHAV6eCCcwwtAtUT3ROmwiEGkXFl3MtqKOpGEvlUol+OprvKnQ2a7IrfsLGo ew1OT1O4sarFWFvH/b7l3f7wuQdXopGkHNk59b6O8g+SY5X8V3VuytMyCP4rOiy1XUYe /HAQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=INO3qbC3; 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=neutral 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 5b1f17b1804b1-49feff4bdb1sor2333875e9.0.2026.09.24.23.43.09 for (Google Transport Security); Thu, 24 Sep 2026 23:43:10 -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; AKwUvBy2xopDIpv6NBICQf5BuqPH22NAbwZzZsgycdCS1ldXTmjw9eraKNld1I11b6zPsaNfDcj6MwimqWO+6riD@amarulasolutions.com X-Gm-Gg: AYBFou0xkneRHAmQmmKgzAkA9rYPh6ScOxOul1nwqOhSsw4mPZp4k7olb8q/IVeWVbX 8BpRqxT6mE29UIwCBFQU1eqbBJrNG9BZ8KdR0ZL6mB0L7yoQIFZaqnGH1Nlow7rrmf4MHloeGK5 Q3f+HkkBSJoMiZ9ZL5eevrZSAoG0aP+Hdm5+GsDhK7iBhnTpgSC0wvj2IDKqO296VL0IkU8YTN0 ysjwrFPZJtsHmsOwWnHNyaDnQE/oElpNLEqYZNxz9veBTBo/k/Vo+20pHCZx3L8+9jU0Pgok1h7 7uvgO6XTQhdAigT/Xv9FwrXv1mmlgzuTBs+bc8QLSoiWmUIj4QP81zmKNdjpij+0EMkKJnrzuio H1LilTl/8vkFmjXE06cFQ1F6eqii6OTuuiKNmju7US8cnZcXdJEw3QuIXITgVySlKdpBjgiPjdM ySmwiOudTIhmhd233hK96axf4BHJFZShpe3eZtjeoVChumNLaOR7leux47sEJV+RTanNHMdjfID +AKEmRBFaKiBXznvawByvYxfug1m7Ukru7SkZlxs8dwW9vKDNVeyE+TENaWHrmmTyW9Jmx2Zy13 zFFo8xs/DwSbhZui9XH5Hw83K1RzFnnShPt/QaHg+kR1F04CY1tpfcWpDGFh4K8DEbNZRIDm X-Received: by 2002:a05:600c:3556:b0:49f:bd3c:bc24 with SMTP id 5b1f17b1804b1-49fe6708a46mr80091765e9.31.1790318589574; Thu, 24 Sep 2026 23:43:09 -0700 (PDT) Received: from dario-ThinkPad-P14s-Gen-5.homenet.telecomitalia.it (host-79-14-29-58.business.telecomitalia.it. [79.14.29.58]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49fe5df44f9sm115584445e9.11.2026.09.24.23.43.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Sep 2026 23:43:08 -0700 (PDT) From: Dario Binacchi To: buildroot@buildroot.org Cc: Andrea Ricchi , Andreas Naumann , Angelo Compagnucci , Jesse Van Gavere , Roy Kollen Svendsen , linux-amarula@amarulasolutions.com, Thomas Petazzoni , Richard GENOUD , Angelo Compagnucci , Dario Binacchi Subject: [PATCH v6 1/6] package/qt6: Add qmake functionality Date: Fri, 25 Sep 2026 08:42:52 +0200 Message-ID: <20260925064257.1162394-2-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260925064257.1162394-1-dario.binacchi@amarulasolutions.com> References: <20260925064257.1162394-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=INO3qbC3; 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=neutral 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. A big thanks to Angelo Compagnucci for the encouragement and testing. Signed-off-by: Jesse Van Gavere Tested-by: Angelo Compagnucci Tested-by: Richard GENOUD [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: Dario Binacchi --- Changes v5 -> v6: - Rebase on qt6 6.11.2 Changes v4 -> v5: - Add ArchData, LibraryExecutables, Plugins and QmlImports to qt.conf.in - Quote QT_QMAKE_DEVICE_OPTIONS - Use TARGET_CFLAGS/TARGET_CXXFLAGS - Drop the redundant mkdir in QT6BASE_MAKE_BR_SPEC - Add Tested-by of Richard Genoud Changes v3 -> v4: - Drop QT6_QT_CONF_FIXUP - Drop -@EGLFS_DEVICE@ - Update the commit message Changes v2 -> v3: - Drop package/qt6/qt6base/qt6base.mk.save package/qt6/qt6.mk | 12 ++++++++++ package/qt6/qt6base/qmake.conf | 34 +++++++++++++++++++++++++++++ package/qt6/qt6base/qplatformdefs.h | 1 + package/qt6/qt6base/qt.conf.in | 11 ++++++++++ package/qt6/qt6base/qt6base.mk | 14 ++++++++++++ 5 files changed, 72 insertions(+) create mode 100644 package/qt6/qt6base/qmake.conf 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 cff9f5fbc73f..13482c33cc4a 100644 --- a/package/qt6/qt6.mk +++ b/package/qt6/qt6.mk @@ -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++ diff --git a/package/qt6/qt6base/qmake.conf b/package/qt6/qt6base/qmake.conf new file mode 100644 index 000000000000..e0d53d755d41 --- /dev/null +++ b/package/qt6/qt6base/qmake.conf @@ -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) 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..d1d2d9490fbb --- /dev/null +++ b/package/qt6/qt6base/qt.conf.in @@ -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 diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/qt6base.mk index 01661b7f01d4..032947417259 100644 --- a/package/qt6/qt6base/qt6base.mk +++ b/package/qt6/qt6base/qt6base.mk @@ -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))