Blob Blame History Raw
diff -rupN qtbase-opensource-src-5.9.3/configure.pri qtbase-opensource-src-5.9.3-new/configure.pri
--- qtbase-opensource-src-5.9.3/configure.pri	2017-11-16 06:15:28.000000000 +0100
+++ qtbase-opensource-src-5.9.3-new/configure.pri	2017-11-26 18:55:25.874559669 +0100
@@ -1212,3 +1212,10 @@ defineTest(createConfigStatus) {
 
 QMAKE_POST_CONFIGURE += \
     "createConfigStatus()"
+
+# merge shared and static library trees
+contains(CONFIG, static) {
+    CONFIG -= shared
+    QT_CONFIG += static jpeg gif
+    QT_CONFIG -= shared
+}
diff -rupN qtbase-opensource-src-5.9.3/mkspecs/features/default_post.prf qtbase-opensource-src-5.9.3-new/mkspecs/features/default_post.prf
--- qtbase-opensource-src-5.9.3/mkspecs/features/default_post.prf	2017-11-16 06:15:28.000000000 +0100
+++ qtbase-opensource-src-5.9.3-new/mkspecs/features/default_post.prf	2017-11-26 18:55:25.874559669 +0100
@@ -1,5 +1,16 @@
 # This file is loaded by qmake right after loading the actual project file.
 
+win32:contains(CONFIG, static) {
+    # Ensure defines are set correctly for static build
+    DEFINES -= QT_SHARED
+    DEFINES *= QT_STATIC QT_DESIGNER_STATIC
+    contains(QT_CONFIG, angle): DEFINES *= QT_OPENGL_ES_2_ANGLE_STATIC
+    # Ensure we link against all dependencies statically
+    QMAKE_LFLAGS += -static -static-libstdc++ -static-libgcc
+    # Prevent qmake from finding the prl file for shared libs
+    QMAKE_EXT_PRL = .static.prl
+}
+
 contains(TEMPLATE, ".*(lib|app)"):CONFIG += have_target
 
 !have_target:!force_qt: CONFIG -= qt
diff -rupN qtbase-opensource-src-5.9.3/mkspecs/features/qt.prf qtbase-opensource-src-5.9.3-new/mkspecs/features/qt.prf
--- qtbase-opensource-src-5.9.3/mkspecs/features/qt.prf	2017-11-16 06:15:28.000000000 +0100
+++ qtbase-opensource-src-5.9.3-new/mkspecs/features/qt.prf	2017-11-26 18:55:25.874559669 +0100
@@ -255,6 +255,21 @@ for(ever) {
             !isEmpty(MODULE_WINRT_CAPABILITIES_DEVICE): \
                 WINRT_MANIFEST.capabilities_device_default += $$MODULE_WINRT_CAPABILITIES_DEVICE
         }
+
+        # Ensure linking against all required static libraries as defined in mingw-w64-g++ mkspec
+        win32:contains(CONFIG, static) {
+            isEqual(MODULE_NAME, QtCore) {
+                LIBS$$var_sfx += $$QMAKE_LIBS_CORE
+            } else:isEqual(MODULE_NAME, QtGui) {
+                LIBS$$var_sfx += $$QMAKE_LIBS_GUI
+            } else:isEqual(MODULE_NAME, QtNetwork) {
+                LIBS$$var_sfx += $$QMAKE_LIBS_NETWORK
+            } else:isEqual(MODULE_NAME, QtDBus) {
+                LIBS$$var_sfx += $$QMAKE_LIBS_DBUS
+            } else:isEqual(MODULE_NAME, QtOpenGL) {
+                LIBS$$var_sfx += $$QMAKE_LIBS_OPENGL
+            }
+        }
     }
     !isEmpty(BAD_QT):error("Unknown module(s) in QT$$var_sfx: $$replace(BAD_QT, _private$, -private)")