Fix naming and function argument parsing sytle
diff --git a/build_tools/cmake/iree_cross_compile.cmake b/build_tools/cmake/iree_cross_compile.cmake index e2d9da0..e70da92 100644 --- a/build_tools/cmake/iree_cross_compile.cmake +++ b/build_tools/cmake/iree_cross_compile.cmake
@@ -20,8 +20,8 @@ # configuration means a new IREE CMake invocation with its own set of # parameters. # -# This function defines two custom target, `iree_prepare_${config_name}_dir` -# and `iree_configure_${config_name}`, to drive the creation of a directory +# This function defines two custom target, `iree_prepare_${CONFIG_NAME}_dir` +# and `iree_configure_${CONFIG_NAME}`, to drive the creation of a directory # for hosting the new IREE configuration and its corresponding `CMakeCache.txt` # file, respectively. Callers can then depend on either the file or the # target to make sure the configuration is invoked as a dependency. @@ -34,36 +34,36 @@ # by another CMake invocation configured by this function. # # Supported CMake options: -# - IREE_<config_name>_BINARY_ROOT: the root directory for containing IREE build -# artifacts for the given `config_name`. If not specified in caller, this is -# set to a directory named as `config_name` under the current CMake binary +# - IREE_<CONFIG_NAME>_BINARY_ROOT: the root directory for containing IREE build +# artifacts for the given `CONFIG_NAME`. If not specified in caller, this is +# set to a directory named as `CONFIG_NAME` under the current CMake binary # directory. -# - IREE_<config_name>_C_COMPILER: C compiler for the given `config_name`. +# - IREE_<CONFIG_NAME>_C_COMPILER: C compiler for the given `CONFIG_NAME`. # This must be defined by the caller. -# - IREE_<config_name>_CXX_COMPILER: C++ compiler for the given `config_name`. +# - IREE_<CONFIG_NAME>_CXX_COMPILER: C++ compiler for the given `CONFIG_NAME`. # This must be defined by the caller. -# - IREE_<config_name>_<option>: switch for the given `option` specifically for -# `config_name`. If missing, default to OFF for bool options; default to +# - IREE_<CONFIG_NAME>_<option>: switch for the given `option` specifically for +# `CONFIG_NAME`. If missing, default to OFF for bool options; default to # IREE_<option> for non-bool variables. -function(iree_create_configuration config_name) - # Set IREE_${config_name}_BINARY_ROOT if missing. - if(NOT DEFINED IREE_${config_name}_BINARY_ROOT) - set(IREE_${config_name}_BINARY_ROOT "${CMAKE_CURRENT_BINARY_DIR}/${config_name}") - set(IREE_${config_name}_BINARY_ROOT ${IREE_${config_name}_BINARY_ROOT} PARENT_SCOPE) - message(STATUS "Setting ${config_name} build directory to ${IREE_${config_name}_BINARY_ROOT}") +function(iree_create_configuration CONFIG_NAME) + # Set IREE_${CONFIG_NAME}_BINARY_ROOT if missing. + if(NOT DEFINED IREE_${CONFIG_NAME}_BINARY_ROOT) + set(IREE_${CONFIG_NAME}_BINARY_ROOT "${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}") + set(IREE_${CONFIG_NAME}_BINARY_ROOT ${IREE_${CONFIG_NAME}_BINARY_ROOT} PARENT_SCOPE) + message(STATUS "Setting ${CONFIG_NAME} build directory to ${IREE_${CONFIG_NAME}_BINARY_ROOT}") endif() - set(_CONFIG_BINARY_ROOT ${IREE_${config_name}_BINARY_ROOT}) + set(_CONFIG_BINARY_ROOT ${IREE_${CONFIG_NAME}_BINARY_ROOT}) - set(_CONFIG_C_COMPILER ${IREE_${config_name}_C_COMPILER}) - set(_CONFIG_CXX_COMPILER ${IREE_${config_name}_CXX_COMPILER}) + set(_CONFIG_C_COMPILER ${IREE_${CONFIG_NAME}_C_COMPILER}) + set(_CONFIG_CXX_COMPILER ${IREE_${CONFIG_NAME}_CXX_COMPILER}) # Check the compilers are specified in the caller. if("${_CONFIG_C_COMPILER}" STREQUAL "") - message(FATAL_ERROR "Must define IREE_${config_name}_C_COMPILER for \"${config_name}\" configuration build") + message(FATAL_ERROR "Must define IREE_${CONFIG_NAME}_C_COMPILER for \"${CONFIG_NAME}\" configuration build") endif() if("${_CONFIG_CXX_COMPILER}" STREQUAL "") - message(FATAL_ERROR "Must define IREE_${config_name}_CXX_COMPILER for \"${config_name}\" configuration build") + message(FATAL_ERROR "Must define IREE_${CONFIG_NAME}_CXX_COMPILER for \"${CONFIG_NAME}\" configuration build") endif() add_custom_command(OUTPUT ${_CONFIG_BINARY_ROOT} @@ -72,20 +72,20 @@ # Give it a custom target so we can drive the generation manually # when useful. - add_custom_target(iree_prepare_${config_name}_dir DEPENDS ${_CONFIG_BINARY_ROOT}) + add_custom_target(iree_prepare_${CONFIG_NAME}_dir DEPENDS ${_CONFIG_BINARY_ROOT}) # LINT.IfChange(iree_cross_compile_options) - iree_to_bool(_CONFIG_ENABLE_RUNTIME_TRACING "${IREE_${config_name}_ENABLE_RUNTIME_TRACING}") - iree_to_bool(_CONFIG_ENABLE_MLIR "${IREE_${config_name}_ENABLE_MLIR}") - iree_to_bool(_CONFIG_ENABLE_EMITC "${IREE_${config_name}_ENABLE_EMITC}") + iree_to_bool(_CONFIG_ENABLE_RUNTIME_TRACING "${IREE_${CONFIG_NAME}_ENABLE_RUNTIME_TRACING}") + iree_to_bool(_CONFIG_ENABLE_MLIR "${IREE_${CONFIG_NAME}_ENABLE_MLIR}") + iree_to_bool(_CONFIG_ENABLE_EMITC "${IREE_${CONFIG_NAME}_ENABLE_EMITC}") - iree_to_bool(_CONFIG_BUILD_COMPILER "${IREE_${config_name}_BUILD_COMPILER}") - iree_to_bool(_CONFIG_BUILD_TESTS "${IREE_${config_name}_BUILD_TESTS}") - iree_to_bool(_CONFIG_BUILD_DOCS "${IREE_${config_name}_BUILD_DOCS}") - iree_to_bool(_CONFIG_BUILD_SAMPLES "${IREE_${config_name}_BUILD_SAMPLES}") - iree_to_bool(_CONFIG_BUILD_DEBUGGER "${IREE_${config_name}_BUILD_DEBUGGER}") - iree_to_bool(_CONFIG_BUILD_PYTHON_BINDINGS "${IREE_${config_name}_BUILD_PYTHON_BINDINGS}") - iree_to_bool(_CONFIG_BUILD_EXPERIMENTAL "${IREE_${config_name}_BUILD_EXPERIMENTAL}") + iree_to_bool(_CONFIG_BUILD_COMPILER "${IREE_${CONFIG_NAME}_BUILD_COMPILER}") + iree_to_bool(_CONFIG_BUILD_TESTS "${IREE_${CONFIG_NAME}_BUILD_TESTS}") + iree_to_bool(_CONFIG_BUILD_DOCS "${IREE_${CONFIG_NAME}_BUILD_DOCS}") + iree_to_bool(_CONFIG_BUILD_SAMPLES "${IREE_${CONFIG_NAME}_BUILD_SAMPLES}") + iree_to_bool(_CONFIG_BUILD_DEBUGGER "${IREE_${CONFIG_NAME}_BUILD_DEBUGGER}") + iree_to_bool(_CONFIG_BUILD_PYTHON_BINDINGS "${IREE_${CONFIG_NAME}_BUILD_PYTHON_BINDINGS}") + iree_to_bool(_CONFIG_BUILD_EXPERIMENTAL "${IREE_${CONFIG_NAME}_BUILD_EXPERIMENTAL}") # Escape semicolons in the targets list so that CMake doesn't expand them to # spaces. @@ -93,10 +93,10 @@ string(REPLACE ";" "$<SEMICOLON>" _CONFIG_TARGET_BACKENDS_TO_BUILD "${IREE_TARGET_BACKENDS_TO_BUILD}") # LINT.ThenChange(https://github.com/google/iree/tree/master/CMakeLists.txt:iree_options) - message(STATUS "C compiler for ${config_name} build: ${_CONFIG_C_COMPILER}") - message(STATUS "C++ compiler for ${config_name} build: ${_CONFIG_CXX_COMPILER}") + message(STATUS "C compiler for ${CONFIG_NAME} build: ${_CONFIG_C_COMPILER}") + message(STATUS "C++ compiler for ${CONFIG_NAME} build: ${_CONFIG_CXX_COMPILER}") - add_custom_command(OUTPUT ${IREE_${config_name}_BINARY_ROOT}/CMakeCache.txt + add_custom_command(OUTPUT ${IREE_${CONFIG_NAME}_BINARY_ROOT}/CMakeCache.txt COMMAND "${CMAKE_COMMAND}" "${PROJECT_SOURCE_DIR}" -G "${CMAKE_GENERATOR}" -DCMAKE_MAKE_PROGRAM="${CMAKE_MAKE_PROGRAM}" -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" @@ -115,30 +115,34 @@ -DIREE_HAL_DRIVERS_TO_BUILD="${_CONFIG_HAL_DRIVERS_TO_BUILD}" -DIREE_TARGET_BACKENDS_TO_BUILD="${_CONFIG_TARGET_BACKENDS_TO_BUILD}" WORKING_DIRECTORY ${_CONFIG_BINARY_ROOT} - DEPENDS iree_prepare_${config_name}_dir - COMMENT "Configuring IREE for ${config_name} build...") + DEPENDS iree_prepare_${CONFIG_NAME}_dir + COMMENT "Configuring IREE for ${CONFIG_NAME} build...") - add_custom_target(iree_configure_${config_name} DEPENDS ${_CONFIG_BINARY_ROOT}/CMakeCache.txt) + add_custom_target(iree_configure_${CONFIG_NAME} DEPENDS ${_CONFIG_BINARY_ROOT}/CMakeCache.txt) endfunction() # iree_get_build_command # -# Gets the CMake build command for the given `target`. +# Gets the CMake build command for the given `TARGET`. # # Parameters: -# - target: the target to build. -# - bin_dir: root binary directory containing CMakeCache.txt. -# - cmd_var: variable name for receiving the build command. -function(iree_get_build_command target bin_dir cmd_var) - cmake_parse_arguments(_RULE "" "CONFIG" "" ${ARGN}) +# TARGET: the target to build. +# BINDIR: root binary directory containing CMakeCache.txt. +# CMDVAR: variable name for receiving the build command. +function(iree_get_build_command TARGET) + cmake_parse_arguments(_RULE "" "BINDIR;CMDVAR;CONFIG" "" ${ARGN}) if(NOT _RULE_CONFIG) set(_RULE_CONFIG "$<CONFIG>") endif() if (CMAKE_GENERATOR MATCHES "Make") # Use special command for Makefiles to support parallelism. - set(${cmd_var} "$(MAKE)" "-C" "${bin_dir}" "${target}" PARENT_SCOPE) + set(${_RULE_CMDVAR} + "$(MAKE)" "-C" "${_RULE_BINDIR}" "${TARGET}" PARENT_SCOPE) else() - set(${cmd_var} "${CMAKE_COMMAND}" --build ${bin_dir} --target ${target} --config ${_RULE_CONFIG} PARENT_SCOPE) + set(${_RULE_CMDVAR} + "${CMAKE_COMMAND}" --build ${_RULE_BINDIR} + --target ${TARGET} + --config ${_RULE_CONFIG} PARENT_SCOPE) endif() endfunction() @@ -146,17 +150,17 @@ # # Defines custom commands and targets for installing the given `target` under # host configuration. The custom target for install will be named as -# `iree_host_install_${target}`. +# `iree_host_install_${TARGET}`. # # Precondition: -# - iree_create_configuration(HOST) is invoked previously. +# iree_create_configuration(HOST) is invoked previously. # # Parameters: -# - COMPONENT: installation component; used for filtering installation targets. -# - PREFIX: the root installation path prefix. -# - DEPENDS: addtional dependencies for the installation. -function(iree_host_install target) - cmake_parse_arguments(_RULE "" "COMPONENT;PREFIX" "DEPENDS" ${ARGN}) +# COMPONENT: installation component; used for filtering installation targets. +# PREFIX: the root installation path prefix. +# DEPENDS: addtional dependencies for the installation. +function(iree_host_install TARGET) + cmake_parse_arguments(_RULE "" "TARGET;COMPONENT;PREFIX" "DEPENDS" ${ARGN}) if(_RULE_COMPONENT) set(component_option -DCMAKE_INSTALL_COMPONENT="${_RULE_COMPONENT}") endif() @@ -164,7 +168,7 @@ set(prefix_option -DCMAKE_INSTALL_PREFIX="${_RULE_PREFIX}") endif() - iree_get_executable_path(${target} output_path) + iree_get_executable_path(${TARGET} output_path) add_custom_command( OUTPUT ${output_path} @@ -175,7 +179,7 @@ # Give it a custom target so we can drive the generation manually # when useful. - add_custom_target(iree_host_install_${target} DEPENDS ${output_path}) + add_custom_target(iree_host_install_${TARGET} DEPENDS ${output_path}) endfunction() # iree_declare_host_excutable @@ -184,36 +188,38 @@ # host for cross-compilation. # # Precondition: -# - iree_create_configuration(HOST) is invoked previously. +# iree_create_configuration(HOST) is invoked previously. # # Parameters: -# - target: the target to build on host. -# - BUILDONLY: only generates commands for building the target. -# - DEPENDS: any additional dependencies for the target. -function(iree_declare_host_excutable target) +# TARGET: the target to build on host. +# BUILDONLY: only generates commands for building the target. +# DEPENDS: any additional dependencies for the target. +function(iree_declare_host_excutable TARGET) cmake_parse_arguments(_RULE "BUILDONLY" "" "DEPENDS" ${ARGN}) - iree_get_executable_path(${target} output_path) + iree_get_executable_path(${TARGET} output_path) - iree_get_build_command(${target} ${IREE_HOST_BINARY_ROOT} build_cmd) + iree_get_build_command(${TARGET} + BINDIR ${IREE_HOST_BINARY_ROOT} + CMDVAR build_cmd) - add_custom_target(iree_host_build_${target} + add_custom_target(iree_host_build_${TARGET} COMMAND ${build_cmd} DEPENDS iree_configure_HOST ${_RULE_DEPENDS} WORKING_DIRECTORY "${IREE_HOST_BINARY_ROOT}" - COMMENT "Building host ${target}..." + COMMENT "Building host ${TARGET}..." USES_TERMINAL) if(_RULE_BUILDONLY) return() endif() - iree_host_install(${target} - COMPONENT ${target} + iree_host_install(${TARGET} + COMPONENT ${TARGET} PREFIX ${IREE_HOST_BINARY_ROOT} - DEPENDS iree_host_build_${target}) + DEPENDS iree_host_build_${TARGET}) # Give it a custom target so we can drive the generation manually # when useful. - add_custom_target(iree_host_${target} DEPENDS "${output_path}") + add_custom_target(iree_host_${TARGET} DEPENDS "${output_path}") endfunction()
diff --git a/build_tools/cmake/iree_macros.cmake b/build_tools/cmake/iree_macros.cmake index dddbc6c..64f1201 100644 --- a/build_tools/cmake/iree_macros.cmake +++ b/build_tools/cmake/iree_macros.cmake
@@ -31,11 +31,11 @@ # iree_to_bool # # Sets `variable` to `ON` if `value` is true and `OFF` otherwise. -function(iree_to_bool variable value) - if(value) - set(${variable} "ON" PARENT_SCOPE) +function(iree_to_bool VARIABLE VALUE) + if(VALUE) + set(${VARIABLE} "ON" PARENT_SCOPE) else() - set(${variable} "OFF" PARENT_SCOPE) + set(${VARIABLE} "OFF" PARENT_SCOPE) endif() endfunction() @@ -215,12 +215,12 @@ # only be built on host. # # Parameters: -# - target: the target to take on dependencies -# - dependency: additional dependencies to append to target -function(iree_add_executable_dependencies target dependency) +# TARGET: the target to take on dependencies +# DEPENDENCY: additional dependencies to append to target +function(iree_add_executable_dependencies TARGET DEPENDENCY) if(CMAKE_CROSSCOMPILING) - add_dependencies(${target} iree_host_${dependency}) + add_dependencies(${TARGET} iree_host_${DEPENDENCY}) else() - add_dependencies(${target} ${dependency}) + add_dependencies(${TARGET} ${DEPENDENCY}) endif() endfunction()