From 46a6e9e9e8aa904d00956bea29f94b350ffe9faa Mon Sep 17 00:00:00 2001
From: Orgad Shaneh <orgads@gmail.com>
Date: Wed, 21 Mar 2012 19:35:34 +0200
Subject: [PATCH] Qbs: Fixes for Windows compilation

Change-Id: Ia392b8dc566e1d4ffadd67c09a30ace7f64b9f3f
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
---
 src/libs/3rdparty/botan/botan.qbs      | 33 ++++++++++++++++++--------
 src/libs/symbianutils/symbianutils.qbs |  2 ++
 src/libs/utils/utils.qbs               |  2 +-
 src/libs/zeroconf/zeroconf.qbs         |  8 ++++++-
 src/plugins/coreplugin/coreplugin.qbs  |  4 ++--
 src/plugins/debugger/debugger.qbs      |  9 +++++++
 6 files changed, 44 insertions(+), 14 deletions(-)

diff --git a/src/libs/3rdparty/botan/botan.qbs b/src/libs/3rdparty/botan/botan.qbs
index 33861284997..7fe9388e8c3 100644
--- a/src/libs/3rdparty/botan/botan.qbs
+++ b/src/libs/3rdparty/botan/botan.qbs
@@ -8,28 +8,33 @@ DynamicLibrary {
     Depends { name: "qt"; submodules: 'core' }
 
     cpp.includePaths: ["build", "src"]
-    cpp.staticLibraries: {
-        if (qbs.targetOS == 'windows') {
-            return [
-                "advapi32.lib",
-                "user32.lib"
-            ]
-        }
-    }
     cpp.dynamicLibraries: {
         if (qbs.targetOS == 'linux' || qbs.targetOS == 'freebsd') {
             return ['rt']
         }
+        else if (qbs.targetOS == 'windows') {
+            return [
+                "advapi32",
+                "user32"
+            ]
+        }
     }
 
     cpp.defines: {
         var result = []
-        if (qbs.toolchain == 'msvc2005' || qbs.toolchain == 'msvc2005' || qbs.toolchain == 'msvc2008' || qbs.toolchain == 'msvc2010')
+        if (qbs.toolchain == 'msvc2005' || qbs.toolchain == 'msvc2008' || qbs.toolchain == 'msvc2010')
             result.push('BOTAN_DLL=__declspec(dllexport)')
         return result
     }
 
-    // TODO: add those flags to mingw's compiler: -fpermissive -finline-functions -Wno-long-long
+    Properties {
+        condition: qbs.toolchain === 'mingw'
+        cpp.cxxFlags: [
+            '-fpermissive',
+            '-finline-functions',
+            '-Wno-long-long'
+        ]
+    }
 
     files: [
         "src/algo_factory/algo_cache.h",
@@ -536,4 +541,12 @@ DynamicLibrary {
             "src/timer/posix_rt/tm_posix.cpp"
         ]
     }
+
+    ProductModule {
+        cpp.linkerFlags: {
+            if (qbs.toolchain === 'mingw') {
+                return ['--enable-auto-import']
+            }
+        }
+    }
 }
diff --git a/src/libs/symbianutils/symbianutils.qbs b/src/libs/symbianutils/symbianutils.qbs
index ad8b0609f1e..7d1b0145913 100644
--- a/src/libs/symbianutils/symbianutils.qbs
+++ b/src/libs/symbianutils/symbianutils.qbs
@@ -12,6 +12,7 @@ DynamicLibrary {
     ]
     cpp.defines: [
         "SYMBIANUTILS_BUILD_LIB",
+        "JSON_BUILD_LIB",
         "HAS_SERIALPORT"
     ]
     cpp.optimization: "fast"
@@ -59,6 +60,7 @@ DynamicLibrary {
             "../../shared/json",
             "."
         ]
+        cpp.defines: "JSON_INCLUDE_PRI"
     }
 }
 
diff --git a/src/libs/utils/utils.qbs b/src/libs/utils/utils.qbs
index c7fe39e52eb..3f1b28139cc 100644
--- a/src/libs/utils/utils.qbs
+++ b/src/libs/utils/utils.qbs
@@ -14,7 +14,7 @@ DynamicLibrary {
 
     Properties {
         condition: qbs.targetOS == "windows"
-        cpp.dynamicLibraries: ["User32.lib"]
+        cpp.dynamicLibraries: ["user32"]
     }
 
     Depends { name: "cpp" }
diff --git a/src/libs/zeroconf/zeroconf.qbs b/src/libs/zeroconf/zeroconf.qbs
index f6415d0ee51..8fadbb2672d 100644
--- a/src/libs/zeroconf/zeroconf.qbs
+++ b/src/libs/zeroconf/zeroconf.qbs
@@ -8,13 +8,19 @@ DynamicLibrary {
     Depends { name: "Qt.network" }
 
     cpp.includePaths: "."
+    cpp.defines: ["ZEROCONF_LIBRARY"]
     Properties {
         condition: qbs.targetOS == "windows"
         cpp.dynamicLibraries:  "ws2_32"
     }
     Properties {
         condition: qbs.targetOS == "linux"
-        cpp.defines: [ "_GNU_SOURCE HAVE_IPV6", "USES_NETLINK", "HAVE_LINUX", "TARGET_OS_LINUX" ]
+        cpp.defines: outer.concat([
+            "_GNU_SOURCE HAVE_IPV6",
+            "USES_NETLINK",
+            "HAVE_LINUX",
+            "TARGET_OS_LINUX"
+        ])
     }
 
     files: [
diff --git a/src/plugins/coreplugin/coreplugin.qbs b/src/plugins/coreplugin/coreplugin.qbs
index d0fbcd5c0ca..1b4c9c3edd5 100644
--- a/src/plugins/coreplugin/coreplugin.qbs
+++ b/src/plugins/coreplugin/coreplugin.qbs
@@ -24,9 +24,9 @@ QtcPlugin {
          buildDirectory
     ]
 
-    cpp.staticLibraries: {
+    cpp.dynamicLibraries: {
         if (qbs.targetOS == 'windows') return [
-            "ole32.lib"
+            "ole32"
         ]
     }
 
diff --git a/src/plugins/debugger/debugger.qbs b/src/plugins/debugger/debugger.qbs
index 6b388894d79..4cf39f71e46 100644
--- a/src/plugins/debugger/debugger.qbs
+++ b/src/plugins/debugger/debugger.qbs
@@ -295,6 +295,15 @@ QtcPlugin {
         ]
     }
 
+    Properties {
+        condition: qbs.targetOS == "windows"
+        cpp.dynamicLibraries: [
+            "advapi32",
+            "ole32",
+            "shell32"
+        ]
+    }
+
     ProductModule {
         cpp.includePaths: ["."]
     }
-- 
GitLab