diff --git a/dev-qt/qt6-3d/qt6_3d-6.9.0.recipe b/dev-qt/qt6-3d/qt6_3d-6.9.0.recipe new file mode 100644 index 000000000..87779ae62 --- /dev/null +++ b/dev-qt/qt6-3d/qt6_3d-6.9.0.recipe @@ -0,0 +1,153 @@ +SUMMARY="C++ and QML APIs for easy inclusion of 3D graphics" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qt3d-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="521dd56d40873d37b2dd9ca95181037b833a07c48aed5db44efcba83a4716cc2" +SOURCE_DIR="qt3d-everywhere-src-$portVersion" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_3d$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt63DAnimation$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt63DCore$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt63DExtras$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt63DInput$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt63DLogic$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt63DQuick$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt63DQuickAnimation$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt63DQuickExtras$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt63DQuickInput$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt63DQuickRender$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt63DQuickScene2D$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt63DQuickScene3D$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt63DRender$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6Qml$secondaryArchSuffix + lib:libQt6QmlModels$secondaryArchSuffix + lib:libQt6Quick$secondaryArchSuffix + lib:libQt6ShaderTools$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_3d${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt63DAnimation$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt63DCore$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt63DExtras$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt63DInput$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt63DLogic$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt63DQuick$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt63DQuickAnimation$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt63DQuickExtras$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt63DQuickInput$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt63DQuickRender$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt63DQuickScene2D$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt63DQuickScene3D$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt63DRender$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_3d$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libGL$secondaryArchSuffix + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libQt6QmlModels$secondaryArchSuffix == $portVersion + devel:libQt6Quick$secondaryArchSuffix == $portVersion + devel:libQt6ShaderTools$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + local cmakeFlags + # disable simd code for x86_gcc2 + if [ $targetArchitecture == x86_gcc2 ]; then + cmakeFlags="-DFEATURE_sse2=OFF -DFEATURE_avx2=OFF" + fi + + cmake -B build -S $sourceDir -G Ninja $cmakeFlags \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt63DAnimation \ + libQt63DCore \ + libQt63DExtras \ + libQt63DInput \ + libQt63DLogic \ + libQt63DQuick \ + libQt63DQuickAnimation \ + libQt63DQuickExtras \ + libQt63DQuickInput \ + libQt63DQuickRender \ + libQt63DQuickScene2D \ + libQt63DQuickScene3D \ + libQt63DRender + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-5compat/qt6_5compat-6.9.0.recipe b/dev-qt/qt6-5compat/qt6_5compat-6.9.0.recipe new file mode 100644 index 000000000..dfdbe05b9 --- /dev/null +++ b/dev-qt/qt6-5compat/qt6_5compat-6.9.0.recipe @@ -0,0 +1,115 @@ +SUMMARY="Module that contains unsupported Qt 5 APIs" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qt5compat-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="55be0539d3a12071fbe0cd57af17d6dc3fc52578b1649824975e26301f710763" +SOURCE_DIR="qt5compat-everywhere-src-$portVersion" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_5compat$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Core5Compat$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libiconv$secondaryArchSuffix + lib:libicudata$secondaryArchSuffix + lib:libicui18n$secondaryArchSuffix + lib:libicuuc$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6Qml$secondaryArchSuffix + lib:libQt6QmlModels$secondaryArchSuffix + lib:libQt6Quick$secondaryArchSuffix + lib:libQt6ShaderTools$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_5compat${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6Core5Compat$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_5compat$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + qt6_tools${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libiconv$secondaryArchSuffix + devel:libicuuc$secondaryArchSuffix >= 74 + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libQt6QmlModels$secondaryArchSuffix == $portVersion + devel:libQt6Quick$secondaryArchSuffix == $portVersion + devel:libQt6ShaderTools$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6Core5Compat + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake +} diff --git a/dev-qt/qt6-base/patches/qt6_base-6.9.0-source2.patchset b/dev-qt/qt6-base/patches/qt6_base-6.9.0-source2.patchset new file mode 100644 index 000000000..edce099bb --- /dev/null +++ b/dev-qt/qt6-base/patches/qt6_base-6.9.0-source2.patchset @@ -0,0 +1,70 @@ +From 6d0fb38ba72dd1324c2857364bb2834feb974dd6 Mon Sep 17 00:00:00 2001 +From: Luc Schrijvers +Date: Sat, 26 Apr 2025 10:50:40 +0200 +Subject: Build fix + + +diff --git a/src/platform/qhaikuplatformfontdatabase.cpp b/src/platform/qhaikuplatformfontdatabase.cpp +index bdf8875..637427e 100644 +--- a/src/platform/qhaikuplatformfontdatabase.cpp ++++ b/src/platform/qhaikuplatformfontdatabase.cpp +@@ -133,7 +133,7 @@ void QHaikuPlatformFontDatabase::populateFontDatabase() + QStringList QHaikuPlatformFontDatabase::fallbacksForFamily(const QString &family, + QFont::Style style, + QFont::StyleHint styleHint, +- QChar::Script script) const ++ QFontDatabasePrivate::ExtendedScript script) const + { + QStringList result; + if (styleHint == QFont::Monospace || styleHint == QFont::Courier) { +diff --git a/src/platform/qhaikuplatformfontdatabase.h b/src/platform/qhaikuplatformfontdatabase.h +index 6397903..d16396a 100644 +--- a/src/platform/qhaikuplatformfontdatabase.h ++++ b/src/platform/qhaikuplatformfontdatabase.h +@@ -58,15 +58,15 @@ public: + class QHaikuPlatformFontDatabase: public QFreeTypeFontDatabase + { + public: +- QString fontDir() const override; +- void populateFontDatabase() override; +- QFont defaultFont() const override; ++ QString fontDir() const; ++ void populateFontDatabase(); ++ QFont defaultFont() const; + QStringList fallbacksForFamily(const QString &family, + QFont::Style style, + QFont::StyleHint styleHint, +- QChar::Script script) const override; +- QFontEngine *fontEngine(const QFontDef &fontDef, void *handle) override; +- void releaseHandle(void *handle) override; ++ QFontDatabasePrivate::ExtendedScript script) const; ++ QFontEngine *fontEngine(const QFontDef &fontDef, void *handle); ++ void releaseHandle(void *handle); + private: + QHash m_fallbacks; + }; +diff --git a/src/style/helper/qstylehelper.cpp b/src/style/helper/qstylehelper.cpp +index ea65227..0df07ef 100644 +--- a/src/style/helper/qstylehelper.cpp ++++ b/src/style/helper/qstylehelper.cpp +@@ -287,7 +287,7 @@ void drawDial(const QStyleOptionSlider *option, QPainter *painter) + qMax(180, buttonColor.value())); + + // Cache dial background +- BEGIN_STYLE_PIXMAPCACHE(QString::fromLatin1("qdial")); ++ QCachedPainter p(painter, QLatin1StringView("qdial"), option); + p->setRenderHint(QPainter::Antialiasing); + + const qreal d_ = r / 6; +@@ -344,7 +344,7 @@ void drawDial(const QStyleOptionSlider *option, QPainter *painter) + p->drawEllipse(br.adjusted(-1, -1, 1, 1)); + } + +- END_STYLE_PIXMAPCACHE ++ p.finish(); + + QPointF dp = calcRadialPos(option, qreal(0.70)); + buttonColor = buttonColor.lighter(104); +-- +2.48.1 + diff --git a/dev-qt/qt6-base/patches/qt6_base-6.9.0.patchset b/dev-qt/qt6-base/patches/qt6_base-6.9.0.patchset new file mode 100644 index 000000000..be8d5d73a --- /dev/null +++ b/dev-qt/qt6-base/patches/qt6_base-6.9.0.patchset @@ -0,0 +1,1009 @@ +From 66b9a0b4d6b61c4059baf32debbec09bea29fee6 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Oct 2023 10:16:14 +1000 +Subject: Make sure libs are searched in the develop/ dir by CMake + + +diff --git a/mkspecs/features/create_cmake.prf b/mkspecs/features/create_cmake.prf +index 24ed125..52f637e 100644 +--- a/mkspecs/features/create_cmake.prf ++++ b/mkspecs/features/create_cmake.prf +@@ -112,6 +112,9 @@ win32:!static:!staticlib { + CMAKE_DLL_DIR = $$[QT_INSTALL_BINS]/ + CMAKE_DLL_DIR_IS_ABSOLUTE = True + } ++} else:haiku { ++ CMAKE_DLL_DIR = develop/$$CMAKE_LIB_DIR ++ CMAKE_DLL_DIR_IS_ABSOLUTE = $$CMAKE_LIB_DIR_IS_ABSOLUTE + } else { + CMAKE_DLL_DIR = $$CMAKE_LIB_DIR + CMAKE_DLL_DIR_IS_ABSOLUTE = $$CMAKE_LIB_DIR_IS_ABSOLUTE +-- +2.48.1 + + +From f4ed9213f570c269bb5a08e1af420465829f9adc Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Oct 2023 10:16:34 +1000 +Subject: Fix QStandartPaths for Haiku + + +diff --git a/src/corelib/io/qstandardpaths_haiku.cpp b/src/corelib/io/qstandardpaths_haiku.cpp +index 93eba13..2862472 100644 +--- a/src/corelib/io/qstandardpaths_haiku.cpp ++++ b/src/corelib/io/qstandardpaths_haiku.cpp +@@ -111,15 +111,16 @@ QString QStandardPaths::writableLocation(StandardLocation type) + return haikuStandardPath(B_USER_NONPACKAGED_BIN_DIRECTORY); + case TempLocation: + return haikuStandardPath(B_SYSTEM_TEMP_DIRECTORY); +- case AppDataLocation: // fall through ++ case AppDataLocation: ++ return haikuAppStandardPath(B_SYSTEM_CACHE_DIRECTORY); + case AppLocalDataLocation: +- return haikuAppStandardPath(B_USER_NONPACKAGED_DATA_DIRECTORY); ++ return haikuAppStandardPath(B_USER_CACHE_DIRECTORY); + case GenericDataLocation: +- return haikuStandardPath(B_USER_NONPACKAGED_DATA_DIRECTORY); ++ return haikuAppStandardPath(B_SYSTEM_CACHE_DIRECTORY); + case CacheLocation: + return haikuAppStandardPath(B_USER_CACHE_DIRECTORY); + case GenericCacheLocation: +- return haikuStandardPath(B_USER_CACHE_DIRECTORY); ++ return haikuStandardPath(B_SYSTEM_CACHE_DIRECTORY); + case ConfigLocation: + case AppConfigLocation: + case StateLocation: +@@ -128,7 +129,7 @@ QString QStandardPaths::writableLocation(StandardLocation type) + case GenericConfigLocation: + return haikuStandardPath(B_USER_SETTINGS_DIRECTORY); + default: +- return QString(); ++ return haikuAppStandardPath(B_USER_SETTINGS_DIRECTORY); + } + } + +@@ -149,7 +150,7 @@ QStringList QStandardPaths::standardLocations(StandardLocation type) + case PublicShareLocation: + case TemplatesLocation: + case HomeLocation: +- paths += haikuStandardPath(B_USER_NONPACKAGED_DIRECTORY); ++ paths += haikuStandardPath(B_USER_DIRECTORY); + break; + case FontsLocation: + paths += haikuStandardPaths(B_FIND_PATH_FONTS_DIRECTORY); +@@ -173,7 +174,7 @@ QStringList QStandardPaths::standardLocations(StandardLocation type) + break; + case ConfigLocation: // fall through + case AppConfigLocation: +- paths += haikuAppStandardPath(B_SYSTEM_SETTINGS_DIRECTORY); ++ paths += haikuAppStandardPath(B_USER_SETTINGS_DIRECTORY); + break; + case GenericConfigLocation: + paths += haikuStandardPath(B_SYSTEM_SETTINGS_DIRECTORY); +-- +2.48.1 + + +From 7356bedf2ee4c9dc7e4794c35e00a26f60f43912 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Oct 2023 10:16:55 +1000 +Subject: QSslSocketPrivate::unixRootCertDirectories(): add ssl path for Haiku. + + +diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp +index 395394d..91483c2 100644 +--- a/src/network/ssl/qsslsocket.cpp ++++ b/src/network/ssl/qsslsocket.cpp +@@ -2968,6 +2968,7 @@ QList QSslSocketPrivate::unixRootCertDirectories() + ba("/usr/local/ssl/certs/"), // Solaris + ba("/etc/openssl/certs/"), // BlackBerry + ba("/opt/openssl/certs/"), // HP-UX ++ ba("/system/data/ssl/"), // Haiku + ba("/etc/ssl/"), // OpenBSD + }; + QList result = QList::fromReadOnlyData(dirs); +-- +2.48.1 + + +From 54d6f6828a9e058d174d166c4e2744f3d973b3b3 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Oct 2023 10:45:27 +1000 +Subject: Fix build for Haiku platform + + +diff --git a/mkspecs/features/toolchain.prf b/mkspecs/features/toolchain.prf +index 13bf7f1..aaa22ee 100644 +--- a/mkspecs/features/toolchain.prf ++++ b/mkspecs/features/toolchain.prf +@@ -263,7 +263,7 @@ isEmpty($${target_prefix}.INCDIRS) { + } + } + } +- if(!darwin:clang)|intel_icc { ++ if(!darwin:clang)|haiku|intel_icc { + # Clang on a non-Apple system (that is, a system without ld64 -- say, with GNU ld + # or gold under Linux) will not print any library search path. Need to use another + # invocation with different options (which in turn doesn't print include search +-- +2.48.1 + + +From c364cc1ebbd882eefa83a4093c2b8a4f172ef23a Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Oct 2023 10:45:56 +1000 +Subject: Fix endian detection + + +diff --git a/src/3rdparty/sha3/brg_endian.h b/src/3rdparty/sha3/brg_endian.h +index 0baac93..1d48cbc 100644 +--- a/src/3rdparty/sha3/brg_endian.h ++++ b/src/3rdparty/sha3/brg_endian.h +@@ -39,10 +39,10 @@ Changes for ARM 9/9/2010 [Downstream relative to Gladman's GitHub, upstream to Q + #elif defined( BSD ) && ( BSD >= 199103 ) || defined( __APPLE__ ) || \ + defined( __CYGWIN32__ ) || defined( __DJGPP__ ) || defined( __osf__ ) + # include +-#elif defined( __linux__ ) || defined( __GNUC__ ) || defined( __GNU_LIBRARY__ ) ++#elif defined( __linux__ ) || defined( __HAIKU__ ) || defined( __GNUC__ ) || defined( __GNU_LIBRARY__ ) + # if !defined( __MINGW32__ ) && !defined( _AIX ) && !defined(Q_OS_QNX) + # include +-# if !defined( __BEOS__ ) && !defined(Q_OS_RTEMS) && !defined(Q_OS_VXWORKS) ++# if !defined( __BEOS__ ) && !defined( __HAIKU__ ) && !defined(Q_OS_RTEMS) && !defined(Q_OS_VXWORKS) + # include + # endif + # endif +-- +2.48.1 + + +From 8903e42c098d0c75ffb0a5cc658bafd3bc89a683 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Oct 2023 12:11:52 +1000 +Subject: Disable LibResolv for Haiku + + +diff --git a/src/network/kernel/qhostinfo_unix.cpp b/src/network/kernel/qhostinfo_unix.cpp +index 3b0e2d3..b824440 100644 +--- a/src/network/kernel/qhostinfo_unix.cpp ++++ b/src/network/kernel/qhostinfo_unix.cpp +@@ -50,6 +50,8 @@ static void maybeRefreshResolver() + // res_init() is not thread-safe; executing it leads to state corruption. + // Whether it reloads resolv.conf on its own is unknown. + return; ++#elif defined(Q_OS_HAIKU) ++ return; + #endif + + #if QT_CONFIG(libresolv) +-- +2.48.1 + + +From f30a4dd62fe9d052363484ad0a4361fb9f3a4286 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Oct 2023 12:15:38 +1000 +Subject: Don't use ifaddrs for Haiku + + +diff --git a/src/network/kernel/qnetworkinterface_unix.cpp b/src/network/kernel/qnetworkinterface_unix.cpp +index 39ff8db..3a9a992 100644 +--- a/src/network/kernel/qnetworkinterface_unix.cpp ++++ b/src/network/kernel/qnetworkinterface_unix.cpp +@@ -21,7 +21,7 @@ + # include + #endif + +-#ifdef QT_LINUXBASE ++#if defined(QT_LINUXBASE) || defined(Q_OS_HAIKU) + # include + # ifndef SIOCGIFBRDADDR + # define SIOCGIFBRDADDR 0x8919 +-- +2.48.1 + + +From c46fe83b709542a86098f9d46eca52646c76b42a Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Oct 2023 12:15:58 +1000 +Subject: Disable sharedmemory feature for bootstrap + + +diff --git a/src/tools/bootstrap/CMakeLists.txt b/src/tools/bootstrap/CMakeLists.txt +index 6a68425..2a6b2c5 100644 +--- a/src/tools/bootstrap/CMakeLists.txt ++++ b/src/tools/bootstrap/CMakeLists.txt +@@ -86,6 +86,7 @@ qt_internal_extend_target(Bootstrap + QT_NO_CAST_FROM_ASCII + QT_NO_CAST_TO_ASCII + QT_NO_FOREACH ++ QT_NO_SHAREDMEMORY + INCLUDE_DIRECTORIES + .. + ../../3rdparty/tinycbor/src +-- +2.48.1 + + +From 5ca98cc13d6f160cef292d7dacfd7e9ee1dc626a Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Oct 2023 12:16:20 +1000 +Subject: Fix build for x86_gcc2 + + +diff --git a/src/3rdparty/forkfd/forkfd.c b/src/3rdparty/forkfd/forkfd.c +index edef3c5..c9df584 100644 +--- a/src/3rdparty/forkfd/forkfd.c ++++ b/src/3rdparty/forkfd/forkfd.c +@@ -675,7 +675,7 @@ static int forkfd_fork_fallback(int flags, pid_t *ppid) + /* parent process */ + info->deathPipe = death_pipe[1]; + fd = death_pipe[0]; +- ffd_atomic_store(&info->pid, pid, FFD_ATOMIC_RELEASE); ++ ffd_atomic_store(&info->pid, (int32_t)pid, FFD_ATOMIC_RELEASE); + + /* release the child */ + #ifdef HAVE_EVENTFD +-- +2.48.1 + + +From 395488f1655a98934a4d892bafa1c829ca32d159 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Oct 2023 12:17:49 +1000 +Subject: Implement QFilesystemWatcher for Haiku + + +diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt +index 8e72caa..5411bb5 100644 +--- a/src/corelib/CMakeLists.txt ++++ b/src/corelib/CMakeLists.txt +@@ -1019,6 +1019,11 @@ qt_internal_extend_target(Core CONDITION MACOS AND QT_FEATURE_filesystemwatcher + io/qfilesystemwatcher_fsevents.mm io/qfilesystemwatcher_fsevents_p.h + ) + ++qt_internal_extend_target(Core CONDITION QT_FEATURE_filesystemwatcher AND HAIKU ++ SOURCES ++ io/qfilesystemwatcher_haiku.cpp io/qfilesystemwatcher_haiku_p.h ++) ++ + qt_internal_extend_target(Core CONDITION QT_FEATURE_filesystemwatcher AND QT_FEATURE_inotify AND UNIX AND NOT MACOS + SOURCES + io/qfilesystemwatcher_inotify.cpp io/qfilesystemwatcher_inotify_p.h +diff --git a/src/corelib/io/qfilesystemwatcher.cpp b/src/corelib/io/qfilesystemwatcher.cpp +index 064be4c..d4c03c3 100644 +--- a/src/corelib/io/qfilesystemwatcher.cpp ++++ b/src/corelib/io/qfilesystemwatcher.cpp +@@ -17,6 +17,8 @@ + #include "qfilesystemwatcher_polling_p.h" + #if defined(Q_OS_WIN) + # include "qfilesystemwatcher_win_p.h" ++#elif defined(Q_OS_HAIKU) ++# include "qfilesystemwatcher_haiku_p.h" + #elif defined(USE_INOTIFY) + # include "qfilesystemwatcher_inotify_p.h" + #elif defined(Q_OS_FREEBSD) || defined(Q_OS_NETBSD) || defined(Q_OS_OPENBSD) || defined(QT_PLATFORM_UIKIT) +@@ -38,6 +40,8 @@ QFileSystemWatcherEngine *QFileSystemWatcherPrivate::createNativeEngine(QObject + { + #if defined(Q_OS_WIN) + return new QWindowsFileSystemWatcherEngine(parent); ++#elif defined(Q_OS_HAIKU) ++ return new QHaikuFileSystemWatcherEngine(parent); + #elif defined(USE_INOTIFY) + // there is a chance that inotify may fail on Linux pre-2.6.13 (August + // 2005), so we can't just new inotify directly. +diff --git a/src/corelib/io/qfilesystemwatcher_haiku.cpp b/src/corelib/io/qfilesystemwatcher_haiku.cpp +new file mode 100644 +index 0000000..92a2647 +--- /dev/null ++++ b/src/corelib/io/qfilesystemwatcher_haiku.cpp +@@ -0,0 +1,254 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2020 The Qt Company Ltd. ++** Copyright (C) 2015-2020 Gerasim Troeglazov, ++** Contact: 3dEyes@gmail.com ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++****************************************************************************/ ++ ++#include "qfilesystemwatcher_haiku_p.h" ++#include ++#include ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++QHaikuFileWatcher::QHaikuFileWatcher() : QObject(), BLooper() {}; ++QHaikuDirWatcher::QHaikuDirWatcher() : QObject(), BLooper() {}; ++ ++QHaikuFileSystemWatcherEngine::QHaikuFileSystemWatcherEngine(QObject *parent) ++ : QFileSystemWatcherEngine(parent) ++{ ++ fileLooper = new QHaikuFileWatcher(); ++ connect(fileLooper, SIGNAL(fileChanged(const QString &, bool)), SLOT(bfsFileChanged(const QString &, bool))); ++ fileLooper->Run(); ++ ++ dirLooper = new QHaikuDirWatcher(); ++ connect(dirLooper, SIGNAL(directoryChanged(const QString &, bool)), SLOT(bfsDirectoryChanged(const QString &, bool))); ++ dirLooper->Run(); ++} ++ ++QHaikuFileSystemWatcherEngine::~QHaikuFileSystemWatcherEngine() ++{ ++ stop_watching(fileLooper); ++ if (fileLooper->Lock()) ++ fileLooper->Quit(); ++ ++ stop_watching(dirLooper); ++ if (dirLooper->Lock()) ++ dirLooper->Quit(); ++} ++ ++QStringList QHaikuFileSystemWatcherEngine::addPaths(const QStringList &paths, ++ QStringList *files, ++ QStringList *directories) ++{ ++ QStringList unhandled; ++ for (const QString &path : paths) { ++ QFileInfo fi(path); ++ bool isDir = fi.isDir(); ++ auto sg = qScopeGuard([&]{ unhandled.push_back(path); }); ++ if (isDir) { ++ if (directories->contains(path)) ++ continue; ++ } else { ++ if (files->contains(path)) ++ continue; ++ } ++ ++ BEntry entry(path.toUtf8().constData()); ++ if (!entry.Exists()) ++ continue; ++ ++ node_ref nref; ++ entry.GetNodeRef(&nref); ++ status_t status = isDir ? ++ watch_node(&nref, (B_WATCH_NAME | B_WATCH_ATTR | B_WATCH_STAT | B_WATCH_DIRECTORY), dirLooper): ++ watch_node(&nref, (B_WATCH_NAME | B_WATCH_ATTR | B_WATCH_STAT), fileLooper); ++ ++ if (status != B_OK) { ++ qWarning("watch_node(%s) failed:", path.toUtf8().constData()); ++ continue; ++ } ++ ++ sg.dismiss(); ++ ++ if (isDir) ++ directories->append(path); ++ else ++ files->append(path); ++ } ++ return unhandled; ++} ++ ++QStringList QHaikuFileSystemWatcherEngine::removePaths(const QStringList &paths, ++ QStringList *files, ++ QStringList *directories) ++{ ++ QStringList unhandled; ++ for (const QString &path : paths) { ++ auto sg = qScopeGuard([&]{ unhandled.push_back(path); }); ++ ++ BEntry entry(path.toUtf8().constData()); ++ node_ref nref; ++ entry.GetNodeRef(&nref); ++ ++ if (directories->contains(path)) { ++ directories->removeAll(path); ++ watch_node(&nref, B_STOP_WATCHING, dirLooper); ++ } else if (files->contains(path)) { ++ files->removeAll(path); ++ watch_node(&nref, B_STOP_WATCHING, fileLooper); ++ } else { ++ continue; ++ } ++ ++ sg.dismiss(); ++ } ++ ++ return unhandled; ++} ++ ++void ++QHaikuDirWatcher::MessageReceived(BMessage* message) ++{ ++ if (message->what == B_NODE_MONITOR) { ++ int32 opcode; ++ ++ if (message->FindInt32("opcode", &opcode) != B_OK) ++ return; ++ ++ switch (opcode) { ++ case B_ENTRY_MOVED: ++ { ++ int32 device = 0; ++ int64 srcFolder = 0; ++ int64 dstFolder = 0; ++ const char* name = NULL; ++ if (message->FindInt32("device", &device) != B_OK ++ || message->FindInt64("to directory", &dstFolder) != B_OK ++ || message->FindInt64("from directory", &srcFolder) != B_OK ++ || message->FindString("name", &name) != B_OK) ++ break; ++ ++ entry_ref ref(device, srcFolder, name); ++ BEntry entry(&ref); ++ ++ BEntry dirEntry; ++ entry.GetParent(&dirEntry); ++ ++ BPath path; ++ dirEntry.GetPath(&path); ++ ++ QString qpath = QString::fromUtf8(path.Path()); ++ ++ emit directoryChanged(qpath, false); ++ } ++ break; ++ case B_ENTRY_CREATED: ++ case B_ENTRY_REMOVED: ++ { ++ int64 directory; ++ int32 device; ++ int64 node; ++ const char *name; ++ if (message->FindInt64("directory", &directory) != B_OK ++ || message->FindInt32("device", &device) != B_OK ++ || message->FindInt64("node", &node) != B_OK ++ || message->FindString("name", &name) != B_OK) ++ break; ++ ++ entry_ref ref(device, directory, name); ++ BEntry entry(&ref); ++ BEntry dirEntry; ++ entry.GetParent(&dirEntry); ++ ++ BPath path; ++ dirEntry.GetPath(&path); ++ ++ QString qpath = QString::fromUtf8(path.Path()); ++ emit directoryChanged(qpath, opcode == B_ENTRY_REMOVED); ++ } ++ break; ++ } ++ } ++} ++ ++void ++QHaikuFileWatcher::MessageReceived(BMessage* message) ++{ ++ if (message->what == B_NODE_MONITOR) { ++ int32 opcode; ++ node_ref nref; ++ const char *name; ++ ++ if (message->FindInt32("opcode", &opcode) != B_OK) ++ return; ++ ++ switch (opcode) { ++ case B_ENTRY_MOVED: ++ { ++ int32 device = 0; ++ int64 srcFolder = 0; ++ int64 dstFolder = 0; ++ const char* name = NULL; ++ if (message->FindInt32("device", &device) != B_OK ++ || message->FindInt64("to directory", &dstFolder) != B_OK ++ || message->FindInt64("from directory", &srcFolder) != B_OK ++ || message->FindString("name", &name) != B_OK) ++ break; ++ ++ entry_ref ref(device, srcFolder, name); ++ BEntry entry(&ref); ++ ++ BPath path; ++ entry.GetPath(&path); ++ ++ QString qpath = QString::fromUtf8(path.Path()); ++ ++ emit fileChanged(qpath, false); ++ } ++ break; ++ case B_STAT_CHANGED: ++ case B_ATTR_CHANGED: ++ BString path; ++ if (message->FindString("path", &path) == B_OK) { ++ QString qpath = QString::fromUtf8(path.String()); ++ ++ QFileInfo fi(qpath); ++ if (!fi.exists()) ++ emit fileChanged(qpath, true); ++ else ++ emit fileChanged(qpath, false); ++ } ++ break; ++ } ++ } ++} ++ ++void ++QHaikuFileSystemWatcherEngine::bfsDirectoryChanged(const QString &path, bool removed) ++{ ++ emit directoryChanged(path, removed); ++} ++ ++void ++QHaikuFileSystemWatcherEngine::bfsFileChanged(const QString &path, bool removed) ++{ ++ emit fileChanged(path, removed); ++} ++ ++QT_END_NAMESPACE ++ ++#include "moc_qfilesystemwatcher_haiku_p.cpp" +diff --git a/src/corelib/io/qfilesystemwatcher_haiku_p.h b/src/corelib/io/qfilesystemwatcher_haiku_p.h +new file mode 100644 +index 0000000..0ae4bdf +--- /dev/null ++++ b/src/corelib/io/qfilesystemwatcher_haiku_p.h +@@ -0,0 +1,84 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2020 The Qt Company Ltd. ++** Copyright (C) 2015-2020 Gerasim Troeglazov, ++** Contact: 3dEyes@gmail.com ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++****************************************************************************/ ++ ++#ifndef QFILESYSTEMWATCHER_HAIKU_P_H ++#define QFILESYSTEMWATCHER_HAIKU_P_H ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "qfilesystemwatcher_p.h" ++ ++QT_REQUIRE_CONFIG(filesystemwatcher); ++QT_BEGIN_NAMESPACE ++ ++class QHaikuDirWatcher : public QObject, public BLooper { ++ Q_OBJECT ++public: ++ QHaikuDirWatcher(); ++ virtual void MessageReceived(BMessage* msg) override; ++Q_SIGNALS: ++ void directoryChanged(const QString &path, bool removed); ++}; ++ ++class QHaikuFileWatcher : public QObject, public BLooper { ++ Q_OBJECT ++public: ++ QHaikuFileWatcher(); ++ virtual void MessageReceived(BMessage* msg) override; ++Q_SIGNALS: ++ void fileChanged(const QString &path, bool removed); ++}; ++ ++class QHaikuFileSystemWatcherEngine : public QFileSystemWatcherEngine ++{ ++ Q_OBJECT ++ ++public: ++ QHaikuFileSystemWatcherEngine(QObject *parent); ++ ~QHaikuFileSystemWatcherEngine(); ++ ++ QStringList addPaths(const QStringList &paths, QStringList *files, QStringList *directories) override; ++ QStringList removePaths(const QStringList &paths, QStringList *files, QStringList *directories) override; ++ ++private: ++ QHaikuDirWatcher *dirLooper; ++ QHaikuFileWatcher *fileLooper; ++ ++private Q_SLOTS: ++ void bfsDirectoryChanged(const QString &path, bool removed); ++ void bfsFileChanged(const QString &path, bool removed); ++}; ++ ++QT_END_NAMESPACE ++#endif // QFILESYSTEMWATCHER_HAIKU_P_H ++ +-- +2.48.1 + + +From 62d3a237004e87bebc6e8a3a8ec03d6712e016ce Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Oct 2023 12:18:17 +1000 +Subject: Don't use AF_INET6 for new sockets + + +diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp +index b6df412..e7e2f17 100644 +--- a/src/network/socket/qnativesocketengine_unix.cpp ++++ b/src/network/socket/qnativesocketengine_unix.cpp +@@ -194,8 +194,12 @@ bool QNativeSocketEnginePrivate::createNewSocket(QAbstractSocket::SocketType soc + } + int protocol = 0; + #endif // QT_NO_SCTP ++#ifdef Q_OS_HAIKU ++ int domain = AF_INET; ++#else + int domain = (socketProtocol == QAbstractSocket::IPv6Protocol + || socketProtocol == QAbstractSocket::AnyIPProtocol) ? AF_INET6 : AF_INET; ++#endif + int type = (socketType == QAbstractSocket::UdpSocket) ? SOCK_DGRAM : SOCK_STREAM; + + int socket = qt_safe_socket(domain, type, protocol, O_NONBLOCK); +-- +2.48.1 + + +From 104fc849a93301a74907b4de51dad9ca3e093496 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Oct 2023 12:18:41 +1000 +Subject: Disable Haswell CPU feature for plugins + + +diff --git a/src/corelib/plugin/qlibrary_unix.cpp b/src/corelib/plugin/qlibrary_unix.cpp +index d05a5fa..d582d13 100644 +--- a/src/corelib/plugin/qlibrary_unix.cpp ++++ b/src/corelib/plugin/qlibrary_unix.cpp +@@ -152,7 +152,7 @@ bool QLibraryPrivate::load_sys() + prefixes.append(QString()); + } + +-#if defined(Q_PROCESSOR_X86) && !defined(Q_OS_DARWIN) ++#if defined(Q_PROCESSOR_X86) && !defined(Q_OS_DARWIN) && !defined(Q_OS_HAIKU) + if (qCpuHasFeature(ArchHaswell)) { + auto transform = [](QStringList &list, void (*f)(QString *)) { + QStringList tmp; +-- +2.48.1 + + +From 280d9a068232cb7bd8ecb0f728dd13e5604aef43 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Oct 2023 12:19:25 +1000 +Subject: Haiku build setup + + +diff --git a/cmake/QtBuildHelpers.cmake b/cmake/QtBuildHelpers.cmake +index 3f9f4c9..4fe36fa 100644 +--- a/cmake/QtBuildHelpers.cmake ++++ b/cmake/QtBuildHelpers.cmake +@@ -42,7 +42,7 @@ endmacro() + + macro(qt_internal_setup_position_independent_code) + ## Position independent code: +- set(CMAKE_POSITION_INDEPENDENT_CODE ON) ++ set(CMAKE_POSITION_INDEPENDENT_CODE OFF) + + # Does the linker support position independent code? + include(CheckPIESupported) +diff --git a/cmake/QtMkspecHelpers.cmake b/cmake/QtMkspecHelpers.cmake +index a961296..7444a72 100644 +--- a/cmake/QtMkspecHelpers.cmake ++++ b/cmake/QtMkspecHelpers.cmake +@@ -50,6 +50,12 @@ macro(qt_internal_setup_platform_definitions_and_mkspec) + elseif(CLANG) + set(QT_DEFAULT_MKSPEC linux-clang) + endif() ++ elseif(HAIKU) ++ if(GCC) ++ set(QT_DEFAULT_MKSPEC haiku-g++) ++ elseif(CLANG) ++ set(QT_DEFAULT_MKSPEC haiku-clang) ++ endif() + elseif(ANDROID) + if(GCC) + set(QT_DEFAULT_MKSPEC android-g++) +diff --git a/cmake/QtRpathHelpers.cmake b/cmake/QtRpathHelpers.cmake +index da6c871..bd085e2 100644 +--- a/cmake/QtRpathHelpers.cmake ++++ b/cmake/QtRpathHelpers.cmake +@@ -8,6 +8,8 @@ function(qt_internal_get_relative_rpath_base_token out_var) + set(rpath_rel_base "@loader_path") + elseif(LINUX OR SOLARIS OR FREEBSD OR HURD OR OPENBSD) + set(rpath_rel_base "$ORIGIN") ++ elseif(HAIKU) ++ set(rpath_rel_base "$ORIGIN") + else() + set(rpath_rel_base "NO_KNOWN_RPATH_REL_BASE") + endif() +-- +2.48.1 + + +From 70379a7eb7dc6c6055d8c0ddabd00efc650cdc51 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Oct 2023 12:21:18 +1000 +Subject: Haiku: link against libnetwork + + +diff --git a/src/network/CMakeLists.txt b/src/network/CMakeLists.txt +index 80892ed..f77f703 100644 +--- a/src/network/CMakeLists.txt ++++ b/src/network/CMakeLists.txt +@@ -223,6 +223,11 @@ qt_internal_extend_target(Network CONDITION WIN32 + NOMINMAX + ) + ++qt_internal_extend_target(Network CONDITION HAIKU ++ LIBRARIES ++ network ++) ++ + qt_internal_extend_target(Network CONDITION APPLE AND NOT UIKIT + LIBRARIES + ${FWCoreServices} +-- +2.48.1 + + +From f364c1690698a4a37d616ef25f24457ed5a385c9 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Oct 2023 12:28:46 +1000 +Subject: Fix elf parser for Haiku + + +diff --git a/src/corelib/plugin/qelfparser_p.cpp b/src/corelib/plugin/qelfparser_p.cpp +index 78c9be0..6cc9db8 100644 +--- a/src/corelib/plugin/qelfparser_p.cpp ++++ b/src/corelib/plugin/qelfparser_p.cpp +@@ -20,6 +20,12 @@ + # error "Need ELF header to parse plugins." + #endif + ++#ifdef __HAIKU__ ++#define PF_R PF_READ ++#define PF_W PF_WRITE ++#define PF_X PF_EXECUTE ++#endif ++ + QT_BEGIN_NAMESPACE + + using namespace Qt::StringLiterals; +@@ -206,18 +212,26 @@ struct ElfHeaderCheck : public ElfHeaderCommonCheck + // byte 7 + static bool checkOsAbi(const uchar *ident) + { ++#ifndef __HAIKU__ + uchar osabi = ident[EI_OSABI]; + // we don't check + Q_UNUSED(osabi); ++#else ++ Q_UNUSED(ident); ++#endif + return true; + } + + // byte 8 + static bool checkAbiVersion(const uchar *ident) + { ++#ifndef __HAIKU__ + uchar abiversion = ident[EI_ABIVERSION]; + // we don't check (and I don't know anyone who uses this) + Q_UNUSED(abiversion); ++#else ++ Q_UNUSED(ident); ++#endif + return true; + } + +@@ -335,6 +349,9 @@ Q_DECL_UNUSED Q_DECL_COLD_FUNCTION static QDebug &operator<<(QDebug &d, ElfHeade + break; + } + ++#ifdef __HAIKU__ ++ d << " (Haiku v1)"; ++#else + switch (e_ident[EI_OSABI]) { + case ELFOSABI_SYSV: d << " (SYSV"; break; + case ELFOSABI_HPUX: d << " (HP-UX"; break; +@@ -351,7 +368,7 @@ Q_DECL_UNUSED Q_DECL_COLD_FUNCTION static QDebug &operator<<(QDebug &d, ElfHeade + if (e_ident[EI_ABIVERSION]) + d << " v" << e_ident[EI_ABIVERSION]; + d << ')'; +- ++#endif + if (e_ident[EI_VERSION] != 1) { + d << ", file version " << e_ident[EI_VERSION]; + return d; +@@ -446,11 +463,12 @@ Q_DECL_UNUSED static QDebug &operator<<(QDebug &d, ElfSectionDebug s) + d << 'A'; + if (s.shdr->sh_flags & SHF_EXECINSTR) + d << 'X'; ++#ifndef __HAIKU__ + if (s.shdr->sh_flags & SHF_STRINGS) + d << 'S'; + if (s.shdr->sh_flags & SHF_TLS) + d << 'T'; +- ++#endif + d.space() << "offset" << s.shdr->sh_offset << "size" << s.shdr->sh_size; + return d; + } +-- +2.48.1 + + +From 7fbc2292de7efb65ec5168c81671fb720088ec11 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Oct 2023 12:29:03 +1000 +Subject: Don't use nl_langinfo + + +diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp +index 24d3134..d58bde5 100644 +--- a/src/corelib/kernel/qcoreapplication.cpp ++++ b/src/corelib/kernel/qcoreapplication.cpp +@@ -575,7 +575,7 @@ void QCoreApplicationPrivate::initLocale() + // QLocal8Bit hard-codes this, and we need to be consistent. + # if defined(Q_OS_INTEGRITY) + setlocale(LC_CTYPE, "UTF-8"); +-# elif defined(Q_OS_QNX) ++# elif defined(Q_OS_QNX) || defined(Q_OS_HAIKU) + // QNX has no nl_langinfo, so we can't check. + // FIXME: Shouldn't we still setlocale("UTF-8")? + # elif defined(Q_OS_ANDROID) && __ANDROID_API__ < __ANDROID_API_O__ +-- +2.48.1 + + +From d5dffda79119bcac68c1078fcdf40da9b7998696 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Oct 2023 12:30:12 +1000 +Subject: Workaround for shm_open + + +diff --git a/src/corelib/ipc/qsharedmemory_posix.cpp b/src/corelib/ipc/qsharedmemory_posix.cpp +index 582c662..0854906 100644 +--- a/src/corelib/ipc/qsharedmemory_posix.cpp ++++ b/src/corelib/ipc/qsharedmemory_posix.cpp +@@ -68,6 +68,10 @@ bool QSharedMemoryPosix::create(QSharedMemoryPrivate *self, qsizetype size) + + int fd; + QT_EINTR_LOOP(fd, ::shm_open(shmName.constData(), O_RDWR | O_CREAT | O_EXCL | O_CLOEXEC, 0600)); ++#ifdef Q_OS_HAIKU ++ if (fd == -1) ++ QT_EINTR_LOOP(fd, ::shm_open(shmName.constData(), O_RDWR | O_CLOEXEC, 0600)); ++#endif + if (fd == -1) { + const int errorNumber = errno; + const auto function = "QSharedMemory::attach (shm_open)"_L1; +-- +2.48.1 + + +From dae8e1455ccb328a536add810efe343fd1833e47 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Sun, 14 Apr 2024 12:20:21 +1000 +Subject: Disable DisconnectControllingTerminal + + +diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp +index 6109e9d..879aac1 100644 +--- a/src/corelib/io/qprocess_unix.cpp ++++ b/src/corelib/io/qprocess_unix.cpp +@@ -869,6 +869,7 @@ static const char *applyProcessParameters(const QProcess::UnixProcessParameters + return "setsid"; + } + ++#ifndef Q_OS_HAIKU + // Disconnect from the controlling TTY. This probably won't fail. Must be + // done after the session settings from above. + if (params.flags.testFlag(QProcess::UnixProcessFlag::DisconnectControllingTerminal)) { +@@ -883,6 +884,7 @@ static const char *applyProcessParameters(const QProcess::UnixProcessParameters + } + } + } ++#endif + + // Disable core dumps near the end. This isn't expected to fail. + if (params.flags.testFlag(QProcess::UnixProcessFlag::DisableCoreDumps)) { +-- +2.48.1 + + +From 547b99e7842d9f1913ab0d4e786be30d2918841d Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 4 Oct 2024 18:22:17 +1000 +Subject: Use ICU backend for QTimeZone + + +diff --git a/src/corelib/time/qtimezone.cpp b/src/corelib/time/qtimezone.cpp +index 906a42f..d4fdc49 100644 +--- a/src/corelib/time/qtimezone.cpp ++++ b/src/corelib/time/qtimezone.cpp +@@ -26,6 +26,8 @@ static QTimeZonePrivate *newBackendTimeZone() + return new QChronoTimeZonePrivate(); + #elif defined(Q_OS_DARWIN) + return new QMacTimeZonePrivate(); ++#elif defined(Q_OS_HAIKU) ++ return new QUtcTimeZonePrivate(); + #elif defined(Q_OS_ANDROID) + return new QAndroidTimeZonePrivate(); + #elif defined(Q_OS_UNIX) +-- +2.48.1 + + +From 66100dafa96f8bf920eecd4a42cc8d17809f03ed Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Sat, 5 Oct 2024 19:48:13 +1000 +Subject: Use ICU backend for ianaId + + +diff --git a/src/corelib/time/qtimezone.cpp b/src/corelib/time/qtimezone.cpp +index d4fdc49..c059f47 100644 +--- a/src/corelib/time/qtimezone.cpp ++++ b/src/corelib/time/qtimezone.cpp +@@ -49,6 +49,8 @@ static QTimeZonePrivate *newBackendTimeZone(const QByteArray &ianaId) + return new QChronoTimeZonePrivate(ianaId); + #elif defined(Q_OS_DARWIN) + return new QMacTimeZonePrivate(ianaId); ++#elif defined(Q_OS_HAIKU) ++ return new QUtcTimeZonePrivate(ianaId); + #elif defined(Q_OS_ANDROID) + return new QAndroidTimeZonePrivate(ianaId); + #elif defined(Q_OS_UNIX) +-- +2.48.1 + + +From 221e0f18dd59c97a3b4dcb1d3f51b5763349a477 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Sat, 5 Oct 2024 19:48:35 +1000 +Subject: Disable tz backend for Haiku + + +diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt +index 5411bb5..51936d2 100644 +--- a/src/corelib/CMakeLists.txt ++++ b/src/corelib/CMakeLists.txt +@@ -964,7 +964,7 @@ qt_internal_extend_target(Core + qt_internal_extend_target(Core + CONDITION + QT_FEATURE_timezone AND UNIX +- AND NOT ANDROID AND NOT APPLE AND NOT QT_FEATURE_timezone_tzdb ++ AND NOT ANDROID AND NOT APPLE AND NOT HAIKU AND NOT QT_FEATURE_timezone_tzdb + SOURCES + time/qtimezoneprivate_tz.cpp + ) +-- +2.48.1 + diff --git a/dev-qt/qt6-base/qt6_base-6.9.0.recipe b/dev-qt/qt6-base/qt6_base-6.9.0.recipe new file mode 100644 index 000000000..b218df485 --- /dev/null +++ b/dev-qt/qt6-base/qt6_base-6.9.0.recipe @@ -0,0 +1,240 @@ +SUMMARY="A cross-platform application and UI framework" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v3 + GNU GPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtbase-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="c1800c2ea835801af04a05d4a32321d79a93954ee3ae2172bbeacf13d1f0598c" +SOURCE_DIR="qtbase-everywhere-src-$portVersion" +PATCHES="qt6_base-$portVersion.patchset" +srcGitRev2="4341730a0b93fc5564d9a20688f6360526148a7a" +SOURCE_URI_2="https://github.com/threedeyes/qt6-haikuplugins/archive/$srcGitRev2.tar.gz" +CHECKSUM_SHA256_2="2e46855a2f215c5b19bf9961cff6303993b26f31bba120c90d1babfbf659db1a" +SOURCE_DIR_2="qt6-haikuplugins-$srcGitRev2" +PATCHES_2="qt6_base-$portVersion-source2.patchset" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_base$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Concurrent$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Core$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6DBus$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6EglFSDeviceIntegration$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Gui$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Network$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6OpenGL$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6OpenGLWidgets$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6PrintSupport$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Sql$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Test$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Widgets$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Xml$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + haiku_svg_icon_theme + lib:libbrotlidec$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libdouble_conversion$secondaryArchSuffix + lib:libegl$secondaryArchSuffix + lib:libfreetype$secondaryArchSuffix + lib:libfontconfig$secondaryArchSuffix + lib:libgl$secondaryArchSuffix + lib:libharfbuzz$secondaryArchSuffix + lib:libicudata$secondaryArchSuffix + lib:libicui18n$secondaryArchSuffix + lib:libicuuc$secondaryArchSuffix + lib:libintl$secondaryArchSuffix + lib:libpcre2_16$secondaryArchSuffix + lib:libpng16$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libstdc++$secondaryArchSuffix + lib:libvulkan$secondaryArchSuffix + lib:libz$secondaryArchSuffix + cmd:qsystray + cmd:qnotify + " + +PROVIDES_devel=" + qt6_base${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6Concurrent$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Core$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6DBus$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6DeviceDiscoverySupport$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6EdidSupport$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6EglFSDeviceIntegration$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6ExampleIcons$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6ExamplesAssetDownloader$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6FBSupport$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Gui$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Network$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6OpenGL$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6OpenGLWidgets$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6PrintSupport$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Sql$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Test$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Widgets$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Xml$secondaryArchSuffix = $portVersion compat >= 6 + cmd:qmake6$secondaryArchSuffix = $portVersion compat >= 6 + cmd:qtpaths6$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + haiku${secondaryArchSuffix}_devel + qt6_base$secondaryArchSuffix == $portVersion base + devel:libgl$secondaryArchSuffix + devel:libharfbuzz$secondaryArchSuffix + devel:libharfbuzz_gobject$secondaryArchSuffix + devel:libvulkan$secondaryArchSuffix + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libbrotlidec$secondaryArchSuffix + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libdouble_conversion$secondaryArchSuffix >= 3 + devel:libegl$secondaryArchSuffix + devel:libfontconfig$secondaryArchSuffix + devel:libfreetype$secondaryArchSuffix + devel:libgl$secondaryArchSuffix + devel:libglu$secondaryArchSuffix + devel:libharfbuzz$secondaryArchSuffix + devel:libharfbuzz_gobject$secondaryArchSuffix + devel:libicuuc$secondaryArchSuffix >= 74 + devel:libjpeg$secondaryArchSuffix + devel:libpcre2_16$secondaryArchSuffix + devel:libpng16$secondaryArchSuffix + devel:libsqlite3$secondaryArchSuffix + devel:libssl$secondaryArchSuffix >= 3 + devel:libvulkan$secondaryArchSuffix + devel:libxml2$secondaryArchSuffix + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake \ + -B build \ + -S $sourceDir \ + -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_FLAGS="-fPIC -D_DEFAULT_SOURCE" \ + -DCMAKE_CXX_FLAGS="-fPIC -D_DEFAULT_SOURCE" \ + -DCMAKE_INSTALL_PREFIX=$prefix \ + -DBUILD_WITH_PCH=ON \ + -DCMAKE_AUTOGEN_PARALLEL=1 \ + -DINSTALL_BINDIR=$libDir/Qt6 \ + -DINSTALL_PUBLICBINDIR=$binDir \ + -DINSTALL_PLUGINSDIR=$addOnsDir/Qt6 \ + -DINSTALL_LIBDIR=$libDir \ + -DINSTALL_LIBEXECDIR=$libDir/Qt6 \ + -DINSTALL_DOCDIR=$docDir \ + -DINSTALL_ARCHDATADIR=$dataDir/Qt6 \ + -DINSTALL_DATADIR=$dataDir/Qt6 \ + -DINSTALL_INCLUDEDIR=$includeDir/Qt6 \ + -DINSTALL_MKSPECSDIR=$dataDir/Qt6/mkspecs \ + -DINSTALL_EXAMPLESDIR=$developDir/sources/Qt6 \ + -DINSTALL_QMLDIR=$dataDir/Qt6/qml \ + -DINSTALL_TRANSLATIONSDIR=$dataDir/Qt6/translations \ + -DQT_QMAKE_TARGET_MKSPEC=haiku-g++ \ + -DQT_FEATURE_openssl_linked=ON \ + -DQT_FEATURE_system_sqlite=ON \ + -DQT_FEATURE_glib=OFF \ + -DFEATURE_rpath=OFF \ + -Wno-dev + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + # build platform plugins + PATH=$PATH:$binDir:$libDir/Qt6 + LIBRARY_PATH=$LIBRARY_PATH:$libDir + mkdir -p $sourceDir2/build + cd $sourceDir2/build + qmake6 ../src + make $jobArgs + + # install platform plugins + mkdir -p $addOnsDir/Qt6/{platforms,imageformats,styles} $preferencesDir + cp platform/libqhaiku.so $addOnsDir/Qt6/platforms + cp imageformats/hvif/libqhvif.so $addOnsDir/Qt6/imageformats + cp style/libqhaikustyle.so $addOnsDir/Qt6/styles + cp preferences/Qt6Configurator $preferencesDir + + prepareInstalledDevelLibs \ + libQt6Concurrent \ + libQt6Core \ + libQt6DBus \ + libQt6DeviceDiscoverySupport \ + libQt6EglFSDeviceIntegration \ + libQt6FbSupport \ + libQt6ExampleIcons \ + libQt6ExamplesAssetDownloader \ + libQt6Gui \ + libQt6Network \ + libQt6OpenGL \ + libQt6OpenGLWidgets \ + libQt6PrintSupport \ + libQt6Sql \ + libQt6Test \ + libQt6Widgets \ + libQt6Xml + + # fix pkgconfig & cmake files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + sed -i 's,${_IMPORT_PREFIX}/lib',$developDir/lib, \ + $libDir/cmake/Qt6FbSupportPrivate/Qt6FbSupportPrivateTargets-release.cmake + sed -i 's,${_IMPORT_PREFIX}/lib',$developDir/lib, \ + $libDir/cmake/Qt6DeviceDiscoverySupportPrivate/Qt6DeviceDiscoverySupportPrivateTargets-release.cmake + sed -i "s,\${_IMPORT_PREFIX}/$relativeLibDir/libQt6ExampleIcons.a,\${_IMPORT_PREFIX}/$relativeDevelopLibDir/libQt6ExampleIcons.a," \ + $libDir/cmake/Qt6ExampleIconsPrivate/Qt6ExampleIconsPrivateTargets-release.cmake + sed -i "s,\${_IMPORT_PREFIX}/$relativeLibDir/libQt6ExamplesAssetDownloader.a,\${_IMPORT_PREFIX}/$relativeDevelopLibDir/libQt6ExamplesAssetDownloader.a," \ + $libDir/cmake/Qt6ExamplesAssetDownloaderPrivate/Qt6ExamplesAssetDownloaderPrivateTargets-release.cmake + + mkdir -p $binDir + ln -s -t $binDir $libDir/Qt6/{qmake6,qtpaths6} + rm -rf $(dirname "$docDir") + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $binDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs + + addPreferencesDeskbarSymlink $preferencesDir/Qt6Configurator "Qt6 Configurator" +} diff --git a/dev-qt/qt6-charts/qt6_charts-6.9.0.recipe b/dev-qt/qt6-charts/qt6_charts-6.9.0.recipe new file mode 100644 index 000000000..2926f9dbe --- /dev/null +++ b/dev-qt/qt6-charts/qt6_charts-6.9.0.recipe @@ -0,0 +1,114 @@ +SUMMARY="Provides a set of easy to use chart components" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtcharts-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="8a1c9287f25fe47b110ada87e8c73b928a93f05435440d0a27f591d25c317f28" +SOURCE_DIR="qtcharts-everywhere-src-$portVersion" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_charts$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Charts$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6ChartsQml$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6Qml$secondaryArchSuffix + lib:libQt6QmlModels$secondaryArchSuffix + lib:libQt6Quick$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_charts${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6Charts$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6ChartsQml$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_charts$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libGL$secondaryArchSuffix + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6Multimedia$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libQt6QmlModels$secondaryArchSuffix == $portVersion + devel:libQt6Quick$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_UNITY_BUILD=ON \ + -DQT_GENERATE_SBOM=OFF \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6Charts \ + libQt6ChartsQml + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-connectivity/qt6_connectivity-6.9.0.recipe b/dev-qt/qt6-connectivity/qt6_connectivity-6.9.0.recipe new file mode 100644 index 000000000..c8f1874c6 --- /dev/null +++ b/dev-qt/qt6-connectivity/qt6_connectivity-6.9.0.recipe @@ -0,0 +1,112 @@ +SUMMARY="Provides acess to Bluetooth hardware" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtconnectivity-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="ff402f8dacb2b9f9308afcea67118ae1645ce6466f2d41a8d5c12fd2fa168598" +SOURCE_DIR="qtconnectivity-everywhere-src-$portVersion$QtBeta" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_connectivity$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Bluetooth$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Nfc$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6Qml$secondaryArchSuffix + lib:libQt6QmlModels$secondaryArchSuffix + lib:libQt6Quick$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_connectivity${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6Bluetooth$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Nfc$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_connectivity$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libGL$secondaryArchSuffix + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libQt6QmlModels$secondaryArchSuffix == $portVersion + devel:libQt6Quick$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6Bluetooth \ + libQt6Nfc + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-datavis3d/patches/qt6_datavis3d-6.9.0.patchset b/dev-qt/qt6-datavis3d/patches/qt6_datavis3d-6.9.0.patchset new file mode 100644 index 000000000..7a5ded6b4 --- /dev/null +++ b/dev-qt/qt6-datavis3d/patches/qt6_datavis3d-6.9.0.patchset @@ -0,0 +1,27 @@ +From 6cdbbab0a5d8323487a69e2b3061e3890d28663b Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Tue, 3 May 2022 16:16:08 +1000 +Subject: Enable GLES for Haiku + + +diff --git a/src/datavisualization/utils/utils.cpp b/src/datavisualization/utils/utils.cpp +index 3470c44..a6a2d44 100644 +--- a/src/datavisualization/utils/utils.cpp ++++ b/src/datavisualization/utils/utils.cpp +@@ -310,9 +310,13 @@ QQuaternion Utils::calculateRotation(const QVector3D &xyzRotations) + + bool Utils::isOpenGLES() + { ++#ifdef Q_OS_HAIKU ++ return true; ++#else + if (!staticsResolved) + resolveStatics(); + return isES; ++#endif + } + + void Utils::resolveStatics() +-- +2.48.1 + diff --git a/dev-qt/qt6-datavis3d/qt6_datavis3d-6.9.0.recipe b/dev-qt/qt6-datavis3d/qt6_datavis3d-6.9.0.recipe new file mode 100644 index 000000000..6571cd712 --- /dev/null +++ b/dev-qt/qt6-datavis3d/qt6_datavis3d-6.9.0.recipe @@ -0,0 +1,118 @@ +SUMMARY="Qt6 Data Visualization module" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtdatavis3d-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="310cb713d58c932a8dfaee3c7cd4cac7f2f77ee8e01038ff7df3f0c87f9d8015" +SOURCE_DIR="qtdatavis3d-everywhere-src-$portVersion" +PATCHES="qt6_datavis3d-$portVersion.patchset" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_datavis3d$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6DataVisualization$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6DataVisualizationQml$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6Qml$secondaryArchSuffix + lib:libQt6QmlModels$secondaryArchSuffix + lib:libQt6Quick$secondaryArchSuffix + lib:libQt6QuickTimeline$secondaryArchSuffix + lib:libQt6ShaderTools$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_datavis3d${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6DataVisualization$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6DataVisualizationQml$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_datavis3d$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libGL$secondaryArchSuffix + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6OpenGL$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libQt6QmlModels$secondaryArchSuffix == $portVersion + devel:libQt6Quick$secondaryArchSuffix == $portVersion + devel:libQt6QuickTimeline$secondaryArchSuffix == $portVersion + devel:libQt6ShaderTools$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=OFF \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6DataVisualization \ + libQt6DataVisualizationQml + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-declarative/patches/qt6_declarative-6.9.0.patchset b/dev-qt/qt6-declarative/patches/qt6_declarative-6.9.0.patchset new file mode 100644 index 000000000..6dd31bbae --- /dev/null +++ b/dev-qt/qt6-declarative/patches/qt6_declarative-6.9.0.patchset @@ -0,0 +1,100 @@ +From 21625c0a334ee5ae0df35083cb7dd180bd65ed2c Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Tue, 9 Apr 2024 21:29:50 +1000 +Subject: Fix for Haiku + + +diff --git a/src/3rdparty/masm/wtf/PageBlock.cpp b/src/3rdparty/masm/wtf/PageBlock.cpp +index 28d4239..9559e3b 100644 +--- a/src/3rdparty/masm/wtf/PageBlock.cpp ++++ b/src/3rdparty/masm/wtf/PageBlock.cpp +@@ -40,7 +40,14 @@ namespace WTF { + static size_t s_pageSize; + static size_t s_pageMask; + +-#if OS(UNIX) ++#if OS(HAIKU) ++ ++inline size_t systemPageSize() ++{ ++ return 4096; ++} ++ ++#elif OS(UNIX) + + inline size_t systemPageSize() + { +diff --git a/src/3rdparty/masm/wtf/Platform.h b/src/3rdparty/masm/wtf/Platform.h +index 4146879..8e35d08 100644 +--- a/src/3rdparty/masm/wtf/Platform.h ++++ b/src/3rdparty/masm/wtf/Platform.h +@@ -422,6 +422,11 @@ + #define WTF_OS_QNX 1 + #endif + ++/* OS(HAIKU) - Haiku */ ++#if defined(__HAIKU__) ++#define WTF_OS_HAIKU 1 ++#endif ++ + /* OS(SOLARIS) - Solaris */ + #if defined(sun) || defined(__sun) + #define WTF_OS_SOLARIS 1 +@@ -461,6 +466,7 @@ + || OS(HURD) \ + || OS(INTEGRITY) \ + || OS(LINUX) \ ++ || OS(HAIKU) \ + || OS(NETBSD) \ + || OS(OPENBSD) \ + || OS(QNX) \ +diff --git a/src/qml/jit/qv4assemblercommon_p.h b/src/qml/jit/qv4assemblercommon_p.h +index a0bf802..e662e7f 100644 +--- a/src/qml/jit/qv4assemblercommon_p.h ++++ b/src/qml/jit/qv4assemblercommon_p.h +@@ -33,7 +33,7 @@ namespace QV4 { + namespace JIT { + + #if defined(Q_PROCESSOR_X86_64) || defined(ENABLE_ALL_ASSEMBLERS_FOR_REFACTORING_PURPOSES) +-#if defined(Q_OS_LINUX) || defined(Q_OS_QNX) || defined(Q_OS_FREEBSD) || defined(Q_OS_DARWIN) || defined(Q_OS_SOLARIS) || defined(Q_OS_VXWORKS) || defined(Q_OS_HURD) ++#if defined(Q_OS_LINUX) || defined(Q_OS_QNX) || defined(Q_OS_FREEBSD) || defined(Q_OS_DARWIN) || defined(Q_OS_SOLARIS) || defined(Q_OS_VXWORKS) || defined(Q_OS_HURD) || defined(Q_OS_HAIKU) + + class PlatformAssembler_X86_64_SysV : public JSC::MacroAssembler + { +diff --git a/src/qml/memory/qv4stacklimits.cpp b/src/qml/memory/qv4stacklimits.cpp +index 288a6fd..84bbc5a 100644 +--- a/src/qml/memory/qv4stacklimits.cpp ++++ b/src/qml/memory/qv4stacklimits.cpp +@@ -35,6 +35,10 @@ + # include + #elif defined(Q_OS_WASM) + # include ++#elif defined(Q_OS_HAIKU) ++# include ++# include ++# include + #endif + + QT_BEGIN_NAMESPACE +@@ -59,6 +63,9 @@ enum StackDefaults : qsizetype { + // On linux, we assume 8MB stacks if rlimit doesn't work. + PlatformStackSize = 8 * 1024 * 1024, + PlatformSafetyMargin = DefaultSafetyMargin, ++#elif defined(Q_OS_HAIKU) ++ PlatformStackSize = 16 * 1024 * 1024, ++ PlatformSafetyMargin = DefaultSafetyMargin, + #elif defined(Q_OS_QNX) + // QNX's stack is only 512k by default + PlatformStackSize = 512 * 1024, +@@ -103,7 +110,7 @@ static StackProperties createStackProperties(void *base, qsizetype size = Platfo + }; + } + +-#if defined(Q_OS_DARWIN) || defined(Q_OS_LINUX) ++#if defined(Q_OS_DARWIN) || defined(Q_OS_LINUX) || defined(Q_OS_HAIKU) + + // On linux and darwin, on the main thread, the pthread functions + // may not return the true stack size since the main thread stack +-- +2.48.1 + diff --git a/dev-qt/qt6-declarative/qt6_declarative-6.9.0.recipe b/dev-qt/qt6-declarative/qt6_declarative-6.9.0.recipe new file mode 100644 index 000000000..0e770c1d0 --- /dev/null +++ b/dev-qt/qt6-declarative/qt6_declarative-6.9.0.recipe @@ -0,0 +1,268 @@ +SUMMARY="Classes for QML and JavaScript languages" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtdeclarative-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="a3175fa510847a136734f989e2bfea7f7bbb9dc9acc98b40b544d26f5ba20d3d" +SOURCE_DIR="qtdeclarative-everywhere-src-$portVersion" +PATCHES="qt6_declarative-$portVersion.patchset" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_declarative$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6LabsAnimation$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6LabsFolderListModel$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6LabsPlatform$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6LabsQmlModels$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6LabsSettings$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6LabsSharedImage$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6LabsWavefrontMesh$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Qml$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QmlCompiler$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QmlCore$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QmlLocalStorage$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QmlMeta$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QmlModels$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QmlNetwork$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QmlWorkerScript$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QmlXmlListModel$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Quick$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickControls2$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickControls2Basic$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickControls2BasicStyleImpl$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickControls2FluentWinUI3StyleImpl$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickControls2Fusion$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickControls2FusionStyleImpl$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickControls2Imagine$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickControls2ImagineStyleImpl$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickControls2Impl$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickControls2Material$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickControls2MaterialStyleImpl$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickControls2Universal$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickControls2UniversalStyleImpl$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickDialogs2$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickDialogs2QuickImpl$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickDialogs2Utils$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickEffects$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickLayouts$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickParticles$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickShapes$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickTemplates2$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickTest$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickWidgets$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6Network$secondaryArchSuffix + lib:libQt6OpenGL$secondaryArchSuffix + lib:libQt6Widgets$secondaryArchSuffix + lib:libQt6Test$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libvulkan$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_declarative${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6LabsAnimation$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6LabsFolderListModel$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6LabsPlatform$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6LabsQmlModels$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6LabsSettings$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6LabsSharedImage$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6LabsWavefrontMesh$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6PacketProtocol$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Qml$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QmlAssetDownloader$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QmlBuiltins$secondaryArchSuffix + devel:libQt6QmlCompiler$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QmlCore$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QmlDebug$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QmlDom$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QmlFormat$secondaryArchSuffix + devel:libQt6QmlLocalStorage$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QmlMeta$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QmlModels$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QmlNetwork$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QmlTypeRegistrar$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QmlToolingSettings$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QmlWorkerScript$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QmlXmlListModel$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Quick$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickControls2$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickControls2Basic$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickControls2BasicStyleImpl$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickControls2FluentWinUI3StyleImpl$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickControls2Fusion$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickControls2FusionStyleImpl$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickControls2Imagine$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickControls2ImagineStyleImpl$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickControls2Impl$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickControls2Material$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickControls2MaterialStyleImpl$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickControls2Universal$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickControls2UniversalStyleImpl$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickControlsTestUtils$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickDialogs2$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickDialogs2QuickImpl$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickDialogs2Utils$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickEffects$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickLayouts$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickParticles$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickShapes$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickTemplates2$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickTest$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickTestUtils$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickWidgets$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_declarative$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libGL$secondaryArchSuffix + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6Network$secondaryArchSuffix == $portVersion + devel:libQt6OpenGL$secondaryArchSuffix == $portVersion + devel:libQt6ShaderTools$secondaryArchSuffix == $portVersion + devel:libQt6Widgets$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + devel:libvulkan$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS="-fPIC -D_GNU_SOURCE" \ + -DCMAKE_AUTOGEN_PARALLEL=1 \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6LabsAnimation \ + libQt6LabsFolderListModel \ + libQt6LabsPlatform \ + libQt6LabsQmlModels \ + libQt6LabsSettings \ + libQt6LabsSharedImage \ + libQt6LabsWavefrontMesh \ + libQt6PacketProtocol \ + libQt6Qml \ + libQt6QmlAssetDownloader \ + libQt6QmlCore \ + libQt6QmlFormat \ + libQt6QmlLocalStorage \ + libQt6QmlMeta \ + libQt6QmlModels \ + libQt6QmlNetwork \ + libQt6QmlWorkerScript \ + libQt6QmlXmlListModel \ + libQt6Quick \ + libQt6QuickControls2 \ + libQt6QuickControls2Basic \ + libQt6QuickControls2BasicStyleImpl \ + libQt6QuickControls2FluentWinUI3StyleImpl \ + libQt6QuickControls2Fusion \ + libQt6QuickControls2FusionStyleImpl \ + libQt6QuickControls2Imagine \ + libQt6QuickControls2ImagineStyleImpl \ + libQt6QuickControls2Impl \ + libQt6QuickControls2Material \ + libQt6QuickControls2MaterialStyleImpl \ + libQt6QuickControls2Universal \ + libQt6QuickControls2UniversalStyleImpl \ + libQt6QuickControlsTestUtils \ + libQt6QuickDialogs2 \ + libQt6QuickDialogs2QuickImpl \ + libQt6QuickDialogs2Utils \ + libQt6QuickLayouts \ + libQt6QuickParticles \ + libQt6QuickShapes \ + libQt6QuickTemplates2 \ + libQt6QuickTestUtils \ + libQt6QuickTest \ + libQt6QuickWidgets \ + libQt6QmlCompiler \ + libQt6QmlDebug \ + libQt6QmlDom \ + libQt6QmlTypeRegistrar \ + libQt6QmlToolingSettings + + # fix pkgconfig & cmake files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + sed -i 's,${_IMPORT_PREFIX}/lib',$developDir/lib, \ + $libDir/cmake/Qt6PacketProtocolPrivate/Qt6PacketProtocolPrivateTargets-release.cmake + sed -i 's,${_IMPORT_PREFIX}/lib',$developDir/lib, \ + $libDir/cmake/Qt6QmlAssetDownloader/Qt6QmlAssetDownloaderTargets-release.cmake + sed -i 's,${_IMPORT_PREFIX}/lib',$developDir/lib, \ + $libDir/cmake/Qt6QmlDebugPrivate/Qt6QmlDebugPrivateTargets-release.cmake + sed -i 's,${_IMPORT_PREFIX}/lib',$developDir/lib, \ + $libDir/cmake/Qt6QmlDomPrivate/Qt6QmlDomPrivateTargets-release.cmake + sed -i 's,${_IMPORT_PREFIX}/lib',$developDir/lib, \ + $libDir/cmake/Qt6QmlToolingSettingsPrivate/Qt6QmlToolingSettingsPrivateTargets-release.cmake + sed -i 's,${_IMPORT_PREFIX}/lib',$developDir/lib, \ + $libDir/cmake/Qt6QmlTypeRegistrarPrivate/Qt6QmlTypeRegistrarPrivateTargets-release.cmake + sed -i 's,${_IMPORT_PREFIX}/lib',$developDir/lib, \ + $libDir/cmake/Qt6QuickControlsTestUtilsPrivate/Qt6QuickControlsTestUtilsPrivateTargets-release.cmake + sed -i 's,${_IMPORT_PREFIX}/lib',$developDir/lib, \ + $libDir/cmake/Qt6QuickParticlesPrivate/Qt6QuickParticlesPrivateTargets-release.cmake + sed -i 's,${_IMPORT_PREFIX}/lib',$developDir/lib, \ + $libDir/cmake/Qt6QuickShapesPrivate/Qt6QuickShapesPrivateTargets-release.cmake + sed -i 's,${_IMPORT_PREFIX}/lib',$developDir/lib, \ + $libDir/cmake/Qt6QuickTestUtilsPrivate/Qt6QuickTestUtilsPrivateTargets-release.cmake + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-doc/qt6_doc-6.9.0.recipe b/dev-qt/qt6-doc/qt6_doc-6.9.0.recipe new file mode 100644 index 000000000..3f73fad64 --- /dev/null +++ b/dev-qt/qt6-doc/qt6_doc-6.9.0.recipe @@ -0,0 +1,45 @@ +SUMMARY="A cross-platform application and UI framework (Documentation)" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +SOURCE_URI="https://archlinux.thaller.ws/extra/os/x86_64/qt6-doc-${portVersion}-1-any.pkg.tar.zst#noarchive" +CHECKSUM_SHA256="52c2ea39d7112b7f1109e8625ecbd997abe582c1ae74ed62da0b7b97625fcb36" +SOURCE_DIR="qt6-doc-$portVersion" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +DISABLE_SOURCE_PACKAGE="yes" + +PROVIDES=" + qt6_doc$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + qt6_tools$secondaryArchSuffix + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + " +BUILD_PREREQUIRES=" + cmd:tar + cmd:unzstd + " + +INSTALL() +{ + mkdir -p $prefix/documentation/packages/qt6_base + + tar -C $prefix/documentation/packages/qt6_base \ + -I zstd \ + --strip-components 4 \ + -xvf qt6-doc-${portVersion}-1-any.pkg.tar.zst +} diff --git a/dev-qt/qt6-examples/qt6_examples-6.9.0.recipe b/dev-qt/qt6-examples/qt6_examples-6.9.0.recipe new file mode 100644 index 000000000..c47661c16 --- /dev/null +++ b/dev-qt/qt6-examples/qt6_examples-6.9.0.recipe @@ -0,0 +1,44 @@ +SUMMARY="A cross-platform application and UI framework (Examples)" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +SOURCE_URI="https://archlinux.thaller.ws/extra/os/x86_64/qt6-examples-${portVersion}-1-any.pkg.tar.zst#noarchive" +CHECKSUM_SHA256="8264a65de947a7e366bae708c238c621574d2242b34d4e256260e0895cce80ec" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +DISABLE_SOURCE_PACKAGE="yes" + +PROVIDES=" + qt6_examples$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + qt6_tools$secondaryArchSuffix + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + " +BUILD_PREREQUIRES=" + cmd:tar + cmd:unzstd + " + +INSTALL() +{ + mkdir -p $developDir/sources/Qt6 + + tar -C $developDir/sources/Qt6 \ + -I zstd \ + --strip-components 5 \ + -xvf qt6-examples-${portVersion}-1-any.pkg.tar.zst +} diff --git a/dev-qt/qt6-imageformats/qt6_imageformats-6.9.0.recipe b/dev-qt/qt6-imageformats/qt6_imageformats-6.9.0.recipe new file mode 100644 index 000000000..21d6a1027 --- /dev/null +++ b/dev-qt/qt6-imageformats/qt6_imageformats-6.9.0.recipe @@ -0,0 +1,99 @@ +SUMMARY="Plugins for additional image formats: TIFF, MNG, TGA, WBMP" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtimageformats-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="2047c6242a57bf97cf40079fa9f91752c137cd9ae84760faa9a2e5e8a440606f" +SOURCE_DIR="qtimageformats-everywhere-src-$portVersion" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_imageformats$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libjasper$secondaryArchSuffix + lib:libjpeg$secondaryArchSuffix + lib:libmng$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libtiff$secondaryArchSuffix + lib:libwebp$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +SUPPLEMENTS=" + qt6_base$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_imageformats${secondaryArchSuffix}_devel = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_imageformats$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libjasper$secondaryArchSuffix + devel:libjpeg$secondaryArchSuffix + devel:libmng$secondaryArchSuffix + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libtiff$secondaryArchSuffix + devel:libwebp$secondaryArchSuffix + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +PATCH() +{ + sed -i "s/uint32_t/uint32/g" $sourceDir/src/plugins/imageformats/tiff/qtiffhandler.cpp +} + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + packageEntries devel \ + $libDir/cmake +} diff --git a/dev-qt/qt6-location/qt6_location-6.9.0.recipe b/dev-qt/qt6-location/qt6_location-6.9.0.recipe new file mode 100644 index 000000000..60c31c326 --- /dev/null +++ b/dev-qt/qt6-location/qt6_location-6.9.0.recipe @@ -0,0 +1,107 @@ +SUMMARY="A family of player software for 2d vector graphics animations" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtlocation-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="ada25ac4c1aa2b2daec0c21198dbb30004453869911724816c6ce7ecb3826794" +SOURCE_DIR="qtlocation-everywhere-src-$portVersion" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_location$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Location$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6OpenGL$secondaryArchSuffix + lib:libQt6Positioning$secondaryArchSuffix + lib:libQt6PositioningQuick$secondaryArchSuffix + lib:libQt6Network$secondaryArchSuffix + lib:libQt6Qml$secondaryArchSuffix + lib:libQt6QmlModels$secondaryArchSuffix + lib:libQt6Quick$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_location${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6Location$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_location$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libGL$secondaryArchSuffix + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Positioning$secondaryArchSuffix == $portVersion + devel:libQt6PositioningQuick$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLib \ + libQt6Location + fixPkgconfig + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-lottie/qt6_lottie-6.9.0.recipe b/dev-qt/qt6-lottie/qt6_lottie-6.9.0.recipe new file mode 100644 index 000000000..03ef2bfa5 --- /dev/null +++ b/dev-qt/qt6-lottie/qt6_lottie-6.9.0.recipe @@ -0,0 +1,104 @@ +SUMMARY="A family of player software for 2d vector graphics animations" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtlottie-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="d4ba1614a587a279266036b1b08ac854718458fdd39708b37afde74f0b4afabe" +SOURCE_DIR="qtlottie-everywhere-src-$portVersion" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_lottie$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Bodymovin$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6Qml$secondaryArchSuffix + lib:libQt6QmlModels$secondaryArchSuffix + lib:libQt6Quick$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_lottie${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6Bodymovin$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_lottie$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libGL$secondaryArchSuffix + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libQt6QmlModels$secondaryArchSuffix == $portVersion + devel:libQt6Quick$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6Bodymovin + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-multimedia/patches/qt6_multimedia-6.9.0.patchset b/dev-qt/qt6-multimedia/patches/qt6_multimedia-6.9.0.patchset new file mode 100644 index 000000000..8ac9ecd19 --- /dev/null +++ b/dev-qt/qt6-multimedia/patches/qt6_multimedia-6.9.0.patchset @@ -0,0 +1,346 @@ +From 695e06cdf4da7beed7d0adb272e6a870f0d19236 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Tue, 9 Apr 2024 22:25:53 +1000 +Subject: Enable OpenAL (wasm) audio backend for Haiku + + +diff --git a/src/multimedia/CMakeLists.txt b/src/multimedia/CMakeLists.txt +index 031b321..0cd1fdb 100644 +--- a/src/multimedia/CMakeLists.txt ++++ b/src/multimedia/CMakeLists.txt +@@ -330,7 +330,7 @@ qt_internal_extend_target(Multimedia CONDITION QT_FEATURE_wmf AND MINGW + windows/qcomtaskresource_p.h + ) + +-qt_internal_extend_target(Multimedia CONDITION WASM ++qt_internal_extend_target(Multimedia CONDITION WASM OR HAIKU + SOURCES + wasm/qwasmmediadevices.cpp wasm/qwasmmediadevices_p.h + wasm/qwasmaudiosource.cpp wasm/qwasmaudiosource_p.h +diff --git a/src/multimedia/configure.cmake b/src/multimedia/configure.cmake +index c1d3540..bf95334 100644 +--- a/src/multimedia/configure.cmake ++++ b/src/multimedia/configure.cmake +@@ -138,7 +138,7 @@ qt_feature("ffmpeg" PRIVATE + LABEL "FFmpeg" + ENABLE INPUT_ffmpeg STREQUAL 'yes' + DISABLE INPUT_ffmpeg STREQUAL 'no' +- CONDITION FFmpeg_FOUND AND (APPLE OR WIN32 OR ANDROID OR QNX OR QT_FEATURE_pulseaudio) ++ CONDITION FFmpeg_FOUND AND (APPLE OR WIN32 OR ANDROID OR QNX OR HAIKU OR QT_FEATURE_pulseaudio) + ) + qt_feature("pipewire" PRIVATE + LABEL "PipeWire" +@@ -287,7 +287,7 @@ qt_configure_end_summary_section() # end of "Qt Multimedia" section + qt_configure_add_report_entry( + TYPE WARNING + MESSAGE "No backend for low level audio found." +- CONDITION NOT QT_FEATURE_alsa AND NOT QT_FEATURE_pulseaudio AND NOT QT_FEATURE_mmrenderer AND NOT QT_FEATURE_coreaudio AND NOT QT_FEATURE_wmsdk AND NOT ANDROID AND NOT WASM ++ CONDITION NOT QT_FEATURE_alsa AND NOT QT_FEATURE_pulseaudio AND NOT QT_FEATURE_mmrenderer AND NOT QT_FEATURE_coreaudio AND NOT QT_FEATURE_wmsdk AND NOT ANDROID AND NOT WASM AND NOT HAIKU + ) + + qt_configure_add_report_entry( +diff --git a/src/multimedia/platform/qplatformaudiodevices.cpp b/src/multimedia/platform/qplatformaudiodevices.cpp +index a8dc865..f93f38b 100644 +--- a/src/multimedia/platform/qplatformaudiodevices.cpp ++++ b/src/multimedia/platform/qplatformaudiodevices.cpp +@@ -19,7 +19,7 @@ + #include + #elif defined(Q_OS_QNX) + #include +-#elif defined(Q_OS_WASM) ++#elif defined(Q_OS_WASM) || defined(Q_OS_HAIKU) + #include + #endif + +@@ -39,7 +39,7 @@ std::unique_ptr QPlatformAudioDevices::create() + return std::make_unique(); + #elif defined(Q_OS_QNX) + return std::make_unique(); +-#elif defined(Q_OS_WASM) ++#elif defined(Q_OS_WASM) || defined(Q_OS_HAIKU) + return std::make_unique(); + #else + return std::make_unique(); +diff --git a/src/multimedia/wasm/qwasmaudiodevice.cpp b/src/multimedia/wasm/qwasmaudiodevice.cpp +index 53572f4..8cba6c1 100644 +--- a/src/multimedia/wasm/qwasmaudiodevice.cpp ++++ b/src/multimedia/wasm/qwasmaudiodevice.cpp +@@ -2,9 +2,11 @@ + // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + + #include "qwasmaudiodevice_p.h" ++#ifndef Q_OS_HAIKU + #include + #include + #include ++#endif + + #include + #include +@@ -19,7 +21,7 @@ QWasmAudioDevice::QWasmAudioDevice(const char *device, + { + isDefault = isDef; + minimumChannelCount = 1; +- maximumChannelCount = 2; ++ maximumChannelCount = 8; + minimumSampleRate = 8000; + maximumSampleRate = 96000; // js AudioContext max according to docs + +@@ -36,6 +38,7 @@ QWasmAudioDevice::QWasmAudioDevice(const char *device, + // FIXME: firefox + // An AudioContext was prevented from starting automatically. + // It must be created or resumed after a user gesture on the page. ++#ifndef Q_OS_HAIKU + emscripten::val audioContext = emscripten::val::global("window")["AudioContext"].new_(); + if (audioContext == emscripten::val::undefined()) + audioContext = emscripten::val::global("window")["webkitAudioContext"].new_(); +@@ -46,6 +49,9 @@ QWasmAudioDevice::QWasmAudioDevice(const char *device, + audioContext.call("close"); + preferredFormat.setSampleRate(sRate); + } ++#else ++ preferredFormat.setSampleRate(48000); ++#endif + + auto f = QAudioFormat::Float; + +diff --git a/src/multimedia/wasm/qwasmaudiosink.cpp b/src/multimedia/wasm/qwasmaudiosink.cpp +index d1068e7..e75b0f8 100644 +--- a/src/multimedia/wasm/qwasmaudiosink.cpp ++++ b/src/multimedia/wasm/qwasmaudiosink.cpp +@@ -4,18 +4,23 @@ + #include "qwasmaudiosink_p.h" + + ++#ifndef Q_OS_HAIKU + #include ++#endif + #include ++#include + #include + #include + #include + #include + ++#ifndef Q_OS_HAIKU + // non native al formats (AL_EXT_float32) + #define AL_FORMAT_MONO_FLOAT32 0x10010 + #define AL_FORMAT_STEREO_FLOAT32 0x10011 ++#endif + +-constexpr unsigned int DEFAULT_BUFFER_DURATION = 50'000; ++constexpr unsigned int DEFAULT_BUFFER_DURATION = 6'000; + + class ALData { + public: +@@ -97,6 +102,18 @@ void QWasmAudioSink::start(bool mode) + case 2: + aldata->format = AL_FORMAT_STEREO8; + break; ++ case 4: ++ aldata->format = AL_FORMAT_QUAD8; ++ break; ++ case 6: ++ aldata->format = AL_FORMAT_51CHN8; ++ break; ++ case 7: ++ aldata->format = AL_FORMAT_61CHN8; ++ break; ++ case 8: ++ aldata->format = AL_FORMAT_71CHN8; ++ break; + default: + return formatError(); + } +@@ -109,6 +126,18 @@ void QWasmAudioSink::start(bool mode) + case 2: + aldata->format = AL_FORMAT_STEREO16; + break; ++ case 4: ++ aldata->format = AL_FORMAT_QUAD16; ++ break; ++ case 6: ++ aldata->format = AL_FORMAT_51CHN16; ++ break; ++ case 7: ++ aldata->format = AL_FORMAT_61CHN16; ++ break; ++ case 8: ++ aldata->format = AL_FORMAT_71CHN16; ++ break; + default: + return formatError(); + } +@@ -121,6 +150,18 @@ void QWasmAudioSink::start(bool mode) + case 2: + aldata->format = AL_FORMAT_STEREO_FLOAT32; + break; ++ case 4: ++ aldata->format = AL_FORMAT_QUAD16; ++ break; ++ case 6: ++ aldata->format = AL_FORMAT_51CHN32; ++ break; ++ case 7: ++ aldata->format = AL_FORMAT_61CHN32; ++ break; ++ case 8: ++ aldata->format = AL_FORMAT_71CHN32; ++ break; + default: + return formatError(); + } +diff --git a/src/multimedia/wasm/qwasmaudiosource.cpp b/src/multimedia/wasm/qwasmaudiosource.cpp +index 81f222c..d18cb7c 100644 +--- a/src/multimedia/wasm/qwasmaudiosource.cpp ++++ b/src/multimedia/wasm/qwasmaudiosource.cpp +@@ -3,7 +3,10 @@ + + #include "qwasmaudiosource_p.h" + ++#ifndef Q_OS_HAIKU + #include ++#endif ++ + #include + #include + #include +diff --git a/src/multimedia/wasm/qwasmmediadevices.cpp b/src/multimedia/wasm/qwasmmediadevices.cpp +index b9db530..8bc2b80 100644 +--- a/src/multimedia/wasm/qwasmmediadevices.cpp ++++ b/src/multimedia/wasm/qwasmmediadevices.cpp +@@ -76,6 +76,7 @@ QPlatformAudioSink *QWasmMediaDevices::createAudioSink(const QAudioDevice &devic + return ret; + } + ++#ifndef Q_OS_HAIKU + void QWasmMediaDevices::parseDevices(emscripten::val devices) + { + if (devices.isNull() || devices.isUndefined()) { +@@ -188,9 +189,12 @@ void QWasmMediaDevices::parseDevices(emscripten::val devices) + m_firstInit = false; + + } ++#endif + + void QWasmMediaDevices::getMediaDevices() + { ++ ++#ifndef Q_OS_HAIKU + emscripten::val navigator = emscripten::val::global("navigator"); + m_jsMediaDevicesInterface = navigator["mediaDevices"]; + +@@ -237,6 +241,7 @@ void QWasmMediaDevices::getMediaDevices() + std::move(enumerateDevicesCallback)); + }); + } ++#endif + + } + +@@ -247,10 +252,17 @@ void QWasmMediaDevices::getOpenALAudioDevices() + auto capture = alcGetString(nullptr, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER); + // present even if there is no capture device + if (capture && !m_audioOutputs.contains(capture)) { ++#ifndef Q_OS_HAIKU + m_audioInputs.insert(capture, + (new QWasmAudioDevice(capture, "WebAssembly audio capture device", + true, QAudioDevice::Input)) + ->create()); ++#else ++ m_audioInputs.insert(capture, ++ (new QWasmAudioDevice(capture, "Haiku audio capture device", ++ true, QAudioDevice::Input)) ++ ->create()); ++#endif + m_audioInputsAdded = true; + onAudioInputsChanged(); + } +@@ -258,10 +270,17 @@ void QWasmMediaDevices::getOpenALAudioDevices() + auto playback = alcGetString(nullptr, ALC_DEFAULT_DEVICE_SPECIFIER); + // present even if there is no playback device + if (playback && !m_audioOutputs.contains(capture)) { ++#ifndef Q_OS_HAIKU + m_audioOutputs.insert(playback, + (new QWasmAudioDevice(playback, "WebAssembly audio playback device", + true, QAudioDevice::Output)) + ->create()); ++#else ++ m_audioOutputs.insert(playback, ++ (new QWasmAudioDevice(playback, "Haiku audio playback device", ++ true, QAudioDevice::Output)) ++ ->create()); ++#endif + onAudioOutputsChanged(); + } + m_firstInit = true; +diff --git a/src/multimedia/wasm/qwasmmediadevices_p.h b/src/multimedia/wasm/qwasmmediadevices_p.h +index 3ccd211..37f33f4 100644 +--- a/src/multimedia/wasm/qwasmmediadevices_p.h ++++ b/src/multimedia/wasm/qwasmmediadevices_p.h +@@ -19,16 +19,20 @@ + + #include + ++#ifndef __HAIKU__ + #include ++#endif + #include + #include + #include + #include + #include + ++#ifndef __HAIKU__ + #include + #include + #include ++#endif + #include + QT_BEGIN_NAMESPACE + +@@ -78,19 +82,25 @@ private: + void updateCameraDevices(); + void getMediaDevices(); + void getOpenALAudioDevices(); ++#ifndef __HAIKU__ + void parseDevices(emscripten::val devices); ++#endif + + QMap m_audioOutputs; + QMap m_audioInputs; + QMap m_cameraDevices; + + ++#ifndef __HAIKU__ + std::unique_ptr m_deviceChangedCallback; ++#endif + + bool m_videoInputsAdded = false; + bool m_audioInputsAdded = false; + bool m_audioOutputsAdded = false; ++#ifndef __HAIKU__ + emscripten::val m_jsMediaDevicesInterface = emscripten::val::undefined(); ++#endif + bool m_initDone = false; + bool m_firstInit = false; + }; +diff --git a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp +index d67c428..4f1c552 100644 +--- a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp ++++ b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp +@@ -184,7 +184,11 @@ namespace { + QMaybe + loadMedia(const QUrl &mediaUrl, QIODevice *stream, const std::shared_ptr &cancelToken) + { ++#ifndef Q_OS_HAIKU + const QByteArray url = mediaUrl.toString(QUrl::PreferLocalFile).toUtf8(); ++#else ++ const QByteArray url = mediaUrl.isLocalFile() ? (mediaUrl.toString(QUrl::PreferLocalFile).toLocal8Bit()) : (mediaUrl.toEncoded()); ++#endif + + AVFormatContextUPtr context{ avformat_alloc_context() }; + +-- +2.48.1 + diff --git a/dev-qt/qt6-multimedia/qt6_multimedia-6.9.0.recipe b/dev-qt/qt6-multimedia/qt6_multimedia-6.9.0.recipe new file mode 100644 index 000000000..09f3de31d --- /dev/null +++ b/dev-qt/qt6-multimedia/qt6_multimedia-6.9.0.recipe @@ -0,0 +1,142 @@ +SUMMARY="Classes for audio, video, radio and camera functionality" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtmultimedia-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="995c3b194f3de3e1929280639642f7661d94aa57523c459dbbf2f71dbdcaa18c" +SOURCE_DIR="qtmultimedia-everywhere-src-$portVersion" +PATCHES="qt6_multimedia-$portVersion.patchset" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_multimedia$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Multimedia$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6MultimediaQuick$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6MultimediaWidgets$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6SpatialAudio$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libavcodec$secondaryArchSuffix + lib:libavformat$secondaryArchSuffix + lib:libgl$secondaryArchSuffix + lib:libintl$secondaryArchSuffix + lib:libopenal$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6Qml$secondaryArchSuffix + lib:libQt6Quick$secondaryArchSuffix + lib:libQt6QmlModels$secondaryArchSuffix + lib:libQt6ShaderTools$secondaryArchSuffix + lib:libQt6Svg$secondaryArchSuffix + lib:libvulkan$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_multimedia${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6BundledResonanceAudio$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6FFmpegMediaPluginImpl$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Multimedia$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6MultimediaQuick$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6MultimediaTestLib$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6MultimediaWidgets$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6SpatialAudio$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_multimedia$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + devel:libopenal$secondaryArchSuffix + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libavcodec$secondaryArchSuffix >= 60 + devel:libgl$secondaryArchSuffix + devel:libopenal$secondaryArchSuffix + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libQt6QmlModels$secondaryArchSuffix == $portVersion + devel:libQt6Quick$secondaryArchSuffix == $portVersion + devel:libQt6ShaderTools$secondaryArchSuffix == $portVersion + devel:libQt6Svg$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + devel:libvulkan$secondaryArchSuffix + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + # disable simd code for x86_gcc2 + if [ $targetArchitecture == x86_gcc2 ]; then + sed -i -e 's|//#define PFFFT_SIMD_DISABLE|#define PFFFT_SIMD_DISABLE|' src/3rdparty/pffft/pffft.c + fi + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DFEATURE_linux_dmabuf=OFF \ + -DQT_GENERATE_SBOM=OFF \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6BundledResonanceAudio \ + libQt6FFmpegMediaPluginImpl \ + libQt6Multimedia \ + libQt6MultimediaQuick \ + libQt6MultimediaTestLib \ + libQt6MultimediaWidgets \ + libQt6SpatialAudio + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-networkauth/qt6_networkauth-6.9.0.recipe b/dev-qt/qt6-networkauth/qt6_networkauth-6.9.0.recipe new file mode 100644 index 000000000..c65cfb5f1 --- /dev/null +++ b/dev-qt/qt6-networkauth/qt6_networkauth-6.9.0.recipe @@ -0,0 +1,100 @@ +SUMMARY="Network authentication module" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtnetworkauth-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="fac708b4227d4964d1d127cc6330b103a59a422a1e8334752506c454f7feb418" +SOURCE_DIR="qtnetworkauth-everywhere-src-$portVersion" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_networkauth$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6NetworkAuth$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Network$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_networkauth${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6NetworkAuth$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_networkauth$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Network$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6NetworkAuth + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-quick3d/qt6_quick3d-6.9.0.recipe b/dev-qt/qt6-quick3d/qt6_quick3d-6.9.0.recipe new file mode 100644 index 000000000..8cb979b9f --- /dev/null +++ b/dev-qt/qt6-quick3d/qt6_quick3d-6.9.0.recipe @@ -0,0 +1,145 @@ +SUMMARY="C++ and QML APIs for easy inclusion of 3D graphics" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtquick3d-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="a295268fdca5aeaab6bb4bb1a0a4d2720b19679ab5145c5185dac7ac3399e488" +SOURCE_DIR="qtquick3d-everywhere-src-$portVersion" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_quick3d$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Quick3D$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Quick3DAssetImport$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Quick3DAssetUtils$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Quick3DEffects$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Quick3DGlslParser$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Quick3DHelpers$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Quick3DHelpersImpl$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Quick3DIblBaker$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Quick3DParticleEffects$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Quick3DParticles$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Quick3DRuntimeRender$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Quick3DUtils$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6Qml$secondaryArchSuffix + lib:libQt6QmlModels$secondaryArchSuffix + lib:libQt6Quick$secondaryArchSuffix + lib:libQt6QuickTimeline$secondaryArchSuffix + lib:libQt6ShaderTools$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_quick3d${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6Quick3D$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Quick3DAssetImport$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Quick3DAssetUtils$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Quick3DEffects$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Quick3DGlslParser$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Quick3DHelpers$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Quick3DHelpersImpl$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Quick3DIblBaker$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Quick3DParticleEffects$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Quick3DParticles$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Quick3DRuntimeRender$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Quick3DUtils$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_quick3d$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libGL$secondaryArchSuffix + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libQt6QmlModels$secondaryArchSuffix == $portVersion + devel:libQt6Quick$secondaryArchSuffix == $portVersion + devel:libQt6QuickTimeline$secondaryArchSuffix == $portVersion + devel:libQt6ShaderTools$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6Quick3D \ + libQt6Quick3DAssetImport \ + libQt6Quick3DAssetUtils \ + libQt6Quick3DEffects \ + libQt6Quick3DGlslParser \ + libQt6Quick3DHelpers \ + libQt6Quick3DIblBaker \ + libQt6Quick3DParticleEffects \ + libQt6Quick3DParticles \ + libQt6Quick3DRuntimeRender \ + libQt6Quick3DUtils + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-quick3dphysics/patches/qt6_quick3dphysics-6.9.0.patchset b/dev-qt/qt6-quick3dphysics/patches/qt6_quick3dphysics-6.9.0.patchset new file mode 100644 index 000000000..ca8221d24 --- /dev/null +++ b/dev-qt/qt6-quick3dphysics/patches/qt6_quick3dphysics-6.9.0.patchset @@ -0,0 +1,245 @@ +From d63093325035dbd1ad13fef4ac97d0486fa32e96 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Wed, 4 Sep 2024 22:58:42 +1000 +Subject: Add Haiku support + + +diff --git a/src/3rdparty/PhysX/CMakeLists.txt b/src/3rdparty/PhysX/CMakeLists.txt +index 1fb4923..5c1a6ab 100644 +--- a/src/3rdparty/PhysX/CMakeLists.txt ++++ b/src/3rdparty/PhysX/CMakeLists.txt +@@ -1341,7 +1341,7 @@ if (WIN32) + endif() + + ## MSYS +-if (MSYS OR MINGW) ++if (MSYS OR MINGW OR HAIKU) + qt_internal_extend_target(BundledPhysX DEFINES PX_SIMD_DISABLED PX_GCC_FAMILY) + endif() + +diff --git a/src/3rdparty/PhysX/pxshared/include/foundation/PxIntrinsics.h b/src/3rdparty/PhysX/pxshared/include/foundation/PxIntrinsics.h +index 4b75756..9054315 100644 +--- a/src/3rdparty/PhysX/pxshared/include/foundation/PxIntrinsics.h ++++ b/src/3rdparty/PhysX/pxshared/include/foundation/PxIntrinsics.h +@@ -34,7 +34,7 @@ + + #if PX_WINDOWS_FAMILY + #include "foundation/windows/PxWindowsIntrinsics.h" +-#elif(PX_LINUX || PX_ANDROID || PX_APPLE_FAMILY || PX_PS4) ++#elif(PX_LINUX || PX_ANDROID || PX_APPLE_FAMILY || PX_PS4 || PX_HAIKU) + #include "foundation/unix/PxUnixIntrinsics.h" + #elif PX_XBOXONE + #include "foundation/XboxOne/PxXboxOneIntrinsics.h" +diff --git a/src/3rdparty/PhysX/pxshared/include/foundation/PxPreprocessor.h b/src/3rdparty/PhysX/pxshared/include/foundation/PxPreprocessor.h +index 630c7c0..59bd337 100644 +--- a/src/3rdparty/PhysX/pxshared/include/foundation/PxPreprocessor.h ++++ b/src/3rdparty/PhysX/pxshared/include/foundation/PxPreprocessor.h +@@ -104,6 +104,8 @@ Operating system defines, see http://sourceforge.net/p/predef/wiki/OperatingSyst + #define PX_IOS 1 + #elif defined(__APPLE__) + #define PX_OSX 1 ++#elif defined(__HAIKU__) ++#define PX_HAIKU 1 + #elif defined(__ORBIS__) + #define PX_PS4 1 + #elif defined(__NX__) +@@ -194,6 +196,9 @@ define anything not defined on this platform to 0 + #ifndef PX_OSX + #define PX_OSX 0 + #endif ++#ifndef PX_HAIKU ++#define PX_HAIKU 0 ++#endif + #ifndef PX_PS4 + #define PX_PS4 0 + #endif +@@ -269,7 +274,7 @@ family shortcuts + #define PX_MICROSOFT_FAMILY (PX_XBOXONE || PX_WINDOWS_FAMILY || PX_XBOX_SERIES_X) + #define PX_LINUX_FAMILY (PX_LINUX || PX_ANDROID) + #define PX_APPLE_FAMILY (PX_IOS || PX_OSX) // equivalent to #if __APPLE__ +-#define PX_UNIX_FAMILY (PX_LINUX_FAMILY || PX_APPLE_FAMILY) // shortcut for unix/posix platforms ++#define PX_UNIX_FAMILY (PX_LINUX_FAMILY || PX_APPLE_FAMILY || PX_HAIKU) // shortcut for unix/posix platforms + #if defined(__EMSCRIPTEN__) + #define PX_EMSCRIPTEN 1 + #else +@@ -307,7 +312,7 @@ Assert macro + DLL export macros + */ + #ifndef PX_C_EXPORT +-#if PX_WINDOWS_FAMILY || PX_LINUX ++#if PX_WINDOWS_FAMILY || PX_LINUX || PX_HAIKU + #define PX_C_EXPORT extern "C" + #else + #define PX_C_EXPORT +diff --git a/src/3rdparty/PhysX/pxshared/include/foundation/unix/PxUnixIntrinsics.h b/src/3rdparty/PhysX/pxshared/include/foundation/unix/PxUnixIntrinsics.h +index 175f7fd..3620cac 100644 +--- a/src/3rdparty/PhysX/pxshared/include/foundation/unix/PxUnixIntrinsics.h ++++ b/src/3rdparty/PhysX/pxshared/include/foundation/unix/PxUnixIntrinsics.h +@@ -33,7 +33,7 @@ + #include "foundation/Px.h" + #include "foundation/PxSharedAssert.h" + +-#if !(PX_LINUX || PX_ANDROID || PX_PS4 || PX_APPLE_FAMILY) ++#if !(PX_LINUX || PX_ANDROID || PX_PS4 || PX_APPLE_FAMILY || PX_HAIKU) + #error "This file should only be included by Unix builds!!" + #endif + +diff --git a/src/3rdparty/PhysX/source/foundation/include/PsAllocator.h b/src/3rdparty/PhysX/source/foundation/include/PsAllocator.h +index a1480b2..7f04f00 100644 +--- a/src/3rdparty/PhysX/source/foundation/include/PsAllocator.h ++++ b/src/3rdparty/PhysX/source/foundation/include/PsAllocator.h +@@ -118,6 +118,9 @@ + #elif PX_SWITCH + #include + #define PxAlloca(x) alloca(x) ++#elif PX_HAIKU ++ #include ++ #define PxAlloca(x) alloca(x) + #endif + + #define PxAllocaAligned(x, alignment) ((size_t(PxAlloca(x + alignment)) + (alignment - 1)) & ~size_t(alignment - 1)) +diff --git a/src/3rdparty/PhysX/source/foundation/include/PsIntrinsics.h b/src/3rdparty/PhysX/source/foundation/include/PsIntrinsics.h +index f08af7f..8d72734 100644 +--- a/src/3rdparty/PhysX/source/foundation/include/PsIntrinsics.h ++++ b/src/3rdparty/PhysX/source/foundation/include/PsIntrinsics.h +@@ -34,7 +34,7 @@ + + #if PX_WINDOWS_FAMILY + #include "windows/PsWindowsIntrinsics.h" +-#elif(PX_LINUX || PX_ANDROID || PX_APPLE_FAMILY || PX_PS4) ++#elif(PX_LINUX || PX_ANDROID || PX_APPLE_FAMILY || PX_PS4 || PX_HAIKU) + #include "unix/PsUnixIntrinsics.h" + #elif PX_XBOXONE + #include "XboxOne/PsXboxOneIntrinsics.h" +diff --git a/src/3rdparty/PhysX/source/foundation/include/PsThread.h b/src/3rdparty/PhysX/source/foundation/include/PsThread.h +index d0ec8d9..d88c0d4 100644 +--- a/src/3rdparty/PhysX/source/foundation/include/PsThread.h ++++ b/src/3rdparty/PhysX/source/foundation/include/PsThread.h +@@ -41,7 +41,7 @@ + + #if PX_WINDOWS_FAMILY || PX_XBOXONE || PX_XBOX_SERIES_X + #define PxSpinLockPause() __asm pause +-#elif PX_LINUX || PX_ANDROID || PX_PS4 || PX_APPLE_FAMILY || PX_SWITCH ++#elif PX_LINUX || PX_ANDROID || PX_PS4 || PX_APPLE_FAMILY || PX_SWITCH || PX_HAIKU + #define PxSpinLockPause() asm("nop") + #else + #error "Platform not supported!" +diff --git a/src/3rdparty/PhysX/source/foundation/include/PsTime.h b/src/3rdparty/PhysX/source/foundation/include/PsTime.h +index 4d5eedb..38f23a7 100644 +--- a/src/3rdparty/PhysX/source/foundation/include/PsTime.h ++++ b/src/3rdparty/PhysX/source/foundation/include/PsTime.h +@@ -84,7 +84,7 @@ class PX_FOUNDATION_API Time + Second getLastTime() const; + + private: +-#if PX_LINUX || PX_ANDROID || PX_APPLE_FAMILY || PX_PS4 ++#if PX_LINUX || PX_ANDROID || PX_APPLE_FAMILY || PX_PS4 || PX_HAIKU + Second mLastTime; + #else + int64_t mTickCount; +diff --git a/src/3rdparty/PhysX/source/foundation/include/unix/PsUnixIntrinsics.h b/src/3rdparty/PhysX/source/foundation/include/unix/PsUnixIntrinsics.h +index e6165e8..57fdb2d 100644 +--- a/src/3rdparty/PhysX/source/foundation/include/unix/PsUnixIntrinsics.h ++++ b/src/3rdparty/PhysX/source/foundation/include/unix/PsUnixIntrinsics.h +@@ -45,7 +45,7 @@ + // this file is for internal intrinsics - that is, intrinsics that are used in + // cross platform code but do not appear in the API + +-#if !(PX_LINUX || PX_ANDROID || PX_PS4 || PX_APPLE_FAMILY) ++#if !(PX_LINUX || PX_ANDROID || PX_PS4 || PX_APPLE_FAMILY || PX_HAIKU) + #error "This file should only be included by unix builds!!" + #endif + +diff --git a/src/3rdparty/PhysX/source/foundation/include/unix/sse2/PsUnixSse2AoS.h b/src/3rdparty/PhysX/source/foundation/include/unix/sse2/PsUnixSse2AoS.h +index 9a4fbb8..f6cf9d6 100644 +--- a/src/3rdparty/PhysX/source/foundation/include/unix/sse2/PsUnixSse2AoS.h ++++ b/src/3rdparty/PhysX/source/foundation/include/unix/sse2/PsUnixSse2AoS.h +@@ -43,7 +43,11 @@ namespace shdfnd + namespace aos + { + +-#if PX_EMSCRIPTEN || PX_SSE2 ++#if PX_HAIKU ++#include ++#endif ++ ++#if PX_EMSCRIPTEN || PX_SSE2 || PX_HAIKU + typedef int8_t __int8_t; + typedef int16_t __int16_t; + typedef int32_t __int32_t; +diff --git a/src/3rdparty/PhysX/source/foundation/src/unix/PsUnixThread.cpp b/src/3rdparty/PhysX/source/foundation/src/unix/PsUnixThread.cpp +index 0fb6851..159e36a 100644 +--- a/src/3rdparty/PhysX/source/foundation/src/unix/PsUnixThread.cpp ++++ b/src/3rdparty/PhysX/source/foundation/src/unix/PsUnixThread.cpp +@@ -36,13 +36,13 @@ + #include "PsThread.h" + + #include +-#if !PX_APPLE_FAMILY && !defined(ANDROID) && !defined(__CYGWIN__) && !PX_PS4 && !PX_EMSCRIPTEN && __GLIBC__ ++#if !PX_APPLE_FAMILY && !defined(ANDROID) && !defined(__CYGWIN__) && !PX_PS4 && !PX_EMSCRIPTEN && !PX_HAIKU && __GLIBC__ + #include // PTHREAD_STACK_MIN + #endif + #include + #include + #include +-#if !PX_PS4 ++#if !PX_PS4 && !PX_HAIKU + #include + #if !PX_APPLE_FAMILY && !PX_EMSCRIPTEN + #include +@@ -57,6 +57,10 @@ + #include + #endif + ++#if PX_HAIKU ++#include ++#endif ++ + // fwd + #if defined(ANDROID) + extern "C" { +@@ -114,6 +118,8 @@ static void setTid(_ThreadImpl& threadImpl) + // AM: TODO: neither of the below are implemented + #elif PX_APPLE_FAMILY + threadImpl.tid = syscall(SYS_gettid); ++#elif PX_HAIKU ++ threadImpl.tid = find_thread(NULL); + #elif PX_EMSCRIPTEN + // No thread id for emscripten + #else +@@ -324,7 +330,7 @@ uint32_t ThreadImpl::setAffinityMask(uint32_t mask) + { + #if PX_PS4 + prevMask = setAffinityMaskPS4(getThread(this)->thread, mask); +-#elif PX_EMSCRIPTEN ++#elif PX_EMSCRIPTEN || PX_HAIKU + // not supported + #elif !PX_APPLE_FAMILY // Apple doesn't support syscall with getaffinity and setaffinity + int32_t errGet = syscall(__NR_sched_getaffinity, getThread(this)->tid, sizeof(prevMask), &prevMask); +@@ -433,6 +439,10 @@ uint32_t ThreadImpl::getNbPhysicalCores() + int count; + size_t size = sizeof(count); + return sysctlbyname("hw.physicalcpu", &count, &size, NULL, 0) ? 0 : count; ++#elif PX_HAIKU ++ system_info info; ++ status_t result = get_system_info(&info); ++ return (result != B_OK) ? 0 : info.cpu_count; + #elif defined(ANDROID) + return android_getCpuCount(); + #else +diff --git a/src/3rdparty/PhysX/source/pvd/include/PxProfileAllocatorWrapper.h b/src/3rdparty/PhysX/source/pvd/include/PxProfileAllocatorWrapper.h +index 46034b0..58b4059 100644 +--- a/src/3rdparty/PhysX/source/pvd/include/PxProfileAllocatorWrapper.h ++++ b/src/3rdparty/PhysX/source/pvd/include/PxProfileAllocatorWrapper.h +@@ -74,7 +74,7 @@ namespace physx { namespace profile { + { + static const char* getName() + { +-#if PX_LINUX || PX_ANDROID || PX_PS4 || PX_IOS || PX_OSX || PX_EMSCRIPTEN || PX_SWITCH ++#if PX_LINUX || PX_ANDROID || PX_PS4 || PX_IOS || PX_OSX || PX_EMSCRIPTEN || PX_SWITCH || PX_HAIKU + return __PRETTY_FUNCTION__; + #else + return typeid(T).name(); +-- +2.48.1 + diff --git a/dev-qt/qt6-quick3dphysics/qt6_quick3dphysics-6.9.0.recipe b/dev-qt/qt6-quick3dphysics/qt6_quick3dphysics-6.9.0.recipe new file mode 100644 index 000000000..08d6991f8 --- /dev/null +++ b/dev-qt/qt6-quick3dphysics/qt6_quick3dphysics-6.9.0.recipe @@ -0,0 +1,120 @@ +SUMMARY="Qt6 Data Visualization module" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtquick3dphysics-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="5f1e2f7e591faf14d0d7e6e397a15707a7b8536e52cb3c07ce3425ddf55826a0" +SOURCE_DIR="qtquick3dphysics-everywhere-src-$portVersion" +PATCHES="qt6_quick3dphysics-$portVersion.patchset" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_quick3dphysics$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Quick3DPhysics$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Quick3DPhysicsHelpers$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6Qml$secondaryArchSuffix + lib:libQt6QmlModels$secondaryArchSuffix + lib:libQt6Quick$secondaryArchSuffix + lib:libQt6Quick3D$secondaryArchSuffix + lib:libQt6ShaderTools$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_quick3dphysics${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6Quick3DPhysics$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Quick3DPhysicsHelpers$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6BundledPhysX$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_quick3dphysics$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libGL$secondaryArchSuffix + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6OpenGL$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libQt6QmlModels$secondaryArchSuffix == $portVersion + devel:libQt6Quick$secondaryArchSuffix == $portVersion + devel:libQt6Quick3D$secondaryArchSuffix == $portVersion + devel:libQt6ShaderTools$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6Quick3DPhysics \ + libQt6Quick3DPhysicsHelpers \ + libQt6BundledPhysX + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-quicktimeline/qt6_quicktimeline-6.9.0.recipe b/dev-qt/qt6-quicktimeline/qt6_quicktimeline-6.9.0.recipe new file mode 100644 index 000000000..09b42fea0 --- /dev/null +++ b/dev-qt/qt6-quicktimeline/qt6_quicktimeline-6.9.0.recipe @@ -0,0 +1,112 @@ +SUMMARY="Qt module for keyframe-based timeline construction" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtquicktimeline-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="339f2cdd0b731615a215534799ed865e222fc797f431ad4a6677a6d5c862e648" +SOURCE_DIR="qtquicktimeline-everywhere-src-$portVersion" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_quicktimeline$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickTimeline$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6QuickTimelineBlendTrees$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6Qml$secondaryArchSuffix + lib:libQt6QmlModels$secondaryArchSuffix + lib:libQt6Quick$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_quicktimeline${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6QuickTimeline$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6QuickTimelineBlendTrees$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_quicktimeline$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libGL$secondaryArchSuffix + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libQt6QmlModels$secondaryArchSuffix == $portVersion + devel:libQt6Quick$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=OFF \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6QuickTimeline \ + libQt6QuickTimelineBlendTrees + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-scxml/qt6_scxml-6.9.0.recipe b/dev-qt/qt6-scxml/qt6_scxml-6.9.0.recipe new file mode 100644 index 000000000..9c272bc8d --- /dev/null +++ b/dev-qt/qt6-scxml/qt6_scxml-6.9.0.recipe @@ -0,0 +1,118 @@ +SUMMARY="Static and runtime integration of SCXML models into Qt6 code" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtscxml-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="a73bb5241c124d776d79ea24749d707b71365e395d8af3382a1f1c43a69a6892" +SOURCE_DIR="qtscxml-everywhere-src-$portVersion" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_scxml$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Scxml$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6ScxmlQml$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6StateMachine$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6StateMachineQml$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6Qml$secondaryArchSuffix + lib:libQt6QmlModels$secondaryArchSuffix + lib:libQt6Quick$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_scxml${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6Scxml$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6ScxmlQml$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6StateMachine$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6StateMachineQml$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_scxml$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libGL$secondaryArchSuffix + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libQt6QmlModels$secondaryArchSuffix == $portVersion + devel:libQt6Quick$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6Scxml \ + libQt6ScxmlQml \ + libQt6StateMachine \ + libQt6StateMachineQml + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-sensors/patches/qt6_sensors-6.9.0.patchset b/dev-qt/qt6-sensors/patches/qt6_sensors-6.9.0.patchset new file mode 100644 index 000000000..b10c995dd --- /dev/null +++ b/dev-qt/qt6-sensors/patches/qt6_sensors-6.9.0.patchset @@ -0,0 +1,22 @@ +From 0a3498309577409e152926ffeb09daa0fcca02d3 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Sun, 7 Nov 2021 10:47:17 +1000 +Subject: Don't link with librt for Haiku + + +diff --git a/src/plugins/sensors/dummy/CMakeLists.txt b/src/plugins/sensors/dummy/CMakeLists.txt +index 19f9332..2e97baf 100644 +--- a/src/plugins/sensors/dummy/CMakeLists.txt ++++ b/src/plugins/sensors/dummy/CMakeLists.txt +@@ -24,7 +24,7 @@ qt_internal_add_plugin(dummySensorPlugin + ## Scopes: + ##################################################################### + +-qt_internal_extend_target(dummySensorPlugin CONDITION UNIX AND NOT ANDROID AND NOT APPLE AND NOT OPENBSD AND NOT QNX ++qt_internal_extend_target(dummySensorPlugin CONDITION UNIX AND NOT ANDROID AND NOT APPLE AND NOT OPENBSD AND NOT QNX AND NOT HAIKU + LIBRARIES + rt + ) +-- +2.48.1 + diff --git a/dev-qt/qt6-sensors/qt6_sensors-6.9.0.recipe b/dev-qt/qt6-sensors/qt6_sensors-6.9.0.recipe new file mode 100644 index 000000000..eae5d19aa --- /dev/null +++ b/dev-qt/qt6-sensors/qt6_sensors-6.9.0.recipe @@ -0,0 +1,117 @@ +SUMMARY="Provide access to sensor hardware and motion gesture recognition" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtsensors-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="a46137c1f4a768d00397a2f83de7018318b0ca35d39c848da62d1783b368e467" +SOURCE_DIR="qtsensors-everywhere-src-$portVersion" +PATCHES="qt6_sensors-$portVersion.patchset" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_sensors$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Sensors$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6SensorsQuick$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6Qml$secondaryArchSuffix + lib:libQt6QmlModels$secondaryArchSuffix + lib:libQt6Quick$secondaryArchSuffix + lib:libQt6Svg$secondaryArchSuffix + lib:libQt6SvgWidgets$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_sensors${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6Sensors$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6SensorsQuick$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_sensors$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libGL$secondaryArchSuffix + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libQt6QmlModels$secondaryArchSuffix == $portVersion + devel:libQt6Quick$secondaryArchSuffix == $portVersion + devel:libQt6Svg$secondaryArchSuffix == $portVersion + devel:libQt6SvgWidgets$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -v -C build install + + prepareInstalledDevelLibs \ + libQt6Sensors \ + libQt6SensorsQuick + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-serialport/patches/qt6_serialport-6.9.0.patchset b/dev-qt/qt6-serialport/patches/qt6_serialport-6.9.0.patchset new file mode 100644 index 000000000..eee86035b --- /dev/null +++ b/dev-qt/qt6-serialport/patches/qt6_serialport-6.9.0.patchset @@ -0,0 +1,34 @@ +From d363728f18a4647807c2828989553c981b413d69 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= +Date: Mon, 11 Feb 2019 15:53:20 +1000 +Subject: Add filteredDeviceFilePaths for Haiku's /dev/ports/* + + +diff --git a/src/serialport/qserialportinfo_unix.cpp b/src/serialport/qserialportinfo_unix.cpp +index 0fb209f..91e26e6 100644 +--- a/src/serialport/qserialportinfo_unix.cpp ++++ b/src/serialport/qserialportinfo_unix.cpp +@@ -47,13 +47,19 @@ static QStringList filteredDeviceFilePaths() + << QStringLiteral("cu*"); + #elif defined(Q_OS_QNX) + << QStringLiteral("ser*"); ++#elif defined(Q_OS_HAIKU) ++ << QStringLiteral("*serial*") ++ << QStringLiteral("usb*"); + #else + ; + #endif + + QStringList result; +- ++#if defined(Q_OS_HAIKU) ++ QDir deviceDir(QStringLiteral("/dev/ports")); ++#else + QDir deviceDir(QStringLiteral("/dev")); ++#endif + if (deviceDir.exists()) { + deviceDir.setNameFilters(deviceFileNameFilterList); + deviceDir.setFilter(QDir::Files | QDir::System | QDir::NoSymLinks); +-- +2.48.1 + diff --git a/dev-qt/qt6-serialport/qt6_serialport-6.9.0.recipe b/dev-qt/qt6-serialport/qt6_serialport-6.9.0.recipe new file mode 100644 index 000000000..9f79f8262 --- /dev/null +++ b/dev-qt/qt6-serialport/qt6_serialport-6.9.0.recipe @@ -0,0 +1,95 @@ +SUMMARY="Provides access to hardware and virtual serial ports" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtserialport-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="fbe762f5ca6b3e58fbbf51604928b50cf14628b670eaeab57751e07a4086b954" +SOURCE_DIR="qtserialport-everywhere-src-$portVersion" +PATCHES="qt6_serialport-$portVersion.patchset" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_serialport$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6SerialPort$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_serialport${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6SerialPort$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_serialport$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libQt6Core$secondaryArchSuffix == $portVersion + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6SerialPort + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-shadertools/qt6_shadertools-6.9.0.recipe b/dev-qt/qt6-shadertools/qt6_shadertools-6.9.0.recipe new file mode 100644 index 000000000..0a9e46af3 --- /dev/null +++ b/dev-qt/qt6-shadertools/qt6_shadertools-6.9.0.recipe @@ -0,0 +1,103 @@ +SUMMARY="Qt6 shader tools module" +DESCRIPTION="The Qt Shader Tools module builds on the SPIR-V Open Source Ecosystem as described \ +at the Khronos SPIR-V web site. For compiling into SPIR-V glslang is used, while translating \ +and reflecting is done via SPIRV-Cross." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtshadertools-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="916c40281ac3dee23b163f6ca73fb5bdeee344838b9a922b6f36269642d6f4bb" +SOURCE_DIR="qtshadertools-everywhere-src-$portVersion" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_shadertools$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6ShaderTools$secondaryArchSuffix = $portVersion compat >= 6 + cmd:qsb$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_shadertools${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6ShaderTools$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_shadertools$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -Bbuild -S. -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ +# needs work, finds the library but tries to install to /boot/system +# sed -i "s|$ENV{DESTDIR}/boot/system|{DESTDIR}$prefix|" \ +# build/qt_sbom/*.cmake + + ninja -C build install + + prepareInstalledDevelLib \ + libQt6ShaderTools + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + mkdir -p $binDir + ln -s -t $binDir $libDir/Qt6/qsb + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-speech/patches/qt6_speech-6.9.0.patchset b/dev-qt/qt6-speech/patches/qt6_speech-6.9.0.patchset new file mode 100644 index 000000000..3af7edeb0 --- /dev/null +++ b/dev-qt/qt6-speech/patches/qt6_speech-6.9.0.patchset @@ -0,0 +1,32 @@ +From 927bbbb6fda2f5446683aa9d54031ae67f096921 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Mon, 15 Apr 2024 20:51:10 +1000 +Subject: Fix flite voices path + + +diff --git a/src/plugins/tts/flite/qtexttospeech_flite_processor.cpp b/src/plugins/tts/flite/qtexttospeech_flite_processor.cpp +index 99c263e..539eef8 100644 +--- a/src/plugins/tts/flite/qtexttospeech_flite_processor.cpp ++++ b/src/plugins/tts/flite/qtexttospeech_flite_processor.cpp +@@ -224,7 +224,7 @@ bool QTextToSpeechProcessorFlite::init() + // We could source the language and perhaps the list of voices we want to load + // (hardcoded below) from an environment variable. + const QLatin1StringView langCode("us"); +- const QLatin1StringView libPrefix("flite_cmu_%1_%2.so.1"); ++ const QLatin1StringView libPrefix("flite_cmu_%1_%2.so.2"); + const QLatin1StringView registerPrefix("register_cmu_%1_%2"); + const QLatin1StringView unregisterPrefix("unregister_cmu_%1_%2"); + +@@ -273,7 +273,8 @@ QStringList QTextToSpeechProcessorFlite::fliteAvailableVoices(const QString &lib + QStringList ldPaths = pe.value("LD_LIBRARY_PATH"_L1).split(":", Qt::SkipEmptyParts); + if (ldPaths.isEmpty()) { + ldPaths = QStringList{"/usr/lib64"_L1, "/usr/local/lib64"_L1, "/lib64"_L1, +- "/usr/lib/x86_64-linux-gnu"_L1, "/usr/lib"_L1}; ++ "/usr/lib/x86_64-linux-gnu"_L1, "/usr/lib"_L1, ++ "/system/lib"_L1, "/system/lib/x86"_L1}; + } else { + ldPaths.removeDuplicates(); + } +-- +2.48.1 + diff --git a/dev-qt/qt6-speech/qt6_speech-6.9.0.recipe b/dev-qt/qt6-speech/qt6_speech-6.9.0.recipe new file mode 100644 index 000000000..d9615948e --- /dev/null +++ b/dev-qt/qt6-speech/qt6_speech-6.9.0.recipe @@ -0,0 +1,105 @@ +SUMMARY="Text-to-speech library for the Qt6 framework" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtspeech-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="a981b68c71743d77a3ce4437ad118d3851390f05a1ab26a859fb9b8c5938c971" +SOURCE_DIR="qtspeech-everywhere-src-$portVersion" +PATCHES="qt6_speech-$portVersion.patchset" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_speech$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6TextToSpeech$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libflite$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libopenal$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Multimedia$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_speech${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6TextToSpeech$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_speech$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + devel:libQt6Multimedia$secondaryArchSuffix + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libflite$secondaryArchSuffix + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Multimedia$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libQt6Quick$secondaryArchSuffix == $portVersion + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6TextToSpeech + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-svg/qt6_svg-6.9.0.recipe b/dev-qt/qt6-svg/qt6_svg-6.9.0.recipe new file mode 100644 index 000000000..dc63de9ed --- /dev/null +++ b/dev-qt/qt6-svg/qt6_svg-6.9.0.recipe @@ -0,0 +1,107 @@ +SUMMARY="Classes for displaying the contents of SVG files" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtsvg-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="ec359d930c95935ea48af58b100c2f5d0d275968ec8ca1e0e76629b7159215fc" +SOURCE_DIR="qtsvg-everywhere-src-$portVersion" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_svg$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Svg$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6SvgWidgets$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +SUPPLEMENTS=" + qt6_base$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_svg${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6Svg$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6SvgWidgets$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_svg$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6Widgets$secondaryArchSuffix == $portVersion + devel:libQt6Xml$secondaryArchSuffix == $portVersion + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6Svg \ + libQt6SvgWidgets + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-tools/qt6_tools-6.9.0.recipe b/dev-qt/qt6-tools/qt6_tools-6.9.0.recipe new file mode 100644 index 000000000..1068071a3 --- /dev/null +++ b/dev-qt/qt6-tools/qt6_tools-6.9.0.recipe @@ -0,0 +1,196 @@ +SUMMARY="A cross-platform application and UI framework (Development Tools, QtHelp)" +DESCRIPTION="The QtTools modules contains some tools mostly useful for application development. \ +Included are Qt Designer (GUI design), QDbusViewer and more." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qttools-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="fa645589cc3f939022401a926825972a44277dead8ec8607d9f2662e6529c9a4" +SOURCE_DIR="qttools-everywhere-src-$portVersion" +ADDITIONAL_FILES=" + Assistant.rdef.in + Designer.rdef.in + Linguist.rdef.in + QDBusViewer.rdef.in + FindWrapLibClang.cmake.in + " + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +clangVer="20" + +PROVIDES=" + qt6_tools$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Designer$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6DesignerComponents$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6Help$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6UiTools$secondaryArchSuffix = $portVersion compat >= 6 + cmd:assistant6$secondaryArchSuffix = $portVersion compat >= 6 + cmd:designer6$secondaryArchSuffix = $portVersion compat >= 6 + cmd:linguist6$secondaryArchSuffix = $portVersion compat >= 6 + cmd:pixeltool6$secondaryArchSuffix = $portVersion compat >= 6 + cmd:qdbus6$secondaryArchSuffix = $portVersion compat >= 6 + cmd:qdbusviewer6$secondaryArchSuffix = $portVersion compat >= 6 + cmd:qdistancefieldgenerator6$secondaryArchSuffix = $portVersion compat >= 6 + cmd:qdoc6$secondaryArchSuffix = $portVersion compat >= 6 + cmd:qtdiag6$secondaryArchSuffix = $portVersion compat >= 6 + cmd:qtplugininfo6$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libclang$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libLLVM$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6Qml$secondaryArchSuffix + lib:libQt6QmlModels$secondaryArchSuffix + lib:libQt6Quick$secondaryArchSuffix + lib:libQt6Widgets$secondaryArchSuffix + lib:libvulkan$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_tools${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6Designer$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6DesignerComponents$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6Help$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6UiTools$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_tools$secondaryArchSuffix == $portVersion base + haiku$secondaryArchSuffix + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libclang$secondaryArchSuffix >= $clangVer + devel:libclang_cpp$secondaryArchSuffix >= $clangVer + devel:libLLVM_$clangVer$secondaryArchSuffix + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libQt6QmlModels$secondaryArchSuffix == $portVersion + devel:libQt6Quick$secondaryArchSuffix == $portVersion + devel:libQt6Widgets$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + devel:libvulkan$secondaryArchSuffix + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + local LLVM_VERSION=$(llvm-config --version) + local LLVM_VERION_MAJOR="`echo "$LLVM_VERSION" | cut -d. -f1`" + local LLVM_VERION_MINOR="`echo "$LLVM_VERSION" | cut -d. -f2`" + local LLVM_VERION_PATCH="`echo "$LLVM_VERSION" | cut -d. -f3`" + + sed \ + -e "s|@CLANG_VERSION_MAJOR@|$LLVM_VERION_MAJOR|" \ + -e "s|@CLANG_VERSION_MINOR@|$LLVM_VERION_MINOR|" \ + -e "s|@CLANG_VERSION_PATCH@|$LLVM_VERION_PATCH|" \ + -e "s|@CLANG_VERSION@|$LLVM_VERSION|" \ + -e "s|@CLANG_LIBDIR@|/system/$relativeDevelopLibDir|" \ + -e "s|@CLANG_INCLUDE_DIR@|/system/$relativeLibDir/clang/$LLVM_VERSION/include|" \ + $portDir/additional-files/FindWrapLibClang.cmake.in > $sourceDir/cmake/FindWrapLibClang.cmake + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DINSTALL_PUBLICBINDIR=$binDir \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6Designer \ + libQt6DesignerComponents \ + libQt6Help \ + libQt6UiTools + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + # add tools to Deskbar menu + mkdir -p \ + $binDir \ + $dataDir/deskbar/menu/Applications/Qt + + # install symlinks for user-facing tools + binFiles="linguist designer pixeltool assistant qdistancefieldgenerator qtplugininfo \ +qdoc qdbus qdbusviewer qtdiag" + suffix="6" + for f in $binFiles; do + ln -s $libDir/Qt6/$f $binDir/$f$suffix + done + + # add resources + local MAJOR="`echo "$portVersion" | cut -d. -f1`" + local MIDDLE="`echo "$portVersion" | cut -d. -f2`" + local MINOR="`echo "$portVersion" | cut -d. -f3`" + local VARIETY="B_APPV_FINAL" + + resFiles="Assistant Designer Linguist QDBusViewer" + for j in $resFiles; do + sed \ + -e "s|@MAJOR@|$MAJOR|" \ + -e "s|@MIDDLE@|$MIDDLE|" \ + -e "s|@MINOR@|$MINOR|" \ + -e "s|@VARIETY@|$VARIETY|" \ + $portDir/additional-files/$j.rdef.in > $sourceDir/$j.rdef + mv $libDir/Qt6/${j,,} $libDir/Qt6/$j + ln -s $libDir/Qt6/$j $libDir/Qt6/${j,,} + addResourcesToBinaries $sourceDir/$j.rdef $libDir/Qt6/$j + addAppDeskbarSymlink $libDir/Qt6/$j "Qt/Qt6 $j" + mimeset -f $libDir/Qt6/$j + done + + mkdir -p $libDir/Qt6/lib + cp -f `finddir B_SYSTEM_DIRECTORY`/$relativeDevelopLibDir/libclang.so.$clangVer.1 $libDir/Qt6/lib + cp -f `finddir B_SYSTEM_DIRECTORY`/$relativeDevelopLibDir/libclang-cpp.so.$clangVer.1 $libDir/Qt6/lib + strip -s $libDir/Qt6/lib/libclang* + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-translations/qt6_translations-6.9.0.recipe b/dev-qt/qt6-translations/qt6_translations-6.9.0.recipe new file mode 100644 index 000000000..7759e4021 --- /dev/null +++ b/dev-qt/qt6-translations/qt6_translations-6.9.0.recipe @@ -0,0 +1,70 @@ +SUMMARY="A cross-platform application and UI framework (Translations)" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qttranslations-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="1d5581ef5fc7c7bc556f2403017983683993bbebfcdf977ef8f180f604668c3f" +SOURCE_DIR="qttranslations-everywhere-src-$portVersion" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_translations$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + " + +SUPPLEMENTS=" + qt6_base$secondaryArchSuffix + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + qt6_tools${secondaryArchSuffix}_devel + devel:libQt6Core$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:qdoc6$secondaryArchSuffix + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install +} diff --git a/dev-qt/qt6-webchannel/qt6_webchannel-6.9.0.recipe b/dev-qt/qt6-webchannel/qt6_webchannel-6.9.0.recipe new file mode 100644 index 000000000..9e653f1af --- /dev/null +++ b/dev-qt/qt6-webchannel/qt6_webchannel-6.9.0.recipe @@ -0,0 +1,114 @@ +SUMMARY="Provides access to QObject or QML objects from HTML/JavaScript clients" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtwebchannel-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="10519a9cdde17a7d955f332480c6bcd1202e4b2c48fd94eb31efaa21d0fabfee" +SOURCE_DIR="qtwebchannel-everywhere-src-$portVersion" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_webchannel$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6WebChannel$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6WebChannelQuick$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6Qml$secondaryArchSuffix + lib:libQt6QmlModels$secondaryArchSuffix + lib:libQt6Quick$secondaryArchSuffix + lib:libQt6WebSockets$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_webchannel${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6WebChannel$secondaryArchSuffix = $portVersion compat >= 6 + devel:libQt6WebChannelQuick$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_webchannel$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libGL$secondaryArchSuffix + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libQt6QmlModels$secondaryArchSuffix == $portVersion + devel:libQt6Quick$secondaryArchSuffix == $portVersion + devel:libQt6WebSockets$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6WebChannel \ + libQt6WebChannelQuick + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-websockets/qt6_websockets-6.9.0.recipe b/dev-qt/qt6-websockets/qt6_websockets-6.9.0.recipe new file mode 100644 index 000000000..04546816f --- /dev/null +++ b/dev-qt/qt6-websockets/qt6_websockets-6.9.0.recipe @@ -0,0 +1,109 @@ +SUMMARY="Provides WebSocket communication compliant with RFC 6455" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtwebsockets-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="6b3add7cacf3a4e0b448d5e69d9dac42795fef63309038af1dc5a454ce514940" +SOURCE_DIR="qtwebsockets-everywhere-src-$portVersion" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + qt6_websockets$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6WebSockets$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6Qml$secondaryArchSuffix + lib:libQt6QmlModels$secondaryArchSuffix + lib:libQt6Quick$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_websockets${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6WebSockets$secondaryArchSuffix = $portVersion compat >= 6 + " +REQUIRES_devel=" + qt6_websockets$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix >= 3 + devel:libGL$secondaryArchSuffix + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libQt6QmlModels$secondaryArchSuffix == $portVersion + devel:libQt6Quick$secondaryArchSuffix == $portVersion + devel:libssl$secondaryArchSuffix >= 3 + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6WebSockets + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +} diff --git a/dev-qt/qt6-webview/qt6_webview-6.9.0.recipe b/dev-qt/qt6-webview/qt6_webview-6.9.0.recipe new file mode 100644 index 000000000..b77129bd2 --- /dev/null +++ b/dev-qt/qt6-webview/qt6_webview-6.9.0.recipe @@ -0,0 +1,115 @@ +SUMMARY="Provides WebSocket communication compliant with RFC 6455" +DESCRIPTION="Qt is a cross-platform application framework that is widely \ +used for developing software with a graphical user interface, and also used \ +for developing non-GUI programs such as command-line tools and consoles for \ +servers." +HOMEPAGE="https://qt.io/" +COPYRIGHT="2015-2025 The Qt Company Ltd." +LICENSE="GNU LGPL v2.1 + GNU LGPL v3 + GNU FDL v1" +REVISION="1" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtwebview-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="5b24070e8ceb12c3c4df5a887f3ffc3544193646386e6ce18e41c20d42d7ed6b" +SOURCE_DIR="qtwebview-everywhere-src-$portVersion" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +libVersion="$portVersion" +libVersionCompat="$libVersion compat >= ${libVersion%%.*}" + +PROVIDES=" + qt6_webview$secondaryArchSuffix = $portVersion compat >= 6 + lib:libQt6WebView$secondaryArchSuffix = $libVersionCompat + lib:libQt6WebViewQuick$secondaryArchSuffix = $libVersionCompat + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libQt6Core$secondaryArchSuffix + lib:libQt6Gui$secondaryArchSuffix + lib:libQt6Network$secondaryArchSuffix + lib:libQt6OpenGL$secondaryArchSuffix + lib:libQt6Qml$secondaryArchSuffix + lib:libQt6QmlModels$secondaryArchSuffix + lib:libQt6Quick$secondaryArchSuffix + " + +PROVIDES_devel=" + qt6_webview${secondaryArchSuffix}_devel = $portVersion compat >= 6 + devel:libQt6WebView$secondaryArchSuffix = $libVersionCompat + devel:libQt6WebViewQuick$secondaryArchSuffix = $libVersionCompat + " +REQUIRES_devel=" + qt6_webview$secondaryArchSuffix == $portVersion base + qt6_base${secondaryArchSuffix}_devel + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libQt6Core$secondaryArchSuffix == $portVersion + devel:libQt6Gui$secondaryArchSuffix == $portVersion + devel:libQt6OpenGL$secondaryArchSuffix == $portVersion + devel:libQt6Qml$secondaryArchSuffix == $portVersion + devel:libQt6Quick$secondaryArchSuffix == $portVersion +# devel:libQt6WebEngineCore$secondaryArchSuffix +# devel:libQt6WebEngineQuick$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:awk + cmd:cmake + cmd:find + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:perl + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:xargs + " + +BUILD() +{ + export DISABLE_ASLR=1 + + cmake -B build -S $sourceDir -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fPIC \ + -DQT_GENERATE_SBOM=ON \ + -Wno-dev + + find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; + + ninja -v -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + prepareInstalledDevelLibs \ + libQt6WebView \ + libQt6WebViewQuick + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc + + cd $libDir + for i in lib*.so.6.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + # cleanup + rmdir $libDir/Qt6 + + packageEntries devel \ + $developDir \ + $libDir/cmake \ + $dataDir/Qt6/mkspecs +}