From 1bbdd4645be3642f55d7bdcd21e13e23e59cd884 Mon Sep 17 00:00:00 2001 From: Oscar Fuentes Date: Fri, 14 Nov 2008 22:06:14 +0000 Subject: CMake: Fixed dependencies of .cpp source files on .td and tablegenned files. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59325 91177308-0d34-0410-b5e6-96231b3b80d8 --- cmake/modules/AddLLVM.cmake | 3 +++ cmake/modules/AddPartiallyLinkedObject.cmake | 2 ++ cmake/modules/LLVMProcessSources.cmake | 13 +++++++++++++ cmake/modules/TableGen.cmake | 3 ++- 4 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 cmake/modules/LLVMProcessSources.cmake diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake index 3ca2d12a96..d8fd08b473 100755 --- a/cmake/modules/AddLLVM.cmake +++ b/cmake/modules/AddLLVM.cmake @@ -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}) diff --git a/cmake/modules/AddPartiallyLinkedObject.cmake b/cmake/modules/AddPartiallyLinkedObject.cmake index d607306dfe..001bcdc6a5 100755 --- a/cmake/modules/AddPartiallyLinkedObject.cmake +++ b/cmake/modules/AddPartiallyLinkedObject.cmake @@ -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 index 0000000000..0dad3fb740 --- /dev/null +++ b/cmake/modules/LLVMProcessSources.cmake @@ -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) diff --git a/cmake/modules/TableGen.cmake b/cmake/modules/TableGen.cmake index 6d69e8ae91..aed65589c2 100644 --- a/cmake/modules/TableGen.cmake +++ b/cmake/modules/TableGen.cmake @@ -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}) -- cgit v1.2.3