forked from OSchip/llvm-project
[flang] Make flang build compatible with LLVM dylib
Harmonize usage of LLVM components througout Flang. Explicit LLVM Libs where used across several CMakeFIles, which led to incompatibilities with LLVM shlibs. Fortunately, the LLVM component system can be relied on to harmoniously handle both cases. Differential Revision: https://reviews.llvm.org/D87893
This commit is contained in:
parent
82a71822a5
commit
cde06f783c
|
@ -229,9 +229,8 @@ if(LINK_WITH_FIR)
|
|||
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.
|
||||
|
|
|
@ -61,7 +61,6 @@ macro(add_flang_library name)
|
|||
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)
|
||||
|
|
|
@ -7,20 +7,23 @@ link_directories(${LLVM_LIBRARY_DIR})
|
|||
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)
|
||||
|
|
|
@ -10,11 +10,30 @@ if (CXX_SUPPORTS_SUGGEST_OVERRIDE_FLAG)
|
|||
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)
|
||||
|
|
|
@ -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
|
||||
)
|
||||
|
|
|
@ -3,24 +3,24 @@ add_library(FortranEvaluateTesting
|
|||
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 @@ add_flang_nongtest_unittest(expression
|
|||
FortranEvaluate
|
||||
FortranSemantics
|
||||
FortranParser
|
||||
LLVMSupport
|
||||
)
|
||||
|
||||
add_flang_nongtest_unittest(integer
|
||||
FortranEvaluateTesting
|
||||
FortranEvaluate
|
||||
FortranSemantics
|
||||
LLVMSupport
|
||||
)
|
||||
|
||||
add_flang_nongtest_unittest(intrinsics
|
||||
|
@ -47,14 +45,12 @@ add_flang_nongtest_unittest(intrinsics
|
|||
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 @@ add_flang_nongtest_unittest(real
|
|||
FortranEvaluate
|
||||
FortranDecimal
|
||||
FortranSemantics
|
||||
LLVMSupport
|
||||
)
|
||||
llvm_update_compile_flags(real.test)
|
||||
|
||||
|
@ -77,7 +72,6 @@ add_flang_nongtest_unittest(reshape
|
|||
FortranSemantics
|
||||
FortranEvaluate
|
||||
FortranRuntime
|
||||
LLVMSupport
|
||||
)
|
||||
|
||||
add_flang_nongtest_unittest(ISO-Fortran-binding
|
||||
|
@ -85,7 +79,6 @@ add_flang_nongtest_unittest(ISO-Fortran-binding
|
|||
FortranEvaluate
|
||||
FortranSemantics
|
||||
FortranRuntime
|
||||
LLVMSupport
|
||||
)
|
||||
|
||||
add_flang_nongtest_unittest(folding
|
||||
|
@ -93,5 +86,4 @@ add_flang_nongtest_unittest(folding
|
|||
FortranEvaluateTesting
|
||||
FortranEvaluate
|
||||
FortranSemantics
|
||||
LLVMSupport
|
||||
)
|
||||
|
|
|
@ -10,19 +10,16 @@ llvm_update_compile_flags(RuntimeTesting)
|
|||
|
||||
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 @@ add_executable(external-hello-world
|
|||
|
||||
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
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue