# Copyright 2019 The IREE Authors # # Licensed under the Apache License v2.0 with LLVM Exceptions. # See https://llvm.org/LICENSE.txt for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception """Common Bazel definitions for IREE.""" load("@llvm-project//mlir:tblgen.bzl", "gentbl_cc_library", "gentbl_filegroup", "td_library") def defaulting_select(selector): """Pass through to select() with special semantics when converting to CMake. Args: selector: The selector which is passed through to select(). Must include a "//conditions:default" branch, which is used by tooling outside of Bazel when converting to other build systems. """ if "//conditions:default" not in selector: fail("defaulting_select requires a //conditions:default branch") return select(selector) def platform_trampoline_deps(basename, path = "runtime/src/iree/base"): """Produce a list of deps for the given `basename` platform target. Example: "file_mapping" -> ["//iree/base/internal/file_mapping_internal"] This is used for compatibility with various methods of including the library in foreign source control systems. Args: basename: Library name prefix for a library in [path]/internal. path: Folder name to work within. Returns: A list of dependencies for depending on the library in a platform sensitive way. """ return [ "//%s/internal:%s_internal" % (path, basename), ] def iree_build_test(name, targets): """Dummy rule to ensure that targets build. This is currently undefined in bazel and is preserved for compatibility. """ pass def iree_cmake_extra_content(content = "", inline = False): """Tool for inserting arbitrary content during Bazel->CMake conversion. This does nothing in Bazel, while the contents are inserted as-is in converted CMakeLists.txt files. Args: content: The text to insert into the converted file. inline: If true, the content will be inserted inline. Otherwise, it will be inserted near the top of the converted file. """ pass def iree_cc_library(includes = [], system_includes = [], **kwargs): """Base function for all cc_library targets. This is a pass-through to the native cc_library, which integrators can customize with additional flags as needed. Prefer to use the compiler and runtime versions instead. Note that Bazel does not distinguish between includes and system_includes, but CMake does. So we allow them to be separate and glom them together here. """ native.cc_library( includes = includes + system_includes, **kwargs ) def iree_compiler_cc_library(deps = [], **kwargs): """Used for cc_library targets within the //compiler tree. This is a pass-through to the native cc_library which adds specific compiler specific options and deps. """ iree_cc_library( deps = deps + [ "//compiler/src:defs", ], **kwargs ) def iree_compiler_register_plugin(plugin_id, target): """Mirror of the CMake iree_compiler_register_plugin function. Does nothing in bazel currently. """ pass def iree_compiler_cc_test(deps = [], **kwargs): """Used for cc_test targets within the //compiler tree. This is a pass-through to the native cc_test which adds specific runtime specific options and deps. """ native.cc_test( deps = deps + [ "//compiler/src:defs", ], **kwargs ) def iree_compiler_cc_binary(deps = [], **kwargs): """Used for cc_binary targets within the //compiler tree. This is a pass-through to the native cc_binary which adds specific runtime specific options and deps. """ native.cc_binary( deps = deps + [ "//compiler/src:defs", ], **kwargs ) def iree_runtime_cc_library(deps = [], **kwargs): """Used for cc_library targets within the //runtime tree. This is a pass-through to the native cc_library which adds specific runtime specific options and deps. """ iree_cc_library( deps = deps + [ # TODO: Rename to //runtime/src:defs to match compiler. "//runtime/src:runtime_defines", ], **kwargs ) def iree_runtime_cc_test(deps = [], **kwargs): """Used for cc_test targets within the //runtime tree. This is a pass-through to the native cc_test which adds specific runtime specific options and deps. """ native.cc_test( deps = deps + [ # TODO: Rename to //runtime/src:defs to match compiler. "//runtime/src:runtime_defines", ], **kwargs ) def iree_runtime_cc_binary(deps = [], **kwargs): """Used for cc_binary targets within the //runtime tree. This is a pass-through to the native cc_binary which adds specific runtime specific options and deps. """ native.cc_binary( deps = deps + [ # TODO: Rename to //runtime/src:defs to match compiler. "//runtime/src:runtime_defines", ], **kwargs ) def iree_tablegen_doc(includes = [], **kwargs): """iree_tablegen_doc() generates documentation from a table definition file. This is a simple wrapper over gentbl() so we can differentiate between documentation and others. See gentbl() for details regarding arguments. """ gentbl_filegroup(includes = includes + [ "/compiler/src", ], **kwargs) def iree_gentbl_cc_library(includes = [], **kwargs): """IREE version of gentbl_cc_library which sets up includes properly.""" gentbl_cc_library(includes = includes + [ "/compiler/src", ], **kwargs) def iree_td_library(includes = [], **kwargs): """IREE version of td_library.""" td_library(includes = includes + [ "/compiler/src", ], **kwargs)