From 1d1213da54d12be224d1166a58fb7f222875da4c Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Fri, 14 Aug 2015 17:10:25 -0400 Subject: [PATCH] Create recipe for qt5base. --- dev-qt/qt5base/patches/qt5base-5.5.patchset | 394 ++++++++++++++++++++ dev-qt/qt5base/qt5base-5.5.0.recipe | 229 ++++++++++++ 2 files changed, 623 insertions(+) create mode 100644 dev-qt/qt5base/patches/qt5base-5.5.patchset create mode 100644 dev-qt/qt5base/qt5base-5.5.0.recipe diff --git a/dev-qt/qt5base/patches/qt5base-5.5.patchset b/dev-qt/qt5base/patches/qt5base-5.5.patchset new file mode 100644 index 000000000..2d8810bda --- /dev/null +++ b/dev-qt/qt5base/patches/qt5base-5.5.patchset @@ -0,0 +1,394 @@ +From 8f27586b1e96ad377ac84bc6853fd522cdd09af2 Mon Sep 17 00:00:00 2001 +From: Tobias Koenig +Date: Fri, 13 Feb 2015 14:04:34 +0000 +Subject: [PATCH] Haiku: Fix tst_qfileselector.cpp unit test + +Add the missing test data for haiku platform selector +and adapt unit test to use them. + +Change-Id: I578e7f7e04f2a4c68f23d5356ea201e9562dbe6c +Reviewed-by: Augustin Cavalier +Reviewed-by: Thiago Macieira +--- + tests/auto/corelib/io/qfileselector/platforms/+haiku/test | 0 + tests/auto/corelib/io/qfileselector/platforms/+haiku/test2 | 0 + tests/auto/corelib/io/qfileselector/platforms/+unix/+haiku/test | 0 + tests/auto/corelib/io/qfileselector/qfileselector.qrc | 3 +++ + tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp | 2 +- + 5 files changed, 4 insertions(+), 1 deletion(-) + create mode 100644 tests/auto/corelib/io/qfileselector/platforms/+haiku/test + create mode 100644 tests/auto/corelib/io/qfileselector/platforms/+haiku/test2 + create mode 100644 tests/auto/corelib/io/qfileselector/platforms/+unix/+haiku/test + +diff --git a/tests/auto/corelib/io/qfileselector/platforms/+haiku/test b/tests/auto/corelib/io/qfileselector/platforms/+haiku/test +new file mode 100644 +index 0000000..e69de29 +diff --git a/tests/auto/corelib/io/qfileselector/platforms/+haiku/test2 b/tests/auto/corelib/io/qfileselector/platforms/+haiku/test2 +new file mode 100644 +index 0000000..e69de29 +diff --git a/tests/auto/corelib/io/qfileselector/platforms/+unix/+haiku/test b/tests/auto/corelib/io/qfileselector/platforms/+unix/+haiku/test +new file mode 100644 +index 0000000..e69de29 +diff --git a/tests/auto/corelib/io/qfileselector/qfileselector.qrc b/tests/auto/corelib/io/qfileselector/qfileselector.qrc +index 661647f..6e26997 100644 +--- a/tests/auto/corelib/io/qfileselector/qfileselector.qrc ++++ b/tests/auto/corelib/io/qfileselector/qfileselector.qrc +@@ -19,6 +19,7 @@ + platforms/+unix/+darwin/+mac/+osx/test + platforms/+unix/+darwin/+mac/test + platforms/+unix/+darwin/test ++ platforms/+unix/+haiku/test + platforms/+unix/+linux/test + platforms/+unix/test + platforms/+windows/+wince/test +@@ -30,6 +31,7 @@ + platforms/+osx/test + platforms/+darwin/test + platforms/+mac/test ++ platforms/+haiku/test + platforms/+linux/test + platforms/+wince/test + +@@ -39,6 +41,7 @@ + platforms/+blackberry/test2 + platforms/+ios/test2 + platforms/+osx/test2 ++ platforms/+haiku/test2 + platforms/+linux/test2 + platforms/+wince/test2 + platforms/+winnt/test2 +diff --git a/tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp b/tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp +index b3767b4..87381f4 100644 +--- a/tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp ++++ b/tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp +@@ -89,7 +89,7 @@ void tst_QFileSelector::basicTest_data() + QString expectedPlatform2File(""); //Only the last selector + QString expectedPlatform3File; // Only the first selector (the family) + #if defined(Q_OS_UNIX) && !defined(Q_OS_ANDROID) && !defined(Q_OS_BLACKBERRY) && \ +- !defined(Q_OS_DARWIN) && !defined(Q_OS_LINUX) ++ !defined(Q_OS_DARWIN) && !defined(Q_OS_LINUX) && !defined(Q_OS_HAIKU) + /* We are only aware of specific unixes, and do not have test files for any of the others. + However those unixes can get a selector added from the result of a uname call, so this will + lead to a case where we don't have that file so we can't expect the concatenation of platform +--- +git 2.2.2 + + +From 7dd5726380f5d5422edd4b71c6beba6d02b4e3df Mon Sep 17 00:00:00 2001 +From: Tobias Koenig +Date: Fri, 20 Feb 2015 15:47:02 +0000 +Subject: [PATCH] Haiku: Fix clipboard implementation + +Fix the behavior of the clipboard implementation +to pass the unit test. + +Change-Id: Ia8d5428eebf17a626565e8f4a4d895a67f35b20b +Reviewed-by: Augustin Cavalier +Reviewed-by: Maurice Kalinowski +--- + src/plugins/platforms/haiku/qhaikuclipboard.cpp | 45 ++++++++++++++++++++----- + src/plugins/platforms/haiku/qhaikuclipboard.h | 4 +++ + 2 files changed, 40 insertions(+), 9 deletions(-) + +diff --git a/src/plugins/platforms/haiku/qhaikuclipboard.cpp b/src/plugins/platforms/haiku/qhaikuclipboard.cpp +index f3aa9dc..a2d7e96 100644 +--- a/src/plugins/platforms/haiku/qhaikuclipboard.cpp ++++ b/src/plugins/platforms/haiku/qhaikuclipboard.cpp +@@ -41,6 +41,8 @@ + #include + + QHaikuClipboard::QHaikuClipboard() ++ : m_systemMimeData(Q_NULLPTR) ++ , m_userMimeData(Q_NULLPTR) + { + if (be_clipboard) + be_clipboard->StartWatching(BMessenger(this)); +@@ -50,17 +52,26 @@ QHaikuClipboard::~QHaikuClipboard() + { + if (be_clipboard) + be_clipboard->StopWatching(BMessenger(this)); ++ ++ delete m_userMimeData; ++ delete m_systemMimeData; + } + + QMimeData *QHaikuClipboard::mimeData(QClipboard::Mode mode) + { +- QMimeData *mimeData = new QMimeData(); +- + if (mode != QClipboard::Clipboard) +- return mimeData; ++ return 0; ++ ++ if (m_userMimeData) ++ return m_userMimeData; + + if (!be_clipboard->Lock()) +- return mimeData; ++ return 0; ++ ++ if (!m_systemMimeData) ++ m_systemMimeData = new QMimeData(); ++ else ++ m_systemMimeData->clear(); + + const BMessage *clipboard = be_clipboard->Data(); + if (clipboard) { +@@ -76,11 +87,11 @@ QMimeData *QHaikuClipboard::mimeData(QClipboard::Mode mode) + if (dataLen && (status == B_OK)) { + const QString format = QString::fromLatin1(name); + if (format == QStringLiteral("text/plain")) { +- mimeData->setText(QString::fromLocal8Bit(reinterpret_cast(data), dataLen)); ++ m_systemMimeData->setText(QString::fromLocal8Bit(reinterpret_cast(data), dataLen)); + } else if (format == QStringLiteral("text/html")) { +- mimeData->setHtml(QString::fromLocal8Bit(reinterpret_cast(data), dataLen)); ++ m_systemMimeData->setHtml(QString::fromLocal8Bit(reinterpret_cast(data), dataLen)); + } else { +- mimeData->setData(format, QByteArray(reinterpret_cast(data), dataLen)); ++ m_systemMimeData->setData(format, QByteArray(reinterpret_cast(data), dataLen)); + } + } + } +@@ -88,7 +99,7 @@ QMimeData *QHaikuClipboard::mimeData(QClipboard::Mode mode) + + be_clipboard->Unlock(); + +- return mimeData; ++ return m_systemMimeData; + } + + void QHaikuClipboard::setMimeData(QMimeData *mimeData, QClipboard::Mode mode) +@@ -96,6 +107,14 @@ void QHaikuClipboard::setMimeData(QMimeData *mimeData, QClipboard::Mode mode) + if (mode != QClipboard::Clipboard) + return; + ++ if (mimeData) { ++ if (m_systemMimeData == mimeData) ++ return; ++ ++ if (m_userMimeData == mimeData) ++ return; ++ } ++ + if (!be_clipboard->Lock()) + return; + +@@ -115,6 +134,10 @@ void QHaikuClipboard::setMimeData(QMimeData *mimeData, QClipboard::Mode mode) + qWarning("Unable to store mime data on clipboard"); + + be_clipboard->Unlock(); ++ ++ m_userMimeData = mimeData; ++ ++ emitChanged(QClipboard::Clipboard); + } + + bool QHaikuClipboard::supportsMode(QClipboard::Mode mode) const +@@ -131,8 +154,12 @@ bool QHaikuClipboard::ownsMode(QClipboard::Mode mode) const + + void QHaikuClipboard::MessageReceived(BMessage* message) + { +- if (message->what == B_CLIPBOARD_CHANGED) ++ if (message->what == B_CLIPBOARD_CHANGED) { ++ delete m_userMimeData; ++ m_userMimeData = Q_NULLPTR; ++ + emitChanged(QClipboard::Clipboard); ++ } + + BHandler::MessageReceived(message); + } +diff --git a/src/plugins/platforms/haiku/qhaikuclipboard.h b/src/plugins/platforms/haiku/qhaikuclipboard.h +index 0dc2bfd..3c1f92c 100644 +--- a/src/plugins/platforms/haiku/qhaikuclipboard.h ++++ b/src/plugins/platforms/haiku/qhaikuclipboard.h +@@ -55,6 +55,10 @@ class QHaikuClipboard : public QPlatformClipboard, public BHandler + + // override from BHandler to catch change notifications from Haiku clipboard + void MessageReceived(BMessage* message) Q_DECL_OVERRIDE; ++ ++private: ++ QMimeData *m_systemMimeData; ++ QMimeData *m_userMimeData; + }; + + QT_END_NAMESPACE +--- +git 2.2.2 + + +From 8a51ca091873d099a2816b3d19f21fef618d9ab8 Mon Sep 17 00:00:00 2001 +From: Tobias Koenig +Date: Sat, 2 May 2015 12:29:00 +0000 +Subject: [PATCH] Haiku: Fix compilation after QPA API change + +Remove the calls to QWindowSystemInterface::setSynchronousWindowsSystemEvents +in the Haiku QPA plugin, because the method was renamed in latest QPA API and +we do not really have to call them anyway (was a copy&paste leftover from QNX QPA). + +Change-Id: I67db43e89c093e5679f11d967d609846008cad0d +Reviewed-by: Augustin Cavalier +Reviewed-by: Maurice Kalinowski +--- + src/plugins/platforms/haiku/qhaikuwindow.cpp | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/src/plugins/platforms/haiku/qhaikuwindow.cpp b/src/plugins/platforms/haiku/qhaikuwindow.cpp +index 5768e1c..140b79a 100644 +--- a/src/plugins/platforms/haiku/qhaikuwindow.cpp ++++ b/src/plugins/platforms/haiku/qhaikuwindow.cpp +@@ -306,10 +306,8 @@ void QHaikuWindow::haikuWindowMoved(const QPoint &pos) + const QRect newGeometry(pos, geometry().size()); + + QPlatformWindow::setGeometry(newGeometry); +- QWindowSystemInterface::setSynchronousWindowsSystemEvents(true); + QWindowSystemInterface::handleGeometryChange(window(), newGeometry); + QWindowSystemInterface::handleExposeEvent(window(), newGeometry); +- QWindowSystemInterface::setSynchronousWindowsSystemEvents(false); + } + + void QHaikuWindow::haikuWindowResized(const QSize &size, bool zoomInProgress) +@@ -317,10 +315,8 @@ void QHaikuWindow::haikuWindowResized(const QSize &size, bool zoomInProgress) + const QRect newGeometry(geometry().topLeft(), size); + + QPlatformWindow::setGeometry(newGeometry); +- QWindowSystemInterface::setSynchronousWindowsSystemEvents(true); + QWindowSystemInterface::handleGeometryChange(window(), newGeometry); + QWindowSystemInterface::handleExposeEvent(window(), newGeometry); +- QWindowSystemInterface::setSynchronousWindowsSystemEvents(false); + + if ((m_windowState == Qt::WindowMaximized) && !zoomInProgress) { + // the user has resized the window while maximized -> reset maximized flag +--- +git 2.2.2 + + +From 85d9403a129100c00ef096baa01c3c024d0f705a Mon Sep 17 00:00:00 2001 +From: Tobias Koenig +Date: Fri, 27 Feb 2015 18:24:43 +0000 +Subject: [PATCH] Haiku: Enable FreeType2/FontConfig support + +Pass the correct include path to the config test, otherwise compilation +will fail. + +Change-Id: I6723cad41ec289b051dcc9c47b3b1d67af7c5879 +Reviewed-by: Oswald Buddenhagen +--- + config.tests/unix/freetype/freetype.pri | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/config.tests/unix/freetype/freetype.pri b/config.tests/unix/freetype/freetype.pri +index be2fc33..05299ed 100644 +--- a/config.tests/unix/freetype/freetype.pri ++++ b/config.tests/unix/freetype/freetype.pri +@@ -2,6 +2,7 @@ + TRY_INCLUDEPATHS = /include /usr/include $$QMAKE_INCDIR $$QMAKE_INCDIR_X11 $$INCLUDEPATH + # LSB doesn't allow using headers from /include or /usr/include + linux-lsb-g++:TRY_INCLUDEPATHS = $$QMAKE_INCDIR $$QMAKE_INCDIR_X11 $$INCLUDEPATH ++ haiku:TRY_INCLUDEPATHS += /system/develop/headers + for(p, TRY_INCLUDEPATHS) { + p = $$join(p, "", "", "/freetype2") + exists($$p):INCLUDEPATH *= $$p +--- +git 2.2.2 + + +From 5f21aa22fbc224cdd4102ae6a7797574a463af3b Mon Sep 17 00:00:00 2001 +From: Tobias Koenig +Date: Sat, 2 May 2015 12:50:25 +0000 +Subject: [PATCH] Haiku: Fix reported geometry of platform window + +Report the proper window geometry and adapt the +geometry parameters of expose events to be relative +to the window coordinate system. + +Change-Id: Ifb32b2663fdf41df0c9783e76e0ebc5e5cf978a3 +Reviewed-by: Maurice Kalinowski +--- + src/plugins/platforms/haiku/qhaikuwindow.cpp | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +diff --git a/src/plugins/platforms/haiku/qhaikuwindow.cpp b/src/plugins/platforms/haiku/qhaikuwindow.cpp +index 140b79a..9622d12 100644 +--- a/src/plugins/platforms/haiku/qhaikuwindow.cpp ++++ b/src/plugins/platforms/haiku/qhaikuwindow.cpp +@@ -130,6 +130,7 @@ QHaikuWindow::QHaikuWindow(QWindow *window) + if (!m_window) + qFatal("QHaikuWindow: failed to create window"); + ++ setGeometry(rect); + setWindowFlags(window->flags()); + } + +@@ -164,13 +165,13 @@ void QHaikuWindow::setVisible(bool visible) + { + if (visible) { + m_window->Show(); ++ ++ window()->requestActivate(); ++ ++ QWindowSystemInterface::handleExposeEvent(window(), QRect(QPoint(0, 0), window()->geometry().size())); + } else { + m_window->Hide(); + } +- +- window()->requestActivate(); +- +- QWindowSystemInterface::handleExposeEvent(window(), window()->geometry()); + } + + bool QHaikuWindow::isExposed() const +@@ -307,7 +308,7 @@ void QHaikuWindow::haikuWindowMoved(const QPoint &pos) + + QPlatformWindow::setGeometry(newGeometry); + QWindowSystemInterface::handleGeometryChange(window(), newGeometry); +- QWindowSystemInterface::handleExposeEvent(window(), newGeometry); ++ QWindowSystemInterface::handleExposeEvent(window(), QRect(QPoint(0, 0), newGeometry.size())); + } + + void QHaikuWindow::haikuWindowResized(const QSize &size, bool zoomInProgress) +@@ -316,7 +317,7 @@ void QHaikuWindow::haikuWindowResized(const QSize &size, bool zoomInProgress) + + QPlatformWindow::setGeometry(newGeometry); + QWindowSystemInterface::handleGeometryChange(window(), newGeometry); +- QWindowSystemInterface::handleExposeEvent(window(), newGeometry); ++ QWindowSystemInterface::handleExposeEvent(window(), QRect(QPoint(0, 0), newGeometry.size())); + + if ((m_windowState == Qt::WindowMaximized) && !zoomInProgress) { + // the user has resized the window while maximized -> reset maximized flag +--- +git 2.2.2 + + +From f80b103910cc936e16c247fefb2daa781e09d17e Mon Sep 17 00:00:00 2001 +From: Tobias Koenig +Date: Thu, 19 Feb 2015 14:10:53 +0000 +Subject: [PATCH] Haiku: Fix QWaitCondition on Haiku + +The latest version of Haiku provides the implementation +for pthread_condattr_setclock, so we can enable the code +in QWaitCondition again to make it use the monotonic clock +correctly. + +Change-Id: Ibb9ad33d873c3b34f2c516087c4e0aeac04cc83f +Reviewed-by: Augustin Cavalier +Reviewed-by: Thiago Macieira +--- + src/corelib/thread/qwaitcondition_unix.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/corelib/thread/qwaitcondition_unix.cpp b/src/corelib/thread/qwaitcondition_unix.cpp +index fd6af7d..89bf523 100644 +--- a/src/corelib/thread/qwaitcondition_unix.cpp ++++ b/src/corelib/thread/qwaitcondition_unix.cpp +@@ -77,7 +77,7 @@ void qt_initialize_pthread_cond(pthread_cond_t *cond, const char *where) + #if defined(Q_OS_ANDROID) + if (local_condattr_setclock && QElapsedTimer::clockType() == QElapsedTimer::MonotonicClock) + local_condattr_setclock(&condattr, CLOCK_MONOTONIC); +-#elif !defined(Q_OS_MAC) && !defined(Q_OS_HAIKU) ++#elif !defined(Q_OS_MAC) + if (QElapsedTimer::clockType() == QElapsedTimer::MonotonicClock) + pthread_condattr_setclock(&condattr, CLOCK_MONOTONIC); + #endif +-- +git 2.2.2 diff --git a/dev-qt/qt5base/qt5base-5.5.0.recipe b/dev-qt/qt5base/qt5base-5.5.0.recipe new file mode 100644 index 000000000..b2b83344a --- /dev/null +++ b/dev-qt/qt5base/qt5base-5.5.0.recipe @@ -0,0 +1,229 @@ +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" + +SOURCE_URI="https://download.qt.io/official_releases/qt/5.5/$portVersion/submodules/qtbase-opensource-src-$portVersion.tar.gz" +CHECKSUM_SHA256="7e82b1318f88e56a2a9376e069aa608d4fd96b48cb0e1b880ae658b0a1af0561" +SOURCE_DIR="qtbase-opensource-src-$portVersion" +PATCHES="qt5base-5.5.patchset" + +SOURCE_URI_2="https://download.qt.io/official_releases/qt/5.5/$portVersion/submodules/qttools-opensource-src-$portVersion.tar.gz" +CHECKSUM_SHA256_2="d9e06bd19ecc86afba5e95d45a906d1bc1ad579aa70001e36143c1aaf695bdd6" +SOURCE_DIR_2="qttools-opensource-src-$portVersion" + +SOURCE_URI_3="https://download.qt.io/official_releases/qt/5.5/$portVersion/submodules/qttranslations-opensource-src-$portVersion.tar.gz" +CHECKSUM_SHA256_3="c4bd6db6e426965c6f8824c54e81f68bbd61e2bae1bcadc328c6e81c45902a0d" +SOURCE_DIR_3="qttranslations-opensource-src-$portVersion" + +REVISION="1" +ARCHITECTURES="!x86_gcc2 ?x86 ?x86_64" +SECONDARY_ARCHITECTURES="x86" + +PROVIDES=" + qt5base$secondaryArchSuffix = $portVersion compat >= 5.5 + lib:libQt5Bootstrap$secondaryArchSuffix = $portVersion compat >= 5.5 + lib:libQt5CLucene$secondaryArchSuffix = $portVersion compat >= 5.5 + lib:libQt5Concurrent$secondaryArchSuffix = $portVersion compat >= 5.5 + lib:libQt5Core$secondaryArchSuffix = $portVersion compat >= 5.5 + lib:libQt5DBus$secondaryArchSuffix = $portVersion compat >= 5.5 + lib:libQt5Designer$secondaryArchSuffix = $portVersion compat >= 5.5 + lib:libQt5DesignerComponents$secondaryArchSuffix = $portVersion compat >= 5.5 + lib:libQt5Gui$secondaryArchSuffix = $portVersion compat >= 5.5 + lib:libQt5Help$secondaryArchSuffix = $portVersion compat >= 5.5 + lib:libQt5Network$secondaryArchSuffix = $portVersion compat >= 5.5 + lib:libQt5PlatformSupport$secondaryArchSuffix = $portVersion compat >= 5.5 + lib:libQt5PrintSupport$secondaryArchSuffix = $portVersion compat >= 5.5 + lib:libQt5Sql$secondaryArchSuffix = $portVersion compat >= 5.5 + lib:libQt5Test$secondaryArchSuffix = $portVersion compat >= 5.5 + lib:libQt5UiTools$secondaryArchSuffix = $portVersion compat >= 5.5 + lib:libQt5Widgets$secondaryArchSuffix = $portVersion compat >= 5.5 + lib:libQt5Xml$secondaryArchSuffix = $portVersion compat >= 5.5 + + cmd:qtdiag$secondaryArchSuffix = $portVersion compat >= 5.5 + cmd:qtpaths$secondaryArchSuffix = $portVersion compat >= 5.5 + cmd:qtplugininfo$secondaryArchSuffix = $portVersion compat >= 5.5 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libz$secondaryArchSuffix + lib:libicuuc$secondaryArchSuffix + lib:libjpeg$secondaryArchSuffix + lib:libpng$secondaryArchSuffix + lib:libtiff$secondaryArchSuffix + " + +PROVIDES_devel=" + qt5base${secondaryArchSuffix}_devel = $portVersion compat >= 5.5 + devel:libQt5Bootstrap$secondaryArchSuffix = $portVersion compat >= 5.5 + devel:libQt5CLucene$secondaryArchSuffix = $portVersion compat >= 5.5 + devel:libQt5Concurrent$secondaryArchSuffix = $portVersion compat >= 5.5 + devel:libQt5Core$secondaryArchSuffix = $portVersion compat >= 5.5 + devel:libQt5DBus$secondaryArchSuffix = $portVersion compat >= 5.5 + devel:libQt5Designer$secondaryArchSuffix = $portVersion compat >= 5.5 + devel:libQt5DesignerComponents$secondaryArchSuffix = $portVersion compat >= 5.5 + devel:libQt5Gui$secondaryArchSuffix = $portVersion compat >= 5.5 + devel:libQt5Help$secondaryArchSuffix = $portVersion compat >= 5.5 + devel:libQt5Network$secondaryArchSuffix = $portVersion compat >= 5.5 + devel:libQt5PlatformSupport$secondaryArchSuffix = $portVersion compat >= 5.5 + devel:libQt5PrintSupport$secondaryArchSuffix = $portVersion compat >= 5.5 + devel:libQt5Sql$secondaryArchSuffix = $portVersion compat >= 5.5 + devel:libQt5Test$secondaryArchSuffix = $portVersion compat >= 5.5 + devel:libQt5UiTools$secondaryArchSuffix = $portVersion compat >= 5.5 + devel:libQt5Widgets$secondaryArchSuffix = $portVersion compat >= 5.5 + devel:libQt5Xml$secondaryArchSuffix = $portVersion compat >= 5.5 + + app:assistant$secondaryArchSuffix = $portVersion compat >= 5.5 + app:designer$secondaryArchSuffix = $portVersion compat >= 5.5 + app:linguist$secondaryArchSuffix = $portVersion compat >= 5.5 + app:pixeltool$secondaryArchSuffix = $portVersion compat >= 5.5 + app:qdbusviewer$secondaryArchSuffix = $portVersion compat >= 5.5 + + cmd:lconvert$secondaryArchSuffix = $portVersion compat >= 5.5 + cmd:lrelease$secondaryArchSuffix = $portVersion compat >= 5.5 + cmd:lupdate$secondaryArchSuffix = $portVersion compat >= 5.5 + cmd:moc$secondaryArchSuffix = $portVersion compat >= 5.5 + cmd:qcollectiongenerator$secondaryArchSuffix = $portVersion compat >= 5.5 + cmd:qdbus$secondaryArchSuffix = $portVersion compat >= 5.5 + cmd:qdbuscpp2xml$secondaryArchSuffix = $portVersion compat >= 5.5 + cmd:qdbusxml2cpp$secondaryArchSuffix = $portVersion compat >= 5.5 + cmd:qdoc$secondaryArchSuffix = $portVersion compat >= 5.5 + cmd:qhelpconverter$secondaryArchSuffix = $portVersion compat >= 5.5 + cmd:qhelpgenerator$secondaryArchSuffix = $portVersion compat >= 5.5 + cmd:qlalr$secondaryArchSuffix = $portVersion compat >= 5.5 + cmd:qmake$secondaryArchSuffix = $portVersion compat >= 5.5 + cmd:rcc$secondaryArchSuffix = $portVersion compat >= 5.5 + cmd:syncqt.pl$secondaryArchSuffix = $portVersion compat >= 5.5 + cmd:uic$secondaryArchSuffix = $portVersion compat >= 5.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=" + libqt4$secondaryArchSuffix == $portVersion base + haiku$secondaryArchSuffix + lib:libz$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + " + +BUILD_REQUIRES=" + icu${secondaryArchSuffix}_devel + devel:libz$secondaryArchSuffix + devel:libcrypto$secondaryArchSuffix + devel:libssl$secondaryArchSuffix + devel:libjpeg$secondaryArchSuffix + devel:libpng$secondaryArchSuffix + devel:libtiff$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + haiku${secondaryArchSuffix}_devel + cmd:pkg_config$secondaryArchSuffix + cmd:cmp + cmd:which + cmd:make + cmd:g++$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:perl + cmd:find + cmd:awk + " + +PATCH() +{ + cd $sourceDir2 + sed -i s/__linux__/__HAIKU__/g \ + src/assistant/3rdparty/clucene/src/CLucene/config/compiler.h + sed -i s/-lm/-lroot/g src/designer/src/designer/designer.pro +} + +BUILD() +{ + # not an autotools configure + 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 \ + -translationdir $dataDir/Qt5/translations \ + -sysconfdir $settingsDir \ + -testsdir $dataDir/Qt5/tests \ + -examplesdir $dataDir/Qt5/examples \ + -importdir $dataDir/Qt5/imports \ + -plugindir $addOnsDir/Qt5 \ + -platform haiku-g++ -no-pch -no-opengl \ + -nomake examples -release -opensource \ + -confirm-license -no-iconv -no-audio-backend + + make $jobArgs + make install + + export LIBRARY_PATH=$LIBRARY_PATH:$libDir + + cd $sourceDir2 + $binDir/qmake . + make $jobArgs + #pushd haiku + #./do-res.sh + #popd + make install + + cd $sourceDir3 + $binDir/qmake . + make $jobArgs + make install +} + +INSTALL() +{ + fixPkgconfig strict + + prepareInstalledDevelLibs \ + libQt5Bootstrap libQt5CLucene libQt5Concurrent libQt5Core \ + libQt5DBus libQt5Designer libQt5DesignerComponents libQt5Gui \ + libQt5Help libQt5Network libQt5PlatformSupport libQt5PrintSupport \ + libQt5Sql libQt5Test libQt5UiTools libQt5Widgets libQt5Xml + + # UGLY HACK -- REMOVE ME WHEN QMAKE/CMAKE/ETC IS FIXED + cd $libDir + for i in lib*.so.5.*;do + ln -fs $i $(echo $i | cut -f1,2 -d.) + done + + devCommands="assistant designer linguist pixeltool qdbusviewer + lconvert lrelease lupdate moc qcollectiongenerator qdbus qdbuscpp2xml + qdbusxml2cpp qdoc qhelpconverter qhelpgenerator qlalr qmake rcc + syncqt.pl uic" + for i in $devCommands; do + devPackageCommands="$devPackageCommands $binDir/$i" + done + + mkdir -p $dataDir/cmake/Modules/ + cp -r $libDir/cmake/. $dataDir/cmake/Modules/. + rm -rf $libDir/cmake/ + + 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/Lingist" + addAppDeskbarSymlink $binDir/pixeltool "Qt/PixelTool" + + packageEntries devel \ + $developDir \ + $devPackageCommands \ + ${DIR_QT_DEVELOP_DESKBAR} \ + $prefix/mkspecs + + rm -rf $libDir/fonts/ $prefix/tests + rm -rf $dataDir/Qt5/demos $dataDir/Qt5/examples +}