diff --git a/flang/cmake/modules/AddFlang.cmake b/flang/cmake/modules/AddFlang.cmake --- a/flang/cmake/modules/AddFlang.cmake +++ b/flang/cmake/modules/AddFlang.cmake @@ -16,12 +16,15 @@ add_llvm_subdirectory(FLANG TOOL ${name}) endmacro() -macro(add_flang_library name) +function(add_flang_library name) + set(options SHARED STATIC INSTALL_WITH_TOOLCHAIN) + set(multiValueArgs ADDITIONAL_HEADERS CLANG_LIBS) cmake_parse_arguments(ARG - "SHARED;STATIC;INSTALL_WITH_TOOLCHAIN" + "${options}" "" - "ADDITIONAL_HEADERS" + "${multiValueArgs}" ${ARGN}) + set(srcs) if (MSVC_IDE OR XCODE) # Add public headers @@ -63,6 +66,8 @@ llvm_add_library(${name} ${LIBTYPE} ${ARG_UNPARSED_ARGUMENTS} ${srcs}) + clang_target_link_libraries(${name} PRIVATE ${ARG_CLANG_LIBS}) + if (TARGET ${name}) if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "libflang" @@ -91,7 +96,7 @@ set_target_properties(${name} PROPERTIES FOLDER "Flang libraries") set_flang_windows_version_resource_properties(${name}) -endmacro(add_flang_library) +endfunction(add_flang_library) macro(add_flang_executable name) add_llvm_executable(${name} ${ARGN}) diff --git a/flang/lib/Frontend/CMakeLists.txt b/flang/lib/Frontend/CMakeLists.txt --- a/flang/lib/Frontend/CMakeLists.txt +++ b/flang/lib/Frontend/CMakeLists.txt @@ -51,16 +51,8 @@ TargetParser FrontendOpenACC FrontendOpenMP -) - -if(CLANG_LINK_CLANG_DYLIB) - add_dependencies(flangFrontend clang-cpp) -else() - add_dependencies(flangFrontend clangBasic) -endif() -clang_target_link_libraries(flangFrontend - PRIVATE + CLANG_LIBS clangBasic clangDriver ) diff --git a/flang/lib/FrontendTool/CMakeLists.txt b/flang/lib/FrontendTool/CMakeLists.txt --- a/flang/lib/FrontendTool/CMakeLists.txt +++ b/flang/lib/FrontendTool/CMakeLists.txt @@ -13,16 +13,8 @@ LINK_COMPONENTS Option Support -) - -if(CLANG_LINK_CLANG_DYLIB) - add_dependencies(flangFrontend clang-cpp) -else() - add_dependencies(flangFrontendTool clangBasic) -endif() -clang_target_link_libraries(flangFrontendTool - PRIVATE + CLANG_LIBS clangBasic clangDriver )