From c08a720e1cd51c0015ec02143cd65b17e5e69b64 Mon Sep 17 00:00:00 2001 From: Martchus Date: Wed, 25 Jan 2017 23:42:30 +0100 Subject: [PATCH 29/32] Hardcode linker flags for platform plugins Otherwise incorrect order of libs leads to errors when building libqminimal.dll, libqoffscreen.dll, libqwindows.dll and libqdirect2d.dll. Unfortunately this workaround leads to hardcoding include flags as well. Change-Id: I1863d184cff744d2c02e15875e1d108d32ea7861 --- src/plugins/platforms/direct2d/direct2d.pro | 39 +++++++++++++++--- src/plugins/platforms/minimal/minimal.pro | 17 +++++++- src/plugins/platforms/offscreen/offscreen.pro | 16 +++++++- src/plugins/platforms/windows/windows.pro | 40 ++++++++++++++----- 4 files changed, 93 insertions(+), 19 deletions(-) diff --git a/src/plugins/platforms/direct2d/direct2d.pro b/src/plugins/platforms/direct2d/direct2d.pro index 6e73bd14f9d..8046e73d61d 100644 --- a/src/plugins/platforms/direct2d/direct2d.pro +++ b/src/plugins/platforms/direct2d/direct2d.pro @@ -1,12 +1,41 @@ TARGET = qdirect2d QT += \ - core-private gui-private \ - eventdispatcher_support-private \ - fontdatabase_support-private theme_support-private + core-private gui-private -qtConfig(accessibility): QT += accessibility_support-private -qtConfig(vulkan): QT += vulkan_support-private +# Fix linker error when building libqdirect2d.dll by specifying linker flags for +# required modules manually (otherwise order is messed) +LIBS += \ + $$QT_BUILD_TREE/lib/$${QMAKE_PREFIX_STATICLIB}Qt5EventDispatcherSupport.$${QMAKE_EXTENSION_STATICLIB} \ + $$QT_BUILD_TREE/lib/$${QMAKE_PREFIX_STATICLIB}Qt5FontDatabaseSupport.$${QMAKE_EXTENSION_STATICLIB} \ + $$QT_BUILD_TREE/lib/$${QMAKE_PREFIX_STATICLIB}Qt5ThemeSupport.$${QMAKE_EXTENSION_STATICLIB} \ + -lfreetype -lole32 -lgdi32 -luuid +# However, this workaround leads to the necessity of specifying include dirs manually +INCLUDEPATH += \ + $$QT_BUILD_TREE/include/QtEventDispatcherSupport/$${QT_VERSION}/QtEventDispatcherSupport \ + $$QT_BUILD_TREE/include/QtEventDispatcherSupport/$${QT_VERSION} \ + $$QT_BUILD_TREE/include/QtFontDatabaseSupport/$${QT_VERSION}/QtFontDatabaseSupport \ + $$QT_BUILD_TREE/include/QtFontDatabaseSupport/$${QT_VERSION} \ + $$QT_BUILD_TREE/include/QtThemeSupport/$${QT_VERSION}/QtThemeSupport \ + $$QT_BUILD_TREE/include/QtThemeSupport/$${QT_VERSION} +# Same for private support libs for accessibility and vulkan, if those are enabled +qtConfig(accessibility) { + LIBS += $$QT_BUILD_TREE/lib/$${QMAKE_PREFIX_STATICLIB}Qt5AccessibilitySupport.$${QMAKE_EXTENSION_STATICLIB} + INCLUDEPATH += \ + $$QT_BUILD_TREE/include/QtAccessibilitySupport/$${QT_VERSION}/Qt5AccessibilitySupport \ + $$QT_BUILD_TREE/include/QtAccessibilitySupport/$${QT_VERSION} +} +qtConfig(vulkan) { + LIBS += $$QT_BUILD_TREE/lib/$${QMAKE_PREFIX_STATICLIB}Qt5VulkanSupport.$${QMAKE_EXTENSION_STATICLIB} + INCLUDEPATH += \ + $$QT_BUILD_TREE/include/QtVulkanSupport/$${QT_VERSION}/Qt5VulkanSupport \ + $$QT_BUILD_TREE/include/QtVulkanSupport/$${QT_VERSION} +} +# Also add Qt5WindowsUIAutomationSupport - it seems to link against it +LIBS += $$QT_BUILD_TREE/lib/$${QMAKE_PREFIX_STATICLIB}Qt5WindowsUIAutomationSupport.$${QMAKE_EXTENSION_STATICLIB} +INCLUDEPATH += \ + $$QT_BUILD_TREE/include/Qt5WindowsUIAutomationSupport/$${QT_VERSION}/Qt5WindowsUIAutomationSupport \ + $$QT_BUILD_TREE/include/Qt5WindowsUIAutomationSupport/$${QT_VERSION} LIBS += -ldwmapi -lversion QMAKE_USE_PRIVATE += gdi32 dwrite_1 d2d1_1 d3d11_1 dxgi1_2 diff --git a/src/plugins/platforms/minimal/minimal.pro b/src/plugins/platforms/minimal/minimal.pro index a1a2da547b3..9fd5c4fca2f 100644 --- a/src/plugins/platforms/minimal/minimal.pro +++ b/src/plugins/platforms/minimal/minimal.pro @@ -1,8 +1,21 @@ TARGET = qminimal QT += \ - core-private gui-private \ - eventdispatcher_support-private fontdatabase_support-private + core-private gui-private + +# Fix linker error when building libqminimal.dll by specifying linker flags for +# required modules manually (otherwise order is messed) +LIBS += \ + $$QT_BUILD_TREE/lib/$${QMAKE_PREFIX_STATICLIB}Qt5EventDispatcherSupport.$${QMAKE_EXTENSION_STATICLIB} \ + $$QT_BUILD_TREE/lib/$${QMAKE_PREFIX_STATICLIB}Qt5FontDatabaseSupport.$${QMAKE_EXTENSION_STATICLIB} \ + -lfreetype -lole32 -lgdi32 -luuid +# However, this workaround leads to the necessity of specifying include dirs manually +INCLUDEPATH += \ + $$QT_BUILD_TREE/include/QtEventDispatcherSupport/$${QT_VERSION}/QtEventDispatcherSupport \ + $$QT_BUILD_TREE/include/QtEventDispatcherSupport/$${QT_VERSION} \ + $$QT_BUILD_TREE/include/QtFontDatabaseSupport/$${QT_VERSION}/QtFontDatabaseSupport \ + $$QT_BUILD_TREE/include/QtFontDatabaseSupport/$${QT_VERSION} + DEFINES += QT_NO_FOREACH diff --git a/src/plugins/platforms/offscreen/offscreen.pro b/src/plugins/platforms/offscreen/offscreen.pro index f226132592d..592fa7406f0 100644 --- a/src/plugins/platforms/offscreen/offscreen.pro +++ b/src/plugins/platforms/offscreen/offscreen.pro @@ -1,8 +1,20 @@ TARGET = qoffscreen QT += \ - core-private gui-private \ - eventdispatcher_support-private fontdatabase_support-private + core-private gui-private + +# Fix linker error when building libqoffscreen.dll by specifying linker flags for +# required modules manually (otherwise order is messed) +LIBS += \ + $$QT_BUILD_TREE/lib/$${QMAKE_PREFIX_STATICLIB}Qt5EventDispatcherSupport.$${QMAKE_EXTENSION_STATICLIB} \ + $$QT_BUILD_TREE/lib/$${QMAKE_PREFIX_STATICLIB}Qt5FontDatabaseSupport.$${QMAKE_EXTENSION_STATICLIB} \ + -lfreetype -lole32 -lgdi32 -luuid +# However, this workaround leads to the necessity of specifying include dirs manually +INCLUDEPATH += \ + $$QT_BUILD_TREE/include/QtEventDispatcherSupport/$${QT_VERSION}/QtEventDispatcherSupport \ + $$QT_BUILD_TREE/include/QtEventDispatcherSupport/$${QT_VERSION} \ + $$QT_BUILD_TREE/include/QtFontDatabaseSupport/$${QT_VERSION}/QtFontDatabaseSupport \ + $$QT_BUILD_TREE/include/QtFontDatabaseSupport/$${QT_VERSION} DEFINES += QT_NO_FOREACH diff --git a/src/plugins/platforms/windows/windows.pro b/src/plugins/platforms/windows/windows.pro index 50a3bb41a92..02f74650a9b 100644 --- a/src/plugins/platforms/windows/windows.pro +++ b/src/plugins/platforms/windows/windows.pro @@ -1,15 +1,35 @@ TARGET = qwindows -QT += \ - core-private gui-private \ - eventdispatcher_support-private \ - fontdatabase_support-private theme_support-private - -qtConfig(accessibility): QT += accessibility_support-private -qtConfig(vulkan): QT += vulkan_support-private - -LIBS += -ldwmapi -QMAKE_USE_PRIVATE += gdi32 +QT += core-private gui-private + +# Fix linker error when building libqwindows.dll by specifying linker flags for +# required modules manually (otherwise order is messed) +LIBS += \ + $$QT_BUILD_TREE/lib/$${QMAKE_PREFIX_STATICLIB}Qt5EventDispatcherSupport.$${QMAKE_EXTENSION_STATICLIB} \ + $$QT_BUILD_TREE/lib/$${QMAKE_PREFIX_STATICLIB}Qt5FontDatabaseSupport.$${QMAKE_EXTENSION_STATICLIB} \ + $$QT_BUILD_TREE/lib/$${QMAKE_PREFIX_STATICLIB}Qt5ThemeSupport.$${QMAKE_EXTENSION_STATICLIB} \ + -lfreetype -lole32 -lgdi32 -ldwmapi +# However, this workaround leads to the necessity of specifying include dirs manually +INCLUDEPATH += \ + $$QT_BUILD_TREE/include/QtEventDispatcherSupport/$${QT_VERSION}/QtEventDispatcherSupport \ + $$QT_BUILD_TREE/include/QtEventDispatcherSupport/$${QT_VERSION} \ + $$QT_BUILD_TREE/include/QtFontDatabaseSupport/$${QT_VERSION}/QtFontDatabaseSupport \ + $$QT_BUILD_TREE/include/QtFontDatabaseSupport/$${QT_VERSION} \ + $$QT_BUILD_TREE/include/QtThemeSupport/$${QT_VERSION}/QtThemeSupport \ + $$QT_BUILD_TREE/include/QtThemeSupport/$${QT_VERSION} +# Same for private support libs for accessibility and vulkan, if those are enabled +qtConfig(accessibility) { + LIBS += $$QT_BUILD_TREE/lib/$${QMAKE_PREFIX_STATICLIB}Qt5AccessibilitySupport.$${QMAKE_EXTENSION_STATICLIB} + INCLUDEPATH += \ + $$QT_BUILD_TREE/include/QtAccessibilitySupport/$${QT_VERSION}/Qt5AccessibilitySupport \ + $$QT_BUILD_TREE/include/QtAccessibilitySupport/$${QT_VERSION} +} +qtConfig(vulkan) { + LIBS += $$QT_BUILD_TREE/lib/$${QMAKE_PREFIX_STATICLIB}Qt5VulkanSupport.$${QMAKE_EXTENSION_STATICLIB} + INCLUDEPATH += \ + $$QT_BUILD_TREE/include/QtVulkanSupport/$${QT_VERSION}/Qt5VulkanSupport \ + $$QT_BUILD_TREE/include/QtVulkanSupport/$${QT_VERSION} +} include(windows.pri) -- 2.44.0