From patchwork Sat Feb 13 17:40:13 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 1440245 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=140.211.166.136; helo=smtp3.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=d1G9fnfo; dkim-atps=neutral Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DdHhz0lD2z9sRN for ; Sun, 14 Feb 2021 04:41:07 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 1EEA96F539 for ; Sat, 13 Feb 2021 17:41:05 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TXt5Apet0Xpg for ; Sat, 13 Feb 2021 17:40:58 +0000 (UTC) Received: by smtp3.osuosl.org (Postfix, from userid 1001) id F28EC6F5C1; Sat, 13 Feb 2021 17:40:57 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp3.osuosl.org (Postfix) with ESMTP id D09B36F4FB; Sat, 13 Feb 2021 17:40:31 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id ACD301BF2F6 for ; Sat, 13 Feb 2021 17:40:21 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 9E635868CB for ; Sat, 13 Feb 2021 17:40:21 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id SW1DdcS7gBfR for ; Sat, 13 Feb 2021 17:40:18 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) by whitealder.osuosl.org (Postfix) with ESMTPS id 2444586A64 for ; Sat, 13 Feb 2021 17:40:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1613238015; bh=eLOb2w0RgY/m6Sd5OM6aRoOjdrrZBoIV8RZTWy2SIT4=; h=X-UI-Sender-Class:From:To:Subject:Date:In-Reply-To:References; b=d1G9fnfoUfxZZnEt4Ii7PLbShqSPNDLJEai3DabzzQldEDI9jb8Dcj3F9PUJ/ATPH UImVbDAvmuBgMGddbQRCutRT3ZVmULmVPQFB4OgkublrFGDTJUU4ap7CByZ8aia7eX DQCx2eXZS3obFbM/wWnQlgckMnl+lNJiKyAQ/0EU= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.fritz.box ([62.216.208.75]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MOREc-1lWV5V0Yv8-00Pxbj for ; Sat, 13 Feb 2021 18:40:15 +0100 From: Peter Seiderer To: buildroot@busybox.net Date: Sat, 13 Feb 2021 18:40:13 +0100 Message-Id: <20210213174013.32584-7-ps.report@gmx.net> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210213174013.32584-1-ps.report@gmx.net> References: <20210213174013.32584-1-ps.report@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:9d810znUXU09adwdr+xXQJEOYy15hsV7IdfZ1My7XnXRcFRJsv6 FyCjk5nKQ9Ph+MDEv3bdun+tvFltGLOv+ToPQVf4o2PcBjAIDjF4rYbGSHkpecmfRN1aO0p LoQwCH0o0Bmmok/LGplUY8rsrLeGX3xCJHV9bpJ1ja6I6pl2TfPvU1c1T7q9Y6TUpRxKqv2 QIGc2YT+3Esmrd9uv09Nw== X-UI-Out-Filterresults: notjunk:1;V03:K0:btnJY2S/yuQ=:EB9nAXJkQsUlu5DUACqXja L4tCk/ilHc7X+PyqUGXS1Wu8B8XhP00lvYzyeY6EPH6lbnUKgdsE5PRNwvT2c/tMjoYBMmh4c U0aYP6kcQi1IcwsAoK3U3jFvy47W7q/Ca2BQ9lq0c7LpWKkCEVDWjxPPlbVyQRqjYj1uzTUEZ zg1ugIqn3kWuBMEEvEA3SNLfbKNfe41fry9K550YodTT+i6sQ7dtl3liy20hfuFg56N82SA9V SbhAh7D3rktDFBwdHOIF2syGm5Anqh/8Ve8/XhKDdxpNd7snwuqyrDsPy2D+3l1h9q80UU5jL napYG7JrN4RkLePGHVLFqYBjASHgTNW9SWmrpwAX31VQdRSYuZNfgc2VBk54d/GjP8aTbLYae OlYEtf1zYg1LsbssBMTwNEtr6WpcvYSbi6x/JnEqH1bVnmVIyRTduBunxcudrjpzwWdI9nTsx aaa6flKx/GhtwuZMmbdpz05Y206t3txL9pJWZXSNNtyYXsSFuHDVsi8uSUebi5L4dIw9IcHjQ pQrN9QQB10MUSOhPD3/sBzCxuiubTZ4hQLuMrvvKLO1uiZAm5FcTR5kSzFz//6+y+UQCPRL7X B+HBd03rNqFvLUlrnyoUKMyNWr5hrv73wmlP8Frj4CmcjO8OnYtOa4YpLoBTnyT/Y7V1Z+8MN YZcoWM6mkexGZ/N0FzSLA43J1ls7/OxrtIvziCP+Fo4CUc0i5CiAu5S88aV3uqw0yADR2e3yE YJoxy/D9IlzTaQkuWZCu/JRzPPaiEtRP0B+DBOihxnwE6Ru3B0Y/pQHUGGXhKUKJYVjc58ucc uBg/6aAOGBwlJRpYtbVtJMKmpegefLdAC4lAHHlFj2QfARDxqQVeGu6xSVr1/9WG/Pc1JMvD+ HNPHCzqTMjvM3O1QCo7w== Subject: [Buildroot] [RFC v1 6/6] package/qt6: new package X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" --- package/Config.in | 1 + package/qt6/Config.in | 75 +++ package/qt6/qt6.mk | 12 + ...disable-global-minimum-linux-support.patch | 55 ++ ...-failure-with-multiline-toolchain-fi.patch | 48 ++ package/qt6/qt6base/Config.in | 311 +++++++++++ package/qt6/qt6base/qt6base.hash | 10 + package/qt6/qt6base/qt6base.mk | 496 ++++++++++++++++++ 8 files changed, 1008 insertions(+) create mode 100644 package/qt6/Config.in create mode 100644 package/qt6/qt6.mk create mode 100644 package/qt6/qt6base/0001-src-corelib-disable-global-minimum-linux-support.patch create mode 100644 package/qt6/qt6base/0002-QtAutoDetect-fix-failure-with-multiline-toolchain-fi.patch create mode 100644 package/qt6/qt6base/Config.in create mode 100644 package/qt6/qt6base/qt6base.hash create mode 100644 package/qt6/qt6base/qt6base.mk diff --git a/package/Config.in b/package/Config.in index 1ddd47f50a..9e012bafc4 100644 --- a/package/Config.in +++ b/package/Config.in @@ -354,6 +354,7 @@ comment "QT libraries and helper libraries" source "package/quazip/Config.in" source "package/qwt/Config.in" endif + source "package/qt6/Config.in" source "package/tekui/Config.in" source "package/weston/Config.in" source "package/x11r7/Config.in" diff --git a/package/qt6/Config.in b/package/qt6/Config.in new file mode 100644 index 0000000000..5e3891dfcd --- /dev/null +++ b/package/qt6/Config.in @@ -0,0 +1,75 @@ +#config BR2_PACKAGE_QT6_GL_AVAILABLE +# bool +# default y +# depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES + +#config BR2_PACKAGE_QT6_JSCORE_AVAILABLE +# bool +# default y +# # Javascript engine is only available on certain architectures +# depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 || BR2_mipsel +# # ARM needs BLX, so v5t+ +# depends on !BR2_ARM_CPU_ARMV4 + +comment "Qt6 needs host g++ >= 5.0, and a toolchain w/ gcc >= 5.0, wchar, NPTL, C++, dynamic library" + depends on !BR2_ARM_CPU_ARMV4 + depends on !BR2_arc + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS || \ + !BR2_HOST_GCC_AT_LEAST_5 || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +menuconfig BR2_PACKAGE_QT6 + bool "Qt6" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_HOST_GCC_AT_LEAST_5 # Full C++11 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++11, GCC_BUG_57694 + depends on !BR2_ARM_CPU_ARMV4 # needs ARMv5+ + # no built-in double-conversion support + depends on !BR2_arc + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_QT6BASE + help + This option enables the Qt6 framework. Sub-options allow to + select which modules should be built. + + http://qt.io + +if BR2_PACKAGE_QT6 +#source "package/qt6/qt63d/Config.in" +source "package/qt6/qt6base/Config.in" +#source "package/qt6/qt6charts/Config.in" +#source "package/qt6/qt6coap/Config.in" +#source "package/qt6/qt6connectivity/Config.in" +#source "package/qt6/qt6declarative/Config.in" +#source "package/qt6/qt6enginio/Config.in" +#source "package/qt6/qt6graphicaleffects/Config.in" +#source "package/qt6/qt6imageformats/Config.in" +#source "package/qt6/qt6knx/Config.in" +#source "package/qt6/qt6location/Config.in" +#source "package/qt6/qt6lottie/Config.in" +#source "package/qt6/qt6mqtt/Config.in" +#source "package/qt6/qt6multimedia/Config.in" +#source "package/qt6/qt6quickcontrols/Config.in" +#source "package/qt6/qt6quickcontrols2/Config.in" +#source "package/qt6/qt6quicktimeline/Config.in" +#source "package/qt6/qt6remoteobjects/Config.in" +#source "package/qt6/qt6script/Config.in" +#source "package/qt6/qt6scxml/Config.in" +#source "package/qt6/qt6sensors/Config.in" +#source "package/qt6/qt6serialbus/Config.in" +#source "package/qt6/qt6serialport/Config.in" +#source "package/qt6/qt6svg/Config.in" +#source "package/qt6/qt6tools/Config.in" +#source "package/qt6/qt6virtualkeyboard/Config.in" +#source "package/qt6/qt6wayland/Config.in" +#source "package/qt6/qt6webchannel/Config.in" +#source "package/qt6/qt6webkit/Config.in" +#source "package/qt6/qt6webkit-examples/Config.in" +#source "package/qt6/qt6webengine/Config.in" +#source "package/qt6/qt6websockets/Config.in" +#source "package/qt6/qt6webview/Config.in" +#source "package/qt6/qt6x11extras/Config.in" +#source "package/qt6/qt6xmlpatterns/Config.in" +endif diff --git a/package/qt6/qt6.mk b/package/qt6/qt6.mk new file mode 100644 index 0000000000..b586e65c7b --- /dev/null +++ b/package/qt6/qt6.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# qt6 +# +################################################################################ + +QT6_VERSION_MAJOR = 6.0 +QT6_VERSION = $(QT6_VERSION_MAJOR).1 +QT6_SOURCE_TARBALL_PREFIX = everywhere-src +QT6_SITE = https://download.qt.io/archive/qt/$(QT6_VERSION_MAJOR)/$(QT6_VERSION)/submodules + +include $(sort $(wildcard package/qt6/*/*.mk)) diff --git a/package/qt6/qt6base/0001-src-corelib-disable-global-minimum-linux-support.patch b/package/qt6/qt6base/0001-src-corelib-disable-global-minimum-linux-support.patch new file mode 100644 index 0000000000..18192096dc --- /dev/null +++ b/package/qt6/qt6base/0001-src-corelib-disable-global-minimum-linux-support.patch @@ -0,0 +1,55 @@ +From 7ded1e6fe89b6593ea0e6fb5dfeffef5385bd3ac Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Fri, 11 Dec 2020 22:26:16 +0100 +Subject: [PATCH] src/corelib: disable global/minimum-linux support + +Fixes: + + [433/575] Building ASM object src/corelib/CMakeFiles/Core.dir/global/minimum-linux.S.o + FAILED: src/corelib/CMakeFiles/Core.dir/global/minimum-linux.S.o + /usr/bin/as --defsym Core_EXPORTS --defsym ELF_INTERPRETER=\"/lib64/ld-linux-x86-64.so.2\" --defsym PCRE2_CODE_UNIT_WIDTH=16 --defsym QT_ASCII_CAST_WARNINGS --defsym QT_BUILDING_QT --defsym QT_BUILD_CORE_LIB --defsym QT_CORE_QOBJECT_LIB --defsym QT_DEPRECATED_WARNINGS --defsym QT_DEPRECATED_WARNINGS_SINCE=0x060000 --defsym QT_DISABLE_DEPRECATED_BEFORE=0x050000 --defsym QT_MOC_COMPAT --defsym QT_NO_CAST_TO_ASCII --defsym QT_NO_DEBUG --defsym QT_NO_FOREACH --defsym QT_NO_USING_NAMESPACE --defsym QT_USE_QSTRINGBUILDER --defsym _LARGEFILE64_SOURCE --defsym _LARGEFILE_SOURCE -Isrc/corelib/Core_autogen/include -Iinclude -Iinclude/QtCore -Isrc/corelib -Isrc/corelib/global -Isrc/corelib/../3rdparty/tinycbor/src -Iinclude/QtCore/6.0.0 -Iinclude/QtCore/6.0.0/QtCore -Isrc/corelib/../3rdparty/double-conversion/.. -Isrc/corelib/../3rdparty/double-conversion/include -Isrc/corelib/../3rdparty/forkfd -Isrc/corelib/.rcc -Imkspecs/linux-g++ -Isrc/3rdparty/pcre2/src -isystem .../host/usr/include -O3 -DNDEBUG -fPIC -Wall -Wextra -fPIC --MD src/corelib/CMakeFiles/Core.dir/global/minimum-linux.S.o.d -o src/corelib/CMakeFiles/Core.dir/global/minimum-linux.S.o -c src/corelib/global/minimum-linux.S + Assembler messages: + Fatal error: bad defsym; format is --defsym name=value + +Signed-off-by: Peter Seiderer +--- + src/corelib/CMakeLists.txt | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt +index c4461da6..64a00343 100644 +--- a/src/corelib/CMakeLists.txt ++++ b/src/corelib/CMakeLists.txt +@@ -566,10 +566,10 @@ qt_internal_extend_target(Core CONDITION INTEGRITY + #) + # special case end + +-qt_internal_extend_target(Core CONDITION LINUX AND NOT static +- SOURCES +- global/minimum-linux_p.h +-) ++#qt_internal_extend_target(Core CONDITION LINUX AND NOT static ++# SOURCES ++# global/minimum-linux_p.h ++#) + + #### Keys ignored in scope 34:.:global:global/global.pri:precompile_header: + # NO_PCH_ASM = "global/minimum-linux.S" +@@ -583,10 +583,10 @@ qt_internal_extend_target(Core CONDITION LINUX AND NOT static + #### Keys ignored in scope 35:.:global:global/global.pri:silent: + # no_pch_assembler.commands = "@echo" "compiling[no_pch]" "${QMAKE_FILE_IN}" "&&" + +-qt_internal_extend_target(Core CONDITION LINUX AND NOT precompile_header AND NOT static +- SOURCES +- global/minimum-linux.S +-) ++#qt_internal_extend_target(Core CONDITION LINUX AND NOT precompile_header AND NOT static ++# SOURCES ++# global/minimum-linux.S ++#) + + qt_internal_extend_target(Core CONDITION QT_FEATURE_slog2 + LIBRARIES +-- +2.30.0 + diff --git a/package/qt6/qt6base/0002-QtAutoDetect-fix-failure-with-multiline-toolchain-fi.patch b/package/qt6/qt6base/0002-QtAutoDetect-fix-failure-with-multiline-toolchain-fi.patch new file mode 100644 index 0000000000..a93ecea6f7 --- /dev/null +++ b/package/qt6/qt6base/0002-QtAutoDetect-fix-failure-with-multiline-toolchain-fi.patch @@ -0,0 +1,48 @@ +From 44a440164c5bbc5168c6034f1bf5d396b20cd076 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sat, 6 Feb 2021 13:12:09 +0100 +Subject: [PATCH] QtAutoDetect: fix failure with multiline toolchain file + +The unquoted 'string(FIND ${toolchain_file_content} ...)' call fails for +multiline content of the variable toolchain_file_content, so add +quates arround, fixes: + + [...] + CMake Error at cmake/QtAutoDetect.cmake:42 (string): + string sub-command FIND requires 3 or 4 parameters. + Call Stack (most recent call first): + cmake/QtAutoDetect.cmake:311 (qt_auto_detect_android) + CMakeLists.txt:19 (include) + [...] + -- Configuring incomplete, errors occurred! + +in case the given toolchain file starts with multiple lines +in the first 80 characters, e.g. in the case of buildroot: + + # + # Automatically generated file; DO NOT EDIT. + # CMake toolchain file for Buildroot + # + [...] + +Signed-off-by: Peter Seiderer +--- + cmake/QtAutoDetect.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cmake/QtAutoDetect.cmake b/cmake/QtAutoDetect.cmake +index 4518078d..36761dba 100644 +--- a/cmake/QtAutoDetect.cmake ++++ b/cmake/QtAutoDetect.cmake +@@ -39,7 +39,7 @@ function(qt_auto_detect_android) + if(DEFINED CMAKE_TOOLCHAIN_FILE AND NOT DEFINED QT_AUTODETECT_ANDROID) + + file(READ ${CMAKE_TOOLCHAIN_FILE} toolchain_file_content OFFSET 0 LIMIT 80) +- string(FIND ${toolchain_file_content} "The Android Open Source Project" find_result REVERSE) ++ string(FIND "${toolchain_file_content}" "The Android Open Source Project" find_result REVERSE) + if (NOT ${find_result} EQUAL -1) + set(android_detected TRUE) + else() +-- +2.30.0 + diff --git a/package/qt6/qt6base/Config.in b/package/qt6/qt6base/Config.in new file mode 100644 index 0000000000..9429ebd8f7 --- /dev/null +++ b/package/qt6/qt6base/Config.in @@ -0,0 +1,311 @@ +config BR2_PACKAGE_QT6BASE + bool "qt6base" + select BR2_PACKAGE_DOUBLE_CONVERSION + select BR2_PACKAGE_LIBB2 + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_PCRE2 + select BR2_PACKAGE_PCRE2_16 + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6base module, which + contains the base Qt libraries: QtCore, QtNetwork, QtGui, + QtWidgets, etc. + + http://qt.io + +if BR2_PACKAGE_QT6BASE + +config BR2_PACKAGE_QT6BASE_CUSTOM_CONF_OPTS + string "Custom configuration options" + help + Define custom qt6 configuration options which can be used to + enable or disable options not managed by buildroot. These + options are appended to the ones generated by buildroot and + passed to qt6base during configuration. + + Use cmake style '-Dsome_option_name=ON' or -Dsome_option_name=OFF'. + + +#config BR2_PACKAGE_QT6BASE_CONFIG_FILE +# string "Config file" +# help +# Configure options allow to set which modules are being +# compiled or not in Qt, but Qt also provide a more +# fine-grained mechanism to configure which features should be +# enabled or disabled, through a header file. Examples of such +# header files can be found in src/corelib/global/qconfig-*.h +# in the Qt sources. +# +# This option allows to set the path of such a configuration +# file, which Buildroot will give to Qt at compile time. +# +config BR2_PACKAGE_QT6BASE_EXAMPLES + bool "Compile and install examples (with code)" +# select BR2_PACKAGE_QT6BASE_NETWORK +# select BR2_PACKAGE_QT6BASE_XML + help + If unsure, say N. + +config BR2_PACKAGE_QT6BASE_NETWORK + bool "network module" + help + This options enables the Qt6Network library. + +config BR2_PACKAGE_QT6BASE_CONCURRENT + bool "concurrent module" + help + This options enables the Qt6Concurrent library. + +config BR2_PACKAGE_QT6BASE_SQL + bool "sql module" + help + This options enables the Qt6Sql library. + +if BR2_PACKAGE_QT6BASE_SQL +config BR2_PACKAGE_QT6BASE_MYSQL + bool "MySQL Plugin" + depends on BR2_USE_MMU # mysql + select BR2_PACKAGE_MYSQL +# select BR2_PACKAGE_NCURSES +# select BR2_PACKAGE_READLINE + help + Build MySQL plugin + If unsure, say n. + +config BR2_PACKAGE_QT6BASE_PSQL + bool "PostgreSQL Plugin" + depends on BR2_USE_MMU # postgresql + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # postgresql + select BR2_PACKAGE_POSTGRESQL + help + Build PostgreSQL plugin + If unsure, say n. + +comment "PostgreSQL plugin needs a toolchain w/ wchar, dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR + +choice + prompt "SQLite 3 support" + default BR2_PACKAGE_QT6BASE_SQLITE_NONE + help + Select SQLite support. + +config BR2_PACKAGE_QT6BASE_SQLITE_NONE + bool "No sqlite support" + help + Do not compile any kind of SQLite support. + +config BR2_PACKAGE_QT6BASE_SQLITE_QT + bool "Qt SQLite" + help + Use Qt bundled SQLite support. + +config BR2_PACKAGE_QT6BASE_SQLITE_SYSTEM + bool "System SQLite" + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_SQLITE_ENABLE_COLUMN_METADATA + help + Use system SQLite. + +endchoice + +endif # BR2_PACKAGE_QT6BASE_SQL + +config BR2_PACKAGE_QT6BASE_TEST + bool "test module" + help + This options enables the Qt5Test library. + +config BR2_PACKAGE_QT6BASE_XML + bool "XML module" + help + This options enables the Qt5Xml library. + +config BR2_PACKAGE_QT6BASE_GUI + bool "gui module" + select BR2_PACKAGE_FREETYPE + # At least one graphic backend must be enabled, so enable + # linuxfb if nothing is enabled. + select BR2_PACKAGE_QT6BASE_LINUXFB if \ + !BR2_PACKAGE_QT6BASE_DIRECTFB && \ + !BR2_PACKAGE_QT6BASE_XCB && \ + !BR2_PACKAGE_QT6BASE_EGLFS + help + This option enables the Qt6Gui library. + +if BR2_PACKAGE_QT6BASE_GUI + +config BR2_PACKAGE_QT6BASE_WIDGETS + bool "widgets module" + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_QT6BASE_XCB + help + This option enables the Qt6Widgets library. + +comment "OpenGL support needs an OpenGL-capable backend" + depends on !BR2_PACKAGE_QT6_GL_AVAILABLE + +config BR2_PACKAGE_QT6BASE_OPENGL + bool "OpenGL support" + depends on BR2_PACKAGE_QT6_GL_AVAILABLE + help + This option enables OpenGL support. + +if BR2_PACKAGE_QT6BASE_OPENGL + +choice + prompt "OpenGL API" + help + Select OpenGL API. + +config BR2_PACKAGE_QT6BASE_OPENGL_DESKTOP + bool "Desktop OpenGL" + depends on BR2_PACKAGE_HAS_LIBGL + help + Use desktop OpenGL. + +config BR2_PACKAGE_QT6BASE_OPENGL_ES2 + bool "OpenGL ES 2.0+" + depends on BR2_PACKAGE_HAS_LIBGLES + help + Use OpenGL ES 2.0 and later versions. + +endchoice + +config BR2_PACKAGE_QT6BASE_OPENGL_LIB + bool "opengl module" + select BR2_PACKAGE_QT6BASE_WIDGETS + help + This option enables the Qt6OpenGL library. This library + includes OpenGL support classes provided to ease porting + from Qt 4.x. + +endif + +config BR2_PACKAGE_QT6BASE_LINUXFB + bool "linuxfb support" + +config BR2_PACKAGE_QT6BASE_DIRECTFB + bool "directfb support" + depends on BR2_PACKAGE_DIRECTFB + +comment "directfb backend available if directfb is enabled" + depends on !BR2_PACKAGE_DIRECTFB + +config BR2_PACKAGE_QT6BASE_XCB + bool "X.org XCB support" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XCB_UTIL_IMAGE + select BR2_PACKAGE_XCB_UTIL_KEYSYMS + select BR2_PACKAGE_XCB_UTIL_RENDERUTIL + select BR2_PACKAGE_XCB_UTIL_WM + select BR2_PACKAGE_LIBXKBCOMMON + +comment "X.org XCB backend available if X.org is enabled" + depends on !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_QT6BASE_EGLFS + bool "eglfs support" + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_QT6_GL_AVAILABLE + select BR2_PACKAGE_QT6BASE_OPENGL + +comment "eglfs backend available if OpenGL and EGL are enabled" + depends on !BR2_PACKAGE_HAS_LIBEGL || !BR2_PACKAGE_QT6_GL_AVAILABLE + +config BR2_PACKAGE_QT6BASE_DEFAULT_QPA + string "Default graphical platform" + help + Choose the default platform abstraction to use for graphical + applications (e.g xcb, linuxfb, eglfs, ...). If this is + empty, the default for your architecture will be used + (usually this is eglfs). + + You can get a list of supported platforms by running a Qt + application with the option "-platform help" on your + target. You can choose a different platform at runtime with + the -platform option. + +# ToDo: Qt::PrintSupport/FEATURE_cubs only available if FEATURE_gui/FEATURE_widgets enabled??? +#config BR2_PACKAGE_QT6BASE_PRINTSUPPORT +# depends on BR2_PACKAGE_QT6BASE_WIDGETS +# def_bool y + +config BR2_PACKAGE_QT6BASE_FONTCONFIG + bool "fontconfig support" + select BR2_PACKAGE_FONTCONFIG + help + This option enables Fontconfig and Freetype support using + the system fontconfig and freetype2 libraries. + +config BR2_PACKAGE_QT6BASE_HARFBUZZ + bool "harfbuzz support" + select BR2_PACKAGE_HARFBUZZ if \ + BR2_TOOLCHAIN_HAS_SYNC_4 && \ + BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + help + This option enables HarfBuzz support (either system harfbuzz + if the toolchain supports __sync for 4 bytes, or the qt + provided one which avoids this dependency by using QAtomic). + +config BR2_PACKAGE_QT6BASE_GIF + bool "GIF support" + help + This compiles and installs the plugin for GIF reading support. + +config BR2_PACKAGE_QT6BASE_JPEG + bool "JPEG support" + select BR2_PACKAGE_JPEG + help + This option enables JPEG support using the system libjpeg + library. + +config BR2_PACKAGE_QT6BASE_PNG + bool "PNG support" + select BR2_PACKAGE_LIBPNG + help + This option enables PNG support using the system libpng + library. + +endif + +config BR2_PACKAGE_QT6BASE_SYSLOG + bool "syslog support" + help + Logs to the standard UNIX logging mechanism. + +config BR2_PACKAGE_QT6BASE_DBUS + bool "DBus module" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + select BR2_PACKAGE_DBUS + help + This option enables the D-Bus module. + +config BR2_PACKAGE_QT6BASE_ICU + bool "Enable ICU support" + depends on !BR2_BINFMT_FLAT # icu + depends on BR2_HOST_GCC_AT_LEAST_4_9 # icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # icu + select BR2_PACKAGE_ICU + help + This option enables ICU support in Qt6. This is for example + needed for Qt6Webkit. + +comment "icu support needs a toolchain w/ gcc >= 4.9, host gcc >= 4.9" + depends on !BR2_BINFMT_FLAT + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ + !BR2_HOST_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_QT6BASE_TSLIB + bool "Enable Tslib support" + select BR2_PACKAGE_TSLIB + help + This options enables the Tslib plugin + +endif diff --git a/package/qt6/qt6base/qt6base.hash b/package/qt6/qt6base/qt6base.hash new file mode 100644 index 0000000000..bf919abf99 --- /dev/null +++ b/package/qt6/qt6base/qt6base.hash @@ -0,0 +1,10 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.0/6.0.0/submodules/qtbase-everywhere-src-6.0.0.tar.xz.sha256 +sha256 8d2bc1829c1479e539f66c2f51a7e11c38a595c9e8b8e45a3b45f3cb41c6d6aa qtbase-everywhere-src-6.0.1.tar.xz + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 88ec689407cf2df9b2eb5c45952564d51ce73c129a3bdffb15c0d2d161ad7558 LICENSE.LGPLv3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 2a886915de4f296cdae5ed67064f86dba01d0c55286d86e8487f2a5caaf40216 src/3rdparty/harfbuzz-ng/COPYING diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/qt6base.mk new file mode 100644 index 0000000000..144f91dbec --- /dev/null +++ b/package/qt6/qt6base/qt6base.mk @@ -0,0 +1,496 @@ +################################################################################ +# +# qt6base +# +################################################################################ + +QT6BASE_VERSION = $(QT6_VERSION) +QT6BASE_SITE = $(QT6_SITE) +QT6BASE_SOURCE = qtbase-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6BASE_VERSION).tar.xz + +QT6BASE_DEPENDENCIES = \ + host-pkgconf \ + host-ninja \ + host-qt6base \ + double-conversion \ + libb2 \ + pcre2 \ + zlib +QT6BASE_INSTALL_STAGING = YES +QT6BASE_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6BASE_MAKE = ninja +QT6BASE_INSTALL_STAGING_OPTS = install +QT6BASE_INSTALL_STAGING_ENV = DESTDIR=$(STAGING_DIR) +QT6BASE_INSTALL_TARGET_OPTS = install +QT6BASE_INSTALL_TARGET_ENV = DESTDIR=$(TARGET_DIR) +QT6BASE_CONF_OPTS += \ + -GNinja \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_SHARED_LIBS=ON \ + -DBUILD_WITH_PCH=OFF \ + -DFEATURE_animation=OFF \ + -DFEATURE_concurrent=OFF \ + -DFEATURE_doubleconversion=ON \ + -DFEATURE_easingcurve=OFF \ + -DFEATURE_hijricalendar=OFF \ + -DFEATURE_islamiccivilcalendar=OFF \ + -DFEATURE_jalalicalendar=OFF \ + -DFEATURE_libudev=ON \ + -DFEATURE_network=OFF \ + -DFEATURE_mimetype=ON \ + -DFEATURE_mimetype_database=ON \ + -DFEATURE_precompile_header=OFF \ + -DFEATURE_sql=OFF \ + -DFEATURE_system_doubleconversion=ON \ + -DFEATURE_system_libb2=ON \ + -DFEATURE_system_pcre2=ON \ + -DFEATURE_system_zlib=ON \ + -DFEATURE_testlib=OFF \ + -DFEATURE_translation=OFF \ + -DINSTALL_DESCRIPTIONSDIR=/usr/lib/qt6/modules \ + -DINSTALL_DOCDIR=/usr/lib/qt6/doc \ + -DINSTALL_EXAMPLESDIR=/usr/lib/qt6/examples \ + -DINSTALL_MKSPECSDIR=/usr/lib/qt6/mkspecs \ + -DINSTALL_PLUGINSDIR=/usr/lib/qt6/plugins \ + -DINSTALL_QMLDIR=/usr/lib/qt6/qml \ + -DQT_BUILD_EXAMPLES_BY_DEFAULT=OFF \ + -DQT_BUILD_TESTS_BY_DEFAULT=OFF \ + -DQT_BUILD_TOOLS_BY_DEFAULT=OFF \ + -DQT_BUILD_TOOLS_WHEN_CROSSCOMPILING=OFF \ + -DQT_QMAKE_TARGET_MKSPEC=linux-g++ \ + -DQT_USE_BUNDLED_BundledFreetype=OFF \ + -DQT_USE_BUNDLED_BundledLibpng=OFF \ + -DQT_USE_BUNDLED_BundledPcre2=OFF \ + -DECM_ENABLE_SANITIZERS=OFF + + +# -DFEATURE_glib=ON +# -DFEATURE_glibc=OFF + +#ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_90620),y) +#QT6BASE_CFLAGS += -O0 +#QT6BASE_CXXFLAGS += -O0 +#endif +# +QT6BASE_CONF_OPTS += -DFEATURE_sse2=$(if $(BR2_X86_CPU_HAS_SSE2),ON,OFF) +QT6BASE_CONF_OPTS += -DFEATURE_sse3=$(if $(BR2_X86_CPU_HAS_SSE3),ON,OFF) +QT6BASE_CONF_OPTS += -DFEATURE_sse4_1=$(if $(BR2_X86_CPU_HAS_SSE4),ON,OFF) +QT6BASE_CONF_OPTS += -DFEATURE_sse4_2=$(if $(BR2_X86_CPU_HAS_SSE42),ON,OFF) +QT6BASE_CONF_OPTS += -DFEATURE_ssse3=$(if $(BR2_X86_CPU_HAS_SSSE3),ON,OFF) +QT6BASE_CONF_OPTS += -DFEATURE_avx=$(if $(BR2_X86_CPU_HAS_AVX),ON,OFF) +QT6BASE_CONF_OPTS += -DFEATURE_avx2=$(if $(BR2_X86_CPU_HAS_AVX2),ON,OFF) +# no buildroot BR2_X86_CPU_HAS_AVX512 option yet +QT6BASE_CONF_OPTS += \ + -DFEATURE_avx512bw=OFF \ + -DFEATURE_avx512cd=OFF \ + -DFEATURE_avx512dq=OFF \ + -DFEATURE_avx512er=OFF \ + -DFEATURE_avx512f=OFF \ + -DFEATURE_avx512ifma=OFF \ + -DFEATURE_avx512pf=OFF \ + -DFEATURE_avx512vbmi=OFF \ + -DFEATURE_avx512vl=OFF + +# ToDo: FEATURE_kms only available if FEATURE_gui enabled??? +ifeq ($(BR2_PACKAGE_LIBDRM),y) +QT6BASE_CONF_OPTS += -DFEATURE_kms=ON +QT6BASE_DEPENDENCIES += libdrm +else +QT6BASE_CONF_OPTS += -DFEATURE_kms=OFF +endif + +# ToDo: FEATURE_kms only available if FEATURE_gui enabled??? +# Uses libgbm from mesa3d +ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y) +QT6BASE_CONF_OPTS += -DFEATURE_gbm=ON +QT6BASE_DEPENDENCIES += mesa3d +else ifeq ($(BR2_PACKAGE_GCNANO_BINARIES),y) +QT6BASE_CONF_OPTS += -DFEATURE_gbm=ON +QT6BASE_DEPENDENCIES += gcnano-binaries +else ifeq ($(BR2_PACKAGE_TI_SGX_LIBGBM),y) +QT6BASE_CONF_OPTS += -DFEATURE_gbm=ON +QT6BASE_DEPENDENCIES += ti-sgx-libgbm +else ifeq ($(BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL),y) +QT6BASE_CONF_OPTS += -DFEATURE_gbm=ON +QT6BASE_DEPENDENCIES += imx-gpu-viv +else +QT6BASE_CONF_OPTS += -DFEATURE_gbm=OFF +endif + +#ifeq ($(BR2_ENABLE_DEBUG),y) +#QT6BASE_CONFIGURE_OPTS += -debug +#else +#QT6BASE_CONFIGURE_OPTS += -release +#endif +# +#QT6BASE_CONFIGURE_OPTS += -opensource -confirm-license +#QT6BASE_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +#QT6BASE_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +#ifeq ($(BR2_PACKAGE_QT6BASE_EXAMPLES),y) +#QT6BASE_LICENSE += , BSD-3-Clause (examples) +#endif +# +#QT6BASE_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_QT6BASE_CONFIG_FILE)) +# +#ifneq ($(QT6BASE_CONFIG_FILE),) +#QT6BASE_CONFIGURE_OPTS += -qconfig buildroot +#endif +# +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +QT6BASE_CONF_OPTS += -DFEATURE_libudev=ON +QT6BASE_DEPENDENCIES += udev +else +QT6BASE_CONF_OPTS += -DFEATURE_libudev=OFF +endif + +# ToDo: FEATURE_cubs only available if FEATURE_gui/FEATURE_widgets enabled??? +ifeq ($(BR2_PACKAGE_CUPS), y) +QT6BASE_CONF_OPTS += -DFEATURE_cups=ON +QT6BASE_DEPENDENCIES += cups +else +QT6BASE_CONF_OPTS += -DFEATURE_cups=OFF +endif + +# Qt5 SQL Plugins +ifeq ($(BR2_PACKAGE_QT6BASE_SQL),y) +QT6BASE_CONF_OPTS += -DFEATURE_sql=ON +QT6BASE_CONF_OPTS += -DFEATURE_sql_db2=OFF -DFEATURE_sql_ibase=OFF -DFEATURE_sql_oci=OFF -DFEATURE_sql_odbc=OFF +ifeq ($(BR2_PACKAGE_QT6BASE_MYSQL),y) +QT6BASE_CONF_OPTS += -DFEATURE_sql_mysql=ON +QT6BASE_DEPENDENCIES += mysql +else +QT6BASE_CONF_OPTS += -DFEATURE_sql_mysql=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_PSQL),y) +QT6BASE_CONF_OPTS += -DFEATURE_sql_psql=ON +QT6BASE_DEPENDENCIES += postgresql +else +QT6BASE_CONF_OPTS += -DFEATURE_sql_psql=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_SQLITE_SYSTEM),y) +QT6BASE_CONF_OPTS += -DFEATURE_sql_sqlite=ON -DFEATURE_system_sqlite=ON +QT6BASE_DEPENDENCIES += sqlite +else ifeq ($(BR2_PACKAGE_QT6BASE_SQLITE_QT),y) +QT6BASE_CONF_OPTS += -DFEATURE_sql_sqlite=ON -DFEATURE_system_sqlite=OFF +else +QT6BASE_CONF_OPTS += -DFEATURE_sql_sqlite=OFF +endif + +else # BR2_PACKAGE_QT6BASE_SQL +QT6BASE_CONF_OPTS += -DFEATURE_sql=OFF +endif # BR2_PACKAGE_QT6BASE_SQL + +ifeq ($(BR2_PACKAGE_QT6BASE_GUI),y) +QT6BASE_CONF_OPTS += -DFEATURE_gui=ON -DFEATURE_freetype=ON +#QT6BASE_CONF_OPTS += -DFEATURE_opengles2=OFF -DFEATURE_opengles3=OFF -DFEATURE_opengles31=OFF -DFEATURE_opengles32=OFF -DFEATURE_gbm=OFF -DFEATURE_vnc=OFF -DFEATURE_sessionmanager=OFF +QT6BASE_DEPENDENCIES += freetype +QT6BASE_CONF_OPTS += -DFEATURE_vulkan=OFF +else +QT6BASE_CONF_OPTS += -DFEATURE_gui=OFF +endif + +# ToDo: FEATURE_kms only available if FEATURE_gui enabled??? +ifeq ($(BR2_PACKAGE_QT6BASE_HARFBUZZ),y) +QT6BASE_CONF_OPTS += -DFEATURE_harfbuzz=ON +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4),y) +# system harfbuzz in case __sync for 4 bytes is supported +QT6BASE_CONF_OPTS += -DQT_USE_BUNDLED_BundledHarfbuzz=OFF +QT6BASE_DEPENDENCIES += harfbuzz +else +# qt harfbuzz otherwise (using QAtomic instead) +QT6BASE_CONF_OPTS += -DQT_USE_BUNDLED_BundledHarfbuzz=ON +QT6BASE_LICENSE += , MIT (harfbuzz) +QT6BASE_LICENSE_FILES += src/3rdparty/harfbuzz-ng/COPYING +endif +else +QT6BASE_CONFIGURE_OPTS += -DFEATURE_harfbuzz=OFF +endif + +# ToDo: FEATURE_kms only available if FEATURE_gui enabled??? +ifeq ($(BR2_PACKAGE_QT6BASE_WIDGETS),y) +QT6BASE_CONF_OPTS += -DFEATURE_widgets=ON +ifeq ($(BR2_PACKAGE_QT6BASE_LINUXFB),y) +QT6BASE_CONF_OPTS += -DFEATURE_linuxfb=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_linuxfb=OFF +endif +ifeq ($(BR2_PACKAGE_QT6BASE_DIRECTFB),y) +QT6BASE_CONF_OPTS += -DFEATURE_directfb=ON +QT6BASE_DEPENDENCIES += directfb +else +QT6BASE_CONF_OPTS += -DFEATURE_directfb=OFF +endif +ifeq ($(BR2_PACKAGE_QT6BASE_XCB),y) +QT6BASE_CONF_OPTS += \ + -DFEATURE_xcb=ON \ + -DFEATURE_xcb_xlib=ON \ + -DFEATURE_xkbcommon=ON \ + -DFEATURE_xkbcommon_x11=ON +QT6BASE_DEPENDENCIES += \ + libxcb \ + xcb-util-wm \ + xcb-util-image \ + xcb-util-keysyms \ + xcb-util-renderutil \ + xlib_libX11 \ + libxkbcommon +ifeq ($(BR2_PACKAGE_QT6BASE_WIDGETS),y) +QT6BASE_DEPENDENCIES += xlib_libXext +endif +else +QT6BASE_CONF_OPTS += -DFEATURE_xcb=OFF +endif +else +QT6BASE_CONF_OPTS += -DFEATURE_widgets=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_OPENGL_DESKTOP),y) +QT6BASE_CONF_OPTS += -DFEATURE_opengl=ON -DFEATURE_opengl_desktop=ON +QT6BASE_DEPENDENCIES += libgl +else ifeq ($(BR2_PACKAGE_QT6BASE_OPENGL_ES2),y) +QT6BASE_CONF_OPTS += -DFEATURE_opengl=ON -DFEATURE_opengles2=ON +QT6BASE_DEPENDENCIES += libgles +else +QT6BASE_CONF_OPTS += -DFEATURE_opengl=OFF +endif + +#QT6BASE_DEFAULT_QPA = $(call qstrip,$(BR2_PACKAGE_QT6BASE_DEFAULT_QPA)) +#QT6BASE_CONFIGURE_OPTS += $(if $(QT6BASE_DEFAULT_QPA),-qpa $(QT6BASE_DEFAULT_QPA)) + +ifeq ($(BR2_PACKAGE_QT6BASE_EGLFS),y) +QT6BASE_CONFIGURE_OPTS += -DFEATURE_eglfs=ON +QT6BASE_DEPENDENCIES += libegl +else +QT6BASE_CONFIGURE_OPTS += -DFEATURE_eglfs=OFF +endif + +# ToDo: depend on NETWOK, set FEATURE_openssl_linked, FEATURE_openssl_runtime, +# FEATURE_opensslv11??? +ifeq ($(BR2_PACKAGE_OPENSSL),y) +QT6BASE_CONFIGURE_OPTS += -DFEATURE_openssl=ON +QT6BASE_DEPENDENCIES += ,openssl +else +QT6BASE_CONFIGURE_OPTS += -DFEATURE_openssl=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_FONTCONFIG),y) +QT6BASE_CONF_OPTS += -DFEATURE_fontconfig=ON +QT6BASE_DEPENDENCIES += fontconfig +else +QT6BASE_CONF_OPTS += -DFEATURE_fontconfig=OFF +endif + +# ToDo: FEATURE_kms only available if FEATURE_gui enabled??? +ifeq ($(BR2_PACKAGE_QT6BASE_GIF),y) +QT6BASE_CONF_OPTS += -DFEATURE_gif=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_gif=OFF +endif + +# ToDo: FEATURE_kms only available if FEATURE_gui enabled??? +ifeq ($(BR2_PACKAGE_QT6BASE_JPEG),y) +QT6BASE_CONF_OPTS += -DFEATURE_jpeg=ON +QT6BASE_DEPENDENCIES += jpeg +else +QT6BASE_CONF_OPTS += -DFEATURE_jpeg=OFF +endif + +# ToDo: FEATURE_kms only available if FEATURE_gui enabled??? +ifeq ($(BR2_PACKAGE_QT6BASE_PNG),y) +QT6BASE_CONF_OPTS += -DFEATURE_png=ON -DFEATURE_system_png=ON +QT6BASE_DEPENDENCIES += libpng +else +QT6BASE_CONF_OPTS += -DFEATURE_png=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_DBUS),y) +QT6BASE_CONF_OPTS += -DFEATURE_dbus=ON +QT6BASE_DEPENDENCIES += dbus +HOST_QT6BASE_CONF_OPTS += -DFEATURE_dbus=ON +#HOST_QT6BASE_DEPENDENCIES += host-dbus +else +QT6BASE_CONF_OPTS += -DFEATURE_dbus=OFF +HOST_QT6BASE_CONF_OPTS += -DFEATURE_dbus=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_TSLIB),y) +QT6BASE_CONF_OPTS += -DFEATURE_tslib=ON +QT6BASE_DEPENDENCIES += tslib +else +QT6BASE_CONF_OPTS += -DFEATURE_tslib=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +QT6BASE_CONF_OPTS += -DFEATURE_glib=ON +QT6BASE_DEPENDENCIES += libglib2 +else +QT6BASE_CONF_OPTS += -DFEATURE_glib=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_ICU),y) +QT6BASE_CONF_OPTS += -DFEATURE_icu=ON +QT6BASE_DEPENDENCIES += icu +else +QT6BASE_CONF_OPTS += -DFEATURE_icu=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_EXAMPLES),y) +QT6BASE_CONF_OPTS += -DQT_BUILD_EXAMPLES=ON -DQT_BUILD_EXAMPLES_BY_DEFAULT=ON +else +QT6BASE_CONF_OPTS += -DQT_BUILD_EXAMPLES=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_NETWORK),y) +QT6BASE_CONF_OPTS += -DFEATURE_network=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_network=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_CONCURRENT),y) +QT6BASE_CONF_OPTS += -DFEATURE_concurrent=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_concurrent=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_TEST),y) +QT6BASE_CONF_OPTS += -DFEATURE_testlib=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_testlib=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_XML),y) +QT6BASE_CONF_OPTS += -DFEATURE_xml=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_xml=OFF +endif + +# ToDo: FEATURE_kms only available if FEATURE_gui enabled??? +ifeq ($(BR2_PACKAGE_LIBINPUT),y) +QT6BASE_CONF_OPTS += -DFEATURE_libinput=ON +QT6BASE_DEPENDENCIES += libinput +else +QT6BASE_CONF_OPTS += -D FEATURE_libinput=OFF +endif + +# only enable gtk support if libgtk3 X11 backend is enabled +ifeq ($(BR2_PACKAGE_LIBGTK3)$(BR2_PACKAGE_LIBGTK3_X11),yy) +QT6BASE_CONF_OPTS += -DFEATURE_gtk3=ON +QT6BASE_DEPENDENCIES += libgtk3 +else +QT6BASE_CONF_OPTS += -DFEATURE_gtk3=OFF +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +QT6BASE_CONF_OPTS += -DFEATURE_journald=ON +QT6BASE_DEPENDENCIES += systemd +else +QT6BASE_CONF_OPTS += -DFEATURE_journald=OFF +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +QT6BASE_CONF_OPTS += -DFEATURE_zstd=ON +QT6BASE_DEPENDENCIES += zstd +else +QT6BASE_CONF_OPTS += -DFEATURE_zstd=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_SYSLOG),y) +QT6BASE_CONF_OPTS += -DFEATURE_syslog=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_syslog=OFF +endif +# +#ifeq ($(BR2_PACKAGE_IMX_GPU_VIV),y) +## use vivante backend +#QT6BASE_EGLFS_DEVICE = EGLFS_DEVICE_INTEGRATION = eglfs_viv +#else ifeq ($(BR2_PACKAGE_SUNXI_MALI_MAINLINE),y) +## use mali backend +#QT6BASE_EGLFS_DEVICE = EGLFS_DEVICE_INTEGRATION = eglfs_mali +#endif +# +#ifneq ($(QT6BASE_CONFIG_FILE),) +#define QT6BASE_CONFIGURE_CONFIG_FILE +# cp $(QT6BASE_CONFIG_FILE) $(@D)/src/corelib/global/qconfig-buildroot.h +#endef +#endif +# +#QT6BASE_ARCH_CONFIG_FILE = $(@D)/mkspecs/devices/linux-buildroot-g++/arch.conf +#ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +## Qt 5.8 needs atomics, which on various architectures are in -latomic +#define QT6BASE_CONFIGURE_ARCH_CONFIG +# printf 'LIBS += -latomic\n' >$(QT6BASE_ARCH_CONFIG_FILE) +#endef +#endif +# +## This allows to use ccache when available +#define QT6BASE_CONFIGURE_HOSTCC +# $(SED) 's,^QMAKE_CC\s*=.*,QMAKE_CC = $(HOSTCC),' $(@D)/mkspecs/common/g++-base.conf +# $(SED) 's,^QMAKE_CXX\s*=.*,QMAKE_CXX = $(HOSTCXX),' $(@D)/mkspecs/common/g++-base.conf +#endef + +# Must be last so can override all options set by Buildroot +QT6BASE_CONF_OPTS += $(call qstrip,$(BR2_PACKAGE_QT6BASE_CUSTOM_CONF_OPTS)) + +#define QT6BASE_CONFIGURE_CMDS +# 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 +# $(QT6BASE_CONFIGURE_CONFIG_FILE) +# touch $(QT6BASE_ARCH_CONFIG_FILE) +# $(QT6BASE_CONFIGURE_ARCH_CONFIG) +# $(QT6BASE_CONFIGURE_HOSTCC) +# (cd $(@D); \ +# $(TARGET_MAKE_ENV) \ +# PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ +# MAKEFLAGS="-j$(PARALLEL_JOBS) $(MAKEFLAGS)" \ +# ./configure \ +# -v \ +# -prefix /usr \ +# -hostprefix $(HOST_DIR) \ +# -headerdir /usr/include/qt6 \ +# -sysroot $(STAGING_DIR) \ +# -plugindir /usr/lib/qt/plugins \ +# -examplesdir /usr/lib/qt/examples \ +# -no-rpath \ +# -nomake tests \ +# -device buildroot \ +# -device-option CROSS_COMPILE="$(TARGET_CROSS)" \ +# -device-option BR_COMPILER_CFLAGS="$(QT6BASE_CFLAGS)" \ +# -device-option BR_COMPILER_CXXFLAGS="$(QT6BASE_CXXFLAGS)" \ +# $(QT6BASE_CONFIGURE_OPTS) \ +# ) +#endef +# +#QT6BASE_POST_INSTALL_STAGING_HOOKS += QT6_INSTALL_QT_CONF +# + +HOST_QT6BASE_DEPENDENCIES = host-pkgconf host-ninja host-zlib +HOST_QT6BASE_MAKE = ninja +HOST_QT6BASE_CONF_OPTS += \ + -GNinja \ + -DCMAKE_INSTALL_PREFIX=$(HOST_DIR) \ + -DCMAKE_INSTALL_RPATH=$(HOST_DIR)/lib \ + -DBUILD_SHARED_LIBS=ON \ + -DBUILD_WITH_PCH=OFF \ + -DFEATURE_concurrent=OFF \ + -DFEATURE_glib=OFF \ + -DFEATURE_gui=OFF \ + -DFEATURE_icu=OFF \ + -DFEATURE_network=OFF \ + -DFEATURE_precompile_header=OFF \ + -DFEATURE_sql=OFF \ + -DFEATURE_system_zlib=ON \ + -DFEATURE_testlib=OFF \ + -DQT_BUILD_BENCHMARKS=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF \ + -DQT_BUILD_TOOLS_BY_DEFAULT=OFF + +$(eval $(cmake-package)) +$(eval $(host-cmake-package))