[cmake] NFC: Perform early exit where possible
This reduces the level of nesting and should make the code more
readable.
Closes https://github.com/google/iree/pull/2088
COPYBARA_INTEGRATE_REVIEW=https://github.com/google/iree/pull/2088 from antiagainst:cmake-early-exit f13aa5a3375da741d83a2b78d36f205b22b27c27
PiperOrigin-RevId: 314373942
diff --git a/build_tools/cmake/external_cc_library.cmake b/build_tools/cmake/external_cc_library.cmake
index 65c03de..94f56dc 100644
--- a/build_tools/cmake/external_cc_library.cmake
+++ b/build_tools/cmake/external_cc_library.cmake
@@ -85,106 +85,108 @@
${ARGN}
)
- if(NOT _RULE_TESTONLY OR IREE_BUILD_TESTS)
- # Prefix the library with the package name.
- string(REPLACE "::" "_" _PACKAGE_NAME ${_RULE_PACKAGE})
- set(_NAME "${_PACKAGE_NAME}_${_RULE_NAME}")
+ if(_RULE_TESTONLY AND NOT IREE_BUILD_TESTS)
+ return()
+ endif()
- # Prefix paths with the root.
- list(TRANSFORM _RULE_HDRS PREPEND ${_RULE_ROOT})
- list(TRANSFORM _RULE_SRCS PREPEND ${_RULE_ROOT})
+ # Prefix the library with the package name.
+ string(REPLACE "::" "_" _PACKAGE_NAME ${_RULE_PACKAGE})
+ set(_NAME "${_PACKAGE_NAME}_${_RULE_NAME}")
- # Check if this is a header-only library.
- # Note that as of February 2019, many popular OS's (for example, Ubuntu
- # 16.04 LTS) only come with cmake 3.5 by default. For this reason, we can't
- # use list(FILTER...)
- set(_CC_SRCS "${_RULE_SRCS}")
- foreach(src_file IN LISTS _CC_SRCS)
- if(${src_file} MATCHES ".*\\.(h|inc)")
- list(REMOVE_ITEM _CC_SRCS "${src_file}")
- endif()
- endforeach()
- if("${_CC_SRCS}" STREQUAL "")
- set(_RULE_IS_INTERFACE 1)
+ # Prefix paths with the root.
+ list(TRANSFORM _RULE_HDRS PREPEND ${_RULE_ROOT})
+ list(TRANSFORM _RULE_SRCS PREPEND ${_RULE_ROOT})
+
+ # Check if this is a header-only library.
+ # Note that as of February 2019, many popular OS's (for example, Ubuntu
+ # 16.04 LTS) only come with cmake 3.5 by default. For this reason, we can't
+ # use list(FILTER...)
+ set(_CC_SRCS "${_RULE_SRCS}")
+ foreach(src_file IN LISTS _CC_SRCS)
+ if(${src_file} MATCHES ".*\\.(h|inc)")
+ list(REMOVE_ITEM _CC_SRCS "${src_file}")
+ endif()
+ endforeach()
+ if("${_CC_SRCS}" STREQUAL "")
+ set(_RULE_IS_INTERFACE 1)
+ else()
+ set(_RULE_IS_INTERFACE 0)
+ endif()
+
+ if(NOT _RULE_IS_INTERFACE)
+ add_library(${_NAME} STATIC "")
+ target_sources(${_NAME}
+ PRIVATE
+ ${_RULE_SRCS}
+ ${_RULE_HDRS}
+ )
+ target_include_directories(${_NAME}
+ PUBLIC
+ "$<BUILD_INTERFACE:${IREE_COMMON_INCLUDE_DIRS}>"
+ "$<BUILD_INTERFACE:${_RULE_INCLUDES}>"
+ )
+ target_compile_options(${_NAME}
+ PRIVATE
+ ${_RULE_COPTS}
+ ${IREE_DEFAULT_COPTS}
+ )
+ target_link_libraries(${_NAME}
+ PUBLIC
+ ${_RULE_DEPS}
+ PRIVATE
+ ${_RULE_LINKOPTS}
+ ${IREE_DEFAULT_LINKOPTS}
+ )
+ target_compile_definitions(${_NAME}
+ PUBLIC
+ ${_RULE_DEFINES}
+ )
+ iree_add_data_dependencies(NAME ${_NAME} DATA ${_RULE_DATA})
+
+ if(DEFINED _RULE_ALWAYSLINK)
+ set_property(TARGET ${_NAME} PROPERTY ALWAYSLINK 1)
+ endif()
+
+ # Add all external targets to a a folder in the IDE for organization.
+ if(_RULE_PUBLIC)
+ set_property(TARGET ${_NAME} PROPERTY FOLDER third_party)
+ elseif(_RULE_TESTONLY)
+ set_property(TARGET ${_NAME} PROPERTY FOLDER third_party/test)
else()
- set(_RULE_IS_INTERFACE 0)
+ set_property(TARGET ${_NAME} PROPERTY FOLDER third_party/internal)
endif()
- if(NOT _RULE_IS_INTERFACE)
- add_library(${_NAME} STATIC "")
- target_sources(${_NAME}
- PRIVATE
- ${_RULE_SRCS}
- ${_RULE_HDRS}
- )
- target_include_directories(${_NAME}
- PUBLIC
- "$<BUILD_INTERFACE:${IREE_COMMON_INCLUDE_DIRS}>"
- "$<BUILD_INTERFACE:${_RULE_INCLUDES}>"
- )
- target_compile_options(${_NAME}
- PRIVATE
- ${_RULE_COPTS}
- ${IREE_DEFAULT_COPTS}
- )
- target_link_libraries(${_NAME}
- PUBLIC
- ${_RULE_DEPS}
- PRIVATE
- ${_RULE_LINKOPTS}
- ${IREE_DEFAULT_LINKOPTS}
- )
- target_compile_definitions(${_NAME}
- PUBLIC
- ${_RULE_DEFINES}
- )
- iree_add_data_dependencies(NAME ${_NAME} DATA ${_RULE_DATA})
+ # INTERFACE libraries can't have the CXX_STANDARD property set
+ set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD ${IREE_CXX_STANDARD})
+ set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
+ else()
+ # Generating header-only library
+ add_library(${_NAME} INTERFACE)
+ target_include_directories(${_NAME}
+ INTERFACE
+ "$<BUILD_INTERFACE:${IREE_COMMON_INCLUDE_DIRS}>"
+ "$<BUILD_INTERFACE:${_RULE_INCLUDES}>"
+ )
+ target_compile_options(${_NAME}
+ INTERFACE
+ ${_RULE_COPTS}
+ ${IREE_DEFAULT_COPTS}
+ )
+ target_link_libraries(${_NAME}
+ INTERFACE
+ ${_RULE_DEPS}
+ ${_RULE_LINKOPTS}
+ ${IREE_DEFAULT_LINKOPTS}
+ )
+ iree_add_data_dependencies(NAME ${_NAME} DATA ${_RULE_DATA})
+ target_compile_definitions(${_NAME}
+ INTERFACE
+ ${_RULE_DEFINES}
+ )
+ endif()
- if(DEFINED _RULE_ALWAYSLINK)
- set_property(TARGET ${_NAME} PROPERTY ALWAYSLINK 1)
- endif()
-
- # Add all external targets to a a folder in the IDE for organization.
- if(_RULE_PUBLIC)
- set_property(TARGET ${_NAME} PROPERTY FOLDER third_party)
- elseif(_RULE_TESTONLY)
- set_property(TARGET ${_NAME} PROPERTY FOLDER third_party/test)
- else()
- set_property(TARGET ${_NAME} PROPERTY FOLDER third_party/internal)
- endif()
-
- # INTERFACE libraries can't have the CXX_STANDARD property set
- set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD ${IREE_CXX_STANDARD})
- set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
- else()
- # Generating header-only library
- add_library(${_NAME} INTERFACE)
- target_include_directories(${_NAME}
- INTERFACE
- "$<BUILD_INTERFACE:${IREE_COMMON_INCLUDE_DIRS}>"
- "$<BUILD_INTERFACE:${_RULE_INCLUDES}>"
- )
- target_compile_options(${_NAME}
- INTERFACE
- ${_RULE_COPTS}
- ${IREE_DEFAULT_COPTS}
- )
- target_link_libraries(${_NAME}
- INTERFACE
- ${_RULE_DEPS}
- ${_RULE_LINKOPTS}
- ${IREE_DEFAULT_LINKOPTS}
- )
- iree_add_data_dependencies(NAME ${_NAME} DATA ${_RULE_DATA})
- target_compile_definitions(${_NAME}
- INTERFACE
- ${_RULE_DEFINES}
- )
- endif()
-
- add_library(${_RULE_PACKAGE}::${_RULE_NAME} ALIAS ${_NAME})
- if(${_RULE_PACKAGE} STREQUAL ${_RULE_NAME})
- add_library(${_RULE_PACKAGE} ALIAS ${_NAME})
- endif()
+ add_library(${_RULE_PACKAGE}::${_RULE_NAME} ALIAS ${_NAME})
+ if(${_RULE_PACKAGE} STREQUAL ${_RULE_NAME})
+ add_library(${_RULE_PACKAGE} ALIAS ${_NAME})
endif()
endfunction()
diff --git a/build_tools/cmake/external_tablegen_library.cmake b/build_tools/cmake/external_tablegen_library.cmake
index 72f682a..88f3f7b 100644
--- a/build_tools/cmake/external_tablegen_library.cmake
+++ b/build_tools/cmake/external_tablegen_library.cmake
@@ -26,33 +26,35 @@
${ARGN}
)
- if(NOT _RULE_TESTONLY OR IREE_BUILD_TESTS)
- # Prefix the library with the package name.
- string(REPLACE "::" "_" _PACKAGE_NAME ${_RULE_PACKAGE})
- set(_NAME "${_PACKAGE_NAME}_${_RULE_NAME}")
-
- # Prefix source paths with the root.
- list(TRANSFORM _RULE_SRCS PREPEND ${_RULE_ROOT})
-
- set(LLVM_TARGET_DEFINITIONS ${_RULE_SRCS})
- set(_INCLUDE_DIRS ${IREE_COMMON_INCLUDE_DIRS})
- list(APPEND _INCLUDE_DIRS ${_RULE_ROOT})
- list(TRANSFORM _INCLUDE_DIRS PREPEND "-I")
- set(_OUTPUTS)
- while(_RULE_OUTS)
- list(GET _RULE_OUTS 0 _COMMAND)
- list(REMOVE_AT _RULE_OUTS 0)
- list(GET _RULE_OUTS 0 _FILE)
- list(REMOVE_AT _RULE_OUTS 0)
- tablegen(${_RULE_TBLGEN} ${_FILE} ${_COMMAND} ${_INCLUDE_DIRS})
- list(APPEND _OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/${_FILE})
- endwhile()
- add_custom_target(${_NAME}_target DEPENDS ${_OUTPUTS})
- set_target_properties(${_NAME}_target PROPERTIES FOLDER "Tablegenning")
-
- add_library(${_NAME} INTERFACE)
- add_dependencies(${_NAME} ${_NAME}_target)
-
- add_library(${_RULE_PACKAGE}::${_RULE_NAME} ALIAS ${_NAME})
+ if(_RULE_TESTONLY AND NOT IREE_BUILD_TESTS)
+ return()
endif()
+
+ # Prefix the library with the package name.
+ string(REPLACE "::" "_" _PACKAGE_NAME ${_RULE_PACKAGE})
+ set(_NAME "${_PACKAGE_NAME}_${_RULE_NAME}")
+
+ # Prefix source paths with the root.
+ list(TRANSFORM _RULE_SRCS PREPEND ${_RULE_ROOT})
+
+ set(LLVM_TARGET_DEFINITIONS ${_RULE_SRCS})
+ set(_INCLUDE_DIRS ${IREE_COMMON_INCLUDE_DIRS})
+ list(APPEND _INCLUDE_DIRS ${_RULE_ROOT})
+ list(TRANSFORM _INCLUDE_DIRS PREPEND "-I")
+ set(_OUTPUTS)
+ while(_RULE_OUTS)
+ list(GET _RULE_OUTS 0 _COMMAND)
+ list(REMOVE_AT _RULE_OUTS 0)
+ list(GET _RULE_OUTS 0 _FILE)
+ list(REMOVE_AT _RULE_OUTS 0)
+ tablegen(${_RULE_TBLGEN} ${_FILE} ${_COMMAND} ${_INCLUDE_DIRS})
+ list(APPEND _OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/${_FILE})
+ endwhile()
+ add_custom_target(${_NAME}_target DEPENDS ${_OUTPUTS})
+ set_target_properties(${_NAME}_target PROPERTIES FOLDER "Tablegenning")
+
+ add_library(${_NAME} INTERFACE)
+ add_dependencies(${_NAME} ${_NAME}_target)
+
+ add_library(${_RULE_PACKAGE}::${_RULE_NAME} ALIAS ${_NAME})
endfunction()
diff --git a/build_tools/cmake/flatbuffer_cc_library.cmake b/build_tools/cmake/flatbuffer_cc_library.cmake
index e3c1c69..6ad2995 100644
--- a/build_tools/cmake/flatbuffer_cc_library.cmake
+++ b/build_tools/cmake/flatbuffer_cc_library.cmake
@@ -71,59 +71,61 @@
${ARGN}
)
- if(NOT _RULE_TESTONLY OR IREE_BUILD_TESTS)
- # Prefix the library with the package name, so we get: iree_package_name
- iree_package_name(_PACKAGE_NAME)
- set(_NAME "${_PACKAGE_NAME}_${_RULE_NAME}")
-
- if(NOT DEFINED _RULE_FLATC_ARGS)
- set(FLATBUFFERS_FLATC_SCHEMA_EXTRA_ARGS
- # Preserve root-relative include paths in generated code.
- "--keep-prefix"
- # Use C++11 'enum class' for enums.
- "--scoped-enums"
- # Include reflection tables used for dumping debug representations.
- "--reflect-names"
- # Generate FooT types for unpack/pack support. Note that this should only
- # be used in tooling as the code size/runtime overhead is non-trivial.
- "--gen-object-api"
- )
- else()
- set(FLATBUFFERS_FLATC_SCHEMA_EXTRA_ARGS ${_RULE_FLATC_ARGS})
- endif()
-
- build_flatbuffers(
- "${_RULE_SRCS}"
- "${IREE_ROOT_DIR}"
- "${_NAME}_gen" # custom_target_name
- "${_RULE_DEPS}" # additional_dependencies
- "${CMAKE_CURRENT_BINARY_DIR}" # generated_include_dir
- "${CMAKE_CURRENT_BINARY_DIR}" # binary_schemas_dir
- "" # copy_text_schemas_dir
- )
-
- add_library(${_NAME} INTERFACE)
- add_dependencies(${_NAME} ${_NAME}_gen)
- target_include_directories(${_NAME}
- INTERFACE
- "$<BUILD_INTERFACE:${IREE_COMMON_INCLUDE_DIRS}>"
- ${CMAKE_CURRENT_BINARY_DIR}
- )
- target_link_libraries(${_NAME}
- INTERFACE
- flatbuffers
- ${_RULE_LINKOPTS}
- ${IREE_DEFAULT_LINKOPTS}
- )
- target_compile_definitions(${_NAME}
- INTERFACE
- ${_RULE_DEFINES}
- )
-
- # Alias the iree_package_name library to iree::package::name.
- # This lets us more clearly map to Bazel and makes it possible to
- # disambiguate the underscores in paths vs. the separators.
- iree_package_ns(_PACKAGE_NS)
- add_library(${_PACKAGE_NS}::${_RULE_NAME} ALIAS ${_NAME})
+ if(_RULE_TESTONLY AND NOT IREE_BUILD_TESTS)
+ return()
endif()
+
+ # Prefix the library with the package name, so we get: iree_package_name
+ iree_package_name(_PACKAGE_NAME)
+ set(_NAME "${_PACKAGE_NAME}_${_RULE_NAME}")
+
+ if(NOT DEFINED _RULE_FLATC_ARGS)
+ set(FLATBUFFERS_FLATC_SCHEMA_EXTRA_ARGS
+ # Preserve root-relative include paths in generated code.
+ "--keep-prefix"
+ # Use C++11 'enum class' for enums.
+ "--scoped-enums"
+ # Include reflection tables used for dumping debug representations.
+ "--reflect-names"
+ # Generate FooT types for unpack/pack support. Note that this should only
+ # be used in tooling as the code size/runtime overhead is non-trivial.
+ "--gen-object-api"
+ )
+ else()
+ set(FLATBUFFERS_FLATC_SCHEMA_EXTRA_ARGS ${_RULE_FLATC_ARGS})
+ endif()
+
+ build_flatbuffers(
+ "${_RULE_SRCS}"
+ "${IREE_ROOT_DIR}"
+ "${_NAME}_gen" # custom_target_name
+ "${_RULE_DEPS}" # additional_dependencies
+ "${CMAKE_CURRENT_BINARY_DIR}" # generated_include_dir
+ "${CMAKE_CURRENT_BINARY_DIR}" # binary_schemas_dir
+ "" # copy_text_schemas_dir
+ )
+
+ add_library(${_NAME} INTERFACE)
+ add_dependencies(${_NAME} ${_NAME}_gen)
+ target_include_directories(${_NAME}
+ INTERFACE
+ "$<BUILD_INTERFACE:${IREE_COMMON_INCLUDE_DIRS}>"
+ ${CMAKE_CURRENT_BINARY_DIR}
+ )
+ target_link_libraries(${_NAME}
+ INTERFACE
+ flatbuffers
+ ${_RULE_LINKOPTS}
+ ${IREE_DEFAULT_LINKOPTS}
+ )
+ target_compile_definitions(${_NAME}
+ INTERFACE
+ ${_RULE_DEFINES}
+ )
+
+ # Alias the iree_package_name library to iree::package::name.
+ # This lets us more clearly map to Bazel and makes it possible to
+ # disambiguate the underscores in paths vs. the separators.
+ iree_package_ns(_PACKAGE_NS)
+ add_library(${_PACKAGE_NS}::${_RULE_NAME} ALIAS ${_NAME})
endfunction()
diff --git a/build_tools/cmake/iree_bytecode_module.cmake b/build_tools/cmake/iree_bytecode_module.cmake
index 3d47723..dc1d67f 100644
--- a/build_tools/cmake/iree_bytecode_module.cmake
+++ b/build_tools/cmake/iree_bytecode_module.cmake
@@ -43,58 +43,60 @@
${ARGN}
)
- if(NOT _RULE_TESTONLY OR IREE_BUILD_TESTS)
- # Set defaults for FLAGS and TRANSLATE_TOOL
- if(DEFINED _RULE_FLAGS)
- set(_FLAGS ${_RULE_FLAGS})
- else()
- set(_FLAGS "-iree-mlir-to-vm-bytecode-module")
- endif()
- if(DEFINED _RULE_TRANSLATE_TOOL)
- set(_TRANSLATE_TOOL ${_RULE_TRANSLATE_TOOL})
- else()
- set(_TRANSLATE_TOOL "iree_tools_iree-translate")
- endif()
+ if(_RULE_TESTONLY AND NOT IREE_BUILD_TESTS)
+ return()
+ endif()
- # Resolve the executable binary path from the target name.
- set(_TRANSLATE_TOOL_EXECUTABLE $<TARGET_FILE:${_TRANSLATE_TOOL}>)
+ # Set defaults for FLAGS and TRANSLATE_TOOL
+ if(DEFINED _RULE_FLAGS)
+ set(_FLAGS ${_RULE_FLAGS})
+ else()
+ set(_FLAGS "-iree-mlir-to-vm-bytecode-module")
+ endif()
+ if(DEFINED _RULE_TRANSLATE_TOOL)
+ set(_TRANSLATE_TOOL ${_RULE_TRANSLATE_TOOL})
+ else()
+ set(_TRANSLATE_TOOL "iree_tools_iree-translate")
+ endif()
- set(_ARGS "${_FLAGS}")
- list(APPEND _ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${_RULE_SRC}")
- list(APPEND _ARGS "-o")
- list(APPEND _ARGS "${_RULE_NAME}.module")
+ # Resolve the executable binary path from the target name.
+ set(_TRANSLATE_TOOL_EXECUTABLE $<TARGET_FILE:${_TRANSLATE_TOOL}>)
- add_custom_command(
- OUTPUT "${_RULE_NAME}.module"
- COMMAND ${_TRANSLATE_TOOL_EXECUTABLE} ${_ARGS}
- DEPENDS ${_TRANSLATE_TOOL}
+ set(_ARGS "${_FLAGS}")
+ list(APPEND _ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${_RULE_SRC}")
+ list(APPEND _ARGS "-o")
+ list(APPEND _ARGS "${_RULE_NAME}.module")
+
+ add_custom_command(
+ OUTPUT "${_RULE_NAME}.module"
+ COMMAND ${_TRANSLATE_TOOL_EXECUTABLE} ${_ARGS}
+ DEPENDS ${_TRANSLATE_TOOL}
+ )
+
+ if(_RULE_TESTONLY)
+ set(_TESTONLY_ARG "TESTONLY")
+ endif()
+ if(_RULE_PUBLIC)
+ set(_PUBLIC_ARG "PUBLIC")
+ endif()
+
+ if(DEFINED _RULE_CC_NAMESPACE)
+ iree_cc_embed_data(
+ NAME
+ "${_RULE_NAME}_cc"
+ IDENTIFIER
+ "${_RULE_NAME}"
+ GENERATED_SRCS
+ "${_RULE_NAME}.module"
+ CC_FILE_OUTPUT
+ "${_RULE_NAME}.cc"
+ H_FILE_OUTPUT
+ "${_RULE_NAME}.h"
+ CPP_NAMESPACE
+ "${_RULE_CC_NAMESPACE}"
+ FLATTEN
+ "${_PUBLIC_ARG}"
+ "${_TESTONLY_ARG}"
)
-
- if(_RULE_TESTONLY)
- set(_TESTONLY_ARG "TESTONLY")
- endif()
- if(_RULE_PUBLIC)
- set(_PUBLIC_ARG "PUBLIC")
- endif()
-
- if(DEFINED _RULE_CC_NAMESPACE)
- iree_cc_embed_data(
- NAME
- "${_RULE_NAME}_cc"
- IDENTIFIER
- "${_RULE_NAME}"
- GENERATED_SRCS
- "${_RULE_NAME}.module"
- CC_FILE_OUTPUT
- "${_RULE_NAME}.cc"
- H_FILE_OUTPUT
- "${_RULE_NAME}.h"
- CPP_NAMESPACE
- "${_RULE_CC_NAMESPACE}"
- FLATTEN
- "${_PUBLIC_ARG}"
- "${_TESTONLY_ARG}"
- )
- endif()
endif()
endfunction()
diff --git a/build_tools/cmake/iree_cc_binary.cmake b/build_tools/cmake/iree_cc_binary.cmake
index 1995d02..b8e2a8e 100644
--- a/build_tools/cmake/iree_cc_binary.cmake
+++ b/build_tools/cmake/iree_cc_binary.cmake
@@ -64,66 +64,68 @@
${ARGN}
)
- if(NOT _RULE_TESTONLY OR IREE_BUILD_TESTS)
- # Prefix the library with the package name, so we get: iree_package_name
- iree_package_name(_PACKAGE_NAME)
- set(_NAME "${_PACKAGE_NAME}_${_RULE_NAME}")
-
- add_executable(${_NAME} "")
- add_executable(${_RULE_NAME} ALIAS ${_NAME})
- if(_RULE_SRCS)
- target_sources(${_NAME}
- PRIVATE
- ${_RULE_SRCS}
- )
- else()
- set(_DUMMY_SRC "${CMAKE_CURRENT_BINARY_DIR}/${_NAME}_dummy.cc")
- file(WRITE ${_DUMMY_SRC} "")
- target_sources(${_NAME}
- PRIVATE
- ${_DUMMY_SRC}
- )
- endif()
- if(_RULE_OUT)
- set_target_properties(${_NAME} PROPERTIES OUTPUT_NAME "${_RULE_OUT}")
- else()
- set_target_properties(${_NAME} PROPERTIES OUTPUT_NAME "${_RULE_NAME}")
- endif()
- target_include_directories(${_NAME}
- PUBLIC
- ${IREE_COMMON_INCLUDE_DIRS}
- )
- target_compile_definitions(${_NAME}
- PUBLIC
- ${_RULE_DEFINES}
- )
- target_compile_options(${_NAME}
- PRIVATE
- ${_RULE_COPTS}
- )
- target_link_options(${_NAME}
- PRIVATE
- ${_RULE_LINKOPTS}
- )
- iree_add_data_dependencies(NAME ${_NAME} DATA ${_RULE_DATA})
-
- iree_package_ns(_PACKAGE_NS)
- # Replace dependencies passed by ::name with ::iree::package::name
- list(TRANSFORM _RULE_DATA REPLACE "^::" "${_PACKAGE_NS}::")
- list(TRANSFORM _RULE_DEPS REPLACE "^::" "${_PACKAGE_NS}::")
-
- # Add all IREE targets to a folder in the IDE for organization.
- set_property(TARGET ${_NAME} PROPERTY FOLDER ${IREE_IDE_FOLDER}/binaries)
-
- set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD ${IREE_CXX_STANDARD})
- set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
-
- # Defer computing transitive dependencies and calling target_link_libraries()
- # until all libraries have been declared.
- # Track target and deps, use in iree_complete_binary_link_options() later.
- set_property(GLOBAL APPEND PROPERTY _IREE_CC_BINARY_NAMES "${_NAME}")
- set_property(TARGET ${_NAME} PROPERTY DIRECT_DEPS ${_RULE_DEPS})
+ if(_RULE_TESTONLY AND NOT IREE_BUILD_TESTS)
+ return()
endif()
+
+ # Prefix the library with the package name, so we get: iree_package_name
+ iree_package_name(_PACKAGE_NAME)
+ set(_NAME "${_PACKAGE_NAME}_${_RULE_NAME}")
+
+ add_executable(${_NAME} "")
+ add_executable(${_RULE_NAME} ALIAS ${_NAME})
+ if(_RULE_SRCS)
+ target_sources(${_NAME}
+ PRIVATE
+ ${_RULE_SRCS}
+ )
+ else()
+ set(_DUMMY_SRC "${CMAKE_CURRENT_BINARY_DIR}/${_NAME}_dummy.cc")
+ file(WRITE ${_DUMMY_SRC} "")
+ target_sources(${_NAME}
+ PRIVATE
+ ${_DUMMY_SRC}
+ )
+ endif()
+ if(_RULE_OUT)
+ set_target_properties(${_NAME} PROPERTIES OUTPUT_NAME "${_RULE_OUT}")
+ else()
+ set_target_properties(${_NAME} PROPERTIES OUTPUT_NAME "${_RULE_NAME}")
+ endif()
+ target_include_directories(${_NAME}
+ PUBLIC
+ ${IREE_COMMON_INCLUDE_DIRS}
+ )
+ target_compile_definitions(${_NAME}
+ PUBLIC
+ ${_RULE_DEFINES}
+ )
+ target_compile_options(${_NAME}
+ PRIVATE
+ ${_RULE_COPTS}
+ )
+ target_link_options(${_NAME}
+ PRIVATE
+ ${_RULE_LINKOPTS}
+ )
+ iree_add_data_dependencies(NAME ${_NAME} DATA ${_RULE_DATA})
+
+ iree_package_ns(_PACKAGE_NS)
+ # Replace dependencies passed by ::name with ::iree::package::name
+ list(TRANSFORM _RULE_DATA REPLACE "^::" "${_PACKAGE_NS}::")
+ list(TRANSFORM _RULE_DEPS REPLACE "^::" "${_PACKAGE_NS}::")
+
+ # Add all IREE targets to a folder in the IDE for organization.
+ set_property(TARGET ${_NAME} PROPERTY FOLDER ${IREE_IDE_FOLDER}/binaries)
+
+ set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD ${IREE_CXX_STANDARD})
+ set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
+
+ # Defer computing transitive dependencies and calling target_link_libraries()
+ # until all libraries have been declared.
+ # Track target and deps, use in iree_complete_binary_link_options() later.
+ set_property(GLOBAL APPEND PROPERTY _IREE_CC_BINARY_NAMES "${_NAME}")
+ set_property(TARGET ${_NAME} PROPERTY DIRECT_DEPS ${_RULE_DEPS})
endfunction()
# Lists all transitive dependencies of DIRECT_DEPS in TRANSITIVE_DEPS.
diff --git a/build_tools/cmake/iree_cc_embed_data.cmake b/build_tools/cmake/iree_cc_embed_data.cmake
index 0b0f90d..d3644ed 100644
--- a/build_tools/cmake/iree_cc_embed_data.cmake
+++ b/build_tools/cmake/iree_cc_embed_data.cmake
@@ -48,53 +48,55 @@
${ARGN}
)
- if(NOT _RULE_TESTONLY OR IREE_BUILD_TESTS)
- if(DEFINED _RULE_IDENTIFIER)
- set(_IDENTIFIER ${_RULE_IDENTIFIER})
- else()
- set(_IDENTIFIER ${_RULE_NAME})
- endif()
-
- set(_ARGS)
- list(APPEND _ARGS "--output_header=${_RULE_H_FILE_OUTPUT}")
- list(APPEND _ARGS "--output_impl=${_RULE_CC_FILE_OUTPUT}")
- list(APPEND _ARGS "--identifier=${_IDENTIFIER}")
- if(DEFINED _RULE_CPP_NAMESPACE)
- list(APPEND _ARGS "--cpp_namespace=${_RULE_CPP_NAMESPACE}")
- endif()
- if(DEFINED _RULE_STRIP_PREFIX})
- list(APPEND _ARGS "--strip_prefix=${_RULE_STRIP_PREFIX}")
- endif()
- if(DEFINED _RULE_FLATTEN})
- list(APPEND _ARGS "--flatten")
- endif()
-
- foreach(SRC ${_RULE_SRCS})
- list(APPEND _ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${SRC}")
- endforeach(SRC)
- foreach(SRC ${_RULE_GENERATED_SRCS})
- list(APPEND _ARGS "${SRC}")
- endforeach(SRC)
-
- add_custom_command(
- OUTPUT "${_RULE_H_FILE_OUTPUT}" "${_RULE_CC_FILE_OUTPUT}"
- COMMAND generate_cc_embed_data ${_ARGS}
- DEPENDS generate_cc_embed_data ${_RULE_SRCS} ${_RULE_GENERATED_SRCS}
- )
-
- if(_RULE_TESTONLY)
- set(_TESTONLY_ARG "TESTONLY")
- endif()
- if(_RULE_PUBLIC)
- set(_PUBLIC_ARG "PUBLIC")
- endif()
-
- iree_cc_library(
- NAME ${_RULE_NAME}
- HDRS "${_RULE_H_FILE_OUTPUT}"
- SRCS "${_RULE_CC_FILE_OUTPUT}"
- "${_PUBLIC_ARG}"
- "${_TESTONLY_ARG}"
- )
+ if(_RULE_TESTONLY AND NOT IREE_BUILD_TESTS)
+ return()
endif()
+
+ if(DEFINED _RULE_IDENTIFIER)
+ set(_IDENTIFIER ${_RULE_IDENTIFIER})
+ else()
+ set(_IDENTIFIER ${_RULE_NAME})
+ endif()
+
+ set(_ARGS)
+ list(APPEND _ARGS "--output_header=${_RULE_H_FILE_OUTPUT}")
+ list(APPEND _ARGS "--output_impl=${_RULE_CC_FILE_OUTPUT}")
+ list(APPEND _ARGS "--identifier=${_IDENTIFIER}")
+ if(DEFINED _RULE_CPP_NAMESPACE)
+ list(APPEND _ARGS "--cpp_namespace=${_RULE_CPP_NAMESPACE}")
+ endif()
+ if(DEFINED _RULE_STRIP_PREFIX})
+ list(APPEND _ARGS "--strip_prefix=${_RULE_STRIP_PREFIX}")
+ endif()
+ if(DEFINED _RULE_FLATTEN})
+ list(APPEND _ARGS "--flatten")
+ endif()
+
+ foreach(SRC ${_RULE_SRCS})
+ list(APPEND _ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${SRC}")
+ endforeach(SRC)
+ foreach(SRC ${_RULE_GENERATED_SRCS})
+ list(APPEND _ARGS "${SRC}")
+ endforeach(SRC)
+
+ add_custom_command(
+ OUTPUT "${_RULE_H_FILE_OUTPUT}" "${_RULE_CC_FILE_OUTPUT}"
+ COMMAND generate_cc_embed_data ${_ARGS}
+ DEPENDS generate_cc_embed_data ${_RULE_SRCS} ${_RULE_GENERATED_SRCS}
+ )
+
+ if(_RULE_TESTONLY)
+ set(_TESTONLY_ARG "TESTONLY")
+ endif()
+ if(_RULE_PUBLIC)
+ set(_PUBLIC_ARG "PUBLIC")
+ endif()
+
+ iree_cc_library(
+ NAME ${_RULE_NAME}
+ HDRS "${_RULE_H_FILE_OUTPUT}"
+ SRCS "${_RULE_CC_FILE_OUTPUT}"
+ "${_PUBLIC_ARG}"
+ "${_TESTONLY_ARG}"
+ )
endfunction()
diff --git a/build_tools/cmake/iree_cc_library.cmake b/build_tools/cmake/iree_cc_library.cmake
index 417d6b9..e6281d6 100644
--- a/build_tools/cmake/iree_cc_library.cmake
+++ b/build_tools/cmake/iree_cc_library.cmake
@@ -73,114 +73,116 @@
${ARGN}
)
+ if(_RULE_TESTONLY AND NOT IREE_BUILD_TESTS)
+ return()
+ endif()
+
iree_package_ns(_PACKAGE_NS)
# Replace dependencies passed by ::name with ::iree::package::name
list(TRANSFORM _RULE_DEPS REPLACE "^::" "${_PACKAGE_NS}::")
list(TRANSFORM _RULE_DATA REPLACE "^::" "${_PACKAGE_NS}::")
- if(NOT _RULE_TESTONLY OR IREE_BUILD_TESTS)
- # Prefix the library with the package name, so we get: iree_package_name.
- iree_package_name(_PACKAGE_NAME)
- set(_NAME "${_PACKAGE_NAME}_${_RULE_NAME}")
+ # Prefix the library with the package name, so we get: iree_package_name.
+ iree_package_name(_PACKAGE_NAME)
+ set(_NAME "${_PACKAGE_NAME}_${_RULE_NAME}")
- # Check if this is a header-only library.
- # Note that as of February 2019, many popular OS's (for example, Ubuntu
- # 16.04 LTS) only come with cmake 3.5 by default. For this reason, we can't
- # use list(FILTER...)
- set(_CC_SRCS "${_RULE_SRCS}")
- foreach(src_file IN LISTS _CC_SRCS)
- if(${src_file} MATCHES ".*\\.(h|inc)")
- list(REMOVE_ITEM _CC_SRCS "${src_file}")
- endif()
- endforeach()
- if("${_CC_SRCS}" STREQUAL "")
- set(_RULE_IS_INTERFACE 1)
+ # Check if this is a header-only library.
+ # Note that as of February 2019, many popular OS's (for example, Ubuntu
+ # 16.04 LTS) only come with cmake 3.5 by default. For this reason, we can't
+ # use list(FILTER...)
+ set(_CC_SRCS "${_RULE_SRCS}")
+ foreach(src_file IN LISTS _CC_SRCS)
+ if(${src_file} MATCHES ".*\\.(h|inc)")
+ list(REMOVE_ITEM _CC_SRCS "${src_file}")
+ endif()
+ endforeach()
+ if("${_CC_SRCS}" STREQUAL "")
+ set(_RULE_IS_INTERFACE 1)
+ else()
+ set(_RULE_IS_INTERFACE 0)
+ endif()
+
+ if(NOT _RULE_IS_INTERFACE)
+ add_library(${_NAME} STATIC "")
+ target_sources(${_NAME}
+ PRIVATE
+ ${_RULE_SRCS}
+ ${_RULE_TEXTUAL_HDRS}
+ ${_RULE_HDRS}
+ )
+ target_include_directories(${_NAME}
+ PUBLIC
+ "$<BUILD_INTERFACE:${IREE_COMMON_INCLUDE_DIRS}>"
+ "$<BUILD_INTERFACE:${_RULE_INCLUDES}>"
+ )
+ target_compile_options(${_NAME}
+ PRIVATE
+ ${_RULE_COPTS}
+ ${IREE_DEFAULT_COPTS}
+ )
+
+ target_link_libraries(${_NAME}
+ PUBLIC
+ ${_RULE_DEPS}
+ PRIVATE
+ ${_RULE_LINKOPTS}
+ ${IREE_DEFAULT_LINKOPTS}
+ )
+ iree_add_data_dependencies(NAME ${_NAME} DATA ${_RULE_DATA})
+ target_compile_definitions(${_NAME}
+ PUBLIC
+ ${_RULE_DEFINES}
+ )
+
+ if(DEFINED _RULE_ALWAYSLINK)
+ set_property(TARGET ${_NAME} PROPERTY ALWAYSLINK 1)
+ endif()
+
+ # Add all IREE targets to a folder in the IDE for organization.
+ if(_RULE_PUBLIC)
+ set_property(TARGET ${_NAME} PROPERTY FOLDER ${IREE_IDE_FOLDER})
+ elseif(_RULE_TESTONLY)
+ set_property(TARGET ${_NAME} PROPERTY FOLDER ${IREE_IDE_FOLDER}/test)
else()
- set(_RULE_IS_INTERFACE 0)
+ set_property(TARGET ${_NAME} PROPERTY FOLDER ${IREE_IDE_FOLDER}/internal)
endif()
- if(NOT _RULE_IS_INTERFACE)
- add_library(${_NAME} STATIC "")
- target_sources(${_NAME}
- PRIVATE
- ${_RULE_SRCS}
- ${_RULE_TEXTUAL_HDRS}
- ${_RULE_HDRS}
- )
- target_include_directories(${_NAME}
- PUBLIC
- "$<BUILD_INTERFACE:${IREE_COMMON_INCLUDE_DIRS}>"
- "$<BUILD_INTERFACE:${_RULE_INCLUDES}>"
- )
- target_compile_options(${_NAME}
- PRIVATE
- ${_RULE_COPTS}
- ${IREE_DEFAULT_COPTS}
- )
+ # INTERFACE libraries can't have the CXX_STANDARD property set.
+ set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD ${IREE_CXX_STANDARD})
+ set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
+ else()
+ # Generating header-only library.
+ add_library(${_NAME} INTERFACE)
+ target_include_directories(${_NAME}
+ INTERFACE
+ "$<BUILD_INTERFACE:${IREE_COMMON_INCLUDE_DIRS}>"
+ )
+ target_compile_options(${_NAME}
+ INTERFACE
+ ${_RULE_COPTS}
+ ${IREE_DEFAULT_COPTS}
+ )
+ target_link_libraries(${_NAME}
+ INTERFACE
+ ${_RULE_DEPS}
+ ${_RULE_LINKOPTS}
+ ${IREE_DEFAULT_LINKOPTS}
+ )
+ iree_add_data_dependencies(NAME ${_NAME} DATA ${_RULE_DATA})
+ target_compile_definitions(${_NAME}
+ INTERFACE
+ ${_RULE_DEFINES}
+ )
+ endif()
- target_link_libraries(${_NAME}
- PUBLIC
- ${_RULE_DEPS}
- PRIVATE
- ${_RULE_LINKOPTS}
- ${IREE_DEFAULT_LINKOPTS}
- )
- iree_add_data_dependencies(NAME ${_NAME} DATA ${_RULE_DATA})
- target_compile_definitions(${_NAME}
- PUBLIC
- ${_RULE_DEFINES}
- )
-
- if(DEFINED _RULE_ALWAYSLINK)
- set_property(TARGET ${_NAME} PROPERTY ALWAYSLINK 1)
- endif()
-
- # Add all IREE targets to a folder in the IDE for organization.
- if(_RULE_PUBLIC)
- set_property(TARGET ${_NAME} PROPERTY FOLDER ${IREE_IDE_FOLDER})
- elseif(_RULE_TESTONLY)
- set_property(TARGET ${_NAME} PROPERTY FOLDER ${IREE_IDE_FOLDER}/test)
- else()
- set_property(TARGET ${_NAME} PROPERTY FOLDER ${IREE_IDE_FOLDER}/internal)
- endif()
-
- # INTERFACE libraries can't have the CXX_STANDARD property set.
- set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD ${IREE_CXX_STANDARD})
- set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
- else()
- # Generating header-only library.
- add_library(${_NAME} INTERFACE)
- target_include_directories(${_NAME}
- INTERFACE
- "$<BUILD_INTERFACE:${IREE_COMMON_INCLUDE_DIRS}>"
- )
- target_compile_options(${_NAME}
- INTERFACE
- ${_RULE_COPTS}
- ${IREE_DEFAULT_COPTS}
- )
- target_link_libraries(${_NAME}
- INTERFACE
- ${_RULE_DEPS}
- ${_RULE_LINKOPTS}
- ${IREE_DEFAULT_LINKOPTS}
- )
- iree_add_data_dependencies(NAME ${_NAME} DATA ${_RULE_DATA})
- target_compile_definitions(${_NAME}
- INTERFACE
- ${_RULE_DEFINES}
- )
- endif()
-
- # Alias the iree_package_name library to iree::package::name.
- # This lets us more clearly map to Bazel and makes it possible to
- # disambiguate the underscores in paths vs. the separators.
- add_library(${_PACKAGE_NS}::${_RULE_NAME} ALIAS ${_NAME})
- iree_package_dir(_PACKAGE_DIR)
- if(${_RULE_NAME} STREQUAL ${_PACKAGE_DIR})
- # If the library name matches the package then treat it as a default.
- # For example, foo/bar/ library 'bar' would end up as 'foo::bar'.
- add_library(${_PACKAGE_NS} ALIAS ${_NAME})
- endif()
+ # Alias the iree_package_name library to iree::package::name.
+ # This lets us more clearly map to Bazel and makes it possible to
+ # disambiguate the underscores in paths vs. the separators.
+ add_library(${_PACKAGE_NS}::${_RULE_NAME} ALIAS ${_NAME})
+ iree_package_dir(_PACKAGE_DIR)
+ if(${_RULE_NAME} STREQUAL ${_PACKAGE_DIR})
+ # If the library name matches the package then treat it as a default.
+ # For example, foo/bar/ library 'bar' would end up as 'foo::bar'.
+ add_library(${_PACKAGE_NS} ALIAS ${_NAME})
endif()
endfunction()
diff --git a/build_tools/cmake/iree_check_test.cmake b/build_tools/cmake/iree_check_test.cmake
index b50cd7b..b1743bb 100644
--- a/build_tools/cmake/iree_check_test.cmake
+++ b/build_tools/cmake/iree_check_test.cmake
@@ -32,6 +32,10 @@
# LABELS: Additional labels to apply to the test. The package path and
# "driver=${DRIVER}" are added automatically.
function(iree_check_test)
+ if(NOT IREE_BUILD_TESTS OR NOT IREE_BUILD_COMPILER)
+ return()
+ endif()
+
cmake_parse_arguments(
_RULE
""
@@ -39,9 +43,6 @@
"COMPILER_FLAGS;RUNNER_ARGS;LABELS"
${ARGN}
)
- if(NOT IREE_BUILD_TESTS OR NOT IREE_BUILD_COMPILER)
- return()
- endif()
iree_package_name(_PACKAGE_NAME)
set(_NAME "${_PACKAGE_NAME}_${_RULE_NAME}")
@@ -126,6 +127,10 @@
# LABELS: Additional labels to apply to the generated tests. The package path is
# added automatically.
function(iree_check_single_backend_test_suite)
+ if(NOT IREE_BUILD_TESTS)
+ return()
+ endif()
+
cmake_parse_arguments(
_RULE
""
@@ -133,9 +138,6 @@
"SRCS;COMPILER_FLAGS;RUNNER_ARGS;LABELS"
${ARGN}
)
- if(NOT IREE_BUILD_TESTS)
- return()
- endif()
foreach(_SRC IN LISTS _RULE_SRCS)
set(_TEST_NAME "${_RULE_NAME}_${_SRC}")
@@ -183,6 +185,10 @@
# LABELS: Additional labels to apply to the generated tests. The package path is
# added automatically.
function(iree_check_test_suite)
+ if(NOT IREE_BUILD_TESTS)
+ return()
+ endif()
+
cmake_parse_arguments(
_RULE
""
@@ -190,9 +196,6 @@
"SRCS;TARGET_BACKENDS;DRIVERS;RUNNER_ARGS;LABELS"
${ARGN}
)
- if(NOT IREE_BUILD_TESTS)
- return()
- endif()
if(NOT DEFINED _RULE_TARGET_BACKENDS AND NOT DEFINED _RULE_DRIVERS)
set(_RULE_TARGET_BACKENDS "vmla" "vulkan-spirv" "llvm-ir")
diff --git a/build_tools/cmake/iree_lit_test.cmake b/build_tools/cmake/iree_lit_test.cmake
index 430dc7f..be42a96 100644
--- a/build_tools/cmake/iree_lit_test.cmake
+++ b/build_tools/cmake/iree_lit_test.cmake
@@ -31,6 +31,10 @@
# TODO(gcmn): allow using alternative driver
# A driver other than the default iree/tools/run_lit.sh is not currently supported.
function(iree_lit_test)
+ if(NOT IREE_BUILD_TESTS)
+ return()
+ endif()
+
cmake_parse_arguments(
_RULE
""
@@ -38,9 +42,6 @@
"DATA;LABELS"
${ARGN}
)
- if(NOT IREE_BUILD_TESTS)
- return()
- endif()
iree_package_name(_PACKAGE_NAME)
set(_NAME "${_PACKAGE_NAME}_${_RULE_NAME}")
@@ -101,6 +102,10 @@
# TODO(gcmn): allow using alternative driver
# A driver other than the default iree/tools/run_lit.sh is not currently supported.
function(iree_lit_test_suite)
+ if(NOT IREE_BUILD_TESTS)
+ return()
+ endif()
+
cmake_parse_arguments(
_RULE
""
@@ -108,9 +113,6 @@
"SRCS;DATA;LABELS"
${ARGN}
)
- IF(NOT IREE_BUILD_TESTS)
- return()
- endif()
foreach(_TEST_FILE ${_RULE_SRCS})
get_filename_component(_TEST_BASENAME ${_TEST_FILE} NAME)
diff --git a/build_tools/cmake/iree_tablegen_doc.cmake b/build_tools/cmake/iree_tablegen_doc.cmake
index 0f567de..cc62fe4 100644
--- a/build_tools/cmake/iree_tablegen_doc.cmake
+++ b/build_tools/cmake/iree_tablegen_doc.cmake
@@ -30,6 +30,10 @@
# `-gen-<something> <output-file-name>`. Note that the generator
# commands should only be for documentation.
function(iree_tablegen_doc)
+ if(NOT IREE_BUILD_DOCS)
+ return()
+ endif()
+
cmake_parse_arguments(
_RULE
""
@@ -38,47 +42,45 @@
${ARGN}
)
- if(IREE_BUILD_DOCS)
- # Prefix the library with the package name, so we get: iree_package_name
- iree_package_name(_PACKAGE_NAME)
- set(_NAME "${_PACKAGE_NAME}_${_RULE_NAME}")
+ # Prefix the library with the package name, so we get: iree_package_name
+ iree_package_name(_PACKAGE_NAME)
+ set(_NAME "${_PACKAGE_NAME}_${_RULE_NAME}")
- if(${_RULE_TBLGEN} MATCHES "IREE")
- set(_TBLGEN "IREE")
- else()
- set(_TBLGEN "MLIR")
- endif()
-
-
- set(_INCLUDE_DIRS ${IREE_COMMON_INCLUDE_DIRS})
- list(APPEND _INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
- list(TRANSFORM _INCLUDE_DIRS PREPEND "-I")
-
- set(_INPUTS ${_RULE_TD_FILE})
- set(LLVM_TARGET_DEFINITIONS ${_INPUTS})
-
- set(_OUTPUTS)
- while(_RULE_OUTS)
- list(GET _RULE_OUTS 0 _COMMAND)
- list(REMOVE_AT _RULE_OUTS 0)
- list(GET _RULE_OUTS 0 _OUTPUT)
- list(REMOVE_AT _RULE_OUTS 0)
-
- # TableGen this output with the given command.
- tablegen(${_TBLGEN} ${_OUTPUT} ${_COMMAND} ${_INCLUDE_DIRS})
- list(APPEND _OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/${_OUTPUT})
- endwhile()
-
- # Put all dialect docs at one place.
- set(_DOC_DIR ${PROJECT_BINARY_DIR}/doc/Dialects/)
- # Set a target to drive copy.
- add_custom_target(${_NAME}_target
- ${CMAKE_COMMAND} -E make_directory ${_DOC_DIR}
- COMMAND ${CMAKE_COMMAND} -E copy ${_OUTPUTS} ${_DOC_DIR}
- DEPENDS ${_OUTPUTS})
- set_target_properties(${_NAME}_target PROPERTIES FOLDER "Tablegenning")
-
- # Register this dialect doc to iree-doc.
- add_dependencies(iree-doc ${_NAME}_target)
+ if(${_RULE_TBLGEN} MATCHES "IREE")
+ set(_TBLGEN "IREE")
+ else()
+ set(_TBLGEN "MLIR")
endif()
+
+
+ set(_INCLUDE_DIRS ${IREE_COMMON_INCLUDE_DIRS})
+ list(APPEND _INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
+ list(TRANSFORM _INCLUDE_DIRS PREPEND "-I")
+
+ set(_INPUTS ${_RULE_TD_FILE})
+ set(LLVM_TARGET_DEFINITIONS ${_INPUTS})
+
+ set(_OUTPUTS)
+ while(_RULE_OUTS)
+ list(GET _RULE_OUTS 0 _COMMAND)
+ list(REMOVE_AT _RULE_OUTS 0)
+ list(GET _RULE_OUTS 0 _OUTPUT)
+ list(REMOVE_AT _RULE_OUTS 0)
+
+ # TableGen this output with the given command.
+ tablegen(${_TBLGEN} ${_OUTPUT} ${_COMMAND} ${_INCLUDE_DIRS})
+ list(APPEND _OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/${_OUTPUT})
+ endwhile()
+
+ # Put all dialect docs at one place.
+ set(_DOC_DIR ${PROJECT_BINARY_DIR}/doc/Dialects/)
+ # Set a target to drive copy.
+ add_custom_target(${_NAME}_target
+ ${CMAKE_COMMAND} -E make_directory ${_DOC_DIR}
+ COMMAND ${CMAKE_COMMAND} -E copy ${_OUTPUTS} ${_DOC_DIR}
+ DEPENDS ${_OUTPUTS})
+ set_target_properties(${_NAME}_target PROPERTIES FOLDER "Tablegenning")
+
+ # Register this dialect doc to iree-doc.
+ add_dependencies(iree-doc ${_NAME}_target)
endfunction()
diff --git a/build_tools/cmake/iree_tablegen_library.cmake b/build_tools/cmake/iree_tablegen_library.cmake
index a308215..e185e59 100644
--- a/build_tools/cmake/iree_tablegen_library.cmake
+++ b/build_tools/cmake/iree_tablegen_library.cmake
@@ -26,38 +26,40 @@
${ARGN}
)
- if(NOT _RULE_TESTONLY OR IREE_BUILD_TESTS)
- # Prefix the library with the package name, so we get: iree_package_name
- iree_package_name(_PACKAGE_NAME)
- set(_NAME "${_PACKAGE_NAME}_${_RULE_NAME}")
-
- if(${_RULE_TBLGEN} MATCHES "IREE")
- set(_TBLGEN "IREE")
- else()
- set(_TBLGEN "MLIR")
- endif()
-
- set(LLVM_TARGET_DEFINITIONS ${_RULE_TD_FILE})
- set(_INCLUDE_DIRS ${IREE_COMMON_INCLUDE_DIRS})
- list(APPEND _INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
- list(TRANSFORM _INCLUDE_DIRS PREPEND "-I")
- set(_OUTPUTS)
- while(_RULE_OUTS)
- list(GET _RULE_OUTS 0 _COMMAND)
- list(REMOVE_AT _RULE_OUTS 0)
- list(GET _RULE_OUTS 0 _FILE)
- list(REMOVE_AT _RULE_OUTS 0)
- tablegen(${_TBLGEN} ${_FILE} ${_COMMAND} ${_INCLUDE_DIRS})
- list(APPEND _OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/${_FILE})
- endwhile()
- add_custom_target(${_NAME}_target DEPENDS ${_OUTPUTS})
- set_target_properties(${_NAME}_target PROPERTIES FOLDER "Tablegenning")
-
- add_library(${_NAME} INTERFACE)
- add_dependencies(${_NAME} ${_NAME}_target)
-
- # Alias the iree_package_name library to iree::package::name.
- iree_package_ns(_PACKAGE_NS)
- add_library(${_PACKAGE_NS}::${_RULE_NAME} ALIAS ${_NAME})
+ if(_RULE_TESTONLY AND NOT IREE_BUILD_TESTS)
+ return()
endif()
+
+ # Prefix the library with the package name, so we get: iree_package_name
+ iree_package_name(_PACKAGE_NAME)
+ set(_NAME "${_PACKAGE_NAME}_${_RULE_NAME}")
+
+ if(${_RULE_TBLGEN} MATCHES "IREE")
+ set(_TBLGEN "IREE")
+ else()
+ set(_TBLGEN "MLIR")
+ endif()
+
+ set(LLVM_TARGET_DEFINITIONS ${_RULE_TD_FILE})
+ set(_INCLUDE_DIRS ${IREE_COMMON_INCLUDE_DIRS})
+ list(APPEND _INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
+ list(TRANSFORM _INCLUDE_DIRS PREPEND "-I")
+ set(_OUTPUTS)
+ while(_RULE_OUTS)
+ list(GET _RULE_OUTS 0 _COMMAND)
+ list(REMOVE_AT _RULE_OUTS 0)
+ list(GET _RULE_OUTS 0 _FILE)
+ list(REMOVE_AT _RULE_OUTS 0)
+ tablegen(${_TBLGEN} ${_FILE} ${_COMMAND} ${_INCLUDE_DIRS})
+ list(APPEND _OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/${_FILE})
+ endwhile()
+ add_custom_target(${_NAME}_target DEPENDS ${_OUTPUTS})
+ set_target_properties(${_NAME}_target PROPERTIES FOLDER "Tablegenning")
+
+ add_library(${_NAME} INTERFACE)
+ add_dependencies(${_NAME} ${_NAME}_target)
+
+ # Alias the iree_package_name library to iree::package::name.
+ iree_package_ns(_PACKAGE_NS)
+ add_library(${_PACKAGE_NS}::${_RULE_NAME} ALIAS ${_NAME})
endfunction()