blob: c5a50cbfbd415d5d6e12c731a573d22354e5154b [file] [log] [blame]
# 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)