189 lines
7.5 KiB
Python
189 lines
7.5 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")
|
||
|
|
load("//:cc_toolchain_base.bzl",
|
||
|
|
"build_cc_toolchain_config",
|
||
|
|
"all_compile_actions",
|
||
|
|
"all_cpp_compile_actions",
|
||
|
|
"all_link_actions")
|
||
|
|
|
||
|
|
tool_paths = [
|
||
|
|
tool_path(name = "ar", path = "bin/wrapper-ar",),
|
||
|
|
tool_path(name = "compat-ld", path = "bin/wrapper-ld",),
|
||
|
|
tool_path(name = "cpp", path = "bin/wrapper-cpp",),
|
||
|
|
tool_path(name = "dwp", path = "bin/wrapper-dwp",),
|
||
|
|
tool_path(name = "gcc", path = "bin/wrapper-gcc",),
|
||
|
|
tool_path(name = "gcov", path = "bin/wrapper-gcov",),
|
||
|
|
tool_path(name = "ld", path = "bin/wrapper-ld",),
|
||
|
|
tool_path(name = "nm", path = "bin/wrapper-nm",),
|
||
|
|
tool_path(name = "objcopy", path = "bin/wrapper-objcopy",),
|
||
|
|
tool_path(name = "objdump", path = "bin/wrapper-objdump",),
|
||
|
|
tool_path(name = "strip", path = "bin/wrapper-strip",),
|
||
|
|
]
|
||
|
|
|
||
|
|
def _impl(ctx):
|
||
|
|
builtin_sysroot = "external/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc"
|
||
|
|
|
||
|
|
compile_flags_feature = feature(
|
||
|
|
name = "compile_flags",
|
||
|
|
enabled = True,
|
||
|
|
flag_sets = [
|
||
|
|
flag_set(
|
||
|
|
actions = all_compile_actions,
|
||
|
|
flag_groups = [
|
||
|
|
flag_group(
|
||
|
|
flags = [
|
||
|
|
"-idirafter", "external/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc/usr/include",
|
||
|
|
"-idirafter", "external/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/7.3.1/include",
|
||
|
|
"-idirafter", "external/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/7.3.1/include-fixed",
|
||
|
|
"-idirafter", "external/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/7.3.1/install-tools/include",
|
||
|
|
"-idirafter", "external/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/7.3.1/plugin/include",
|
||
|
|
],
|
||
|
|
),
|
||
|
|
flag_group(
|
||
|
|
flags = [
|
||
|
|
"-D__arm64",
|
||
|
|
"-Wall", # All warnings are enabled.
|
||
|
|
"-Wunused-but-set-parameter", # Enable a few more warnings that aren't part of -Wall.
|
||
|
|
"-Wno-free-nonheap-object", # Disable some that are problematic, has false positives
|
||
|
|
"-fno-omit-frame-pointer", # Keep stack frames for debugging, even in opt mode.
|
||
|
|
"-no-canonical-prefixes",
|
||
|
|
"-fstack-protector",
|
||
|
|
"-fPIE",
|
||
|
|
"-fPIC",
|
||
|
|
],
|
||
|
|
),
|
||
|
|
],
|
||
|
|
),
|
||
|
|
flag_set(
|
||
|
|
actions = all_cpp_compile_actions + [ACTION_NAMES.lto_backend],
|
||
|
|
flag_groups = [
|
||
|
|
flag_group(
|
||
|
|
flags = [
|
||
|
|
"-isystem" , "external/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/7.3.1",
|
||
|
|
"-isystem" , "external/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/7.3.1/aarch64-linux-gnu",
|
||
|
|
]
|
||
|
|
),
|
||
|
|
],
|
||
|
|
),
|
||
|
|
flag_set(
|
||
|
|
actions = all_compile_actions,
|
||
|
|
flag_groups = [
|
||
|
|
flag_group(
|
||
|
|
flags = [
|
||
|
|
"-g",
|
||
|
|
],
|
||
|
|
),
|
||
|
|
],
|
||
|
|
with_features = [with_feature_set(features = ["dbg"])],
|
||
|
|
),
|
||
|
|
flag_set(
|
||
|
|
actions = all_compile_actions,
|
||
|
|
flag_groups = [
|
||
|
|
flag_group(
|
||
|
|
flags = [
|
||
|
|
"-g0",
|
||
|
|
"-O2",
|
||
|
|
"-DNDEBUG",
|
||
|
|
"-ffunction-sections",
|
||
|
|
"-fdata-sections",
|
||
|
|
],
|
||
|
|
),
|
||
|
|
],
|
||
|
|
with_features = [with_feature_set(features = ["opt"])],
|
||
|
|
),
|
||
|
|
flag_set(
|
||
|
|
actions = all_link_actions,
|
||
|
|
flag_groups = [
|
||
|
|
flag_group(
|
||
|
|
flags = [
|
||
|
|
"-lstdc++",
|
||
|
|
],
|
||
|
|
),
|
||
|
|
],
|
||
|
|
),
|
||
|
|
flag_set(
|
||
|
|
actions = all_link_actions,
|
||
|
|
flag_groups = [
|
||
|
|
flag_group(
|
||
|
|
flags = [
|
||
|
|
"-Wl,--gc-sections",
|
||
|
|
],
|
||
|
|
),
|
||
|
|
],
|
||
|
|
with_features = [with_feature_set(features = ["opt"])],
|
||
|
|
),
|
||
|
|
flag_set(
|
||
|
|
actions = [
|
||
|
|
ACTION_NAMES.cpp_link_executable,
|
||
|
|
],
|
||
|
|
flag_groups = [
|
||
|
|
flag_group(
|
||
|
|
flags = [
|
||
|
|
"-pie",
|
||
|
|
],
|
||
|
|
),
|
||
|
|
],
|
||
|
|
),
|
||
|
|
],
|
||
|
|
)
|
||
|
|
|
||
|
|
cxx_builtin_include_directories = [
|
||
|
|
"%package(@gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu//aarch64-linux-gnu/libc/usr/include)%",
|
||
|
|
"%package(@gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu//lib/gcc/aarch64-linux-gnu/7.3.1/include)%",
|
||
|
|
"%package(@gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu//lib/gcc/aarch64-linux-gnu/7.3.1/include-fixed)%",
|
||
|
|
"%package(@gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu//lib/gcc/aarch64-linux-gnu/7.3.1/install-tools/include)%",
|
||
|
|
"%package(@gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu//lib/gcc/aarch64-linux-gnu/7.3.1/plugin/include)%",
|
||
|
|
"%package(@gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu//aarch64-linux-gnu/include/c++/7.3.1)%",
|
||
|
|
"%package(@gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu//aarch64-linux-gnu/include/c++/7.3.1/aarch64-linux-gnu)%",
|
||
|
|
]
|
||
|
|
|
||
|
|
objcopy_embed_flags_feature = feature(
|
||
|
|
name = "objcopy_embed_flags",
|
||
|
|
enabled = True,
|
||
|
|
flag_sets = [
|
||
|
|
flag_set(
|
||
|
|
actions = ["objcopy_embed_data"],
|
||
|
|
flag_groups = [
|
||
|
|
flag_group(
|
||
|
|
flags = [
|
||
|
|
"-I",
|
||
|
|
"binary",
|
||
|
|
],
|
||
|
|
),
|
||
|
|
],
|
||
|
|
),
|
||
|
|
]
|
||
|
|
)
|
||
|
|
|
||
|
|
dbg_feature = feature(name = "dbg")
|
||
|
|
opt_feature = feature(name = "opt")
|
||
|
|
|
||
|
|
return cc_common.create_cc_toolchain_config_info(
|
||
|
|
ctx = ctx,
|
||
|
|
toolchain_identifier = ctx.attr.toolchain_name,
|
||
|
|
host_system_name = "",
|
||
|
|
target_system_name = "linux",
|
||
|
|
target_cpu = ctx.attr.target_cpu,
|
||
|
|
target_libc = ctx.attr.target_cpu,
|
||
|
|
compiler = ctx.attr.compiler,
|
||
|
|
abi_version = ctx.attr.compiler,
|
||
|
|
abi_libc_version = ctx.attr.compiler,
|
||
|
|
tool_paths = tool_paths,
|
||
|
|
features = [compile_flags_feature, objcopy_embed_flags_feature, dbg_feature, opt_feature],
|
||
|
|
cxx_builtin_include_directories = cxx_builtin_include_directories,
|
||
|
|
builtin_sysroot = builtin_sysroot,
|
||
|
|
)
|
||
|
|
|
||
|
|
# DON'T MODIFY
|
||
|
|
cc_toolchain_config = build_cc_toolchain_config(_impl)
|
||
|
|
|
||
|
|
# EOF
|