rename function; hide more cross-compile details in functions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c704578..fe5e182 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -226,15 +226,16 @@
add_subdirectory(build_tools/third_party/vulkan_extensionlayer EXCLUDE_FROM_ALL)
if(CMAKE_CROSSCOMPILING)
- iree_build_host_executable(flatc BUILDONLY)
+ iree_declare_host_excutable(flatc BUILDONLY)
# Set the FLATBUFFERS_FLATC_EXECUTABLE. It controls where to find the flatc
# binary in BuildFlatBuffers().
- iree_get_host_exectuable_path(flatc FLATBUFFERS_FLATC_EXECUTABLE)
+ iree_get_executable_path(flatc FLATBUFFERS_FLATC_EXECUTABLE)
# Add a custom target to copy the flatc to the binary directory.
add_custom_target(iree_host_flatc
COMMAND "${CMAKE_COMMAND}" -E copy_if_different
"${IREE_HOST_BINARY_ROOT}/third_party/flatbuffers/flatc" "${IREE_HOST_BINARY_ROOT}/bin"
DEPENDS iree_host_build_flatc
+ COMMENT "Installing host flatc..."
)
endif()
diff --git a/build_tools/cmake/flatbuffer_cc_library.cmake b/build_tools/cmake/flatbuffer_cc_library.cmake
index 71219b9..d3ffd5e 100644
--- a/build_tools/cmake/flatbuffer_cc_library.cmake
+++ b/build_tools/cmake/flatbuffer_cc_library.cmake
@@ -106,7 +106,7 @@
)
if(CMAKE_CROSSCOMPILING)
- iree_get_host_exectuable_path(flatc _FLATC_PATH)
+ # Additionally depend on the flatc binary to drive compiling it.
add_dependencies("${_NAME}_gen" iree_host_flatc)
endif()
diff --git a/build_tools/cmake/iree_bytecode_module.cmake b/build_tools/cmake/iree_bytecode_module.cmake
index fa79ecf..8003b7d 100644
--- a/build_tools/cmake/iree_bytecode_module.cmake
+++ b/build_tools/cmake/iree_bytecode_module.cmake
@@ -59,12 +59,7 @@
set(_TRANSLATE_TOOL "iree-translate")
endif()
- if (CMAKE_CROSSCOMPILING)
- iree_get_host_exectuable_path(${_TRANSLATE_TOOL} _TRANSLATE_TOOL_EXECUTABLE)
- else()
- # Resolve the executable binary path from the target name.
- set(_TRANSLATE_TOOL_EXECUTABLE $<TARGET_FILE:${_TRANSLATE_TOOL}>)
- endif()
+ iree_get_executable_path(${_TRANSLATE_TOOL} _TRANSLATE_TOOL_EXECUTABLE)
set(_ARGS "${_FLAGS}")
list(APPEND _ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${_RULE_SRC}")
diff --git a/build_tools/cmake/iree_cc_binary.cmake b/build_tools/cmake/iree_cc_binary.cmake
index 211b809..d7384aa 100644
--- a/build_tools/cmake/iree_cc_binary.cmake
+++ b/build_tools/cmake/iree_cc_binary.cmake
@@ -71,6 +71,10 @@
endif()
if(_RULE_HOSTONLY AND CMAKE_CROSSCOMPILING)
+ # The binary is marked as host only. We need to declare the rules for
+ # generating them under host configuration so cross-compiling towards
+ # target we can still have this binary.
+ iree_declare_host_excutable(_RULE_NAME)
return()
endif()
diff --git a/build_tools/cmake/iree_cc_embed_data.cmake b/build_tools/cmake/iree_cc_embed_data.cmake
index 7852dc5..40fd0c0 100644
--- a/build_tools/cmake/iree_cc_embed_data.cmake
+++ b/build_tools/cmake/iree_cc_embed_data.cmake
@@ -79,12 +79,7 @@
list(APPEND _ARGS "${SRC}")
endforeach(SRC)
- if (CMAKE_CROSSCOMPILING)
- iree_get_host_exectuable_path(generate_cc_embed_data _EXE_PATH)
- else()
- # Resolve the executable binary path from the target name.
- set(_EXE_PATH $<TARGET_FILE:generate_cc_embed_data>)
- endif()
+ iree_get_executable_path(generate_cc_embed_data _EXE_PATH)
add_custom_command(
OUTPUT "${_RULE_H_FILE_OUTPUT}" "${_RULE_CC_FILE_OUTPUT}"
diff --git a/build_tools/cmake/iree_copts.cmake b/build_tools/cmake/iree_copts.cmake
index fbc40e7..f66a7c9 100644
--- a/build_tools/cmake/iree_copts.cmake
+++ b/build_tools/cmake/iree_copts.cmake
@@ -143,12 +143,10 @@
${PROJECT_BINARY_DIR}/third_party/llvm-project/llvm/tools/mlir/include
)
-if(CMAKE_CROSSCOMPILING)
- iree_get_host_exectuable_path(iree-tblgen IREE_TABLEGEN_EXE)
-else()
- set(MLIR_TABLEGEN_EXE mlir-tblgen)
- set(IREE_TABLEGEN_EXE iree-tblgen)
-endif()
+set(MLIR_TABLEGEN_EXE mlir-tblgen)
+# iree-tblgen is not defined using the add_tablegen mechanism as other TableGen
+# tools in LLVM.
+iree_get_executable_path(iree-tblgen IREE_TABLEGEN_EXE)
#-------------------------------------------------------------------------------
# Third party: tensorflow
diff --git a/build_tools/cmake/iree_cross_compile.cmake b/build_tools/cmake/iree_cross_compile.cmake
index 8f7d9fa..5bed987 100644
--- a/build_tools/cmake/iree_cross_compile.cmake
+++ b/build_tools/cmake/iree_cross_compile.cmake
@@ -130,18 +130,6 @@
endif()
endfunction()
-# iree_get_host_executable_path
-#
-# Gets the path to a host executable.
-#
-# Paramters:
-# - target: the target to build on host.
-# - output_path_var: variable name for receiving the path to the built target.
-function(iree_get_host_exectuable_path target output_path_var)
- set(output_path "${IREE_HOST_BINARY_ROOT}/bin/${target}")
- set(${output_path_var} "${output_path}" PARENT_SCOPE)
-endfunction()
-
# iree_host_install
#
# Defines custom commands and targets for installing the given `target`. The
@@ -160,7 +148,7 @@
set(prefix_option -DCMAKE_INSTALL_PREFIX="${_RULE_PREFIX}")
endif()
- iree_get_host_exectuable_path(${target} output_path)
+ iree_get_executable_path(${target} output_path)
add_custom_command(
OUTPUT ${output_path}
@@ -174,7 +162,7 @@
add_custom_target(iree_host_install_${target} DEPENDS ${output_path})
endfunction()
-# iree_build_host_executable
+# iree_declare_host_excutable
#
# Generates custom commands and targets for building and installing a tool on
# host for cross-compilation.
@@ -183,10 +171,10 @@
# - target: the target to build on host.
# - BUILDONLY: only generates commands for building the target.
# - DEPENDS: any additional dependencies for the target.
-function(iree_build_host_executable target)
+function(iree_declare_host_excutable target)
cmake_parse_arguments(_RULE "BUILDONLY" "" "DEPENDS" ${ARGN})
- iree_get_host_exectuable_path(${target} output_path)
+ iree_get_executable_path(${target} output_path)
iree_get_build_command(${target} ${IREE_HOST_BINARY_ROOT} build_cmd)
diff --git a/build_tools/cmake/iree_macros.cmake b/build_tools/cmake/iree_macros.cmake
index 4929146..9fa6697 100644
--- a/build_tools/cmake/iree_macros.cmake
+++ b/build_tools/cmake/iree_macros.cmake
@@ -72,6 +72,28 @@
set(${PACKAGE_DIR} ${_PACKAGE_DIR} PARENT_SCOPE)
endfunction()
+# iree_get_executable_path
+#
+# Gets the path to an executable in a cross-compilation-aware way. This is
+# meant to be used for binaries that are used to generate source files and
+# can only be built on host.
+#
+# Paramters:
+# - target: the target to build on host.
+# - output_path_var: variable name for receiving the path to the built target.
+function(iree_get_executable_path target output_path_var)
+ if(CMAKE_CROSSCOMPILING)
+ # The target is defined in the CMake invocation for host. We don't have
+ # access to the target; relying on the path here.
+ set(output_path "${IREE_HOST_BINARY_ROOT}/bin/${target}")
+ set(${output_path_var} "${output_path}" PARENT_SCOPE)
+ else()
+ # The target is defined in this CMake invocation. We can query the location
+ # directly from CMake.
+ set(${output_path_var} "$<TARGET_FILE:${target}>" PARENT_SCOPE)
+ endif()
+endfunction()
+
#-------------------------------------------------------------------------------
# select()-like Evaluation
#-------------------------------------------------------------------------------
diff --git a/build_tools/embed_data/CMakeLists.txt b/build_tools/embed_data/CMakeLists.txt
index 3f9410e..4efad40 100644
--- a/build_tools/embed_data/CMakeLists.txt
+++ b/build_tools/embed_data/CMakeLists.txt
@@ -13,19 +13,19 @@
# limitations under the License.
if(CMAKE_CROSSCOMPILING)
- iree_build_host_executable(generate_cc_embed_data)
+ iree_declare_host_excutable(generate_cc_embed_data)
else()
add_executable(generate_cc_embed_data)
-target_sources(generate_cc_embed_data PRIVATE generate_cc_embed_data.cc)
-set_target_properties(generate_cc_embed_data PROPERTIES OUTPUT_NAME generate_cc_embed_data)
+ target_sources(generate_cc_embed_data PRIVATE generate_cc_embed_data.cc)
+ set_target_properties(generate_cc_embed_data PROPERTIES OUTPUT_NAME generate_cc_embed_data)
-target_link_libraries(generate_cc_embed_data
- absl::flags
- absl::flags_parse
- absl::strings
- absl::time
-)
-install(TARGETS generate_cc_embed_data
- COMPONENT generate_cc_embed_data
- RUNTIME DESTINATION bin)
+ target_link_libraries(generate_cc_embed_data
+ absl::flags
+ absl::flags_parse
+ absl::strings
+ absl::time
+ )
+ install(TARGETS generate_cc_embed_data
+ COMPONENT generate_cc_embed_data
+ RUNTIME DESTINATION bin)
endif()
diff --git a/iree/tools/CMakeLists.txt b/iree/tools/CMakeLists.txt
index 00c9c6e..c881b4c 100644
--- a/iree/tools/CMakeLists.txt
+++ b/iree/tools/CMakeLists.txt
@@ -104,10 +104,6 @@
)
endif()
-if(CMAKE_CROSSCOMPILING)
- iree_build_host_executable(iree-tblgen)
-endif()
-
if(${IREE_BUILD_COMPILER})
iree_cc_library(
NAME
@@ -388,12 +384,6 @@
iree::vm::variant_list
)
-if(CMAKE_CROSSCOMPILING)
- iree_build_host_executable(iree-opt)
- iree_build_host_executable(iree-run-mlir)
- iree_build_host_executable(iree-translate)
-endif()
-
if(${IREE_ENABLE_LLVM})
add_custom_target(IreeFileCheck ALL
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/IreeFileCheck.sh IreeFileCheck