Index: flang/CMakeLists.txt =================================================================== --- flang/CMakeLists.txt +++ flang/CMakeLists.txt @@ -229,9 +229,8 @@ endif() # Always build tco tool set(LLVM_BUILD_TOOLS ON) - message(STATUS "Linking driver with FIR and LLVM") - llvm_map_components_to_libnames(LLVM_COMMON_LIBS support) - message(STATUS "LLVM libraries: ${LLVM_COMMON_LIBS}") + set(LLVM_COMMON_COMPONENTS Support) + message(STATUS "Linking driver with FIR and LLVM, using LLVM components: ${LLVM_COMMON_COMPONENTS}") endif() # Add Flang-centric modules to cmake path. Index: flang/cmake/modules/AddFlang.cmake =================================================================== --- flang/cmake/modules/AddFlang.cmake +++ flang/cmake/modules/AddFlang.cmake @@ -61,7 +61,6 @@ llvm_add_library(${name} ${LIBTYPE} ${ARG_UNPARSED_ARGUMENTS} ${srcs}) if (TARGET ${name}) - target_link_libraries(${name} INTERFACE ${LLVM_COMMON_LIBS}) if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "libflang") set(export_to_flangtargets) Index: flang/tools/flang-driver/CMakeLists.txt =================================================================== --- flang/tools/flang-driver/CMakeLists.txt +++ flang/tools/flang-driver/CMakeLists.txt @@ -7,20 +7,23 @@ add_flang_tool(flang-new driver.cpp fc1_main.cpp + + LINK_COMPONENTS + + ${LLVM_COMMON_COMPONENTS} + Support + Target + Option ) # Link against LLVM and Clang libraries target_link_libraries(flang-new PRIVATE - ${LLVM_COMMON_LIBS} flangFrontend flangFrontendTool clangDriver clangBasic clangFrontend - LLVMSupport - LLVMTarget - LLVMOption ) install(TARGETS flang-new DESTINATION bin) Index: flang/unittests/CMakeLists.txt =================================================================== --- flang/unittests/CMakeLists.txt +++ flang/unittests/CMakeLists.txt @@ -10,11 +10,30 @@ endif() function(add_flang_nongtest_unittest test_name) - add_executable(${test_name}.test ${test_name}.cpp) + cmake_parse_arguments(ARG + "SLOW_TEST" + "" + "" + ${ARGN}) - target_link_libraries(${test_name}.test ${ARGN}) + if(ARG_SLOW_TEST) + set(suffix .slow) + else() + set(suffix .test) + endif() - add_dependencies(FlangUnitTests ${test_name}.test) + add_executable(${test_name}${suffix} ${test_name}.cpp) + + if (LLVM_LINK_LLVM_DYLIB AND NOT ARG_DISABLE_LLVM_LINK_LLVM_DYLIB) + set(llvm_libs LLVM) + else() + llvm_map_components_to_libnames(llvm_libs Support) + endif() + target_link_libraries(${test_name}${suffix} ${llvm_libs} ${ARG_UNPARSED_ARGUMENTS}) + + if(NOT ARG_SLOW_TEST) + add_dependencies(FlangUnitTests ${test_name}${suffix}) + endif() endfunction() add_subdirectory(Optimizer) Index: flang/unittests/Decimal/CMakeLists.txt =================================================================== --- flang/unittests/Decimal/CMakeLists.txt +++ flang/unittests/Decimal/CMakeLists.txt @@ -1,15 +1,10 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) add_flang_nongtest_unittest(quick-sanity-test FortranDecimal - LLVMSupport ) -# This test is not run by default as it takes a long time to execute -add_executable(thorough-test - thorough-test.cpp -) - -target_link_libraries(thorough-test +# This test is not run by default as it takes a long time to execute. +add_flang_nongtest_unittest(thorough-test + SLOW_TEST FortranDecimal - LLVMSupport ) Index: flang/unittests/Evaluate/CMakeLists.txt =================================================================== --- flang/unittests/Evaluate/CMakeLists.txt +++ flang/unittests/Evaluate/CMakeLists.txt @@ -3,24 +3,24 @@ testing.cpp fp-testing.cpp ) - -target_link_libraries(FortranEvaluateTesting - LLVMSupport -) + if (LLVM_LINK_LLVM_DYLIB) + set(llvm_libs LLVM) + else() + llvm_map_components_to_libnames(llvm_libs Support) + endif() + target_link_libraries(FortranEvaluateTesting + ${llvm_libs}) add_flang_nongtest_unittest(leading-zero-bit-count FortranEvaluateTesting - LLVMSupport ) add_flang_nongtest_unittest(bit-population-count FortranEvaluateTesting - LLVMSupport ) add_flang_nongtest_unittest(uint128 FortranEvaluateTesting - LLVMSupport ) add_flang_nongtest_unittest(expression @@ -29,14 +29,12 @@ FortranEvaluate FortranSemantics FortranParser - LLVMSupport ) add_flang_nongtest_unittest(integer FortranEvaluateTesting FortranEvaluate FortranSemantics - LLVMSupport ) add_flang_nongtest_unittest(intrinsics @@ -47,14 +45,12 @@ FortranSemantics FortranParser FortranRuntime - LLVMSupport ) add_flang_nongtest_unittest(logical FortranEvaluateTesting FortranEvaluate FortranSemantics - LLVMSupport ) # GCC -fno-exceptions breaks the fenv.h interfaces needed to capture @@ -68,7 +64,6 @@ FortranEvaluate FortranDecimal FortranSemantics - LLVMSupport ) llvm_update_compile_flags(real.test) @@ -77,7 +72,6 @@ FortranSemantics FortranEvaluate FortranRuntime - LLVMSupport ) add_flang_nongtest_unittest(ISO-Fortran-binding @@ -85,7 +79,6 @@ FortranEvaluate FortranSemantics FortranRuntime - LLVMSupport ) add_flang_nongtest_unittest(folding @@ -93,5 +86,4 @@ FortranEvaluateTesting FortranEvaluate FortranSemantics - LLVMSupport ) Index: flang/unittests/Runtime/CMakeLists.txt =================================================================== --- flang/unittests/Runtime/CMakeLists.txt +++ flang/unittests/Runtime/CMakeLists.txt @@ -10,19 +10,16 @@ target_link_libraries(RuntimeTesting FortranRuntime - LLVMSupport ) add_flang_nongtest_unittest(format RuntimeTesting FortranRuntime - LLVMSupport ) add_flang_nongtest_unittest(hello RuntimeTesting FortranRuntime - LLVMSupport ) # This test is not run by default as it requires input. @@ -32,23 +29,19 @@ target_link_libraries(external-hello-world FortranRuntime - LLVMSupport ) add_flang_nongtest_unittest(external-io RuntimeTesting FortranRuntime - LLVMSupport ) add_flang_nongtest_unittest(list-input RuntimeTesting FortranRuntime - LLVMSupport ) add_flang_nongtest_unittest(character RuntimeTesting FortranRuntime - LLVMSupport )