CMake: Fixed dependencies of .cpp source files on .td and tablegenned
authorOscar Fuentes <ofv@wanadoo.es>
Fri, 14 Nov 2008 22:06:14 +0000 (22:06 +0000)
committerOscar Fuentes <ofv@wanadoo.es>
Fri, 14 Nov 2008 22:06:14 +0000 (22:06 +0000)
files.

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

cmake/modules/AddLLVM.cmake
cmake/modules/AddPartiallyLinkedObject.cmake
cmake/modules/LLVMProcessSources.cmake [new file with mode: 0644]
cmake/modules/TableGen.cmake

index 3ca2d12a96affa96eddc1d56105680308121145d..d8fd08b473b7c3af17711c08e8a88422f61b4406 100755 (executable)
@@ -1,6 +1,8 @@
+include(LLVMProcessSources)
 include(LLVMConfig)
 
 macro(add_llvm_library name)
+  llvm_process_sources( ${ARGN} )
   add_library( ${name} ${ARGN} )
   set( llvm_libs ${llvm_libs} ${name} PARENT_SCOPE)
   set( llvm_lib_targets ${llvm_lib_targets} ${name} PARENT_SCOPE )
@@ -14,6 +16,7 @@ endmacro(add_llvm_library name)
 
 
 macro(add_llvm_executable name)
+  llvm_process_sources( ${ARGN} )
   add_executable(${name} ${ARGN})
   if( LLVM_USED_LIBS )
     foreach(lib ${LLVM_USED_LIBS})
index d607306dfe2cf18c3aab13d18ec771bfc124b739..001bcdc6a5a6d5837711e773cbc8c16b094a7d37 100755 (executable)
@@ -1,3 +1,4 @@
+include(LLVMProcessSources)
 
 macro(target_name_of_partially_linked_object lib var)
   if( MSVC )
@@ -15,6 +16,7 @@ macro(add_partially_linked_object lib)
     set(pll ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/${lib}.o)
     set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/temp_lib)
     set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/temp_lib)
+    llvm_process_sources( ${ARGN} )
     add_library( ${lib} STATIC ${ARGN})
     if( LLVM_COMMON_DEPENDS )
       add_dependencies( ${lib} ${LLVM_COMMON_DEPENDS} )
diff --git a/cmake/modules/LLVMProcessSources.cmake b/cmake/modules/LLVMProcessSources.cmake
new file mode 100644 (file)
index 0000000..0dad3fb
--- /dev/null
@@ -0,0 +1,13 @@
+include(AddFileDependencies)
+
+function(llvm_process_sources)
+  set( sources ${ARGN} )
+  # Create file dependencies on the tablegenned files, if any.  Seems
+  # that this is not strictly needed, as dependencies of the .cpp
+  # sources on the tablegenned .inc files are detected and handled,
+  # but just in case...
+  foreach( s ${sources} )
+    set( f ${CMAKE_CURRENT_SOURCE_DIR}/${s} )
+    add_file_dependencies( ${f} ${TABLEGEN_OUTPUT} )
+  endforeach(s)
+endfunction(llvm_process_sources)
index 6d69e8ae9125ab6fdb4d337aa8b1231b76810442..aed65589c23021f14aadd6f604ceaa6e27d45d47 100644 (file)
@@ -3,9 +3,10 @@
 # Adds the name of the generated file to TABLEGEN_OUTPUT.
 
 macro(tablegen ofn)
+  file(GLOB all_tds "*.td")
   add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn}
     COMMAND ${LLVM_TABLEGEN} ${ARGN} -I ${CMAKE_CURRENT_SOURCE_DIR} -I ${CMAKE_SOURCE_DIR}/lib/Target -I ${LLVM_MAIN_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/${LLVM_TARGET_DEFINITIONS} -o ${ofn}
-    DEPENDS tblgen ${CMAKE_CURRENT_SOURCE_DIR}/${LLVM_TARGET_DEFINITIONS}
+    DEPENDS tblgen ${all_tds}
     COMMENT "Building ${ofn}..."
     )
   set(TABLEGEN_OUTPUT ${TABLEGEN_OUTPUT} ${CMAKE_CURRENT_BINARY_DIR}/${ofn})