[CMake] llvm_add_library: Add dependencies also to objlibs as workaround of CMake...
authorNAKAMURA Takumi <geek4civic@gmail.com>
Fri, 21 Feb 2014 14:17:29 +0000 (14:17 +0000)
committerNAKAMURA Takumi <geek4civic@gmail.com>
Fri, 21 Feb 2014 14:17:29 +0000 (14:17 +0000)
http://www.cmake.org/Bug/view.php?id=14747

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201855 91177308-0d34-0410-b5e6-96231b3b80d8

cmake/modules/AddLLVM.cmake

index a10262b14ef66d28ee4bb43e8e15d808b550d16b..90c15a9d70e99f322fca377c10d81c6625157d9f 100644 (file)
@@ -127,6 +127,10 @@ function(add_llvm_symbol_exports target_name export_file)
     PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${native_export_file})
 
   add_dependencies(${target_name} ${target_name}_exports)
+
+  # Add dependency to *_exports later -- CMake issue 14747
+  list(APPEND LLVM_COMMON_DEPENDS ${target_name}_exports)
+  set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} PARENT_SCOPE)
 endfunction(add_llvm_symbol_exports)
 
 function(add_dead_strip target_name)
@@ -224,6 +228,9 @@ function(llvm_add_library name)
     llvm_update_compile_flags(${obj_name})
     set(ALL_FILES "$<TARGET_OBJECTS:${obj_name}>")
 
+    # Do add_dependencies(obj) later due to CMake issue 14747.
+    list(APPEND objlibs ${obj_name})
+
     set_target_properties(${obj_name} PROPERTIES FOLDER "Object Libraries")
   endif()
 
@@ -288,6 +295,12 @@ function(llvm_add_library name)
 
   if(LLVM_COMMON_DEPENDS)
     add_dependencies(${name} ${LLVM_COMMON_DEPENDS})
+    # Add dependencies also to objlibs.
+    # CMake issue 14747 --  add_dependencies() might be ignored to objlib's user.
+    foreach(objlib ${objlibs})
+      message("add_dependencies(${objlib} ${LLVM_COMMON_DEPENDS})")
+      add_dependencies(${objlib} ${LLVM_COMMON_DEPENDS})
+    endforeach()
   endif()
 endfunction()