[flang] Refine how Clang dependencies are expressed #58663
authorEzike Ebuka <yerimyah1@gmail.com>
Sun, 16 Apr 2023 14:19:46 +0000 (14:19 +0000)
committerAndrzej Warzynski <andrzej.warzynski@arm.com>
Sun, 16 Apr 2023 17:44:25 +0000 (17:44 +0000)
Fixes #58663

Reviewed By: awarzynski

Differential Revision: https://reviews.llvm.org/D140998

flang/cmake/modules/AddFlang.cmake
flang/lib/Frontend/CMakeLists.txt
flang/lib/FrontendTool/CMakeLists.txt

index 4332eb8..41ce873 100644 (file)
@@ -16,12 +16,15 @@ macro(add_flang_subdirectory name)
   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 @@ macro(add_flang_library name)
 
   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 @@ macro(add_flang_library name)
 
   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})
index c23a395..2dd86f9 100644 (file)
@@ -51,16 +51,8 @@ add_flang_library(flangFrontend
   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
 )
index 59e4bd5..2acaffb 100644 (file)
@@ -13,16 +13,8 @@ add_flang_library(flangFrontendTool
   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
 )