summary refs log tree commit diff
path: root/pkgs/development/compilers/llvm/10/llvm-outputs.patch
blob: 40096fa3497fd3b4300953ae9899e4709152228b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp
index 94d426b..37f7794 100644
--- a/tools/llvm-config/llvm-config.cpp
+++ b/tools/llvm-config/llvm-config.cpp
@@ -333,6 +333,21 @@ int main(int argc, char **argv) {
     ActiveIncludeOption = "-I" + ActiveIncludeDir;
   }
 
+  /// Nix-specific multiple-output handling: override ActiveLibDir if --link-shared
+  if (!IsInDevelopmentTree) {
+    bool WantShared = true;
+    for (int i = 1; i < argc; ++i) {
+      StringRef Arg = argv[i];
+      if (Arg == "--link-shared")
+        WantShared = true;
+      else if (Arg == "--link-static")
+        WantShared = false; // the last one wins
+    }
+
+    if (WantShared)
+      ActiveLibDir = std::string("@lib@") + "/lib" + LLVM_LIBDIR_SUFFIX;
+  }
+
   /// We only use `shared library` mode in cases where the static library form
   /// of the components provided are not available; note however that this is
   /// skipped if we're run from within the build dir. However, once installed,