# llvm_ExternalProject_BuildCmd(out_var target)
# Utility function for constructing command lines for external project targets
function(llvm_ExternalProject_BuildCmd out_var target bin_dir)
+ cmake_parse_arguments(ARG "" "CONFIGURATION" "" ${ARGN})
+ if(NOT ARG_CONFIGURATION)
+ set(ARG_CONFIGURATION "$<CONFIGURATION>")
+ endif()
if (CMAKE_GENERATOR MATCHES "Make")
# Use special command for Makefiles to support parallelism.
- set(${out_var} "$(MAKE)" "-C" "${BINARY_DIR}" "${target}" PARENT_SCOPE)
+ set(${out_var} "$(MAKE)" "-C" "${bin_dir}" "${target}" PARENT_SCOPE)
else()
set(${out_var} ${CMAKE_COMMAND} --build ${bin_dir} --target ${target}
- --config $<CONFIGURATION> PARENT_SCOPE)
+ --config ${ARG_CONFIGURATION} PARENT_SCOPE)
endif()
endfunction()
# Extra parameters for `tblgen' may come after `ofn' parameter.
# Adds the name of the generated file to TABLEGEN_OUTPUT.
+include(LLVMExternalProjectUtils)
+
function(tablegen project ofn)
# Validate calling context.
foreach(v
endfunction()
if(LLVM_USE_HOST_TOOLS)
- add_custom_command(OUTPUT LIB_LLVMSUPPORT
- COMMAND ${CMAKE_COMMAND} --build . --target LLVMSupport --config Release
- DEPENDS CONFIGURE_LLVM_NATIVE
- WORKING_DIRECTORY ${LLVM_NATIVE_BUILD}
- COMMENT "Building libLLVMSupport for native TableGen...")
- add_custom_target(NATIVE_LIB_LLVMSUPPORT DEPENDS LIB_LLVMSUPPORT)
-
+ llvm_ExternalProject_BuildCmd(tblgen_build_cmd LLVMSupport
+ ${LLVM_NATIVE_BUILD}
+ CONFIGURATION Release)
add_custom_command(OUTPUT LIB_LLVMTABLEGEN
- COMMAND ${CMAKE_COMMAND} --build . --target LLVMTableGen --config Release
+ COMMAND ${tblgen_build_cmd}
DEPENDS CONFIGURE_LLVM_NATIVE
WORKING_DIRECTORY ${LLVM_NATIVE_BUILD}
- COMMENT "Building libLLVMTableGen for native TableGen...")
+ COMMENT "Building libLLVMTableGen for native TableGen..."
+ USES_TERMINAL)
add_custom_target(NATIVE_LIB_LLVMTABLEGEN DEPENDS LIB_LLVMTABLEGEN)
endif(LLVM_USE_HOST_TOOLS)
endif()
set(${project}_TABLEGEN_EXE ${${project}_TABLEGEN_EXE} PARENT_SCOPE)
+ llvm_ExternalProject_BuildCmd(tblgen_build_cmd ${target}
+ ${LLVM_NATIVE_BUILD}
+ CONFIGURATION Release)
add_custom_command(OUTPUT ${${project}_TABLEGEN_EXE}
- COMMAND ${CMAKE_COMMAND} --build . --target ${target} --config Release
- DEPENDS ${target} NATIVE_LIB_LLVMSUPPORT NATIVE_LIB_LLVMTABLEGEN
+ COMMAND ${tblgen_build_cmd}
+ DEPENDS ${target} NATIVE_LIB_LLVMTABLEGEN
WORKING_DIRECTORY ${LLVM_NATIVE_BUILD}
- COMMENT "Building native TableGen...")
+ COMMENT "Building native TableGen..."
+ USES_TERMINAL)
add_custom_target(${project}-tablegen-host DEPENDS ${${project}_TABLEGEN_EXE})
set(${project}_TABLEGEN_TARGET ${project}-tablegen-host PARENT_SCOPE)
endif()