1# LLVM_TARGET_DEFINITIONS must contain the name of the .td file to process. 2# Extra parameters for `tblgen' may come after `ofn' parameter. 3# Adds the name of the generated file to TABLEGEN_OUTPUT. 4 5macro(tablegen ofn) 6 file(GLOB local_tds "*.td") 7 file(GLOB_RECURSE global_tds "${LLVM_MAIN_SRC_DIR}/include/llvm/*.td") 8 9 add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp 10 COMMAND ${LLVM_TABLEGEN_EXE} ${ARGN} -I ${CMAKE_CURRENT_SOURCE_DIR} 11 -I ${LLVM_MAIN_SRC_DIR}/lib/Target -I ${LLVM_MAIN_INCLUDE_DIR} 12 ${CMAKE_CURRENT_SOURCE_DIR}/${LLVM_TARGET_DEFINITIONS} 13 -o ${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp 14 DEPENDS tblgen ${local_tds} ${global_tds} 15 COMMENT "Building ${ofn}.tmp..." 16 ) 17 add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn} 18 COMMAND ${CMAKE_COMMAND} -E copy_if_different 19 ${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp ${CMAKE_CURRENT_BINARY_DIR}/${ofn} 20 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp 21 COMMENT "Building ${ofn}..." 22 ) 23 set(TABLEGEN_OUTPUT ${TABLEGEN_OUTPUT} ${CMAKE_CURRENT_BINARY_DIR}/${ofn}) 24 set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${ofn} 25 PROPERTIES GENERATED 1) 26endmacro(tablegen) 27