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,