| # 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) |