mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-23 02:29:18 +00:00
(clang/include/clang/Basic/StmtNodes.td, for instance, is tablegenned from clang/include/clang/AST/CMakeLists.txt) so it is not contained on the list of all .td files on the current source directory which is used as the DEPENDS of the custom command. We must add the .td file to the DEPENDS list of the custom command. Otherwise some .inc files are not regenerated when the corresponding .td file changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122768 91177308-0d34-0410-b5e6-96231b3b80d8
41 lines
1.8 KiB
CMake
41 lines
1.8 KiB
CMake
# LLVM_TARGET_DEFINITIONS must contain the name of the .td file to process.
|
|
# Extra parameters for `tblgen' may come after `ofn' parameter.
|
|
# Adds the name of the generated file to TABLEGEN_OUTPUT.
|
|
|
|
macro(tablegen ofn)
|
|
file(GLOB local_tds "*.td")
|
|
file(GLOB_RECURSE global_tds "${LLVM_MAIN_SRC_DIR}/include/llvm/*.td")
|
|
|
|
if (IS_ABSOLUTE ${LLVM_TARGET_DEFINITIONS})
|
|
set(LLVM_TARGET_DEFINITIONS_ABSOLUTE ${LLVM_TARGET_DEFINITIONS})
|
|
else()
|
|
set(LLVM_TARGET_DEFINITIONS_ABSOLUTE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/${LLVM_TARGET_DEFINITIONS})
|
|
endif()
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp
|
|
# Generate tablegen output in a temporary file.
|
|
COMMAND ${LLVM_TABLEGEN_EXE} ${ARGN} -I ${CMAKE_CURRENT_SOURCE_DIR}
|
|
-I ${LLVM_MAIN_SRC_DIR}/lib/Target -I ${LLVM_MAIN_INCLUDE_DIR}
|
|
${LLVM_TARGET_DEFINITIONS_ABSOLUTE}
|
|
-o ${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp
|
|
# The file in LLVM_TARGET_DEFINITIONS may be not in the current
|
|
# directory and local_tds may not contain it, so we must
|
|
# explicitly list it here:
|
|
DEPENDS tblgen ${local_tds} ${global_tds} ${LLVM_TARGET_DEFINITIONS_ABSOLUTE}
|
|
COMMENT "Building ${ofn}..."
|
|
)
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn}
|
|
# Only update the real output file if there are any differences.
|
|
# This prevents recompilation of all the files depending on it if there
|
|
# aren't any.
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp
|
|
${CMAKE_CURRENT_BINARY_DIR}/${ofn}
|
|
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp
|
|
COMMENT ""
|
|
)
|
|
set(TABLEGEN_OUTPUT ${TABLEGEN_OUTPUT} ${CMAKE_CURRENT_BINARY_DIR}/${ofn})
|
|
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${ofn}
|
|
PROPERTIES GENERATED 1)
|
|
endmacro(tablegen)
|