From patchwork Mon Sep 1 20:32:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 4261 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-ej1-f72.google.com (mail-ej1-f72.google.com [209.85.218.72]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 7605C40CEC for ; Mon, 1 Sep 2025 22:32:49 +0200 (CEST) Received: by mail-ej1-f72.google.com with SMTP id a640c23a62f3a-b032d67e6a1sf12853166b.1 for ; Mon, 01 Sep 2025 13:32:49 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1756758769; cv=pass; d=google.com; s=arc-20240605; b=dKhLB8OJF3VX8DuhSxd17SQT4HbhSX2Y6tv3u9W8MGdMWk5/TJ+s9FHgvy3U9GJ6YB WxjZurbvJ2LgDHq9Ma+IA2rdfpVhRbyrICkbIhpeCfPzOolD/7XbC3MX1ZYpIQFV1fu4 Qh3y7NfvwQJg1Xvcu2BUV3f9qH6kGsZmZaACFgha1Og8jFFzVJH/2ijWH64zpyJhsvB2 WBYuK0ofpQjMmrHhJvjiwBRF+9hkEA3R5Hq7vXNFQWGiFKExS0mAwwFwmjgM1fSZFqCd mk/A2zVHQv4FsrGdBnewcsmUzxtCEX5eCCovDut2+8eoFPG+hhoC6A5hJf56JNrQ2qdt ktNw== 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=lL0tGd1P5mHq3xUZKNQqQFIh1GHUh5moyQqGIyJy69w=; fh=2YkxkZaa+17p5He4mVcpqiyqTpJ7g8OSdmVFZsAED6E=; b=V3UF/KQPRocwyfhhNAXcUoLs3OECUabCAfLmZi4Kkh88TL8dPfoyfeMSj9KP3bziBh 9+38o3GitmIgha6WjEh2s7AhZR/Q/aizfk2mQIyFL2Mi/zapDwA/RuFK+sz4aCvjmIFy uCqpocitEHELQJ6l6nhjl6+VozHsNhBLsrP+2wt8WsK3G60utZBHXaB88GNVqgpWKOff 0wjtfi5ix5dZCTVpUxxO5TSvELLVYeFFNm3G7a2qBvwrU4v5jYoD2jkrhf6rTtReOljx jghQ61qJVeY5YT6MMEU+wDokZVA1DVq/Sput1zpbtdPCU+09+zZ7q1JnjCuhiStONjlU Ixrg==; darn=patchwork.amarulasolutions.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b="h/IRZrF5"; 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=1756758769; x=1757363569; 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=lL0tGd1P5mHq3xUZKNQqQFIh1GHUh5moyQqGIyJy69w=; b=CkAFggGpJa5393b0HDzYH7NY9BDvheI5DV72/wQcwuXLoDCNm7s14Zg7olZaH+jWWg oydjbWPSlbnrmL5K/M2pweiyD3KezxyjDIv3Wiarjr3HI6Gk3fOPckkTGQk+lADXHYSU c//ncZGoFImFA5dnJLpe5ixtJ8hs7y2Fz0Tus= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756758769; x=1757363569; 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=lL0tGd1P5mHq3xUZKNQqQFIh1GHUh5moyQqGIyJy69w=; b=LvWx+BhkfjCqP+eFH1NWeKdjyzJeQdKtKPdk+mpjC5QLpqQm6G3tQ1PWWh2WvKlIW3 pF5fCSkb1Heddvn3e6Fov4iXPmobNa8v22/aWbARAYQRIUvPcA1eh4v6UP7zKVVqAxoz QEnhqQq02E3cMLjRRedE0eX2HH3Uphavpqbyc6p+tS6qo2+l0pJoPDylZSogMwrx7y9+ Au6PcDc/TEjC3PI9CuhdW5P1z9rkXEmI7PEilWRy4A6nxazWF4ZkAXMHwx8W8pf7GNzV D9eNLskF92+mu2PXYbAMiJpuEhcorab2l2RF2iZ7Yz9wfFoGk5nxWMJF+QqhbH9fD4Ug eyUw== X-Forwarded-Encrypted: i=2; AJvYcCX1uRoaZNBfXWLpkjuJHpSUNkA+yq+wv4LSHxXJZ8bgcMQwqVSjXwXjQX5H/FXcUgBUIPDsSfwYrMWE5qG1@patchwork.amarulasolutions.com X-Gm-Message-State: AOJu0YxOB3qZ3zM/rNPvB1bdcYoh4Zm69shwgY4NxoYXraZo5ET+6PEi jgcAjtRP3hXxN98BN1S8Zcb/P3gAu7rKTTaQsOAV8zZtoo6zOS5Qb4E4UyMZzQD3o2sB0w== X-Google-Smtp-Source: AGHT+IErviWaojUPPAzqvmaFknLBzFWgdWno2J0ElQzt4MWSe5QFNQav2rzTEXMbJVoR8/izWanQNQ== X-Received: by 2002:a05:6402:13d0:b0:61b:6c51:4005 with SMTP id 4fb4d7f45d1cf-61d0d5f33e1mr5726533a12.6.1756758769049; Mon, 01 Sep 2025 13:32:49 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com; h=AZMbMZeRwAWIvEbJGX/5JARCHfOvef5JZOBQXOdOQ2n02o6kLw== Received: by 2002:a50:c342:0:b0:61c:f91d:a994 with SMTP id 4fb4d7f45d1cf-61cf91db30bls2969236a12.0.-pod-prod-09-eu; Mon, 01 Sep 2025 13:32:46 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVSPICgXIV3sdGPVNXMjGRa0m2CglxL9vs/b4Id30+c8Rrx4chjKRmXctg4IwWcr4kiujOZlKMPUs5xhJFe@amarulasolutions.com X-Received: by 2002:a17:906:6a17:b0:afe:c027:cfd4 with SMTP id a640c23a62f3a-b01d972f551mr948381966b.41.1756758766459; Mon, 01 Sep 2025 13:32:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1756758766; cv=none; d=google.com; s=arc-20240605; b=PZ46mlr/YbPkypfOUBGkfgU5VJnhKKOXWYjFI98P3cbwRIebU8KClOle0x/vc4HPd3 gE4Gp2lqpJtn+DOzygFDhTeQ0K31f9y0nNbm9Lfatntm1Nw3Wlv12MOdw1P1CPQhBsPM KchynVeR3pIxWoOMr3Bu+mBgwCK46AUSYMxel2oXYM8CsH8ugnG0LlhtVWz5Z4PvR+om fSZYFfIseZ41YFMiLe2wLEwmSiffp5YqpROlnhnJu/APjg7tGB7YIl9mC11y4kZSKlYU d/nWUtP25zpsCZ0VqIa0S7CJdGpHAp9X7FTh6gjdvrRjqU5GusTQ6t1d61nLZtylYmdO NUAw== 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=fMxoHruHuDqGH2Xu7O2KgZRGgagE8u1oyjvWnviAFfI=; fh=NhUlbmXgO0UJ6xHVjZeVtgehJnoQ1SreUv5beNFd7G0=; b=I/QonN0FXbNlxrAr5cBFs1CYje/N6DMMyjqDl7Z0d8zGJ9lEjoJtUK4SkiaJqJAHN1 GTLNbOMye0ZQb7j4kNWGVsYJQYB+UJ6ae7rtNi2+MHbIEHqunRMACoZi7JYFOV//Ynan LKn7t+vf5mGMrRWO8XS14C31Fu+KDjKk1tVbhsLmxbRR6XpKl7LopO/uLXeuq4fJbphO aoZMJBFgf9v+rP7muOay2IIPmv/W674pR3muvPGvmNnOFsnnpUOIo519ohf7IQroPsW7 ZgDR6YMG5CEARHu8M5sNGyTJ6BRjzy8WhETHl4XMMkvJgcxOc/kVudxQXA6kQ+Xgjkvq 5dEQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b="h/IRZrF5"; 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-b042e8c10efsor99919966b.10.2025.09.01.13.32.46 for (Google Transport Security); Mon, 01 Sep 2025 13:32:46 -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; AJvYcCVel2Q1h9jrtu4R9dR7E9kdIfaGHlDVutxUuA6j72tZPfFQKhmNNupTh0owZ2H2Dw9RO3dMic1kn0IufxuF@amarulasolutions.com X-Gm-Gg: ASbGncvmLMJLl7d7c/q7uMYmvJSyeooXGYK1U/DsjfNPfaTyHIJr6FXtV7ttybxf0pO tfQkbCS+i4uwWTuTAf0yzBc0pH7oVNKKL566OiztjIcdkuDxUhh2K1wVzZ3byZ22sXLahcS6y/l LkbaZtsD+ybrt6KvHloWHoINT/WG2+H6y2twTWDFPplbTTvqUeeGYvgWiGMAmTkWPZ/RXXMN/BM ffC9VjTA+pkSWGuTp8aNlmyzHO/o3ybEkwg778wrpX/smo5p4PbFALVign+UtlE8V+wIVfjIk59 YXh/5LmuxCISA8U6XhxKr636Tr18Vg30MlqOXLJzyUHoPkkSEvEK57k7X5aOpGuBNRXF+7X9fmu Zit39DOHtsa6TkSBKQgImsA+WGSiADHFZbWMnqgTmoVpw5oEZrZNWsUEOHgIn/z20DZgC8AnOla hGGJcfP8i5FRYCaF8dzTIrBg== X-Received: by 2002:a17:906:6a02:b0:b01:8fa4:6bb0 with SMTP id a640c23a62f3a-b01d976af68mr847131366b.44.1756758765919; Mon, 01 Sep 2025 13:32:45 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.amarulasolutions.com ([2.196.43.39]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b0411bf1b09sm553530166b.79.2025.09.01.13.32.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Sep 2025 13:32:45 -0700 (PDT) From: Dario Binacchi To: buildroot@buildroot.org Cc: Andreas Naumann , Angelo Compagnucci , Jesse Van Gavere , Roy Kollen Svendsen , Thomas Petazzoni , linux-amarula@amarulasolutions.com, Andrea Ricchi , Giuseppe D'Angelo , Richard Genoud , Angelo Compagnucci , Dario Binacchi Subject: [RFC v4 1/5] package/qt6: Add qmake functionality Date: Mon, 1 Sep 2025 22:32:06 +0200 Message-ID: <20250901203210.804061-2-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250901203210.804061-1-dario.binacchi@amarulasolutions.com> References: <20250901203210.804061-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="h/IRZrF5"; 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. 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 and change the commit message] Signed-off-by: Dario Binacchi --- 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 | 7 ++++++ package/qt6/qt6base/qt6base.mk | 17 +++++++++++++++ 5 files changed, 71 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 33cbf7551f23..fd6d81ed3d53 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..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..7c0cd927129a 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,19 @@ 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++/ + $(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="$(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))