120 lines
3.6 KiB
Python
120 lines
3.6 KiB
Python
#
|
|
# Vivante Cross Toolchain configuration
|
|
#
|
|
load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
|
|
load("@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
|
|
"tool_path",
|
|
"feature",
|
|
"with_feature_set",
|
|
"flag_group",
|
|
"flag_set")
|
|
|
|
all_compile_actions = [
|
|
ACTION_NAMES.assemble,
|
|
ACTION_NAMES.preprocess_assemble,
|
|
ACTION_NAMES.linkstamp_compile,
|
|
ACTION_NAMES.c_compile,
|
|
ACTION_NAMES.cpp_compile,
|
|
ACTION_NAMES.cpp_header_parsing,
|
|
ACTION_NAMES.cpp_module_compile,
|
|
ACTION_NAMES.cpp_module_codegen,
|
|
ACTION_NAMES.lto_backend,
|
|
ACTION_NAMES.clif_match,
|
|
]
|
|
|
|
all_cpp_compile_actions = [
|
|
ACTION_NAMES.linkstamp_compile,
|
|
ACTION_NAMES.cpp_compile,
|
|
ACTION_NAMES.cpp_header_parsing,
|
|
ACTION_NAMES.cpp_module_compile,
|
|
ACTION_NAMES.cpp_module_codegen,
|
|
ACTION_NAMES.clif_match,
|
|
]
|
|
|
|
all_link_actions = [
|
|
ACTION_NAMES.cpp_link_executable,
|
|
ACTION_NAMES.cpp_link_dynamic_library,
|
|
ACTION_NAMES.cpp_link_nodeps_dynamic_library,
|
|
]
|
|
|
|
def build_cc_toolchain_config(impl):
|
|
return rule(
|
|
implementation = impl,
|
|
attrs = {
|
|
"toolchain_name": attr.string(mandatory=True),
|
|
"target_cpu": attr.string(mandatory=True),
|
|
"compiler": attr.string(mandatory=True),
|
|
},
|
|
provides = [CcToolchainConfigInfo],
|
|
)
|
|
|
|
# construct tool path for local wrappers
|
|
def toolchain_tool_path(toolchain_name, tool_name):
|
|
return "//{toolchain_name}/bin:{tool_name}".format(toolchain_name=toolchain_name, tool_name=tool_name)
|
|
|
|
# construct package path for remote archive tools
|
|
def toolchain_package_path(toolchain_name, target):
|
|
return "@{toolchain_name}//:{target}".format(toolchain_name=toolchain_name, target=target)
|
|
|
|
def register_toolchain(toolchain_name, target_cpu, compiler, cc_toolchain_config):
|
|
native.filegroup(
|
|
name = "all_files",
|
|
srcs = [
|
|
toolchain_tool_path(toolchain_name, "tool-wrappers"),
|
|
toolchain_package_path(toolchain_name, "compiler_pieces"),
|
|
],
|
|
)
|
|
|
|
native.filegroup(
|
|
name = "linker_files",
|
|
srcs = [
|
|
toolchain_tool_path(toolchain_name, "ar"),
|
|
toolchain_tool_path(toolchain_name, "gcc"),
|
|
toolchain_tool_path(toolchain_name, "ld"),
|
|
toolchain_package_path(toolchain_name, "compiler_pieces"),
|
|
],
|
|
)
|
|
|
|
native.filegroup(
|
|
name = "compiler_files",
|
|
srcs = [
|
|
toolchain_tool_path(toolchain_name, "as"),
|
|
toolchain_tool_path(toolchain_name, "gcc"),
|
|
toolchain_tool_path(toolchain_name, "ld"),
|
|
],
|
|
)
|
|
|
|
native.filegroup(
|
|
name = "empty",
|
|
srcs = [],
|
|
)
|
|
|
|
cc_toolchain_config(
|
|
name = toolchain_name + "_config",
|
|
toolchain_name = toolchain_name,
|
|
target_cpu = target_cpu,
|
|
compiler = compiler)
|
|
|
|
native.cc_toolchain(
|
|
name = "cc-compiler",
|
|
toolchain_identifier = toolchain_name,
|
|
toolchain_config = toolchain_name + "_config",
|
|
|
|
all_files = ":all_files",
|
|
compiler_files = ":compiler_files",
|
|
dwp_files = ":empty",
|
|
linker_files = ":linker_files",
|
|
objcopy_files = toolchain_tool_path(toolchain_name, "objcopy"),
|
|
strip_files = toolchain_tool_path(toolchain_name, "strip"),
|
|
supports_param_files = 1,
|
|
)
|
|
|
|
native.cc_toolchain_suite(
|
|
name = "toolchain",
|
|
toolchains = {
|
|
# target_cpu | compiler
|
|
"{target_cpu}|{compiler}".format(target_cpu=target_cpu, compiler=compiler) : "cc-compiler",
|
|
},
|
|
visibility = ["//visibility:public"],
|
|
)
|