Files
haikuports/dev-qt/qt6-declarative/qt6_declarative-6.9.0.recipe
2025-05-15 05:40:39 +00:00

269 lines
12 KiB
Bash

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
}