Index: test/CMakeLists.txt =================================================================== --- test/CMakeLists.txt +++ test/CMakeLists.txt @@ -2,6 +2,11 @@ set(ENABLE_EXAMPLES 1) endif() +# Convert 1 for easy processing in Python. +if(BUILD_SHARED_LIBS) + set(BUILD_SHARED_LIBS 1) +endif() + configure_lit_site_cfg( ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg Index: test/lit.cfg =================================================================== --- test/lit.cfg +++ test/lit.cfg @@ -377,6 +377,10 @@ if loadable_module: config.available_features.add('loadable_module') +# Static libraries are not built if BUILD_SHARED_LIBS is ON. +if config.build_shared_libs != '1': + config.available_features.add("static-libs") + # Sanitizers. if 'Address' in config.llvm_use_sanitizer: config.available_features.add("asan") Index: test/lit.site.cfg.in =================================================================== --- test/lit.site.cfg.in +++ test/lit.site.cfg.in @@ -39,6 +39,7 @@ config.have_dia_sdk = @HAVE_DIA_SDK@ config.enable_ffi = "@LLVM_ENABLE_FFI@" config.test_examples = "@ENABLE_EXAMPLES@" +config.build_shared_libs = "@BUILD_SHARED_LIBS@" # Support substitution of the tools_dir with user parameters. This is # used when we can't determine the tool dir at configuration time. Index: test/tools/llvm-config/system-libs.test =================================================================== --- test/tools/llvm-config/system-libs.test +++ test/tools/llvm-config/system-libs.test @@ -1,4 +1,5 @@ -RUN: llvm-config --system-libs 2>&1 | FileCheck %s +RUN: llvm-config --link-static --system-libs 2>&1 | FileCheck %s +REQUIRES: static-libs UNSUPPORTED: system-windows CHECK: -l CHECK-NOT: error Index: test/tools/llvm-config/system-libs.windows.test =================================================================== --- test/tools/llvm-config/system-libs.windows.test +++ test/tools/llvm-config/system-libs.windows.test @@ -1,4 +1,5 @@ -RUN: llvm-config --system-libs 2>&1 | FileCheck %s +RUN: llvm-config --link-static --system-libs 2>&1 | FileCheck %s +REQUIRES: static-libs REQUIRES: system-windows CHECK-NOT: -l CHECK: psapi.lib shell32.lib ole32.lib uuid.lib Index: tools/llvm-config/llvm-config.cpp =================================================================== --- tools/llvm-config/llvm-config.cpp +++ tools/llvm-config/llvm-config.cpp @@ -690,8 +690,15 @@ // Print SYSTEM_LIBS after --libs. // FIXME: Each LLVM component may have its dependent system libs. - if (PrintSystemLibs) - OS << LLVM_SYSTEM_LIBS << '\n'; + if (PrintSystemLibs) { + // Output empty system libraries if linking against a shared library + // (since the library links to all system libs already) + if (LinkMode == LinkModeShared) { + OS << '\n'; + } else { + OS << LLVM_SYSTEM_LIBS << '\n'; + } + } } else if (!Components.empty()) { errs() << "llvm-config: error: components given, but unused\n\n"; usage();