Files
haikuports/dev-qt/qt5/qt5-5.7.1.recipe
2017-02-20 21:41:46 +01:00

426 lines
17 KiB
Bash

SUMMARY="A comprehensive C++ application development 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 The Qt Company Ltd."
LICENSE="GNU LGPL v2.1
GNU LGPL v3"
REVISION="1"
SOURCE_URI="https://download.qt.io/official_releases/qt/5.7/$portVersion/single/qt-everywhere-opensource-src-$portVersion.tar.xz"
SOURCE_URI_2="https://download.qt.io/community_releases/5.7/$portVersion/qtwebkit-opensource-src-$portVersion.tar.xz"
CHECKSUM_SHA256="46ebca977deb629c5e69c2545bc5fe13f7e40012e5e2e451695c583bd33502fa"
CHECKSUM_SHA256_2="a46cf7c89339645f94a5777e8ae5baccf75c5fc87ab52c9dafc25da3327b5f03"
SOURCE_DIR="qt-everywhere-opensource-src-$portVersion"
SOURCE_DIR_2="qtwebkit-opensource-src-$portVersion"
PATCHES="qt5-$portVersion.patchset"
PATCHES_2="qtwebkit-$portVersion.patchset"
ADDITIONAL_FILES="
assistant.rdef.in
designer.rdef.in
linguist.rdef.in
qdbusviewer.rdef.in
qhelpconverter.rdef.in
qmlviewer.rdef.in
"
ARCHITECTURES="!x86_gcc2 ?x86 x86_64"
SECONDARY_ARCHITECTURES="?x86"
PROVIDES="
qt5$secondaryArchSuffix = $portVersion compat >= 5
lib:libqt5$secondaryArchSuffix = $portVersion compat >= 5
# qtbase
lib:libQt5Concurrent$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5Core$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5DBus$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5Gui$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5Network$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5OpenGL$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5PrintSupport$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5Sql$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5Test$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5Widgets$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5Xml$secondaryArchSuffix = $portVersion compat >= 5
# qtxmlpatterns
lib:libQt5XmlPatterns$secondaryArchSuffix = $portVersion compat >= 5
# qtwebsockets
lib:libQt5WebSockets$secondaryArchSuffix = $portVersion compat >= 5
# qtwebkit
lib:libQt5WebKit$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5WebKitWidgets$secondaryArchSuffix = $portVersion compat >= 5
# qt3d
lib:libQt53DCore$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt53DExtras$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt53DInput$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt53DLogic$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt53DQuick$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt53DQuickExtras$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt53DQuickInput$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt53DQuickRender$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt53DRender$secondaryArchSuffix = $portVersion compat >= 5
# qtcharts
lib:libQt5Charts$secondaryArchSuffix = $portVersion compat >= 5
# qtconnectivity
lib:libQt5Bluetooth$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5Nfc$secondaryArchSuffix = $portVersion compat >= 5
# qtdatavis3d
lib:libQt5DataVisualization$secondaryArchSuffix = $portVersion compat >= 5
# qtdeclarative
lib:libQt5Qml$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5Quick$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5QuickControls2$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5QuickParticles$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5QuickTemplates2$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5QuickTest$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5QuickWidgets$secondaryArchSuffix = $portVersion compat >= 5
# qtgamepad
lib:libQt5Gamepad$secondaryArchSuffix = $portVersion compat >= 5
# qtlocation
lib:libQt5Location$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5Positioning$secondaryArchSuffix = $portVersion compat >= 5
# qtmultimedia
lib:libQt5Multimedia$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5MultimediaQuick_p$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5MultimediaWidgets$secondaryArchSuffix = $portVersion compat >= 5
# qtscript
lib:libQt5Script$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5ScriptTools$secondaryArchSuffix = $portVersion compat >= 5
# qtsensors
lib:libQt5Sensors$secondaryArchSuffix = $portVersion compat >= 5
# qtserialport
lib:libQt5SerialBus$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5SerialPort$secondaryArchSuffix = $portVersion compat >= 5
# qtsvg
lib:libQt5Svg$secondaryArchSuffix = $portVersion compat >= 5
# qttools
lib:libQt5CLucene$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5Help$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5Designer$secondaryArchSuffix = $portVersion compat >= 5
lib:libQt5DesignerComponents$secondaryArchSuffix = $portVersion compat >= 5
# qtwebchannel
lib:libQt5WebChannel$secondaryArchSuffix = $portVersion compat >= 5
# qtpurchasing
lib:libQt5Purchasing$secondaryArchSuffix = $portVersion compat >= 5
# qtscxml
lib:libQt5Scxml$secondaryArchSuffix = $portVersion compat >= 5
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libcrypto$secondaryArchSuffix
lib:libfreetype$secondaryArchSuffix
lib:libfontconfig$secondaryArchSuffix
lib:libgl$secondaryArchSuffix
lib:libglu$secondaryArchSuffix
lib:libicudata$secondaryArchSuffix
lib:libicui18n$secondaryArchSuffix
lib:libicuuc$secondaryArchSuffix
lib:libjpeg$secondaryArchSuffix
lib:libpng16$secondaryArchSuffix
lib:libssl$secondaryArchSuffix
lib:libsqlite3$secondaryArchSuffix
lib:libtiff$secondaryArchSuffix
lib:libxml2$secondaryArchSuffix
lib:libz$secondaryArchSuffix
"
PROVIDES_devel="
qt5${secondaryArchSuffix}_devel = $portVersion compat >= 5
devel:libqt5$secondaryArchSuffix = $portVersion compat >= 5
# qtbase
devel:libQt5Bootstrap$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5Concurrent$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5Core$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5DBus$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5Gui$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5Network$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5OpenGL$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5OpenGLExtensions$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5PlatformSupport$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5PrintSupport$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5Sql$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5Test$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5Widgets$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5Xml$secondaryArchSuffix = $portVersion compat >= 5
# qtxmlpatterns
devel:libQt5XmlPatterns$secondaryArchSuffix = $portVersion compat >= 5
# qtwebsockets
devel:libQt5WebSockets$secondaryArchSuffix = $portVersion compat >= 5
# qtwebkit
devel:libQt5WebKit$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5WebKitWidgets$secondaryArchSuffix = $portVersion compat >= 5
# qt3d
devel:libQt53DCore$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt53DInput$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt53DLogic$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt53DQuick$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt53DQuickRender$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt53DRender$secondaryArchSuffix = $portVersion compat >= 5
# qtconnectivity
devel:libQt5Bluetooth$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5Nfc$secondaryArchSuffix = $portVersion compat >= 5
# qtdeclarative
devel:libQt5PacketProtocol$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5Qml$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5QmlDebug$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5Quick$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5QuickParticles$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5QuickTest$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5QuickWidgets$secondaryArchSuffix = $portVersion compat >= 5
# qtlocation
devel:libQt5Location$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5Positioning$secondaryArchSuffix = $portVersion compat >= 5
# qtmultimedia
devel:libQt5Multimedia$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5MultimediaQuick_p$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5MultimediaWidgets$secondaryArchSuffix = $portVersion compat >= 5
# qtquick1
devel:libQt5QmlDevTools$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5UiTools$secondaryArchSuffix = $portVersion compat >= 5
# qtscript
devel:libQt5Script$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5ScriptTools$secondaryArchSuffix = $portVersion compat >= 5
# qtsensors
devel:libQt5Sensors$secondaryArchSuffix = $portVersion compat >= 5
# qtserialport
devel:libQt5SerialPort$secondaryArchSuffix = $portVersion compat >= 5
# qtsvg
devel:libQt5Svg$secondaryArchSuffix = $portVersion compat >= 5
# qttools
devel:libQt5CLucene$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5Designer$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5DesignerComponents$secondaryArchSuffix = $portVersion compat >= 5
devel:libQt5Help$secondaryArchSuffix = $portVersion compat >= 5
# qtwebchannel
devel:libQt5WebChannel$secondaryArchSuffix = $portVersion compat >= 5
# qtpurchasing
devel:libQt5Purchasing$secondaryArchSuffix = $portVersion compat >= 5
# qtscxml
devel:libQt5Scxml$secondaryArchSuffix = $portVersion compat >= 5
devel:libQtpng$secondaryArchSuffix = $portVersion
cmd:assistant$secondaryArchSuffix = $portVersion compat >= 5
cmd:canbusutil$secondaryArchSuffix = $portVersion compat >= 5
cmd:designer$secondaryArchSuffix = $portVersion compat >= 5
cmd:fixqt4headers.pl$secondaryArchSuffix = $portVersion compat >= 5
cmd:lconvert$secondaryArchSuffix = $portVersion compat >= 5
cmd:linguist$secondaryArchSuffix = $portVersion compat >= 5
cmd:lrelease$secondaryArchSuffix = $portVersion compat >= 5
cmd:lupdate$secondaryArchSuffix = $portVersion compat >= 5
cmd:moc$secondaryArchSuffix = $portVersion compat >= 5
cmd:pixeltool$secondaryArchSuffix = $portVersion compat >= 5
cmd:qcollectiongenerator$secondaryArchSuffix = $portVersion compat >= 5
cmd:qdbus$secondaryArchSuffix = $portVersion compat >= 5
cmd:qdbuscpp2xml$secondaryArchSuffix = $portVersion compat >= 5
cmd:qdbusviewer$secondaryArchSuffix = $portVersion compat >= 5
cmd:qdbusxml2cpp$secondaryArchSuffix = $portVersion compat >= 5
cmd:qdoc$secondaryArchSuffix = $portVersion compat >= 5
cmd:qgltf$secondaryArchSuffix = $portVersion compat >= 5
cmd:qhelpconverter$secondaryArchSuffix = $portVersion compat >= 5
cmd:qhelpgenerator$secondaryArchSuffix = $portVersion compat >= 5
cmd:qlalr$secondaryArchSuffix = $portVersion compat >= 5
cmd:qmake$secondaryArchSuffix = $portVersion compat >= 5
cmd:qml$secondaryArchSuffix = $portVersion compat >= 5
cmd:qmleasing$secondaryArchSuffix = $portVersion compat >= 5
cmd:qmlimportscanner$secondaryArchSuffix = $portVersion compat >= 5
cmd:qmllint$secondaryArchSuffix = $portVersion compat >= 5
cmd:qmlmin$secondaryArchSuffix = $portVersion compat >= 5
cmd:qmlplugindump$secondaryArchSuffix = $portVersion compat >= 5
cmd:qmlprofiler$secondaryArchSuffix = $portVersion compat >= 5
cmd:qmlscene$secondaryArchSuffix = $portVersion compat >= 5
cmd:qmltestrunner$secondaryArchSuffix = $portVersion compat >= 5
cmd:qmlviewer$secondaryArchSuffix = $portVersion compat >= 5
cmd:qscxmlc$secondaryArchSuffix = $portVersion compat >= 5
cmd:qtdiag$secondaryArchSuffix = $portVersion compat >= 5
cmd:qtpaths$secondaryArchSuffix = $portVersion compat >= 5
cmd:qtplugininfo$secondaryArchSuffix = $portVersion compat >= 5
cmd:rcc$secondaryArchSuffix = $portVersion compat >= 5
cmd:syncqt.pl$secondaryArchSuffix = $portVersion compat >= 5
cmd:uic$secondaryArchSuffix = $portVersion compat >= 5
cmd:xmlpatterns$secondaryArchSuffix = $portVersion compat >= 5
cmd:xmlpatternsvalidator$secondaryArchSuffix = $portVersion compat >= 5
"
# if libssl and libcrypto are not in REQUIRES_devel,
# qmake will decide that there is no system OpenSSL support
# and thus build Qt apps without any SSL support.
REQUIRES_devel="
qt5$secondaryArchSuffix == $portVersion base
haiku$secondaryArchSuffix
lib:libz$secondaryArchSuffix
lib:libssl$secondaryArchSuffix
lib:libcrypto$secondaryArchSuffix
lib:libgl$secondaryArchSuffix
lib:libglu$secondaryArchSuffix
"
PROVIDES_docs="
qt5${secondaryArchSuffix}_docs = $portVersion
"
REQUIRES_docs="
qt5${secondaryArchSuffix}_devel == $portVersion base
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libcrypto$secondaryArchSuffix
devel:libfontconfig$secondaryArchSuffix
devel:libfreetype$secondaryArchSuffix
devel:libgl$secondaryArchSuffix
devel:libglu$secondaryArchSuffix
devel:libicuuc$secondaryArchSuffix
devel:libjpeg$secondaryArchSuffix
devel:libpng$secondaryArchSuffix
devel:libsqlite3$secondaryArchSuffix
devel:libssl$secondaryArchSuffix
devel:libtiff$secondaryArchSuffix
devel:libxml2$secondaryArchSuffix
devel:libz$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:pkg_config$secondaryArchSuffix
cmd:cmp
cmd:which
cmd:make
cmd:g++$secondaryArchSuffix
cmd:ld$secondaryArchSuffix
cmd:perl
cmd:python
cmd:ruby
cmd:find
cmd:flex
cmd:bison
cmd:gperf
cmd:awk
"
BUILD()
{
CFLAGS=-D_BSD_SOURCE CXXFLAGS=-D_BSD_SOURCE ./configure \
-prefix $prefix \
-bindir $binDir \
-libdir $libDir \
-libexecdir $libExecDir \
-headerdir $includeDir \
-docdir $docDir/Qt5 \
-datadir $dataDir/Qt5 \
-archdatadir $dataDir/Qt5 \
-hostdatadir $dataDir/Qt5 \
-translationdir $dataDir/Qt5/translations \
-sysconfdir $settingsDir \
-testsdir $dataDir/Qt5/tests \
-examplesdir $dataDir/Qt5/examples \
-importdir $dataDir/Qt5/imports \
-qmldir $dataDir/Qt5/qml \
-plugindir $addOnsDir/Qt5 \
-platform haiku-g++ -no-pch \
-nomake examples -release -opensource \
-confirm-license -no-iconv -no-audio-backend \
-no-rpath -system-sqlite
make $jobArgs
# build qtwebkit
cd $sourceDir2
PATH=$PATH:$sourceDir/qtbase/bin
qmake .
make $jobArgs
}
INSTALL()
{
make install
#export LIBRARY_PATH=$LIBRARY_PATH:$libDir
#make $jobArgs docs
#make install_docs
cd $sourceDir2
make install
rm $libDir/*.la
fixPkgconfig
prepareInstalledDevelLibs \
libQt5Concurrent libQt5Core libQt5DBus libQt5Gui \
libQt5Network libQt5PrintSupport libQt5OpenGL \
libQt5Sql libQt5Test libQt5Widgets libQt5Xml \
libQt5XmlPatterns libQt5WebSockets libQt5WebKitWidgets \
libQt5WebKit libQt5WebChannel libQt5Svg \
libQt5SerialPort libQt5Sensors libQt5ScriptTools libQt5Script \
libQt5QuickWidgets libQt5QuickTest libQt5QuickParticles \
libQt5Quick libQt5Qml libQt5Positioning libQt5Nfc \
libQt5MultimediaWidgets libQt5MultimediaQuick_p libQt5Multimedia \
libQt5Location libQt5Help libQt5Designer libQt5DesignerComponents \
libQt5CLucene libQt5Bluetooth \
libQt53DQuick libQt53DLogic libQt53DInput libQt53DCore \
libQt53DQuickRender libQt53DRender libQt5PacketProtocol \
libQt5QmlDebug libqtpng libQt5Scxml libQt5Purchasing
cd $libDir
for i in lib*.so.5.*;do
ln -fs $i $(echo $i | cut -f1,2 -d.)
done
rm -rf $libDir/fonts/ $prefix/tests
rm -rf $dataDir/Qt5/demos $dataDir/Qt5/examples
mv -f $libDir/libQt5UiTools* $developLibDir/
mv -f $libDir/libQt5QmlDevTools* $developLibDir/
mv -f $libDir/libQt5Bootstrap* $developLibDir/
mv -f $libDir/libQt5PlatformSupport* $developLibDir/
mv -f $libDir/libQt5OpenGLExtensions* $developLibDir/
devCommands="assistant canbusutil designer fixqt4headers.pl linguist
lconvert lrelease lupdate pixeltool qcollectiongenerator qdbusviewer
qdbus qgltf qhelpconverter qhelpgenerator qml qmleasing qmlimportscanner
qmllint qmlmin qmlplugindump qmlprofiler qmlscene qmltestrunner
qtdiag qtpaths qtplugininfo qmlviewer xmlpatterns xmlpatternsvalidator
moc qdbuscpp2xml qdbusxml2cpp qdoc qlalr qmake qscxmlc rcc syncqt.pl
uic"
for i in $devCommands; do
devPackageCommands="$devPackageCommands $binDir/$i"
done
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_DEVELOPMENT"
iconFiles="assistant designer linguist qdbusviewer qhelpconverter qmlviewer"
for j in $iconFiles; 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
addResourcesToBinaries $sourceDir/$j.rdef "$binDir/$j"
mimeset -f "$binDir/$j"
done
DIR_QT_DEVELOP_DESKBAR="${dataDir}/deskbar/menu/Applications/Qt"
mkdir -p ${DIR_QT_DEVELOP_DESKBAR}
addAppDeskbarSymlink $binDir/assistant "Qt/Assistant"
addAppDeskbarSymlink $binDir/designer "Qt/Designer"
addAppDeskbarSymlink $binDir/linguist "Qt/Linguist"
addAppDeskbarSymlink $binDir/qdbusviewer "Qt/Qt D-Bus Viewer"
addAppDeskbarSymlink $binDir/qmlviewer "Qt/QML Viewer"
addAppDeskbarSymlink $binDir/qhelpconverter "Qt/Qt Help Converter"
packageEntries docs \
$docDir/Qt5
packageEntries devel \
$developDir \
$devPackageCommands \
${DIR_QT_DEVELOP_DESKBAR} \
$libDir/cmake \
$dataDir/Qt5/mkspecs
}