diff options
author | Jake Petroules <jake.petroules@qt.io> | 2017-06-19 22:52:01 -0700 |
---|---|---|
committer | Jake Petroules <jake.petroules@qt.io> | 2017-06-21 16:01:32 +0000 |
commit | 85291c80a8bd6c8fc0930d756be71df8e88b3cf5 (patch) | |
tree | 506efbf90d4f05250de5b2df079b7baaf7634aa4 | |
parent | ea68e550ea17353e43f220b510f990a0adeb871b (diff) |
Fix shared library linking on Apple platforms using ld64
When using the system linker, we must pass -dylib. -dynamiclib is a
Clang/GCC driver option which is not recognized by ld64.
Change-Id: Idc52e4f57864ab468a9a84cc15d3b4a29a8a09bb
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r-- | share/qbs/modules/cpp/gcc.js | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/share/qbs/modules/cpp/gcc.js b/share/qbs/modules/cpp/gcc.js index 23d01d106..b25372918 100644 --- a/share/qbs/modules/cpp/gcc.js +++ b/share/qbs/modules/cpp/gcc.js @@ -242,7 +242,18 @@ function linkerFlags(project, product, inputs, output, linkerPath) { var i, args = additionalCompilerAndLinkerFlags(product); if (output.fileTags.contains("dynamiclibrary")) { - args.push(isDarwin ? "-dynamiclib" : "-shared"); + if (isDarwin) { + args.push((function () { + var tags = ["c", "cpp", "objc", "objcpp", "asm_cpp"]; + for (var i = 0; i < tags.length; ++i) { + if (linkerPath === product.cpp.compilerPathByLanguage[tags[i]]) + return "-dynamiclib"; + } + return "-dylib"; // for ld64 + })()); + } else { + args.push("-shared"); + } if (isDarwin) { var internalVersion = product.cpp.internalVersion; |