0
0
Fork 0
haikuports/dev-qt/qt6-base/qt6_base-6.2.1.recipe

201 lines
6.9 KiB
Bash

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-2021 The Qt Company Ltd."
LICENSE="GNU LGPL v3
GNU GPL v3
GNU FDL v1"
REVISION="2"
SOURCE_URI="https://download.qt.io/official_releases/qt/${portVersion%.*}/$portVersion/submodules/qtbase-everywhere-src-$portVersion.tar.xz"
CHECKSUM_SHA256="2c5f07b5c3ea27d3fc1a46686ea3fb6724f94dddf1fb007de3eb0bdb87429079"
SOURCE_DIR="qtbase-everywhere-src-$portVersion"
srcGitRev2="5511f776f7235b5137badbb3c1acde2b8477f875"
SOURCE_URI_2="https://github.com/threedeyes/qt6-haikuplugins/archive/$srcGitRev2.tar.gz"
CHECKSUM_SHA256_2="7443b1b1693e1ded37e93a52f6557ea4f61935806f564085a6532dee5ed3409c"
SOURCE_DIR_2="qt6-haikuplugins-$srcGitRev2"
PATCHES="qt6_base-$portVersion.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:libcrypto$secondaryArchSuffix
lib:libdouble_conversion$secondaryArchSuffix
lib:libegl$secondaryArchSuffix
lib:libfreetype$secondaryArchSuffix
lib:libfontconfig$secondaryArchSuffix
lib:libgl$secondaryArchSuffix
lib:libharfbuzz$secondaryArchSuffix
lib:libicudata$secondaryArchSuffix >= 66
lib:libicui18n$secondaryArchSuffix >= 66
lib:libicuuc$secondaryArchSuffix >= 66
lib:libintl$secondaryArchSuffix
lib:libpcre2_16$secondaryArchSuffix
lib:libpng16$secondaryArchSuffix
lib:libssl$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: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
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libcrypto$secondaryArchSuffix
devel:libdouble_conversion$secondaryArchSuffix >= 3
devel:libegl$secondaryArchSuffix
devel:libfontconfig$secondaryArchSuffix
devel:libfreetype$secondaryArchSuffix
devel:libgl$secondaryArchSuffix
devel:libglu$secondaryArchSuffix
devel:libharfbuzz$secondaryArchSuffix
devel:libicuuc$secondaryArchSuffix >= 66
devel:libjpeg$secondaryArchSuffix
devel:libpcre2_16$secondaryArchSuffix
devel:libpng16$secondaryArchSuffix
devel:libsqlite3$secondaryArchSuffix
devel:libssl$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.7
cmd:sed
cmd:xargs
"
BUILD()
{
export DISABLE_ASLR=1
cmake \
-B build \
-S $sourceDir \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_FLAGS=-fPIC \
-DCMAKE_CXX_FLAGS=-fPIC \
-DCMAKE_INSTALL_PREFIX=$prefix \
-DBUILD_WITH_PCH=ON \
-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=$dataDir/Qt6/examples \
-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
ninja -C build $jobArgs
}
INSTALL()
{
ninja -C build install
# build platform plugins
PATH=$PATH:$binDir:$libDir/Qt6
mkdir -p $sourceDir2/build $preferencesDir
cd $sourceDir2/build
qmake6 ../src
make $jobArgs
make install
cp preferences/Qt6Configurator $preferencesDir
prepareInstalledDevelLibs \
libQt6Concurrent libQt6Core libQt6DBus libQt6EglFSDeviceIntegration \
libQt6Gui libQt6Network libQt6OpenGL libQt6OpenGLWidgets \
libQt6PrintSupport libQt6Sql libQt6Test libQt6Widgets libQt6Xml \
libQt6FbSupport libQt6DeviceDiscoverySupport
cd $libDir
for i in lib*.so.6.*;do
ln -fs $i $(echo $i | cut -f1,2 -d.)
done
# fix paths for static libs
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
mkdir -p $binDir
ln -s -t $binDir $libDir/Qt6/{qmake6,qtpaths6}
rm -rf $(dirname "$docDir")
packageEntries devel \
$developDir \
$binDir \
$libDir/cmake \
$dataDir/Qt6/mkspecs
addPreferencesDeskbarSymlink $preferencesDir/Qt6Configurator "Qt6 Configurator"
}