Mozilla TensorFlow r2.3
This commit is contained in:
parent
ee598066c4
commit
6fad14b203
18
.bazelrc
18
.bazelrc
|
@ -202,6 +202,24 @@ build:sycl_asan --copt -fno-omit-frame-pointer --copt -fsanitize-coverage=3 --co
|
|||
build:sycl_nodouble --config=sycl
|
||||
build:sycl_trisycl --define=using_trisycl=true
|
||||
|
||||
build --copt=-DTFLITE_WITH_RUY_GEMV
|
||||
|
||||
build:rpi3 --host_crosstool_top=@bazel_tools//tools/cpp:toolchain
|
||||
build:rpi3 --crosstool_top=//third_party/toolchains/embedded/linaro-gcc72-armeabi:toolchain
|
||||
build:rpi3 --cpu=armv7a --define=target_system=rpi3
|
||||
build:rpi3 --copt=-march=armv7-a --copt=-mtune=cortex-a53 --copt=-mfloat-abi=hard --copt=-mfpu=neon-fp-armv8 --copt=-DRASPBERRY_PI --copt=-D_GLIBCXX_USE_CXX11_ABI=0 --copt=-std=gnu99 --copt=-mno-unaligned-access
|
||||
build:rpi3 --define=tensorflow_mkldnn_contraction_kernel=0
|
||||
build:rpi3 --define=runtime=tflite
|
||||
build:rpi3_opt --copt=-funsafe-math-optimizations --copt=-ftree-vectorize --copt=-pipe
|
||||
|
||||
build:rpi3-armv8 --host_crosstool_top=@bazel_tools//tools/cpp:toolchain
|
||||
build:rpi3-armv8 --crosstool_top=//third_party/toolchains/embedded/linaro-gcc72-aarch64:toolchain
|
||||
build:rpi3-armv8 --cpu=aarch64 --define=target_system=rpi3-armv8
|
||||
build:rpi3-armv8 --copt=-march=armv8-a --copt=-mtune=cortex-a53 --copt=-DRASPBERRY_PI --copt=-D_GLIBCXX_USE_CXX11_ABI=0 --copt=-std=gnu99
|
||||
build:rpi3-armv8 --define=tensorflow_mkldnn_contraction_kernel=0
|
||||
build:rpi3-armv8 --define=runtime=tflite
|
||||
build:rpi3-armv8_opt --copt=-funsafe-math-optimizations --copt=-ftree-vectorize --copt=-pipe
|
||||
|
||||
# Options extracted from configure script
|
||||
build:ngraph --define=with_ngraph_support=true
|
||||
build:numa --define=with_numa_support=true
|
||||
|
|
12
WORKSPACE
12
WORKSPACE
|
@ -18,6 +18,18 @@ load("//tensorflow:workspace.bzl", "tf_repositories")
|
|||
# Please add all new TensorFlow dependencies in workspace.bzl.
|
||||
tf_repositories()
|
||||
|
||||
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
|
||||
|
||||
git_repository(
|
||||
name = "com_github_nelhage_rules_boost",
|
||||
commit = "1e3a69bf2d5cd10c34b74f066054cd335d033d71",
|
||||
remote = "https://github.com/nelhage/rules_boost",
|
||||
shallow_since = "1591047380 -0700",
|
||||
)
|
||||
|
||||
load("@com_github_nelhage_rules_boost//:boost/boost.bzl", "boost_deps")
|
||||
boost_deps()
|
||||
|
||||
register_toolchains("@local_config_python//:py_toolchain")
|
||||
|
||||
load("@io_bazel_rules_closure//closure:defs.bzl", "closure_repositories")
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
../native_client
|
|
@ -5864,15 +5864,15 @@ cc_library(
|
|||
":string_format_op",
|
||||
":string_join_op",
|
||||
":string_length_op",
|
||||
":string_lower_op",
|
||||
# ":string_lower_op",
|
||||
":string_ngrams_op",
|
||||
":string_split_op",
|
||||
":string_strip_op",
|
||||
":string_to_hash_bucket_op",
|
||||
":string_upper_op",
|
||||
# ":string_upper_op",
|
||||
":substr_op",
|
||||
":unicode_ops",
|
||||
":unicode_script_op",
|
||||
# ":unicode_ops",
|
||||
# ":unicode_script_op",
|
||||
":unsorted_segment_join_op",
|
||||
],
|
||||
)
|
||||
|
@ -5885,7 +5885,7 @@ cc_library(
|
|||
"//tensorflow/core:framework",
|
||||
"//tensorflow/core:lib",
|
||||
"//tensorflow/core:protos_all_cc",
|
||||
"@icu//:common",
|
||||
# "@icu//:common",
|
||||
],
|
||||
)
|
||||
|
||||
|
@ -6041,7 +6041,7 @@ tf_kernel_library(
|
|||
prefix = "string_lower_op",
|
||||
deps = STRING_DEPS + [
|
||||
"@com_google_absl//absl/strings",
|
||||
"@icu//:common",
|
||||
# "@icu//:common",
|
||||
],
|
||||
)
|
||||
|
||||
|
@ -6050,7 +6050,7 @@ tf_kernel_library(
|
|||
prefix = "string_upper_op",
|
||||
deps = STRING_DEPS + [
|
||||
"@com_google_absl//absl/strings",
|
||||
"@icu//:common",
|
||||
# "@icu//:common",
|
||||
],
|
||||
)
|
||||
|
||||
|
@ -6096,7 +6096,7 @@ tf_kernel_library(
|
|||
"//tensorflow/core:lib_internal",
|
||||
"//third_party/eigen3",
|
||||
"//third_party/icu/data:conversion_data",
|
||||
"@icu//:common",
|
||||
# "@icu//:common",
|
||||
],
|
||||
)
|
||||
|
||||
|
@ -7125,10 +7125,10 @@ filegroup(
|
|||
"mutex_ops.*",
|
||||
"batch_kernels.*",
|
||||
"regex_replace_op.cc",
|
||||
"string_lower_op.cc", # Requires ICU for unicode.
|
||||
"string_upper_op.cc", # Requires ICU for unicode.
|
||||
# "string_lower_op.cc", # Requires ICU for unicode.
|
||||
# "string_upper_op.cc", # Requires ICU for unicode.
|
||||
"unicode_ops.cc",
|
||||
"unicode_script_op.cc",
|
||||
# "unicode_script_op.cc",
|
||||
# Ops that are inherently incompatible with Android (e.g. tied to x86 platform).
|
||||
"mkl_*",
|
||||
"xsmm_*",
|
||||
|
@ -8620,7 +8620,7 @@ tf_kernel_library(
|
|||
srcs = ["unicode_script_op.cc"],
|
||||
deps = [
|
||||
"//tensorflow/core:framework",
|
||||
"@icu//:common",
|
||||
# "@icu//:common",
|
||||
],
|
||||
)
|
||||
|
||||
|
@ -8652,6 +8652,26 @@ cc_library(
|
|||
],
|
||||
)
|
||||
|
||||
tf_kernel_library(
|
||||
name = "deepspeech_cwise_ops",
|
||||
srcs = [
|
||||
"cwise_op_less.cc",
|
||||
"cwise_op_minimum.cc",
|
||||
"cwise_op_mul_1.cc",
|
||||
],
|
||||
gpu_srcs = [
|
||||
"cwise_op_gpu_less.cu.cc",
|
||||
"cwise_op_gpu_minimum.cu.cc",
|
||||
"cwise_op_gpu_mul.cu.cc",
|
||||
],
|
||||
deps = [
|
||||
":cwise_lib",
|
||||
"//tensorflow/core:framework",
|
||||
"//tensorflow/core:lib",
|
||||
"//third_party/eigen3",
|
||||
],
|
||||
)
|
||||
|
||||
# Header-only version of cwise_lib for clients that want to use the cwise_ops
|
||||
# functionality in their own custom ops.
|
||||
cc_header_only_library(
|
||||
|
|
|
@ -116,6 +116,7 @@ REGISTER_KERNEL(GPU, int16);
|
|||
REGISTER_KERNEL(GPU, qint16);
|
||||
REGISTER_KERNEL(GPU, quint16);
|
||||
REGISTER_KERNEL(GPU, uint32);
|
||||
REGISTER_KERNEL(GPU, int32);
|
||||
REGISTER_KERNEL(GPU, qint32);
|
||||
REGISTER_KERNEL(GPU, int64);
|
||||
REGISTER_KERNEL(GPU, uint64);
|
||||
|
|
|
@ -57,7 +57,6 @@ cc_library(
|
|||
"//conditions:default": [],
|
||||
}) + select({
|
||||
"//tensorflow:fuchsia": [],
|
||||
"//tensorflow:windows": [],
|
||||
"//conditions:default": [
|
||||
"//tensorflow/lite/delegates/xnnpack:xnnpack_delegate",
|
||||
],
|
||||
|
|
|
@ -292,6 +292,26 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
|
|||
],
|
||||
)
|
||||
|
||||
tf_http_archive(
|
||||
name = "LinaroArmGcc72",
|
||||
build_file = clean_dep("//third_party/toolchains/embedded/linaro-gcc72-armeabi:linaro-gcc72-armeabi.BUILD"),
|
||||
strip_prefix = "gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf/",
|
||||
urls = [
|
||||
"https://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabihf/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf.tar.xz",
|
||||
],
|
||||
sha256 = "cee0087b1f1205b73996651b99acd3a926d136e71047048f1758ffcec69b1ca2",
|
||||
)
|
||||
|
||||
tf_http_archive(
|
||||
name = "LinaroAarch64Gcc72",
|
||||
build_file = clean_dep("//third_party/toolchains/embedded/linaro-gcc72-aarch64:linaro-gcc72-aarch64.BUILD"),
|
||||
strip_prefix = "gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/",
|
||||
urls = [
|
||||
"https://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/aarch64-linux-gnu/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz",
|
||||
],
|
||||
sha256 = "20181f828e1075f1a493947ff91e82dd578ce9f8638fbdfc39e24b62857d8f8d",
|
||||
)
|
||||
|
||||
tf_http_archive(
|
||||
name = "libxsmm_archive",
|
||||
build_file = clean_dep("//third_party:libxsmm.BUILD"),
|
||||
|
|
|
@ -1,3 +1,14 @@
|
|||
--- ./absl/time/internal/cctz/include/cctz/civil_time_detail.h 2020-08-06 01:33:56.005757145 +0200
|
||||
+++ ./absl/time/internal/cctz/include/cctz/civil_time_detail.h 2020-08-06 01:33:35.460579387 +0200
|
||||
@@ -23,7 +23,7 @@
|
||||
#include "absl/base/config.h"
|
||||
|
||||
// Disable constexpr support unless we are in C++14 mode.
|
||||
-#if __cpp_constexpr >= 201304 || (defined(_MSC_VER) && _MSC_VER >= 1910)
|
||||
+#if (!defined(NO_CONSTEXPR_FOR_YOU) && __cpp_constexpr >= 201304) || (defined(_MSC_VER) && _MSC_VER >= 1910)
|
||||
#define CONSTEXPR_D constexpr // data
|
||||
#define CONSTEXPR_F constexpr // function
|
||||
#define CONSTEXPR_M constexpr // member
|
||||
--- ./absl/time/internal/cctz/BUILD.bazel 2019-09-23 13:20:52.000000000 -0700
|
||||
+++ ./absl/time/internal/cctz/BUILD.bazel.fixed 2019-09-23 13:20:48.000000000 -0700
|
||||
@@ -74,15 +74,6 @@
|
||||
|
@ -301,4 +312,3 @@
|
|||
+ .internal_compressed_tuple::template Storage<CompressedTuple, I>::get();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
# We make everything here private to make any dependencies on ICU become a build
|
||||
# failure and easier/faster to track down, as it's not needed for DeepSpeech and
|
||||
# causes linking problems on Windows.
|
||||
package(
|
||||
default_visibility = ["//visibility:public"],
|
||||
default_visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
licenses(["notice"]) # Apache 2.0
|
||||
|
|
|
@ -67,5 +67,4 @@ config_setting(
|
|||
)
|
||||
|
||||
%{PYTHON_INCLUDE_GENRULE}
|
||||
%{NUMPY_INCLUDE_GENRULE}
|
||||
%{PYTHON_IMPORT_LIB_GENRULE}
|
||||
|
|
|
@ -210,7 +210,7 @@ def _create_local_python_repository(repository_ctx):
|
|||
python_lib = _get_python_lib(repository_ctx, python_bin)
|
||||
_check_python_lib(repository_ctx, python_lib)
|
||||
python_include = _get_python_include(repository_ctx, python_bin)
|
||||
numpy_include = _get_numpy_include(repository_ctx, python_bin) + "/numpy"
|
||||
# numpy_include = _get_numpy_include(repository_ctx, python_bin) + "/numpy"
|
||||
python_include_rule = _symlink_genrule_for_dir(
|
||||
repository_ctx,
|
||||
python_include,
|
||||
|
@ -233,12 +233,12 @@ def _create_local_python_repository(repository_ctx):
|
|||
[python_import_lib_src],
|
||||
[python_import_lib_name],
|
||||
)
|
||||
numpy_include_rule = _symlink_genrule_for_dir(
|
||||
repository_ctx,
|
||||
numpy_include,
|
||||
"numpy_include/numpy",
|
||||
"numpy_include",
|
||||
)
|
||||
#numpy_include_rule = _symlink_genrule_for_dir(
|
||||
# repository_ctx,
|
||||
# numpy_include,
|
||||
# "numpy_include/numpy",
|
||||
# "numpy_include",
|
||||
#)
|
||||
|
||||
platform_constraint = ""
|
||||
if repository_ctx.attr.platform_constraint:
|
||||
|
@ -247,7 +247,7 @@ def _create_local_python_repository(repository_ctx):
|
|||
"%{PYTHON_BIN_PATH}": python_bin,
|
||||
"%{PYTHON_INCLUDE_GENRULE}": python_include_rule,
|
||||
"%{PYTHON_IMPORT_LIB_GENRULE}": python_import_lib_genrule,
|
||||
"%{NUMPY_INCLUDE_GENRULE}": numpy_include_rule,
|
||||
#"%{NUMPY_INCLUDE_GENRULE}": numpy_include_rule,
|
||||
"%{PLATFORM_CONSTRAINT}": platform_constraint,
|
||||
})
|
||||
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
|
||||
_SINGLE_URL_WHITELIST = depset([
|
||||
"arm_compiler",
|
||||
"LinaroArmGcc72",
|
||||
"LinaroAarch64Gcc72",
|
||||
])
|
||||
|
||||
def _is_windows(ctx):
|
||||
|
|
|
@ -0,0 +1,67 @@
|
|||
# This is the entry point for --crosstool_top.
|
||||
#
|
||||
# The cc_toolchain rule used is found by:
|
||||
#
|
||||
# 1. Finding the appropriate toolchain in the CROSSTOOL file based on the --cpu
|
||||
# and --compiler command line flags (if they exist, otherwise using the
|
||||
# "default_target_cpu" / "default_toolchain" fields in the CROSSTOOL file)
|
||||
# 2. Concatenating the "target_cpu" and "compiler" fields of the toolchain in
|
||||
# use and using that as a key in the map in the "toolchains" attribute
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(":linaro_toolchain_config.bzl", "linaro_toolchain_config")
|
||||
|
||||
cc_toolchain_suite(
|
||||
name = "toolchain",
|
||||
toolchains = {
|
||||
"aarch64": ":cc-compiler-aarch64",
|
||||
},
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "empty",
|
||||
srcs = [],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "gcc_linux_all_files",
|
||||
srcs = [
|
||||
"//third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc:tool-wrappers",
|
||||
"@LinaroAarch64Gcc72//:compiler_pieces",
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "gcc_linux_linker_files",
|
||||
srcs = [
|
||||
"//third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc:ld",
|
||||
"//third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc:ar",
|
||||
"@LinaroAarch64Gcc72//:compiler_pieces",
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "gcc_linux_compiler_files",
|
||||
srcs = [
|
||||
"//third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc:gcc",
|
||||
"//third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc:as",
|
||||
],
|
||||
)
|
||||
|
||||
linaro_toolchain_config(name = "linaro_aarch64")
|
||||
|
||||
cc_toolchain(
|
||||
name = "cc-compiler-aarch64",
|
||||
all_files = ":gcc_linux_all_files",
|
||||
compiler_files = ":gcc_linux_compiler_files",
|
||||
toolchain_identifier = "gcc72_linaro_aarch64",
|
||||
toolchain_config = ":linaro_aarch64",
|
||||
dwp_files = ":empty",
|
||||
dynamic_runtime_lib = ":empty",
|
||||
linker_files = ":gcc_linux_linker_files",
|
||||
objcopy_files = "//third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc:objcopy",
|
||||
static_runtime_lib = ":empty",
|
||||
strip_files = "//third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc:strip",
|
||||
supports_param_files = 1,
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
|
@ -0,0 +1,79 @@
|
|||
package(default_visibility = ['//third_party/toolchains/embedded/linaro-gcc72-aarch64:__pkg__'])
|
||||
|
||||
filegroup(
|
||||
name = 'gcc',
|
||||
srcs = [
|
||||
'@LinaroAarch64Gcc72//:gcc',
|
||||
'aarch64-linux-gnu-gcc',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'ar',
|
||||
srcs = [
|
||||
'@LinaroAarch64Gcc72//:ar',
|
||||
'aarch64-linux-gnu-ar',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'ld',
|
||||
srcs = [
|
||||
'@LinaroAarch64Gcc72//:ld',
|
||||
'aarch64-linux-gnu-ld',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'nm',
|
||||
srcs = [
|
||||
'@LinaroAarch64Gcc72//:nm',
|
||||
'aarch64-linux-gnu-nm',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'objcopy',
|
||||
srcs = [
|
||||
'@LinaroAarch64Gcc72//:objcopy',
|
||||
'aarch64-linux-gnu-objcopy',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'objdump',
|
||||
srcs = [
|
||||
'@LinaroAarch64Gcc72//:objdump',
|
||||
'aarch64-linux-gnu-objdump',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'strip',
|
||||
srcs = [
|
||||
'@LinaroAarch64Gcc72//:strip',
|
||||
'aarch64-linux-gnu-strip',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'as',
|
||||
srcs = [
|
||||
'@LinaroAarch64Gcc72//:as',
|
||||
'aarch64-linux-gnu-as',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'tool-wrappers',
|
||||
srcs = [
|
||||
':gcc',
|
||||
':ar',
|
||||
':ld',
|
||||
':nm',
|
||||
':objcopy',
|
||||
':objdump',
|
||||
':strip',
|
||||
':as',
|
||||
],
|
||||
)
|
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-ar
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-ar
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a aarch64-linux-gnu-ar \
|
||||
external/LinaroAarch64Gcc72/bin/aarch64-linux-gnu-ar \
|
||||
"$@"
|
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-as
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-as
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a aarch64-linux-gnu-as \
|
||||
external/LinaroAarch64Gcc72/bin/aarch64-linux-gnu-as \
|
||||
"$@"
|
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-cpp
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-cpp
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a aarch64-linux-gnu-cpp \
|
||||
external/LinaroAarch64Gcc72/bin/aarch64-linux-gnu-cpp \
|
||||
"$@"
|
6
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-gcc
vendored
Executable file
6
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-gcc
vendored
Executable file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
PATH="external/LinaroAarch64Gcc72/libexec/gcc/aarch64-linux-gnu/7.2.1/:$PATH" \
|
||||
exec \
|
||||
external/LinaroAarch64Gcc72/bin/aarch64-linux-gnu-gcc \
|
||||
"$@"
|
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-gcov
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-gcov
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a aarch64-linux-gnu-gcov \
|
||||
external/LinaroAarch64Gcc72/bin/aarch64-linux-gnu-gcov \
|
||||
"$@"
|
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-ld
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-ld
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a aarch64-linux-gnu-ld \
|
||||
external/LinaroAarch64Gcc72/bin/aarch64-linux-gnu-ld \
|
||||
"$@"
|
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-nm
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-nm
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a aarch64-linux-gnu-nm \
|
||||
external/LinaroAarch64Gcc72/bin/aarch64-linux-gnu-nm \
|
||||
"$@"
|
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-objcopy
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-objcopy
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a aarch64-linux-gnu-objcopy \
|
||||
external/LinaroAarch64Gcc72/bin/aarch64-linux-gnu-objcopy \
|
||||
"$@"
|
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-objdump
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-objdump
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a aarch64-linux-gnu-objdump \
|
||||
external/LinaroAarch64Gcc72/bin/aarch64-linux-gnu-objdump \
|
||||
"$@"
|
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-strip
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-aarch64/gcc/aarch64-linux-gnu-strip
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a aarch64-linux-gnu-strip \
|
||||
external/LinaroAarch64Gcc72/bin/aarch64-linux-gnu-strip \
|
||||
"$@"
|
81
third_party/toolchains/embedded/linaro-gcc72-aarch64/linaro-gcc72-aarch64.BUILD
vendored
Normal file
81
third_party/toolchains/embedded/linaro-gcc72-aarch64/linaro-gcc72-aarch64.BUILD
vendored
Normal file
|
@ -0,0 +1,81 @@
|
|||
package(default_visibility = ['//visibility:public'])
|
||||
|
||||
filegroup(
|
||||
name = 'gcc',
|
||||
srcs = [
|
||||
'bin/aarch64-linux-gnu-gcc',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'ar',
|
||||
srcs = [
|
||||
'bin/aarch64-linux-gnu-ar',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'ld',
|
||||
srcs = [
|
||||
'bin/aarch64-linux-gnu-ld',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'nm',
|
||||
srcs = [
|
||||
'bin/aarch64-linux-gnu-nm',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'objcopy',
|
||||
srcs = [
|
||||
'bin/aarch64-linux-gnu-objcopy',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'objdump',
|
||||
srcs = [
|
||||
'bin/aarch64-linux-gnu-objdump',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'strip',
|
||||
srcs = [
|
||||
'bin/aarch64-linux-gnu-strip',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'as',
|
||||
srcs = [
|
||||
'bin/aarch64-linux-gnu-as',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'compiler_pieces',
|
||||
srcs = glob([
|
||||
'aarch64-linux-gnu/**',
|
||||
'libexec/**',
|
||||
'lib/gcc/aarch64-linux-gnu/**',
|
||||
'include/**',
|
||||
]),
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'compiler_components',
|
||||
srcs = [
|
||||
':gcc',
|
||||
':ar',
|
||||
':ld',
|
||||
':nm',
|
||||
':objcopy',
|
||||
':objdump',
|
||||
':strip',
|
||||
':as',
|
||||
],
|
||||
)
|
484
third_party/toolchains/embedded/linaro-gcc72-aarch64/linaro_toolchain_config.bzl
vendored
Normal file
484
third_party/toolchains/embedded/linaro-gcc72-aarch64/linaro_toolchain_config.bzl
vendored
Normal file
|
@ -0,0 +1,484 @@
|
|||
# Copyright 2019 The Bazel Authors. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
"""A Starlark cc_toolchain configuration rule"""
|
||||
|
||||
load("@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
|
||||
"action_config",
|
||||
"artifact_name_pattern",
|
||||
"env_entry",
|
||||
"env_set",
|
||||
"feature",
|
||||
"feature_set",
|
||||
"flag_group",
|
||||
"flag_set",
|
||||
"make_variable",
|
||||
"tool",
|
||||
"tool_path",
|
||||
"variable_with_value",
|
||||
"with_feature_set",
|
||||
)
|
||||
|
||||
load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
|
||||
|
||||
all_compile_actions = [
|
||||
ACTION_NAMES.c_compile,
|
||||
ACTION_NAMES.cpp_compile,
|
||||
ACTION_NAMES.linkstamp_compile,
|
||||
ACTION_NAMES.assemble,
|
||||
ACTION_NAMES.preprocess_assemble,
|
||||
ACTION_NAMES.cpp_header_parsing,
|
||||
ACTION_NAMES.cpp_module_compile,
|
||||
ACTION_NAMES.cpp_module_codegen,
|
||||
ACTION_NAMES.clif_match,
|
||||
ACTION_NAMES.lto_backend,
|
||||
]
|
||||
|
||||
all_cpp_compile_actions = [
|
||||
ACTION_NAMES.cpp_compile,
|
||||
ACTION_NAMES.linkstamp_compile,
|
||||
ACTION_NAMES.cpp_header_parsing,
|
||||
ACTION_NAMES.cpp_module_compile,
|
||||
ACTION_NAMES.cpp_module_codegen,
|
||||
ACTION_NAMES.clif_match,
|
||||
]
|
||||
|
||||
preprocessor_compile_actions = [
|
||||
ACTION_NAMES.c_compile,
|
||||
ACTION_NAMES.cpp_compile,
|
||||
ACTION_NAMES.linkstamp_compile,
|
||||
ACTION_NAMES.preprocess_assemble,
|
||||
ACTION_NAMES.cpp_header_parsing,
|
||||
ACTION_NAMES.cpp_module_compile,
|
||||
ACTION_NAMES.clif_match,
|
||||
]
|
||||
|
||||
codegen_compile_actions = [
|
||||
ACTION_NAMES.c_compile,
|
||||
ACTION_NAMES.cpp_compile,
|
||||
ACTION_NAMES.linkstamp_compile,
|
||||
ACTION_NAMES.assemble,
|
||||
ACTION_NAMES.preprocess_assemble,
|
||||
ACTION_NAMES.cpp_module_codegen,
|
||||
ACTION_NAMES.lto_backend,
|
||||
]
|
||||
|
||||
all_link_actions = [
|
||||
ACTION_NAMES.cpp_link_executable,
|
||||
ACTION_NAMES.cpp_link_dynamic_library,
|
||||
ACTION_NAMES.cpp_link_nodeps_dynamic_library,
|
||||
]
|
||||
|
||||
def _impl(ctx):
|
||||
|
||||
abi_version = "aarch64"
|
||||
abi_libc_version = "glibc_2.24"
|
||||
builtin_sysroot = None
|
||||
compiler = "gcc"
|
||||
host_system_name = "aarch64"
|
||||
needs_pic = True
|
||||
supports_gold_linker = False
|
||||
supports_incremental_linker = False
|
||||
supports_fission = False
|
||||
supports_interface_shared_objects = False
|
||||
supports_normalizing_ar = False
|
||||
supports_start_end_lib = False
|
||||
supports_thin_archives = False
|
||||
target_libc = "glibc_2.24"
|
||||
target_cpu = "armv8"
|
||||
target_system_name = "armv8"
|
||||
toolchain_identifier = "gcc72_linaro_aarch64"
|
||||
cc_target_os = None
|
||||
|
||||
action_configs = []
|
||||
|
||||
supports_pic_feature = feature(name = "supports_pic", enabled = True)
|
||||
supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
|
||||
|
||||
user_compile_flags_feature = feature(
|
||||
name = "user_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
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,
|
||||
],
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = ["%{user_compile_flags}"],
|
||||
iterate_over = "user_compile_flags",
|
||||
expand_if_available = "user_compile_flags",
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
user_link_flags_feature = feature(
|
||||
name = "user_link_flags",
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = all_link_actions,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = ["%{user_link_flags}"],
|
||||
iterate_over = "user_link_flags",
|
||||
expand_if_available = "user_link_flags",
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
shared_flag_feature = feature(
|
||||
name = "shared_flag",
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = [
|
||||
ACTION_NAMES.cpp_link_dynamic_library,
|
||||
ACTION_NAMES.cpp_link_nodeps_dynamic_library,
|
||||
ACTION_NAMES.lto_index_for_dynamic_library,
|
||||
ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
|
||||
],
|
||||
flag_groups = [flag_group(flags = ["-shared"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
sysroot_feature = feature(
|
||||
name = "sysroot",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = [
|
||||
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,
|
||||
ACTION_NAMES.cpp_link_executable,
|
||||
ACTION_NAMES.cpp_link_dynamic_library,
|
||||
ACTION_NAMES.cpp_link_nodeps_dynamic_library,
|
||||
],
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = ["--sysroot=%{sysroot}"],
|
||||
expand_if_available = "sysroot",
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
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"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
unfiltered_compile_flags_feature = feature(
|
||||
name = "unfiltered_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
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,
|
||||
],
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
# Make C++ compilation deterministic. Use linkstamping instead of these
|
||||
# compiler symbols.
|
||||
"-Wno-builtin-macro-redefined",
|
||||
"-D__DATE__=\"redacted\"",
|
||||
"-D__TIMESTAMP__=\"redacted\"",
|
||||
"-D__TIME__=\"redacted\"",
|
||||
# This makes GCC and Clang do what we want when called through symlinks.
|
||||
"-no-canonical-prefixes",
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
default_compile_flags_feature = feature(
|
||||
name = "default_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
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,
|
||||
],
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-U_FORTIFY_SOURCE",
|
||||
"-D_FORTIFY_SOURCE=1",
|
||||
"-fstack-protector",
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
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,
|
||||
],
|
||||
flag_groups = [flag_group(flags = ["-g"])],
|
||||
with_features = [with_feature_set(features = ["dbg"])],
|
||||
),
|
||||
flag_set(
|
||||
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,
|
||||
],
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-g0",
|
||||
"-O2",
|
||||
"-DNDEBUG",
|
||||
"-ffunction-sections",
|
||||
"-fdata-sections",
|
||||
],
|
||||
),
|
||||
],
|
||||
with_features = [with_feature_set(features = ["opt"])],
|
||||
),
|
||||
flag_set(
|
||||
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.lto_backend,
|
||||
ACTION_NAMES.clif_match,
|
||||
],
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-std=c++11",
|
||||
"--sysroot=external/LinaroAarch64Gcc72/aarch64-linux-gnu/libc",
|
||||
"-pthread",
|
||||
"-nostdinc",
|
||||
"-isystem",
|
||||
"external/LinaroAarch64Gcc72/aarch64-linux-gnu/include/c++/7.2.1/aarch64-linux-gnu",
|
||||
"-isystem",
|
||||
"external/LinaroAarch64Gcc72/aarch64-linux-gnu/include/c++/7.2.1",
|
||||
"-isystem",
|
||||
"external/LinaroAarch64Gcc72/lib/gcc/aarch64-linux-gnu/7.2.1/include",
|
||||
"-isystem",
|
||||
"external/LinaroAarch64Gcc72/aarch64-linux-gnu/libc/usr/include",
|
||||
"-isystem",
|
||||
"external/LinaroAarch64Gcc72/lib/gcc/aarch64-linux-gnu/7.2.1/include-fixed",
|
||||
"-isystem",
|
||||
"external/LinaroAarch64Gcc72/aarch64-linux-gnu/libc/usr/include",
|
||||
"-isystem",
|
||||
"external/LinaroAarch64Gcc72/aarch64-linux-gnu/libc/usr/include/aarch64-linux-gnu",
|
||||
"-isystem",
|
||||
"external/LinaroAarch64Gcc72/lib/gcc/aarch64-linux-gnu/7.2.1/include",
|
||||
"-isystem",
|
||||
"external/LinaroAarch64Gcc72/include/c++/7.2.1/aarch64-linux-gnu",
|
||||
"-isystem",
|
||||
"external/LinaroAarch64Gcc72/include/c++/7.2.1",
|
||||
# Security hardening on by default.
|
||||
"-fstack-protector",
|
||||
"-fPIE",
|
||||
# All warnings are enabled. Maybe enable -Werror as well?
|
||||
"-Wall",
|
||||
# Enable a few more warnings that aren't part of -Wall.
|
||||
"-Wunused-but-set-parameter",
|
||||
# But disable some that are problematic.
|
||||
"-Wno-free-nonheap-object", # has false positives
|
||||
# Keep stack frames for debugging, even in opt mode.
|
||||
"-fno-omit-frame-pointer",
|
||||
# Enable coloring even if there's no attached terminal. Bazel removes the
|
||||
# escape sequences if --nocolor is specified.
|
||||
"-fdiagnostics-color=always",
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
default_link_flags_feature = feature(
|
||||
name = "default_link_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = all_link_actions,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
# "-target",
|
||||
# "aarch64-linux-gnu",
|
||||
"--sysroot=external/LinaroAarch64Gcc72/aarch64-linux-gnu/libc",
|
||||
"-pass-exit-codes",
|
||||
"-pie",
|
||||
"-lstdc++",
|
||||
"-lm",
|
||||
"-lpthread",
|
||||
"-Wl,--dynamic-linker=/lib/ld-linux-aarch64.so.1",
|
||||
"-Wl,-no-as-needed",
|
||||
"-Wl,-z,relro,-z,now",
|
||||
"-no-canonical-prefixes",
|
||||
# Stamp the binary with a unique identifier.
|
||||
"-Wl,--build-id=md5",
|
||||
"-Wl,--hash-style=gnu",
|
||||
"-Lexternal/LinaroAarch64Gcc72/aarch64-linux-gnu/lib",
|
||||
"-Lexternal/LinaroAarch64Gcc72/aarch64-linux-gnu/libc/lib",
|
||||
"-Lexternal/LinaroAarch64Gcc72/aarch64-linux-gnu/libc/usr/lib",
|
||||
"-Bexternal/LinaroAarch64Gcc72/aarch64-linux-gnu/bin",
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
actions = all_link_actions,
|
||||
flag_groups = [flag_group(flags = ["-Wl,--gc-sections"])],
|
||||
with_features = [with_feature_set(features = ["opt"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
opt_feature = feature(name = "opt")
|
||||
|
||||
dbg_feature = feature(name = "dbg")
|
||||
|
||||
features = [
|
||||
default_compile_flags_feature,
|
||||
default_link_flags_feature,
|
||||
supports_dynamic_linker_feature,
|
||||
supports_pic_feature,
|
||||
objcopy_embed_flags_feature,
|
||||
opt_feature,
|
||||
dbg_feature,
|
||||
user_compile_flags_feature,
|
||||
user_link_flags_feature,
|
||||
shared_flag_feature,
|
||||
sysroot_feature,
|
||||
unfiltered_compile_flags_feature,
|
||||
]
|
||||
|
||||
cxx_builtin_include_directories = [
|
||||
"%package(@LinaroAarch64Gcc72//include)%",
|
||||
"%package(@LinaroAarch64Gcc72//aarch64-linux-gnu/libc/usr/include)%",
|
||||
"%package(@LinaroAarch64Gcc72//aarch64-linux-gnu/libc/lib/gcc/aarch64-linux-gnu/7.2.1/include-fixed)%",
|
||||
"%package(@LinaroAarch64Gcc72//include)%/c++/7.2.1",
|
||||
"%package(@LinaroAarch64Gcc72//aarch64-linux-gnu/libc/lib/gcc/aarch64-linux-gnu/7.2.1/include)%",
|
||||
"%package(@LinaroAarch64Gcc72//aarch64-linux-gnu/libc/lib/gcc/aarch64-linux-gnu/7.2.1/include-fixed)%",
|
||||
"%package(@LinaroAarch64Gcc72//lib/gcc/aarch64-linux-gnu/7.2.1/include)%",
|
||||
"%package(@LinaroAarch64Gcc72//lib/gcc/aarch64-linux-gnu/7.2.1/include-fixed)%",
|
||||
"%package(@LinaroAarch64Gcc72//aarch64-linux-gnu/include)%/c++/7.2.1",
|
||||
]
|
||||
|
||||
artifact_name_patterns = []
|
||||
make_variables = []
|
||||
|
||||
tool_paths = [
|
||||
tool_path(name = "ar", path = "gcc/aarch64-linux-gnu-ar"),
|
||||
tool_path(name = "compat-ld", path = "gcc/aarch64-linux-gnu-ld"),
|
||||
tool_path(name = "cpp", path = "gcc/aarch64-linux-gnu-cpp"),
|
||||
tool_path(name = "dwp", path = "gcc/aarch64-linux-gnu-dwp"),
|
||||
tool_path(name = "gcc", path = "gcc/aarch64-linux-gnu-gcc"),
|
||||
tool_path(name = "gcov", path = "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcov-4.9"),
|
||||
# C(++), compiles invoke the compiler (as that is the one knowing where
|
||||
# to find libraries),, but we provide LD so other rules can invoke the linker.
|
||||
tool_path(name = "ld", path = "gcc/aarch64-linux-gnu-ld"),
|
||||
tool_path(name = "nm", path = "gcc/aarch64-linux-gnu-nm"),
|
||||
tool_path(name = "objcopy", path = "gcc/aarch64-linux-gnu-objcopy"),
|
||||
tool_path(name = "objdump", path = "gcc/aarch64-linux-gnu-objdump"),
|
||||
tool_path(name = "strip", path = "gcc/aarch64-linux-gnu-strip"),
|
||||
]
|
||||
|
||||
return cc_common.create_cc_toolchain_config_info(
|
||||
ctx = ctx,
|
||||
features = features,
|
||||
action_configs = action_configs,
|
||||
artifact_name_patterns = artifact_name_patterns,
|
||||
cxx_builtin_include_directories = cxx_builtin_include_directories,
|
||||
toolchain_identifier = toolchain_identifier,
|
||||
host_system_name = host_system_name,
|
||||
target_system_name = target_system_name,
|
||||
target_cpu = target_cpu,
|
||||
target_libc = target_libc,
|
||||
compiler = compiler,
|
||||
abi_version = abi_version,
|
||||
abi_libc_version = abi_libc_version,
|
||||
tool_paths = tool_paths,
|
||||
make_variables = make_variables,
|
||||
builtin_sysroot = builtin_sysroot,
|
||||
cc_target_os = cc_target_os,
|
||||
)
|
||||
|
||||
linaro_toolchain_config = rule(
|
||||
implementation = _impl,
|
||||
attrs = {},
|
||||
provides = [CcToolchainConfigInfo],
|
||||
)
|
|
@ -0,0 +1,67 @@
|
|||
# This is the entry point for --crosstool_top.
|
||||
#
|
||||
# The cc_toolchain rule used is found by:
|
||||
#
|
||||
# 1. Finding the appropriate toolchain in the CROSSTOOL file based on the --cpu
|
||||
# and --compiler command line flags (if they exist, otherwise using the
|
||||
# "default_target_cpu" / "default_toolchain" fields in the CROSSTOOL file)
|
||||
# 2. Concatenating the "target_cpu" and "compiler" fields of the toolchain in
|
||||
# use and using that as a key in the map in the "toolchains" attribute
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(":linaro_toolchain_config.bzl", "linaro_toolchain_config")
|
||||
|
||||
cc_toolchain_suite(
|
||||
name = "toolchain",
|
||||
toolchains = {
|
||||
"armv7a": ":cc-compiler-armv7a",
|
||||
},
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "empty",
|
||||
srcs = [],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "gcc_linux_all_files",
|
||||
srcs = [
|
||||
"//third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc:tool-wrappers",
|
||||
"@LinaroArmGcc72//:compiler_pieces",
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "gcc_linux_linker_files",
|
||||
srcs = [
|
||||
"//third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc:ld",
|
||||
"//third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc:ar",
|
||||
"@LinaroArmGcc72//:compiler_pieces",
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "gcc_linux_compiler_files",
|
||||
srcs = [
|
||||
"//third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc:gcc",
|
||||
"//third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc:as",
|
||||
],
|
||||
)
|
||||
|
||||
linaro_toolchain_config(name = "linaro_armeabi-v7a")
|
||||
|
||||
cc_toolchain(
|
||||
name = "cc-compiler-armv7a",
|
||||
all_files = ":gcc_linux_all_files",
|
||||
compiler_files = ":gcc_linux_compiler_files",
|
||||
toolchain_identifier = "gcc72_linaro_armhf",
|
||||
toolchain_config = ":linaro_armeabi-v7a",
|
||||
dwp_files = ":empty",
|
||||
dynamic_runtime_lib = ":empty",
|
||||
linker_files = ":gcc_linux_linker_files",
|
||||
objcopy_files = "//third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc:objcopy",
|
||||
static_runtime_lib = ":empty",
|
||||
strip_files = "//third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc:strip",
|
||||
supports_param_files = 0,
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
|
@ -0,0 +1,79 @@
|
|||
package(default_visibility = ['//third_party/toolchains/embedded/linaro-gcc72-armeabi:__pkg__'])
|
||||
|
||||
filegroup(
|
||||
name = 'gcc',
|
||||
srcs = [
|
||||
'@LinaroArmGcc72//:gcc',
|
||||
'arm-linux-gnueabihf-gcc',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'ar',
|
||||
srcs = [
|
||||
'@LinaroArmGcc72//:ar',
|
||||
'arm-linux-gnueabihf-ar',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'ld',
|
||||
srcs = [
|
||||
'@LinaroArmGcc72//:ld',
|
||||
'arm-linux-gnueabihf-ld',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'nm',
|
||||
srcs = [
|
||||
'@LinaroArmGcc72//:nm',
|
||||
'arm-linux-gnueabihf-nm',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'objcopy',
|
||||
srcs = [
|
||||
'@LinaroArmGcc72//:objcopy',
|
||||
'arm-linux-gnueabihf-objcopy',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'objdump',
|
||||
srcs = [
|
||||
'@LinaroArmGcc72//:objdump',
|
||||
'arm-linux-gnueabihf-objdump',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'strip',
|
||||
srcs = [
|
||||
'@LinaroArmGcc72//:strip',
|
||||
'arm-linux-gnueabihf-strip',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'as',
|
||||
srcs = [
|
||||
'@LinaroArmGcc72//:as',
|
||||
'arm-linux-gnueabihf-as',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'tool-wrappers',
|
||||
srcs = [
|
||||
':gcc',
|
||||
':ar',
|
||||
':ld',
|
||||
':nm',
|
||||
':objcopy',
|
||||
':objdump',
|
||||
':strip',
|
||||
':as',
|
||||
],
|
||||
)
|
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-ar
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-ar
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a arm-linux-gnueabihf-ar \
|
||||
external/LinaroArmGcc72/bin/arm-linux-gnueabihf-ar \
|
||||
"$@"
|
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-as
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-as
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a arm-linux-gnueabihf-as \
|
||||
external/LinaroArmGcc72/bin/arm-linux-gnueabihf-as \
|
||||
"$@"
|
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-cpp
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-cpp
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a arm-linux-gnueabihf-cpp \
|
||||
external/LinaroArmGcc72/bin/arm-linux-gnueabihf-cpp \
|
||||
"$@"
|
6
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-gcc
vendored
Executable file
6
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-gcc
vendored
Executable file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
PATH="external/LinaroArmGcc72/libexec/gcc/arm-linux-gnueabihf/7.2.1/:$PATH" \
|
||||
exec \
|
||||
external/LinaroArmGcc72/bin/arm-linux-gnueabihf-gcc \
|
||||
"$@"
|
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-gcov
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-gcov
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a arm-linux-gnueabihf-gcov \
|
||||
external/LinaroArmGcc72/bin/arm-linux-gnueabihf-gcov \
|
||||
"$@"
|
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-ld
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-ld
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a arm-linux-gnueabihf-ld \
|
||||
external/LinaroArmGcc72/bin/arm-linux-gnueabihf-ld \
|
||||
"$@"
|
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-nm
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-nm
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a arm-linux-gnueabihf-nm \
|
||||
external/LinaroArmGcc72/bin/arm-linux-gnueabihf-nm \
|
||||
"$@"
|
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-objcopy
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-objcopy
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a arm-linux-gnueabihf-objcopy \
|
||||
external/LinaroArmGcc72/bin/arm-linux-gnueabihf-objcopy \
|
||||
"$@"
|
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-objdump
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-objdump
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a arm-linux-gnueabihf-objdump \
|
||||
external/LinaroArmGcc72/bin/arm-linux-gnueabihf-objdump \
|
||||
"$@"
|
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-strip
vendored
Executable file
5
third_party/toolchains/embedded/linaro-gcc72-armeabi/gcc/arm-linux-gnueabihf-strip
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash --norc
|
||||
|
||||
exec -a arm-linux-gnueabihf-strip \
|
||||
external/LinaroArmGcc72/bin/arm-linux-gnueabihf-strip \
|
||||
"$@"
|
81
third_party/toolchains/embedded/linaro-gcc72-armeabi/linaro-gcc72-armeabi.BUILD
vendored
Normal file
81
third_party/toolchains/embedded/linaro-gcc72-armeabi/linaro-gcc72-armeabi.BUILD
vendored
Normal file
|
@ -0,0 +1,81 @@
|
|||
package(default_visibility = ['//visibility:public'])
|
||||
|
||||
filegroup(
|
||||
name = 'gcc',
|
||||
srcs = [
|
||||
'bin/arm-linux-gnueabihf-gcc',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'ar',
|
||||
srcs = [
|
||||
'bin/arm-linux-gnueabihf-ar',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'ld',
|
||||
srcs = [
|
||||
'bin/arm-linux-gnueabihf-ld',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'nm',
|
||||
srcs = [
|
||||
'bin/arm-linux-gnueabihf-nm',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'objcopy',
|
||||
srcs = [
|
||||
'bin/arm-linux-gnueabihf-objcopy',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'objdump',
|
||||
srcs = [
|
||||
'bin/arm-linux-gnueabihf-objdump',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'strip',
|
||||
srcs = [
|
||||
'bin/arm-linux-gnueabihf-strip',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'as',
|
||||
srcs = [
|
||||
'bin/arm-linux-gnueabihf-as',
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'compiler_pieces',
|
||||
srcs = glob([
|
||||
'arm-linux-gnueabihf/**',
|
||||
'libexec/**',
|
||||
'lib/gcc/arm-linux-gnueabihf/**',
|
||||
'include/**',
|
||||
]),
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = 'compiler_components',
|
||||
srcs = [
|
||||
':gcc',
|
||||
':ar',
|
||||
':ld',
|
||||
':nm',
|
||||
':objcopy',
|
||||
':objdump',
|
||||
':strip',
|
||||
':as',
|
||||
],
|
||||
)
|
484
third_party/toolchains/embedded/linaro-gcc72-armeabi/linaro_toolchain_config.bzl
vendored
Normal file
484
third_party/toolchains/embedded/linaro-gcc72-armeabi/linaro_toolchain_config.bzl
vendored
Normal file
|
@ -0,0 +1,484 @@
|
|||
# Copyright 2019 The Bazel Authors. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
"""A Starlark cc_toolchain configuration rule"""
|
||||
|
||||
load("@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
|
||||
"action_config",
|
||||
"artifact_name_pattern",
|
||||
"env_entry",
|
||||
"env_set",
|
||||
"feature",
|
||||
"feature_set",
|
||||
"flag_group",
|
||||
"flag_set",
|
||||
"make_variable",
|
||||
"tool",
|
||||
"tool_path",
|
||||
"variable_with_value",
|
||||
"with_feature_set",
|
||||
)
|
||||
|
||||
load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
|
||||
|
||||
all_compile_actions = [
|
||||
ACTION_NAMES.c_compile,
|
||||
ACTION_NAMES.cpp_compile,
|
||||
ACTION_NAMES.linkstamp_compile,
|
||||
ACTION_NAMES.assemble,
|
||||
ACTION_NAMES.preprocess_assemble,
|
||||
ACTION_NAMES.cpp_header_parsing,
|
||||
ACTION_NAMES.cpp_module_compile,
|
||||
ACTION_NAMES.cpp_module_codegen,
|
||||
ACTION_NAMES.clif_match,
|
||||
ACTION_NAMES.lto_backend,
|
||||
]
|
||||
|
||||
all_cpp_compile_actions = [
|
||||
ACTION_NAMES.cpp_compile,
|
||||
ACTION_NAMES.linkstamp_compile,
|
||||
ACTION_NAMES.cpp_header_parsing,
|
||||
ACTION_NAMES.cpp_module_compile,
|
||||
ACTION_NAMES.cpp_module_codegen,
|
||||
ACTION_NAMES.clif_match,
|
||||
]
|
||||
|
||||
preprocessor_compile_actions = [
|
||||
ACTION_NAMES.c_compile,
|
||||
ACTION_NAMES.cpp_compile,
|
||||
ACTION_NAMES.linkstamp_compile,
|
||||
ACTION_NAMES.preprocess_assemble,
|
||||
ACTION_NAMES.cpp_header_parsing,
|
||||
ACTION_NAMES.cpp_module_compile,
|
||||
ACTION_NAMES.clif_match,
|
||||
]
|
||||
|
||||
codegen_compile_actions = [
|
||||
ACTION_NAMES.c_compile,
|
||||
ACTION_NAMES.cpp_compile,
|
||||
ACTION_NAMES.linkstamp_compile,
|
||||
ACTION_NAMES.assemble,
|
||||
ACTION_NAMES.preprocess_assemble,
|
||||
ACTION_NAMES.cpp_module_codegen,
|
||||
ACTION_NAMES.lto_backend,
|
||||
]
|
||||
|
||||
all_link_actions = [
|
||||
ACTION_NAMES.cpp_link_executable,
|
||||
ACTION_NAMES.cpp_link_dynamic_library,
|
||||
ACTION_NAMES.cpp_link_nodeps_dynamic_library,
|
||||
]
|
||||
|
||||
def _impl(ctx):
|
||||
|
||||
abi_version = "armeabi"
|
||||
abi_libc_version = "glibc_2.24"
|
||||
builtin_sysroot = None
|
||||
compiler = "gcc"
|
||||
host_system_name = "armeabi"
|
||||
needs_pic = True
|
||||
supports_gold_linker = False
|
||||
supports_incremental_linker = False
|
||||
supports_fission = False
|
||||
supports_interface_shared_objects = False
|
||||
supports_normalizing_ar = False
|
||||
supports_start_end_lib = False
|
||||
supports_thin_archives = False
|
||||
target_libc = "glibc_2.24"
|
||||
target_cpu = "armv7"
|
||||
target_system_name = "armeabi-v7a"
|
||||
toolchain_identifier = "gcc72_linaro_armhf"
|
||||
cc_target_os = None
|
||||
|
||||
action_configs = []
|
||||
|
||||
supports_pic_feature = feature(name = "supports_pic", enabled = True)
|
||||
supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
|
||||
|
||||
user_compile_flags_feature = feature(
|
||||
name = "user_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
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,
|
||||
],
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = ["%{user_compile_flags}"],
|
||||
iterate_over = "user_compile_flags",
|
||||
expand_if_available = "user_compile_flags",
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
user_link_flags_feature = feature(
|
||||
name = "user_link_flags",
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = all_link_actions,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = ["%{user_link_flags}"],
|
||||
iterate_over = "user_link_flags",
|
||||
expand_if_available = "user_link_flags",
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
shared_flag_feature = feature(
|
||||
name = "shared_flag",
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = [
|
||||
ACTION_NAMES.cpp_link_dynamic_library,
|
||||
ACTION_NAMES.cpp_link_nodeps_dynamic_library,
|
||||
ACTION_NAMES.lto_index_for_dynamic_library,
|
||||
ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
|
||||
],
|
||||
flag_groups = [flag_group(flags = ["-shared"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
sysroot_feature = feature(
|
||||
name = "sysroot",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = [
|
||||
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,
|
||||
ACTION_NAMES.cpp_link_executable,
|
||||
ACTION_NAMES.cpp_link_dynamic_library,
|
||||
ACTION_NAMES.cpp_link_nodeps_dynamic_library,
|
||||
],
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = ["--sysroot=%{sysroot}"],
|
||||
expand_if_available = "sysroot",
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
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"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
unfiltered_compile_flags_feature = feature(
|
||||
name = "unfiltered_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
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,
|
||||
],
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
# Make C++ compilation deterministic. Use linkstamping instead of these
|
||||
# compiler symbols.
|
||||
"-Wno-builtin-macro-redefined",
|
||||
"-D__DATE__=\"redacted\"",
|
||||
"-D__TIMESTAMP__=\"redacted\"",
|
||||
"-D__TIME__=\"redacted\"",
|
||||
# This makes GCC and Clang do what we want when called through symlinks.
|
||||
"-no-canonical-prefixes",
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
default_compile_flags_feature = feature(
|
||||
name = "default_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
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,
|
||||
],
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-U_FORTIFY_SOURCE",
|
||||
"-D_FORTIFY_SOURCE=1",
|
||||
"-fstack-protector",
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
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,
|
||||
],
|
||||
flag_groups = [flag_group(flags = ["-g"])],
|
||||
with_features = [with_feature_set(features = ["dbg"])],
|
||||
),
|
||||
flag_set(
|
||||
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,
|
||||
],
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-g0",
|
||||
"-O2",
|
||||
"-DNDEBUG",
|
||||
"-ffunction-sections",
|
||||
"-fdata-sections",
|
||||
],
|
||||
),
|
||||
],
|
||||
with_features = [with_feature_set(features = ["opt"])],
|
||||
),
|
||||
flag_set(
|
||||
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.lto_backend,
|
||||
ACTION_NAMES.clif_match,
|
||||
],
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-std=c++11",
|
||||
"--sysroot=external/LinaroArmGcc72/arm-linux-gnueabihf/libc",
|
||||
"-pthread",
|
||||
"-nostdinc",
|
||||
"-isystem",
|
||||
"external/LinaroArmGcc72/arm-linux-gnueabihf/include/c++/7.2.1/arm-linux-gnueabihf",
|
||||
"-isystem",
|
||||
"external/LinaroArmGcc72/arm-linux-gnueabihf/include/c++/7.2.1",
|
||||
"-isystem",
|
||||
"external/LinaroArmGcc72/lib/gcc/arm-linux-gnueabihf/7.2.1/include",
|
||||
"-isystem",
|
||||
"external/LinaroArmGcc72/arm-linux-gnueabihf/libc/usr/include",
|
||||
"-isystem",
|
||||
"external/LinaroArmGcc72/lib/gcc/arm-linux-gnueabihf/7.2.1/include-fixed",
|
||||
"-isystem",
|
||||
"external/LinaroArmGcc72/arm-linux-gnueabihf/libc/usr/include",
|
||||
"-isystem",
|
||||
"external/LinaroArmGcc72/arm-linux-gnueabihf/libc/usr/include/arm-linux-gnueabihf",
|
||||
"-isystem",
|
||||
"external/LinaroArmGcc72/lib/gcc/arm-linux-gnueabihf/7.2.1/include",
|
||||
"-isystem",
|
||||
"external/LinaroArmGcc72/include/c++/7.2.1/arm-linux-gnueabihf",
|
||||
"-isystem",
|
||||
"external/LinaroArmGcc72/include/c++/7.2.1",
|
||||
# Security hardening on by default.
|
||||
"-fstack-protector",
|
||||
"-fPIE",
|
||||
# All warnings are enabled. Maybe enable -Werror as well?
|
||||
"-Wall",
|
||||
# Enable a few more warnings that aren't part of -Wall.
|
||||
"-Wunused-but-set-parameter",
|
||||
# But disable some that are problematic.
|
||||
"-Wno-free-nonheap-object", # has false positives
|
||||
# Keep stack frames for debugging, even in opt mode.
|
||||
"-fno-omit-frame-pointer",
|
||||
# Enable coloring even if there's no attached terminal. Bazel removes the
|
||||
# escape sequences if --nocolor is specified.
|
||||
"-fdiagnostics-color=always",
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
default_link_flags_feature = feature(
|
||||
name = "default_link_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = all_link_actions,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
# "-target",
|
||||
# "arm-linux-gnueabihf",
|
||||
"--sysroot=external/LinaroArmGcc72/arm-linux-gnueabihf/libc",
|
||||
"-pass-exit-codes",
|
||||
"-pie",
|
||||
"-lstdc++",
|
||||
"-lm",
|
||||
"-lpthread",
|
||||
"-Wl,--dynamic-linker=/lib/ld-linux-armhf.so.3",
|
||||
"-Wl,-no-as-needed",
|
||||
"-Wl,-z,relro,-z,now",
|
||||
"-no-canonical-prefixes",
|
||||
# Stamp the binary with a unique identifier.
|
||||
"-Wl,--build-id=md5",
|
||||
"-Wl,--hash-style=gnu",
|
||||
"-Lexternal/LinaroArmGcc72/arm-linux-gnueabihf/lib",
|
||||
"-Lexternal/LinaroArmGcc72/arm-linux-gnueabihf/libc/lib",
|
||||
"-Lexternal/LinaroArmGcc72/arm-linux-gnueabihf/libc/usr/lib",
|
||||
"-Bexternal/LinaroArmGcc72/arm-linux-gnueabihf/bin",
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
actions = all_link_actions,
|
||||
flag_groups = [flag_group(flags = ["-Wl,--gc-sections"])],
|
||||
with_features = [with_feature_set(features = ["opt"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
opt_feature = feature(name = "opt")
|
||||
|
||||
dbg_feature = feature(name = "dbg")
|
||||
|
||||
features = [
|
||||
default_compile_flags_feature,
|
||||
default_link_flags_feature,
|
||||
supports_dynamic_linker_feature,
|
||||
supports_pic_feature,
|
||||
objcopy_embed_flags_feature,
|
||||
opt_feature,
|
||||
dbg_feature,
|
||||
user_compile_flags_feature,
|
||||
user_link_flags_feature,
|
||||
shared_flag_feature,
|
||||
sysroot_feature,
|
||||
unfiltered_compile_flags_feature,
|
||||
]
|
||||
|
||||
cxx_builtin_include_directories = [
|
||||
"%package(@LinaroArmGcc72//include)%",
|
||||
"%package(@LinaroArmGcc72//arm-linux-gnueabihf/libc/usr/include)%",
|
||||
"%package(@LinaroArmGcc72//arm-linux-gnueabihf/libc/lib/gcc/arm-linux-gnueabihf/7.2.1/include-fixed)%",
|
||||
"%package(@LinaroArmGcc72//include)%/c++/7.2.1",
|
||||
"%package(@LinaroArmGcc72//arm-linux-gnueabihf/libc/lib/gcc/arm-linux-gnueabihf/7.2.1/include)%",
|
||||
"%package(@LinaroArmGcc72//arm-linux-gnueabihf/libc/lib/gcc/arm-linux-gnueabihf/7.2.1/include-fixed)%",
|
||||
"%package(@LinaroArmGcc72//lib/gcc/arm-linux-gnueabihf/7.2.1/include)%",
|
||||
"%package(@LinaroArmGcc72//lib/gcc/arm-linux-gnueabihf/7.2.1/include-fixed)%",
|
||||
"%package(@LinaroArmGcc72//arm-linux-gnueabihf/include)%/c++/7.2.1",
|
||||
]
|
||||
|
||||
artifact_name_patterns = []
|
||||
make_variables = []
|
||||
|
||||
tool_paths = [
|
||||
tool_path(name = "ar", path = "gcc/arm-linux-gnueabihf-ar"),
|
||||
tool_path(name = "compat-ld", path = "gcc/arm-linux-gnueabihf-ld"),
|
||||
tool_path(name = "cpp", path = "gcc/arm-linux-gnueabihf-cpp"),
|
||||
tool_path(name = "dwp", path = "gcc/arm-linux-gnueabihf-dwp"),
|
||||
tool_path(name = "gcc", path = "gcc/arm-linux-gnueabihf-gcc"),
|
||||
tool_path(name = "gcov", path = "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcov-4.9"),
|
||||
# C(++), compiles invoke the compiler (as that is the one knowing where
|
||||
# to find libraries),, but we provide LD so other rules can invoke the linker.
|
||||
tool_path(name = "ld", path = "gcc/arm-linux-gnueabihf-ld"),
|
||||
tool_path(name = "nm", path = "gcc/arm-linux-gnueabihf-nm"),
|
||||
tool_path(name = "objcopy", path = "gcc/arm-linux-gnueabihf-objcopy"),
|
||||
tool_path(name = "objdump", path = "gcc/arm-linux-gnueabihf-objdump"),
|
||||
tool_path(name = "strip", path = "gcc/arm-linux-gnueabihf-strip"),
|
||||
]
|
||||
|
||||
return cc_common.create_cc_toolchain_config_info(
|
||||
ctx = ctx,
|
||||
features = features,
|
||||
action_configs = action_configs,
|
||||
artifact_name_patterns = artifact_name_patterns,
|
||||
cxx_builtin_include_directories = cxx_builtin_include_directories,
|
||||
toolchain_identifier = toolchain_identifier,
|
||||
host_system_name = host_system_name,
|
||||
target_system_name = target_system_name,
|
||||
target_cpu = target_cpu,
|
||||
target_libc = target_libc,
|
||||
compiler = compiler,
|
||||
abi_version = abi_version,
|
||||
abi_libc_version = abi_libc_version,
|
||||
tool_paths = tool_paths,
|
||||
make_variables = make_variables,
|
||||
builtin_sysroot = builtin_sysroot,
|
||||
cc_target_os = cc_target_os,
|
||||
)
|
||||
|
||||
linaro_toolchain_config = rule(
|
||||
implementation = _impl,
|
||||
attrs = {},
|
||||
provides = [CcToolchainConfigInfo],
|
||||
)
|
Loading…
Reference in New Issue