mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-22 03:30:35 +00:00
First cut at multi-arch cross compiling toolchain (#4945)
* PRYSM-2849 first cut at multi-arch cross compiling toolchain. currently supports arm64 and amd64 via docker cross compiler image * picky linter * some readme cleanup * remove arm 8.2 revision for arm64 builds (cortex a72 is ARMv8.0-A) remove arm32 toolchain from multiarch dockerfile * remove extranous WORKSPACE entries * add docker remote execution configs for amd64 and arm64 * add osx bazelrc configs * working osx toolchain * update readme * cleanup for amd, arm and osx cross before beginning windows * initial stab at mingw windows cross * add docker target for windows_amd64 and update readme for cross-compiling * little more cleanup for readability * Check in generated RBE. Still tweaking config but linux amd64 -> linux amd64 on RBE works OK. Cross compile does not work properly in RBE yet. * fix * update image * Making some progress * delete artifacts * Working build * Add remote config * remove some things I added to README * Tidy * Update readme * remove 2 commented lines * buildifer * Merge pull request #1 from prysmaticlabs/cross-compile-with-suburbandad Cross compile with suburbandad * Merge branch 'master' into clang-cross-compile * buildifier on generated stuff * Merge branch 'master' into clang-cross-compile * Merge branch 'master' into clang-cross-compile * Merge branch 'master' into clang-cross-compile
This commit is contained in:
parent
aebc883a0d
commit
e2a6f5a6ea
145
.bazelrc
145
.bazelrc
@ -29,3 +29,148 @@ run --incompatible_strict_action_env
|
||||
build --define kafka_enabled=false
|
||||
test --define kafka_enabled=false
|
||||
run --define kafka_enabled=false
|
||||
|
||||
|
||||
# multi-arch cross-compiling toolchain configs:
|
||||
-----------------------------------------------
|
||||
build:cross --crosstool_top=@prysm_toolchains//:multiarch_toolchain
|
||||
build:cross --host_platform=@io_bazel_rules_go//go/toolchain:linux_amd64
|
||||
build:cross --host_crosstool_top=@prysm_toolchains//:hostonly_toolchain
|
||||
|
||||
# linux_amd64 config for cross compiler toolchain, not strictly necessary since host/exec env is amd64
|
||||
build:linux_amd64 --platforms=@io_bazel_rules_go//go/toolchain:linux_amd64_cgo
|
||||
|
||||
# osx_amd64 config for cross compiler toolchain
|
||||
build:osx_amd64 --config=cross
|
||||
build:osx_amd64 --platforms=@io_bazel_rules_go//go/toolchain:darwin_amd64_cgo
|
||||
build:osx_amd64 --compiler=osxcross
|
||||
|
||||
# windows
|
||||
build:windows_amd64 --config=cross
|
||||
build:windows_amd64 --platforms=@io_bazel_rules_go//go/toolchain:windows_amd64_cgo
|
||||
build:windows_amd64 --compiler=mingw-w64
|
||||
|
||||
# linux_arm64 conifg for cross compiler toolchain
|
||||
build:linux_arm64 --config=cross
|
||||
build:linux_arm64 --platforms=@io_bazel_rules_go//go/toolchain:linux_arm64_cgo
|
||||
build:linux_arm64 --copt=-funsafe-math-optimizations
|
||||
build:linux_arm64 --copt=-ftree-vectorize
|
||||
build:linux_arm64 --copt=-fomit-frame-pointer
|
||||
build:linux_arm64 --cpu=aarch64
|
||||
build:linux_arm64 --compiler=clang
|
||||
build:linux_arm64 --copt=-march=armv8-a
|
||||
|
||||
|
||||
# toolchain build debug configs
|
||||
#------------------------------
|
||||
build:debug --sandbox_debug
|
||||
build:debug --toolchain_resolution_debug
|
||||
build:debug --verbose_failures
|
||||
build:debug -s
|
||||
|
||||
# windows debug
|
||||
build:windows_amd64_debug --config=windows_amd64
|
||||
build:windows_amd64_debug --config=debug
|
||||
|
||||
# osx_amd64 debug config
|
||||
build:osx_amd64_debug --config=debug
|
||||
build:osx_amd64_debug --config=osx_amd64
|
||||
|
||||
# linux_arm64_debug
|
||||
build:linux_arm64_debug --config=linux_arm64
|
||||
build:linux_arm64_debug --config=debug
|
||||
|
||||
# linux_amd64_debug
|
||||
build:linux_amd64_debug --config=linux_amd64
|
||||
build:linux_amd64_debug --config=debug
|
||||
|
||||
|
||||
# Docker Sandbox Configs
|
||||
#-----------------------
|
||||
# Note all docker sandbox configs must run from a linux x86_64 host
|
||||
# build:docker-sandbox --experimental_docker_image=gcr.io/prysmaticlabs/rbe-worker:latest
|
||||
build:docker-sandbox --spawn_strategy=docker --strategy=Javac=docker --genrule_strategy=docker
|
||||
build:docker-sandbox --define=EXECUTOR=remote
|
||||
build:docker-sandbox --experimental_docker_verbose
|
||||
build:docker-sandbox --experimental_enable_docker_sandbox
|
||||
build:docker-sandbox --crosstool_top=@rbe_ubuntu_clang//cc:toolchain
|
||||
build:docker-sandbox --host_javabase=@rbe_ubuntu_clang//java:jdk
|
||||
build:docker-sandbox --javabase=@rbe_ubuntu_clang//java:jdk
|
||||
build:docker-sandbox --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8
|
||||
build:docker-sandbox --java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8
|
||||
build:docker-sandbox --extra_execution_platforms=@rbe_ubuntu_clang//config:platform
|
||||
build:docker-sandbox --host_platform=@rbe_ubuntu_clang//config:platform
|
||||
build:docker-sandbox --platforms=@rbe_ubuntu_clang//config:platform
|
||||
build:docker-sandbox --extra_toolchains=@prysm_toolchains//:cc-toolchain-multiarch
|
||||
|
||||
# windows_amd64 docker sandbox build config
|
||||
build:windows_amd64_docker --config=docker-sandbox --config=windows_amd64
|
||||
build:windows_amd64_docker_debug --config=windows_amd64_docker --config=debug
|
||||
|
||||
# osx_amd64 docker sandbox build config
|
||||
build:osx_amd64_docker --config=docker-sandbox --config=osx_amd64
|
||||
build:osx_amd64_docker_debug --config=osx_amd64_docker --config=debug
|
||||
|
||||
# linux_arm64 docker sandbox build config
|
||||
build:linux_arm64_docker --config=docker-sandbox --config=linux_arm64
|
||||
build:linux_arm64_docker_debug --config=linux_arm64_docker --config=debug
|
||||
|
||||
# linux_amd64 docker sandbox build config
|
||||
build:linux_amd64_docker --config=docker-sandbox --config=linux_amd64
|
||||
build:linux_amd64_docker_debug --config=linux_amd64_docker --config=debug
|
||||
|
||||
|
||||
# Remote Build Execution
|
||||
#-----------------------
|
||||
# Originally from https://github.com/bazelbuild/bazel-toolchains/blob/master/bazelrc/bazel-2.0.0.bazelrc
|
||||
#
|
||||
# Depending on how many machines are in the remote execution instance, setting
|
||||
# this higher can make builds faster by allowing more jobs to run in parallel.
|
||||
# Setting it too high can result in jobs that timeout, however, while waiting
|
||||
# for a remote machine to execute them.
|
||||
build:remote --jobs=50
|
||||
|
||||
# Set several flags related to specifying the platform, toolchain and java
|
||||
# properties.
|
||||
# These flags should only be used as is for the rbe-ubuntu16-04 container
|
||||
# and need to be adapted to work with other toolchain containers.
|
||||
build:remote --host_javabase=@rbe_ubuntu_clang//java:jdk
|
||||
build:remote --javabase=@rbe_ubuntu_clang//java:jdk
|
||||
build:remote --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8
|
||||
build:remote --java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8
|
||||
build:remote --crosstool_top=@rbe_ubuntu_clang//cc:toolchain
|
||||
build:remote --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
|
||||
# Platform flags:
|
||||
# The toolchain container used for execution is defined in the target indicated
|
||||
# by "extra_execution_platforms", "host_platform" and "platforms".
|
||||
# More about platforms: https://docs.bazel.build/versions/master/platforms.html
|
||||
build:remote --extra_toolchains=@rbe_ubuntu_clang//config:cc-toolchain
|
||||
build:remote --extra_execution_platforms=@rbe_ubuntu_clang//config:platform
|
||||
build:remote --host_platform=@rbe_ubuntu_clang//config:platform
|
||||
build:remote --platforms=@rbe_ubuntu_clang//config:platform
|
||||
|
||||
# Starting with Bazel 0.27.0 strategies do not need to be explicitly
|
||||
# defined. See https://github.com/bazelbuild/bazel/issues/7480
|
||||
build:remote --define=EXECUTOR=remote
|
||||
|
||||
# Enable remote execution so actions are performed on the remote systems.
|
||||
# build:remote --remote_executor=grpcs://remotebuildexecution.googleapis.com
|
||||
|
||||
# Enforce stricter environment rules, which eliminates some non-hermetic
|
||||
# behavior and therefore improves both the remote cache hit rate and the
|
||||
# correctness and repeatability of the build.
|
||||
build:remote --incompatible_strict_action_env=true
|
||||
|
||||
# Set a higher timeout value, just in case.
|
||||
build:remote --remote_timeout=3600
|
||||
|
||||
# Enable authentication. This will pick up application default credentials by
|
||||
# default. You can use --google_credentials=some_file.json to use a service
|
||||
# account credential instead.
|
||||
# build:remote --google_default_credentials=true
|
||||
|
||||
# Enable build without the bytes
|
||||
# See: https://github.com/bazelbuild/bazel/issues/6862
|
||||
build:remote --experimental_remote_download_outputs=toplevel --experimental_inmemory_jdeps_files --experimental_inmemory_dotd_files
|
||||
|
||||
build:remote --remote_local_fallback
|
||||
|
24
WORKSPACE
24
WORKSPACE
@ -3,6 +3,24 @@ workspace(name = "prysm")
|
||||
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
|
||||
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
|
||||
|
||||
http_archive(
|
||||
name = "bazel_toolchains",
|
||||
sha256 = "b5a8039df7119d618402472f3adff8a1bd0ae9d5e253f53fcc4c47122e91a3d2",
|
||||
strip_prefix = "bazel-toolchains-2.1.1",
|
||||
urls = [
|
||||
"https://github.com/bazelbuild/bazel-toolchains/releases/download/2.1.1/bazel-toolchains-2.1.1.tar.gz",
|
||||
"https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/archive/2.1.1.tar.gz",
|
||||
],
|
||||
)
|
||||
|
||||
load("@prysm//tools/cross-toolchain:prysm_toolchains.bzl", "configure_prysm_toolchains")
|
||||
|
||||
configure_prysm_toolchains()
|
||||
|
||||
load("@prysm//tools/cross-toolchain:rbe_toolchains_config.bzl", "rbe_toolchains_config")
|
||||
|
||||
rbe_toolchains_config()
|
||||
|
||||
http_archive(
|
||||
name = "bazel_skylib",
|
||||
sha256 = "2ea8a5ed2b448baf4a6855d3ce049c4c452a6470b1efd1504fdb7c1c134d220a",
|
||||
@ -28,9 +46,9 @@ http_archive(
|
||||
|
||||
http_archive(
|
||||
name = "io_bazel_rules_docker",
|
||||
# sha256 = "9ff889216e28c918811b77999257d4ac001c26c1f7c7fb17a79bc28abf74182e",
|
||||
strip_prefix = "rules_docker-0.12.1",
|
||||
url = "https://github.com/bazelbuild/rules_docker/archive/v0.12.1.tar.gz",
|
||||
sha256 = "dc97fccceacd4c6be14e800b2a00693d5e8d07f69ee187babfd04a80a9f8e250",
|
||||
strip_prefix = "rules_docker-0.14.1",
|
||||
url = "https://github.com/bazelbuild/rules_docker/archive/v0.14.1.tar.gz",
|
||||
)
|
||||
|
||||
http_archive(
|
||||
|
1
third_party/kafka/BUILD.bazel
vendored
1
third_party/kafka/BUILD.bazel
vendored
@ -17,4 +17,5 @@ cmake_external(
|
||||
"librdkafka.a",
|
||||
],
|
||||
visibility = ["//visibility:public"],
|
||||
tags = ["no-remote-exec"],
|
||||
)
|
||||
|
0
tools/cross-toolchain/BUILD.bazel
Normal file
0
tools/cross-toolchain/BUILD.bazel
Normal file
40
tools/cross-toolchain/Dockerfile
Normal file
40
tools/cross-toolchain/Dockerfile
Normal file
@ -0,0 +1,40 @@
|
||||
# Prysmatic Labs Remote Build Execution Image with Cross Compile Support.
|
||||
#
|
||||
# Update instructions.
|
||||
# - Build the docker image.
|
||||
# - Push to gcr.io.
|
||||
# - Update _PRYSM_BUILD_IMAGE_DIGEST in //tools/cross-toolchain/rbe_toolchains_config.bzl
|
||||
# - Run ./tools/cross-toolchain/regenerate.sh
|
||||
# - Add and commit the newly generated configs.
|
||||
# - Done!
|
||||
#
|
||||
# docker build -t gcr.io/prysmaticlabs/rbe-worker:latest .
|
||||
# gcloud docker -- push gcr.io/prysmaticlabs/rbe-worker:latest
|
||||
|
||||
FROM debian:buster as build
|
||||
|
||||
# install gnu/gcc cross-build toolchain (gcc 8.3)
|
||||
ENV DOCKER_CLI_EXPERIMENTAL=enabled
|
||||
RUN apt-get update && \
|
||||
apt-get install -y \
|
||||
curl xz-utils \
|
||||
gcc g++ mingw-w64 \
|
||||
gcc-aarch64-linux-gnu g++-aarch64-linux-gnu \
|
||||
cmake libssl-dev libxml2-dev vim apt-transport-https \
|
||||
zip unzip libtinfo5 patch zlib1g-dev autoconf libtool \
|
||||
pkg-config make docker.io gnupg2
|
||||
|
||||
# install llvm/clang cross-build toolchains
|
||||
ENV INSTALL_LLVM_VERSION=10.0.0-rc2
|
||||
ADD install_clang_cross10.sh /tmp/install_clang_cross.sh
|
||||
RUN /tmp/install_clang_cross.sh
|
||||
|
||||
# install osxcross
|
||||
ADD install_osxcross.sh /tmp/install_osxcross.sh
|
||||
RUN /tmp/install_osxcross.sh
|
||||
|
||||
# containerized development environment
|
||||
FROM build as devel
|
||||
RUN mkdir /workdir
|
||||
WORKDIR /workdir
|
||||
RUN echo 'PS1="\[$(tput setaf 3)$(tput bold)[\]devel@\\h:\\W]#\[$(tput sgr0) \]"' >> /root/.bashrc
|
40
tools/cross-toolchain/README.md
Normal file
40
tools/cross-toolchain/README.md
Normal file
@ -0,0 +1,40 @@
|
||||
# Multiarch Cross Compiling Toolchain
|
||||
|
||||
## Toolchain suite
|
||||
|
||||
This package declares a c++ toolchain suite with cross compilers for targeting four platforms:
|
||||
* linux_amd64
|
||||
* linux_arm64
|
||||
* osx_amd64
|
||||
* windows_amd64
|
||||
|
||||
This toolchain suite describes cross compile configuration with a Dockerfile with the appropriate host dependencies. These toolchains can be used locally (see [caveats](#caveats)), [Remote Build Execution (RBE)](https://docs.bazel.build/versions/master/remote-execution.html), and in a docker sandbox (like RBE, but local).
|
||||
|
||||
|
||||
### Cross compile target support
|
||||
|
||||
| target | linux_amd64 | linux_arm64 | osx_amd64 | windows_amd64 |
|
||||
|----------|-------------------|------------------|-----------------|-----------------------|
|
||||
| `//beacon-chain` | :heavy_check_mark: docker-sandbox and RBE, libkafka supported locally only | :heavy_check_mark: docker-sandbox and RBE, no libkafka support | :heavy_check_mark: docker-sandbox, no libkafka support | :heavy_check_mark: docker-sandbox, no libkafka support |
|
||||
| `//validator`| :heavy_check_mark: docker-sandbox and RBE | :heavy_check_mark: docker-sandbox and RBE | :heavy_check_mark: docker-sandbox | :x: Doesn't work. [#5008](https://github.com/prysmaticlabs/prysm/issues/5008) |
|
||||
|
||||
The configurations above are enforced via pull request presubmit checks.
|
||||
|
||||
### Bazel config flag values
|
||||
|
||||
Use these values with `--config=<flag>`, multiple times if more than one value is defined in the table. Example: `bazel build //beacon-chain --config=windows_amd64_docker` to build windows binary in a docker sandbox.
|
||||
|
||||
| Config | linux_amd64 | linux_arm64 | osx_amd64 | windows_amd64 |
|
||||
|----------|-------------------|------------------|-----------------|-----------------------|
|
||||
| Local run | `linux_amd64` | `linux_arm64` | `osx_amd64` | `windows_amd64` |
|
||||
| Docker sandbox | `linux_amd64_docker` | `linux_arm64_docker` | `osx_amd64_docker` | `windows_amd64_docker `|
|
||||
| RBE (See [Caveats](#caveats)) | `linux_amd64` and `remote` | `linux_arm64` and `remote` | `osx_amd64` and `remote` | `windows_amd64` and `remote` |
|
||||
|
||||
### Caveats
|
||||
|
||||
There are a few caveats to each of these strategies.
|
||||
|
||||
- Local runs require clang compiler and the appropriate cross compilers installed. These runs should only be considered for a power user or user with specific build requirements. See the Dockerfile setup scripts to understand what dependencies must be installed and where.
|
||||
- Docker sandbox is *slow*. Like really slow! The purpose of the docker sandbox is to test RBE builds without deploying a full RBE system. Each build action is executed in its own container. Given the large number of small targets in this project, the overhead of creating docker containers makes this strategy the slowest of all, but requires zero additional setup.
|
||||
- Remote Build Execution is by far the fastest, if you have a RBE backend available. This is another advanced use case which will require two config flags above as well as additional flags to specify the `--remote_executor`. Some of these flags are present in the project `.bazelrc` with example values, but commented out.
|
||||
- Building with libkafka (`--define kafka_enabled=true`) is not supported with docker-sandbox or RBE at this time. Likely due to missing cmake dependencies in the builder image or lack of configuration via toolchains.
|
148
tools/cross-toolchain/cc_toolchain.BUILD.bazel.tpl
Normal file
148
tools/cross-toolchain/cc_toolchain.BUILD.bazel.tpl
Normal file
@ -0,0 +1,148 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(":cc_toolchain_config_osx.bzl", "osx_cc_toolchain_config")
|
||||
load(":cc_toolchain_config_linux_arm64.bzl", "arm64_cc_toolchain_config")
|
||||
load(":cc_toolchain_config_windows.bzl", "windows_cc_toolchain_config")
|
||||
|
||||
|
||||
cc_toolchain_suite(
|
||||
name = "multiarch_toolchain",
|
||||
toolchains = {
|
||||
"k8|osxcross": ":cc-clang-osx",
|
||||
"k8|clang": "cc-clang-amd64",
|
||||
"aarch64|clang": ":cc-clang-arm64",
|
||||
"k8": "cc-clang-amd64",
|
||||
"aarch64": ":cc-clang-arm64",
|
||||
"k8|mingw-w64": ":cc-mingw-amd64",
|
||||
},
|
||||
)
|
||||
|
||||
cc_toolchain_suite(
|
||||
name = "hostonly_toolchain",
|
||||
toolchains = {
|
||||
"k8": "cc-clang-amd64",
|
||||
},
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "empty",
|
||||
srcs = [],
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "osx_amd64",
|
||||
constraint_values = [
|
||||
"@platforms//os:osx",
|
||||
"@platforms//cpu:x86_64",
|
||||
],
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "linux_arm64",
|
||||
constraint_values = [
|
||||
"@platforms//os:linux",
|
||||
"@platforms//cpu:aarch64",
|
||||
],
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "linux_amd64",
|
||||
constraint_values = [
|
||||
"@platforms//os:linux",
|
||||
"@platforms//cpu:x86_64",
|
||||
],
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "windows_amd64",
|
||||
constraint_values = [
|
||||
"@platforms//os:windows",
|
||||
"@platforms//cpu:x86_64",
|
||||
],
|
||||
)
|
||||
|
||||
arm64_cc_toolchain_config(
|
||||
name = "local-arm64",
|
||||
target = "aarch64-linux-gnu",
|
||||
)
|
||||
|
||||
arm64_cc_toolchain_config(
|
||||
name = "local-amd64",
|
||||
target = "x86_64-unknown-linux-gnu",
|
||||
)
|
||||
|
||||
osx_cc_toolchain_config(
|
||||
name = "local-osxcross",
|
||||
target = "darwin_x86_64",
|
||||
)
|
||||
|
||||
windows_cc_toolchain_config(
|
||||
name = "local-windows",
|
||||
target = "x86_64-w64",
|
||||
)
|
||||
|
||||
cc_toolchain(
|
||||
name = "cc-mingw-amd64",
|
||||
all_files = ":empty",
|
||||
ar_files = ":empty",
|
||||
as_files = ":mingw_compiler_files",
|
||||
compiler_files = ":mingw_compiler_files",
|
||||
dwp_files = ":empty",
|
||||
linker_files = ":empty",
|
||||
objcopy_files = ":empty",
|
||||
strip_files = ":empty",
|
||||
supports_param_files = 0,
|
||||
toolchain_config = ":local-windows",
|
||||
)
|
||||
|
||||
cc_toolchain(
|
||||
name = "cc-clang-arm64",
|
||||
all_files = ":empty",
|
||||
compiler_files = ":empty",
|
||||
dwp_files = ":empty",
|
||||
linker_files = ":empty",
|
||||
objcopy_files = ":empty",
|
||||
strip_files = ":empty",
|
||||
supports_param_files = 1,
|
||||
toolchain_config = ":local-arm64",
|
||||
)
|
||||
|
||||
cc_toolchain(
|
||||
name = "cc-clang-osx",
|
||||
all_files = ":empty",
|
||||
compiler_files = ":empty",
|
||||
dwp_files = ":empty",
|
||||
linker_files = ":empty",
|
||||
objcopy_files = ":empty",
|
||||
strip_files = ":empty",
|
||||
supports_param_files = 1,
|
||||
toolchain_config = ":local-osxcross",
|
||||
)
|
||||
|
||||
cc_toolchain(
|
||||
name = "cc-clang-amd64",
|
||||
all_files = ":empty",
|
||||
compiler_files = ":empty",
|
||||
dwp_files = ":empty",
|
||||
linker_files = ":empty",
|
||||
objcopy_files = ":empty",
|
||||
strip_files = ":empty",
|
||||
supports_param_files = 1,
|
||||
toolchain_config = ":local-amd64",
|
||||
)
|
||||
|
||||
toolchain(
|
||||
name = "cc-toolchain-multiarch",
|
||||
exec_compatible_with = [
|
||||
"@platforms//os:linux",
|
||||
"@platforms//cpu:x86_64",
|
||||
],
|
||||
target_compatible_with = [],
|
||||
toolchain = select({
|
||||
":linux_arm64": ":cc-clang-arm64",
|
||||
":linux_amd64": ":cc-clang-amd64",
|
||||
":osx_amd64": ":cc-clang-osx",
|
||||
":windows_amd64": ":cc-mingw-amd64",
|
||||
}),
|
||||
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
|
||||
)
|
305
tools/cross-toolchain/cc_toolchain_config_linux_arm64.bzl.tpl
Normal file
305
tools/cross-toolchain/cc_toolchain_config_linux_arm64.bzl.tpl
Normal file
@ -0,0 +1,305 @@
|
||||
load(
|
||||
"@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
|
||||
"action_config",
|
||||
"feature",
|
||||
"feature_set",
|
||||
"flag_group",
|
||||
"flag_set",
|
||||
"make_variable",
|
||||
"tool",
|
||||
"tool_path",
|
||||
"with_feature_set",
|
||||
)
|
||||
|
||||
load(
|
||||
"@bazel_tools//tools/cpp:cc_toolchain_config.bzl",
|
||||
ALL_COMPILE_ACTIONS = "all_compile_actions",
|
||||
ALL_CPP_COMPILE_ACTIONS = "all_cpp_compile_actions",
|
||||
ALL_LINK_ACTIONS = "all_link_actions",
|
||||
)
|
||||
|
||||
def _impl(ctx):
|
||||
toolchain_identifier = "clang-linux-cross"
|
||||
compiler = "clang"
|
||||
abi_version = "clang"
|
||||
abi_libc_version = "glibc_unknown"
|
||||
target_libc = "glibc_unknown"
|
||||
target_cpu = ctx.attr.target.split("-")[0]
|
||||
|
||||
if (target_cpu == "aarch64"):
|
||||
sysroot = "/usr/aarch64-linux-gnu"
|
||||
include_path_prefix = sysroot
|
||||
elif (target_cpu == "x86_64"):
|
||||
sysroot = "/"
|
||||
include_path_prefix = "/usr"
|
||||
else:
|
||||
fail("Unreachable")
|
||||
|
||||
if (target_cpu == "aarch64"):
|
||||
cross_system_include_dirs = [
|
||||
include_path_prefix + "/include/c++/v1",
|
||||
include_path_prefix + "/lib/clang/10.0.0/include",
|
||||
]
|
||||
else:
|
||||
cross_system_include_dirs = [
|
||||
include_path_prefix + "/include/c++/v1",
|
||||
include_path_prefix + "/lib/clang/10.0.0/include",
|
||||
include_path_prefix + "/include/x86_64-linux-gnu",
|
||||
]
|
||||
|
||||
cross_system_include_dirs += [
|
||||
include_path_prefix + "/include/",
|
||||
include_path_prefix + "/include/linux",
|
||||
include_path_prefix + "/include/asm",
|
||||
include_path_prefix + "/include/asm-generic",
|
||||
]
|
||||
|
||||
if (target_cpu == "aarch64"):
|
||||
cross_system_lib_dirs = [
|
||||
"/usr/" + ctx.attr.target + "/lib",
|
||||
]
|
||||
else:
|
||||
cross_system_lib_dirs = [
|
||||
"/usr/lib/x86_64-linux-gnu/",
|
||||
]
|
||||
|
||||
cross_system_lib_dirs += [
|
||||
"/usr/lib/gcc/x86_64-linux-gnu/8",
|
||||
]
|
||||
|
||||
opt_feature = feature(name = "opt")
|
||||
dbg_feature = feature(name = "dbg")
|
||||
fastbuild_feature = feature(name = "fastbuild")
|
||||
random_seed_feature = feature(name = "random_seed", enabled = True)
|
||||
supports_pic_feature = feature(name = "supports_pic", enabled = True)
|
||||
supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
|
||||
|
||||
unfiltered_compile_flags_feature = feature(
|
||||
name = "unfiltered_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-no-canonical-prefixes",
|
||||
"-Wno-builtin-macro-redefined",
|
||||
"-D__DATE__=\"redacted\"",
|
||||
"-D__TIMESTAMP__=\"redacted\"",
|
||||
"-D__TIME__=\"redacted\"",
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
# explicit arch specific system includes
|
||||
system_include_flags = []
|
||||
for d in cross_system_include_dirs:
|
||||
system_include_flags += ["-idirafter", d]
|
||||
|
||||
default_compile_flags_feature = feature(
|
||||
name = "default_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"--target=" + ctx.attr.target,
|
||||
"-nostdinc",
|
||||
"-U_FORTIFY_SOURCE",
|
||||
"-fstack-protector",
|
||||
"-fno-omit-frame-pointer",
|
||||
"-fcolor-diagnostics",
|
||||
"-Wall",
|
||||
"-Wthread-safety",
|
||||
"-Wself-assign",
|
||||
] + system_include_flags,
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-g", "-fstandalone-debug"])],
|
||||
with_features = [with_feature_set(features = ["dbg"])],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-g0",
|
||||
"-O2",
|
||||
"-D_FORTIFY_SOURCE=1",
|
||||
"-DNDEBUG",
|
||||
"-ffunction-sections",
|
||||
"-fdata-sections",
|
||||
],
|
||||
),
|
||||
],
|
||||
with_features = [with_feature_set(features = ["opt"])],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_CPP_COMPILE_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-std=c++17", "-nostdinc++"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
additional_link_flags = [
|
||||
"-l:libc++.a",
|
||||
"-l:libc++abi.a",
|
||||
"-l:libunwind.a",
|
||||
"-lpthread",
|
||||
"-ldl",
|
||||
"-rtlib=compiler-rt",
|
||||
]
|
||||
|
||||
default_link_flags_feature = feature(
|
||||
name = "default_link_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = additional_link_flags + [
|
||||
"--target=" + ctx.attr.target,
|
||||
"-lm",
|
||||
"-no-canonical-prefixes",
|
||||
"-fuse-ld=lld",
|
||||
"-Wl,--build-id=md5",
|
||||
"-Wl,--hash-style=gnu",
|
||||
"-Wl,-z,relro,-z,now",
|
||||
] + ["-L" + d for d in cross_system_lib_dirs],
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-Wl,--gc-sections"])],
|
||||
with_features = [with_feature_set(features = ["opt"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
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"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
user_compile_flags_feature = feature(
|
||||
name = "user_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
expand_if_available = "user_compile_flags",
|
||||
flags = ["%{user_compile_flags}"],
|
||||
iterate_over = "user_compile_flags",
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
sysroot_feature = feature(
|
||||
name = "sysroot",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS + ALL_LINK_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
expand_if_available = "sysroot",
|
||||
flags = ["--sysroot=%{sysroot}"],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
coverage_feature = feature(
|
||||
name = "coverage",
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = ["-fprofile-instr-generate", "-fcoverage-mapping"],
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-fprofile-instr-generate"])],
|
||||
),
|
||||
],
|
||||
provides = ["profile"],
|
||||
)
|
||||
|
||||
features = [
|
||||
opt_feature,
|
||||
fastbuild_feature,
|
||||
dbg_feature,
|
||||
random_seed_feature,
|
||||
supports_pic_feature,
|
||||
supports_dynamic_linker_feature,
|
||||
unfiltered_compile_flags_feature,
|
||||
default_link_flags_feature,
|
||||
default_compile_flags_feature,
|
||||
objcopy_embed_flags_feature,
|
||||
user_compile_flags_feature,
|
||||
sysroot_feature,
|
||||
coverage_feature,
|
||||
]
|
||||
|
||||
tool_paths = [
|
||||
tool_path(name = "ld", path = "/usr/bin/ld.lld"),
|
||||
tool_path(name = "cpp", path = "/usr/bin/clang-cpp"),
|
||||
tool_path(name = "dwp", path = "/usr/bin/llvm-dwp"),
|
||||
tool_path(name = "gcov", path = "/usr/bin/llvm-profdata"),
|
||||
tool_path(name = "nm", path = "/usr/bin/llvm-nm"),
|
||||
tool_path(name = "objcopy", path = "/usr/bin/llvm-objcopy"),
|
||||
tool_path(name = "objdump", path = "/usr/bin/llvm-objdump"),
|
||||
tool_path(name = "strip", path = "/usr/bin/strip"),
|
||||
tool_path(name = "gcc", path = "/usr/bin/clang"),
|
||||
tool_path(name = "ar", path = "/usr/bin/llvm-ar"),
|
||||
]
|
||||
|
||||
return cc_common.create_cc_toolchain_config_info(
|
||||
ctx = ctx,
|
||||
features = features,
|
||||
abi_version = abi_version,
|
||||
abi_libc_version = abi_libc_version,
|
||||
builtin_sysroot = sysroot,
|
||||
compiler = compiler,
|
||||
cxx_builtin_include_directories = cross_system_include_dirs,
|
||||
host_system_name = "x86_64-unknown-linux-gnu",
|
||||
target_cpu = target_cpu,
|
||||
target_libc = target_libc,
|
||||
target_system_name = ctx.attr.target,
|
||||
tool_paths = tool_paths,
|
||||
toolchain_identifier = toolchain_identifier,
|
||||
)
|
||||
|
||||
arm64_cc_toolchain_config = rule(
|
||||
implementation = _impl,
|
||||
attrs = {
|
||||
"target": attr.string(mandatory = True),
|
||||
"stdlib": attr.string(),
|
||||
},
|
||||
provides = [CcToolchainConfigInfo],
|
||||
)
|
251
tools/cross-toolchain/cc_toolchain_config_osx.bzl.tpl
Normal file
251
tools/cross-toolchain/cc_toolchain_config_osx.bzl.tpl
Normal file
@ -0,0 +1,251 @@
|
||||
load(
|
||||
"@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
|
||||
"action_config",
|
||||
"feature",
|
||||
"feature_set",
|
||||
"flag_group",
|
||||
"flag_set",
|
||||
"make_variable",
|
||||
"tool",
|
||||
"tool_path",
|
||||
"with_feature_set",
|
||||
)
|
||||
|
||||
load(
|
||||
"@bazel_tools//tools/cpp:cc_toolchain_config.bzl",
|
||||
ALL_COMPILE_ACTIONS = "all_compile_actions",
|
||||
ALL_CPP_COMPILE_ACTIONS = "all_cpp_compile_actions",
|
||||
ALL_LINK_ACTIONS = "all_link_actions",
|
||||
)
|
||||
|
||||
def _impl(ctx):
|
||||
toolchain_identifier = "osxcross"
|
||||
compiler = "clang"
|
||||
abi_version = "darwin_x86_64"
|
||||
abi_libc_version = "darwin_x86_64"
|
||||
install = "/usr/x86_64-apple-darwin/"
|
||||
clang_version = "10.0.0"
|
||||
target_libc = "macosx"
|
||||
target_cpu = "x86_64"
|
||||
osxcross = install + "osxcross/"
|
||||
osxcross_binprefix = osxcross + "bin/x86_64-apple-darwin14-"
|
||||
sdkroot = osxcross + "SDK/MacOSX10.10.sdk/"
|
||||
cross_system_include_dirs = [
|
||||
"/usr/lib/clang/10.0.0/include",
|
||||
osxcross + "include",
|
||||
sdkroot + "usr/include",
|
||||
]
|
||||
cross_system_lib_dirs = [
|
||||
"/usr/x86_64-apple-darwin/lib",
|
||||
sdkroot + "usr/lib",
|
||||
osxcross + "/lib",
|
||||
]
|
||||
|
||||
opt_feature = feature(name = "opt")
|
||||
dbg_feature = feature(name = "dbg")
|
||||
fastbuild_feature = feature(name = "fastbuild")
|
||||
random_seed_feature = feature(name = "random_seed", enabled = True)
|
||||
supports_pic_feature = feature(name = "supports_pic", enabled = True)
|
||||
supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
|
||||
|
||||
unfiltered_compile_flags_feature = feature(
|
||||
name = "unfiltered_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-stdlib=libc++",
|
||||
"-no-canonical-prefixes",
|
||||
"-Wno-builtin-macro-redefined",
|
||||
"-D__DATE__=\"redacted\"",
|
||||
"-D__TIMESTAMP__=\"redacted\"",
|
||||
"-D__TIME__=\"redacted\"",
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
# explicit arch specific system includes
|
||||
system_include_flags = []
|
||||
for d in cross_system_include_dirs:
|
||||
system_include_flags += ["-idirafter", d]
|
||||
|
||||
default_compile_flags_feature = feature(
|
||||
name = "default_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-mlinker-version=400",
|
||||
"-B " + osxcross + "bin",
|
||||
"-nostdinc",
|
||||
"-U_FORTIFY_SOURCE",
|
||||
"-fstack-protector",
|
||||
"-fno-omit-frame-pointer",
|
||||
"-fcolor-diagnostics",
|
||||
"-Wall",
|
||||
"-Wthread-safety",
|
||||
"-Wself-assign",
|
||||
] + system_include_flags,
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-g", "-fstandalone-debug"])],
|
||||
with_features = [with_feature_set(features = ["dbg"])],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-g0",
|
||||
"-O2",
|
||||
"-D_FORTIFY_SOURCE=1",
|
||||
"-DNDEBUG",
|
||||
"-ffunction-sections",
|
||||
"-fdata-sections",
|
||||
],
|
||||
),
|
||||
],
|
||||
with_features = [with_feature_set(features = ["opt"])],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_CPP_COMPILE_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-std=c++17", "-nostdinc++"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
default_link_flags_feature = feature(
|
||||
name = "default_link_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-v",
|
||||
"-lm",
|
||||
"-no-canonical-prefixes",
|
||||
"-fuse-ld=lld",
|
||||
"-lc++",
|
||||
"-lc++abi",
|
||||
"-F" + sdkroot + "System/Library/Frameworks/",
|
||||
"-L"+ sdkroot + "usr/lib",
|
||||
"-undefined",
|
||||
"dynamic_lookup",
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
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"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
user_compile_flags_feature = feature(
|
||||
name = "user_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
expand_if_available = "user_compile_flags",
|
||||
flags = ["%{user_compile_flags}"],
|
||||
iterate_over = "user_compile_flags",
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
coverage_feature = feature(
|
||||
name = "coverage",
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = ["-fprofile-instr-generate", "-fcoverage-mapping"],
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-fprofile-instr-generate"])],
|
||||
),
|
||||
],
|
||||
provides = ["profile"],
|
||||
)
|
||||
|
||||
features = [
|
||||
opt_feature,
|
||||
fastbuild_feature,
|
||||
dbg_feature,
|
||||
random_seed_feature,
|
||||
supports_pic_feature,
|
||||
supports_dynamic_linker_feature,
|
||||
unfiltered_compile_flags_feature,
|
||||
default_link_flags_feature,
|
||||
default_compile_flags_feature,
|
||||
objcopy_embed_flags_feature,
|
||||
user_compile_flags_feature,
|
||||
coverage_feature,
|
||||
]
|
||||
|
||||
tool_paths = [
|
||||
tool_path(name = "ld", path = osxcross_binprefix + "ld"),
|
||||
tool_path(name = "cpp", path = osxcross + "bin/o64-clang++"),
|
||||
tool_path(name = "dwp", path = "/usr/bin/dwp"),
|
||||
tool_path(name = "gcov", path = "/usr/bin/gcov"),
|
||||
tool_path(name = "nm", path = osxcross_binprefix + "nm"),
|
||||
tool_path(name = "objdump", path = osxcross_binprefix + "ObjectDump"),
|
||||
tool_path(name = "strip", path = osxcross_binprefix + "strip"),
|
||||
tool_path(name = "gcc", path = osxcross + "bin/o64-clang"),
|
||||
tool_path(name = "ar", path = osxcross_binprefix + "libtool"),
|
||||
]
|
||||
|
||||
return cc_common.create_cc_toolchain_config_info(
|
||||
ctx = ctx,
|
||||
features = features,
|
||||
abi_version = abi_version,
|
||||
abi_libc_version = abi_libc_version,
|
||||
compiler = compiler,
|
||||
cxx_builtin_include_directories = cross_system_include_dirs,
|
||||
host_system_name = "x86_64-unknown-linux-gnu",
|
||||
target_cpu = target_cpu,
|
||||
target_libc = target_libc,
|
||||
target_system_name = ctx.attr.target,
|
||||
tool_paths = tool_paths,
|
||||
toolchain_identifier = toolchain_identifier,
|
||||
)
|
||||
|
||||
osx_cc_toolchain_config = rule(
|
||||
implementation = _impl,
|
||||
attrs = {
|
||||
"target": attr.string(mandatory = True),
|
||||
"stdlib": attr.string(),
|
||||
},
|
||||
provides = [CcToolchainConfigInfo],
|
||||
)
|
213
tools/cross-toolchain/cc_toolchain_config_windows.bzl.tpl
Normal file
213
tools/cross-toolchain/cc_toolchain_config_windows.bzl.tpl
Normal file
@ -0,0 +1,213 @@
|
||||
load(
|
||||
"@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
|
||||
"action_config",
|
||||
"feature",
|
||||
"feature_set",
|
||||
"flag_group",
|
||||
"flag_set",
|
||||
"make_variable",
|
||||
"tool",
|
||||
"tool_path",
|
||||
"with_feature_set",
|
||||
"artifact_name_pattern",
|
||||
"env_set",
|
||||
"env_entry",
|
||||
)
|
||||
|
||||
load(
|
||||
"@bazel_tools//tools/cpp:cc_toolchain_config.bzl",
|
||||
ALL_COMPILE_ACTIONS = "all_compile_actions",
|
||||
ALL_CPP_COMPILE_ACTIONS = "all_cpp_compile_actions",
|
||||
ALL_LINK_ACTIONS = "all_link_actions",
|
||||
)
|
||||
|
||||
load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
|
||||
|
||||
def _impl(ctx):
|
||||
toolchain_identifier = "msys_x64_mingw"
|
||||
host_system_name = "local"
|
||||
target_system_name = "local"
|
||||
target_cpu = "x64_windows"
|
||||
target_libc = "mingw"
|
||||
compiler = "mingw-gcc"
|
||||
abi_version = "local"
|
||||
abi_libc_version = "local"
|
||||
cc_target_os = None
|
||||
builtin_sysroot = None
|
||||
action_configs = []
|
||||
|
||||
install = "/usr/x86_64-w64-mingw32/"
|
||||
bin_prefix = "/usr/bin/x86_64-w64-mingw32-"
|
||||
|
||||
|
||||
targets_windows_feature = feature(
|
||||
name = "targets_windows",
|
||||
implies = ["copy_dynamic_libraries_to_binary"],
|
||||
enabled = True,
|
||||
)
|
||||
|
||||
copy_dynamic_libraries_to_binary_feature = feature(name = "copy_dynamic_libraries_to_binary")
|
||||
|
||||
gcc_env_feature = feature(
|
||||
name = "gcc_env",
|
||||
enabled = True,
|
||||
env_sets = [
|
||||
env_set(
|
||||
actions = [
|
||||
ACTION_NAMES.c_compile,
|
||||
ACTION_NAMES.cpp_compile,
|
||||
ACTION_NAMES.cpp_module_compile,
|
||||
ACTION_NAMES.cpp_module_codegen,
|
||||
ACTION_NAMES.cpp_header_parsing,
|
||||
ACTION_NAMES.assemble,
|
||||
ACTION_NAMES.preprocess_assemble,
|
||||
ACTION_NAMES.cpp_link_executable,
|
||||
ACTION_NAMES.cpp_link_dynamic_library,
|
||||
ACTION_NAMES.cpp_link_nodeps_dynamic_library,
|
||||
ACTION_NAMES.cpp_link_static_library,
|
||||
],
|
||||
env_entries = [
|
||||
env_entry(key = "PATH", value = "NOT_USED"),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
msys_mingw_flags = [
|
||||
"-B " + install + "bin",
|
||||
"-nostdinc",
|
||||
"-U_FORTIFY_SOURCE",
|
||||
"-fstack-protector",
|
||||
"-fno-omit-frame-pointer",
|
||||
"-fcolor-diagnostics",
|
||||
"-Wall",
|
||||
"-Wthread-safety",
|
||||
"-Wself-assign",
|
||||
"-x c++",
|
||||
"-lstdc++",
|
||||
"-lpthread"
|
||||
]
|
||||
|
||||
msys_mingw_link_flags = [
|
||||
"-l:libstdc++.a",
|
||||
"-L" + install + "lib",
|
||||
"-L/usr/lib/gcc/x86_64-w64-mingw32/8.3-w32",
|
||||
"-v",
|
||||
"-lm",
|
||||
"-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_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 = msys_mingw_flags)] if msys_mingw_flags else []),
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
compiler_param_file_feature = feature(
|
||||
name = "compiler_param_file",
|
||||
)
|
||||
|
||||
default_link_flags_feature = feature(
|
||||
name = "default_link_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = ([flag_group(flags = msys_mingw_link_flags)] if msys_mingw_link_flags else []),
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
|
||||
|
||||
features = [
|
||||
targets_windows_feature,
|
||||
copy_dynamic_libraries_to_binary_feature,
|
||||
gcc_env_feature,
|
||||
default_compile_flags_feature,
|
||||
compiler_param_file_feature,
|
||||
default_link_flags_feature,
|
||||
supports_dynamic_linker_feature,
|
||||
]
|
||||
|
||||
cxx_builtin_include_directories = [
|
||||
install +"include"
|
||||
]
|
||||
|
||||
artifact_name_patterns = [
|
||||
artifact_name_pattern(
|
||||
category_name = "executable",
|
||||
prefix = "",
|
||||
extension = ".exe",
|
||||
),
|
||||
]
|
||||
|
||||
make_variables = []
|
||||
tool_paths = [
|
||||
tool_path(name = "ld", path = bin_prefix + "ld"),
|
||||
tool_path(name = "cpp", path = bin_prefix + "cpp"),
|
||||
tool_path(name = "gcov", path = "/usr/bin/gcov"),
|
||||
tool_path(name = "nm", path = bin_prefix + "nm"),
|
||||
tool_path(name = "objcopy", path = bin_prefix + "objcopy"),
|
||||
tool_path(name = "objdump", path = bin_prefix + "objdump"),
|
||||
tool_path(name = "strip", path = bin_prefix + "strip"),
|
||||
tool_path(name = "gcc", path = bin_prefix + "gcc"),
|
||||
tool_path(name = "ar", path = bin_prefix + "ar"),
|
||||
]
|
||||
|
||||
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,
|
||||
)
|
||||
|
||||
windows_cc_toolchain_config = rule(
|
||||
implementation = _impl,
|
||||
attrs = {
|
||||
"target": attr.string(mandatory = True),
|
||||
"stdlib": attr.string(),
|
||||
},
|
||||
provides = [CcToolchainConfigInfo],
|
||||
)
|
||||
|
33
tools/cross-toolchain/configs/.latest.bazelrc
Normal file
33
tools/cross-toolchain/configs/.latest.bazelrc
Normal file
@ -0,0 +1,33 @@
|
||||
# Copyright 2016 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.
|
||||
|
||||
# This .bazelrc file is generated by rbe_autoconfig
|
||||
# when the output_base attr is used.
|
||||
# It contains some of the flags required for the provided
|
||||
# toolchain with Remote Build Execution.
|
||||
# Specifically, it includes all toolchain/platform flags
|
||||
# This file is used for testing purposes.
|
||||
|
||||
build:remote --host_javabase=//tools/cross-toolchain/configs/gcc/bazel_2.1.1/java:jdk
|
||||
build:remote --javabase=//tools/cross-toolchain/configs/gcc/bazel_2.1.1/java:jdk
|
||||
build:remote --crosstool_top=//tools/cross-toolchain/configs/gcc/bazel_2.1.1/cc:toolchain
|
||||
build:remote --extra_toolchains=//tools/cross-toolchain/configs/gcc/bazel_2.1.1/config:cc-toolchain
|
||||
build:remote --extra_execution_platforms=//tools/cross-toolchain/configs/gcc/bazel_2.1.1/config:platform
|
||||
build:remote --host_platform=//tools/cross-toolchain/configs/gcc/bazel_2.1.1/config:platform
|
||||
build:remote --platforms=//tools/cross-toolchain/configs/gcc/bazel_2.1.1/config:platform
|
||||
|
||||
# Import the default bazelrc file in bazel-toolchains repo.
|
||||
# This will only work for tests executed from bazel-toolchains
|
||||
# repo.
|
||||
try-import %workspace%/bazelrc/.bazelrc.notoolchain
|
166
tools/cross-toolchain/configs/clang/bazel_2.1.1/cc/BUILD
Executable file
166
tools/cross-toolchain/configs/clang/bazel_2.1.1/cc/BUILD
Executable file
@ -0,0 +1,166 @@
|
||||
# Copyright 2016 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.
|
||||
|
||||
# This becomes the BUILD file for @local_config_cc// under non-FreeBSD unixes.
|
||||
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(":cc_toolchain_config.bzl", "cc_toolchain_config")
|
||||
load(":armeabi_cc_toolchain_config.bzl", "armeabi_cc_toolchain_config")
|
||||
load("@rules_cc//cc:defs.bzl", "cc_toolchain", "cc_toolchain_suite")
|
||||
|
||||
licenses(["notice"]) # Apache 2.0
|
||||
|
||||
cc_library(
|
||||
name = "malloc",
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "empty",
|
||||
srcs = [],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "cc_wrapper",
|
||||
srcs = ["cc_wrapper.sh"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "compiler_deps",
|
||||
srcs = glob(
|
||||
["extra_tools/**"],
|
||||
allow_empty = True,
|
||||
) + [":builtin_include_directory_paths"],
|
||||
)
|
||||
|
||||
# This is the entry point for --crosstool_top. Toolchains are found
|
||||
# by lopping off the name of --crosstool_top and searching for
|
||||
# the "${CPU}" entry in the toolchains attribute.
|
||||
cc_toolchain_suite(
|
||||
name = "toolchain",
|
||||
toolchains = {
|
||||
"k8|clang": ":cc-compiler-k8",
|
||||
"k8": ":cc-compiler-k8",
|
||||
"armeabi-v7a|compiler": ":cc-compiler-armeabi-v7a",
|
||||
"armeabi-v7a": ":cc-compiler-armeabi-v7a",
|
||||
},
|
||||
)
|
||||
|
||||
cc_toolchain(
|
||||
name = "cc-compiler-k8",
|
||||
all_files = ":compiler_deps",
|
||||
ar_files = ":compiler_deps",
|
||||
as_files = ":compiler_deps",
|
||||
compiler_files = ":compiler_deps",
|
||||
dwp_files = ":empty",
|
||||
linker_files = ":compiler_deps",
|
||||
objcopy_files = ":empty",
|
||||
strip_files = ":empty",
|
||||
supports_param_files = 1,
|
||||
toolchain_config = ":local",
|
||||
toolchain_identifier = "local",
|
||||
)
|
||||
|
||||
cc_toolchain_config(
|
||||
name = "local",
|
||||
abi_libc_version = "local",
|
||||
abi_version = "local",
|
||||
compile_flags = [
|
||||
"-U_FORTIFY_SOURCE",
|
||||
"-fstack-protector",
|
||||
"-Wall",
|
||||
"-Wthread-safety",
|
||||
"-Wself-assign",
|
||||
"-fcolor-diagnostics",
|
||||
"-fno-omit-frame-pointer",
|
||||
],
|
||||
compiler = "clang",
|
||||
coverage_compile_flags = [
|
||||
"-fprofile-instr-generate",
|
||||
"-fcoverage-mapping",
|
||||
],
|
||||
coverage_link_flags = ["-fprofile-instr-generate"],
|
||||
cpu = "k8",
|
||||
cxx_builtin_include_directories = [
|
||||
"/usr/local/include",
|
||||
"/usr/lib/clang/10.0.0/include",
|
||||
"/usr/include/x86_64-linux-gnu",
|
||||
"/usr/include",
|
||||
"/usr/include/c++/8",
|
||||
"/usr/include/x86_64-linux-gnu/c++/8",
|
||||
"/usr/include/c++/8/backward",
|
||||
],
|
||||
cxx_flags = ["-std=c++0x"],
|
||||
dbg_compile_flags = ["-g"],
|
||||
host_system_name = "local",
|
||||
link_flags = [
|
||||
"-fuse-ld=/usr/bin/ld.gold",
|
||||
"-Wl,-no-as-needed",
|
||||
"-Wl,-z,relro,-z,now",
|
||||
"-B/usr/bin",
|
||||
"-lm",
|
||||
"-static-libgcc",
|
||||
],
|
||||
link_libs = ["-l:libstdc++.a"],
|
||||
opt_compile_flags = [
|
||||
"-g0",
|
||||
"-O2",
|
||||
"-D_FORTIFY_SOURCE=1",
|
||||
"-DNDEBUG",
|
||||
"-ffunction-sections",
|
||||
"-fdata-sections",
|
||||
],
|
||||
opt_link_flags = ["-Wl,--gc-sections"],
|
||||
supports_start_end_lib = True,
|
||||
target_libc = "local",
|
||||
target_system_name = "local",
|
||||
tool_paths = {
|
||||
"ar": "/usr/bin/ar",
|
||||
"ld": "/usr/bin/ld",
|
||||
"cpp": "/usr/bin/cpp",
|
||||
"gcc": "/usr/bin/clang",
|
||||
"dwp": "/usr/bin/dwp",
|
||||
"gcov": "/usr/bin/llvm-profdata",
|
||||
"nm": "/usr/bin/nm",
|
||||
"objcopy": "/usr/bin/objcopy",
|
||||
"objdump": "/usr/bin/objdump",
|
||||
"strip": "/usr/bin/strip",
|
||||
},
|
||||
toolchain_identifier = "local",
|
||||
unfiltered_compile_flags = [
|
||||
"-no-canonical-prefixes",
|
||||
"-Wno-builtin-macro-redefined",
|
||||
"-D__DATE__=\"redacted\"",
|
||||
"-D__TIMESTAMP__=\"redacted\"",
|
||||
"-D__TIME__=\"redacted\"",
|
||||
],
|
||||
)
|
||||
|
||||
# Android tooling requires a default toolchain for the armeabi-v7a cpu.
|
||||
cc_toolchain(
|
||||
name = "cc-compiler-armeabi-v7a",
|
||||
all_files = ":empty",
|
||||
ar_files = ":empty",
|
||||
as_files = ":empty",
|
||||
compiler_files = ":empty",
|
||||
dwp_files = ":empty",
|
||||
linker_files = ":empty",
|
||||
objcopy_files = ":empty",
|
||||
strip_files = ":empty",
|
||||
supports_param_files = 1,
|
||||
toolchain_config = ":stub_armeabi-v7a",
|
||||
toolchain_identifier = "stub_armeabi-v7a",
|
||||
)
|
||||
|
||||
armeabi_cc_toolchain_config(name = "stub_armeabi-v7a")
|
@ -0,0 +1,82 @@
|
||||
# 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",
|
||||
"feature",
|
||||
"tool_path",
|
||||
)
|
||||
|
||||
def _impl(ctx):
|
||||
toolchain_identifier = "stub_armeabi-v7a"
|
||||
host_system_name = "armeabi-v7a"
|
||||
target_system_name = "armeabi-v7a"
|
||||
target_cpu = "armeabi-v7a"
|
||||
target_libc = "armeabi-v7a"
|
||||
compiler = "compiler"
|
||||
abi_version = "armeabi-v7a"
|
||||
abi_libc_version = "armeabi-v7a"
|
||||
cc_target_os = None
|
||||
builtin_sysroot = None
|
||||
action_configs = []
|
||||
|
||||
supports_pic_feature = feature(name = "supports_pic", enabled = True)
|
||||
supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
|
||||
features = [supports_dynamic_linker_feature, supports_pic_feature]
|
||||
|
||||
cxx_builtin_include_directories = []
|
||||
artifact_name_patterns = []
|
||||
make_variables = []
|
||||
|
||||
tool_paths = [
|
||||
tool_path(name = "ar", path = "/bin/false"),
|
||||
tool_path(name = "compat-ld", path = "/bin/false"),
|
||||
tool_path(name = "cpp", path = "/bin/false"),
|
||||
tool_path(name = "dwp", path = "/bin/false"),
|
||||
tool_path(name = "gcc", path = "/bin/false"),
|
||||
tool_path(name = "gcov", path = "/bin/false"),
|
||||
tool_path(name = "ld", path = "/bin/false"),
|
||||
tool_path(name = "nm", path = "/bin/false"),
|
||||
tool_path(name = "objcopy", path = "/bin/false"),
|
||||
tool_path(name = "objdump", path = "/bin/false"),
|
||||
tool_path(name = "strip", path = "/bin/false"),
|
||||
]
|
||||
|
||||
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,
|
||||
)
|
||||
|
||||
armeabi_cc_toolchain_config = rule(
|
||||
implementation = _impl,
|
||||
attrs = {},
|
||||
provides = [CcToolchainConfigInfo],
|
||||
)
|
@ -0,0 +1,13 @@
|
||||
This file is generated by cc_configure and contains builtin include directories
|
||||
that /usr/bin/clang reported. This file is a dependency of every compilation action and
|
||||
changes to it will be reflected in the action cache key. When some of these
|
||||
paths change, Bazel will make sure to rerun the action, even though none of
|
||||
declared action inputs or the action commandline changes.
|
||||
|
||||
/usr/local/include
|
||||
/usr/lib/clang/10.0.0/include
|
||||
/usr/include/x86_64-linux-gnu
|
||||
/usr/include
|
||||
/usr/include/c++/8
|
||||
/usr/include/x86_64-linux-gnu/c++/8
|
||||
/usr/include/c++/8/backward
|
1197
tools/cross-toolchain/configs/clang/bazel_2.1.1/cc/cc_toolchain_config.bzl
Executable file
1197
tools/cross-toolchain/configs/clang/bazel_2.1.1/cc/cc_toolchain_config.bzl
Executable file
File diff suppressed because it is too large
Load Diff
25
tools/cross-toolchain/configs/clang/bazel_2.1.1/cc/cc_wrapper.sh
Executable file
25
tools/cross-toolchain/configs/clang/bazel_2.1.1/cc/cc_wrapper.sh
Executable file
@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright 2015 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.
|
||||
#
|
||||
# Ship the environment to the C++ action
|
||||
#
|
||||
set -eu
|
||||
|
||||
# Set-up the environment
|
||||
|
||||
|
||||
# Call the C++ compiler
|
||||
/usr/bin/clang "$@"
|
53
tools/cross-toolchain/configs/clang/bazel_2.1.1/config/BUILD
Normal file
53
tools/cross-toolchain/configs/clang/bazel_2.1.1/config/BUILD
Normal file
@ -0,0 +1,53 @@
|
||||
# Copyright 2016 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.
|
||||
|
||||
# This file is auto-generated by an rbe_autoconfig repository rule
|
||||
# and should not be modified directly.
|
||||
# See @bazel_toolchains//rules:rbe_repo.bzl
|
||||
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
toolchain(
|
||||
name = "cc-toolchain",
|
||||
exec_compatible_with = [
|
||||
"@bazel_tools//platforms:x86_64",
|
||||
"@bazel_tools//platforms:linux",
|
||||
"@bazel_tools//tools/cpp:clang",
|
||||
],
|
||||
target_compatible_with = [
|
||||
"@bazel_tools//platforms:linux",
|
||||
"@bazel_tools//platforms:x86_64",
|
||||
],
|
||||
toolchain = "//tools/cross-toolchain/configs/clang/bazel_2.1.1/cc:cc-compiler-k8",
|
||||
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
|
||||
)
|
||||
|
||||
platform(
|
||||
name = "platform",
|
||||
constraint_values = [
|
||||
"@bazel_tools//platforms:x86_64",
|
||||
"@bazel_tools//platforms:linux",
|
||||
"@bazel_tools//tools/cpp:clang",
|
||||
],
|
||||
remote_execution_properties = """
|
||||
properties: {
|
||||
name: "container-image"
|
||||
value:"docker://gcr.io/prysmaticlabs/rbe-worker@sha256:dd72753a00743d0010ebc9fbcc73061623adc863532b49bb994c6e5c70739e97"
|
||||
}
|
||||
properties {
|
||||
name: "OSFamily"
|
||||
value: "Linux"
|
||||
}
|
||||
""",
|
||||
)
|
25
tools/cross-toolchain/configs/clang/bazel_2.1.1/java/BUILD
Normal file
25
tools/cross-toolchain/configs/clang/bazel_2.1.1/java/BUILD
Normal file
@ -0,0 +1,25 @@
|
||||
# Copyright 2016 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.
|
||||
|
||||
# This file is auto-generated by an rbe_autoconfig repository rule
|
||||
# and should not be modified directly.
|
||||
# See @bazel_toolchains//rules:rbe_repo.bzl
|
||||
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
java_runtime(
|
||||
name = "jdk",
|
||||
srcs = [],
|
||||
java_home = "/usr/lib/jvm/java-8-openjdk-amd64",
|
||||
)
|
147
tools/cross-toolchain/configs/clang/bazel_2.1.1/prysm_toolchains/BUILD.bazel
Executable file
147
tools/cross-toolchain/configs/clang/bazel_2.1.1/prysm_toolchains/BUILD.bazel
Executable file
@ -0,0 +1,147 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(":cc_toolchain_config_osx.bzl", "osx_cc_toolchain_config")
|
||||
load(":cc_toolchain_config_linux_arm64.bzl", "arm64_cc_toolchain_config")
|
||||
load(":cc_toolchain_config_windows.bzl", "windows_cc_toolchain_config")
|
||||
|
||||
cc_toolchain_suite(
|
||||
name = "multiarch_toolchain",
|
||||
toolchains = {
|
||||
"k8|osxcross": ":cc-clang-osx",
|
||||
"k8|clang": "cc-clang-amd64",
|
||||
"aarch64|clang": ":cc-clang-arm64",
|
||||
"k8": "cc-clang-amd64",
|
||||
"aarch64": ":cc-clang-arm64",
|
||||
"k8|mingw-w64": ":cc-mingw-amd64",
|
||||
},
|
||||
)
|
||||
|
||||
cc_toolchain_suite(
|
||||
name = "hostonly_toolchain",
|
||||
toolchains = {
|
||||
"k8": "cc-clang-amd64",
|
||||
},
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "empty",
|
||||
srcs = [],
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "osx_amd64",
|
||||
constraint_values = [
|
||||
"@platforms//os:osx",
|
||||
"@platforms//cpu:x86_64",
|
||||
],
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "linux_arm64",
|
||||
constraint_values = [
|
||||
"@platforms//os:linux",
|
||||
"@platforms//cpu:aarch64",
|
||||
],
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "linux_amd64",
|
||||
constraint_values = [
|
||||
"@platforms//os:linux",
|
||||
"@platforms//cpu:x86_64",
|
||||
],
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "windows_amd64",
|
||||
constraint_values = [
|
||||
"@platforms//os:windows",
|
||||
"@platforms//cpu:x86_64",
|
||||
],
|
||||
)
|
||||
|
||||
arm64_cc_toolchain_config(
|
||||
name = "local-arm64",
|
||||
target = "aarch64-linux-gnu",
|
||||
)
|
||||
|
||||
arm64_cc_toolchain_config(
|
||||
name = "local-amd64",
|
||||
target = "x86_64-unknown-linux-gnu",
|
||||
)
|
||||
|
||||
osx_cc_toolchain_config(
|
||||
name = "local-osxcross",
|
||||
target = "darwin_x86_64",
|
||||
)
|
||||
|
||||
windows_cc_toolchain_config(
|
||||
name = "local-windows",
|
||||
target = "x86_64-w64",
|
||||
)
|
||||
|
||||
cc_toolchain(
|
||||
name = "cc-mingw-amd64",
|
||||
all_files = ":empty",
|
||||
ar_files = ":empty",
|
||||
as_files = ":mingw_compiler_files",
|
||||
compiler_files = ":mingw_compiler_files",
|
||||
dwp_files = ":empty",
|
||||
linker_files = ":empty",
|
||||
objcopy_files = ":empty",
|
||||
strip_files = ":empty",
|
||||
supports_param_files = 0,
|
||||
toolchain_config = ":local-windows",
|
||||
)
|
||||
|
||||
cc_toolchain(
|
||||
name = "cc-clang-arm64",
|
||||
all_files = ":empty",
|
||||
compiler_files = ":empty",
|
||||
dwp_files = ":empty",
|
||||
linker_files = ":empty",
|
||||
objcopy_files = ":empty",
|
||||
strip_files = ":empty",
|
||||
supports_param_files = 1,
|
||||
toolchain_config = ":local-arm64",
|
||||
)
|
||||
|
||||
cc_toolchain(
|
||||
name = "cc-clang-osx",
|
||||
all_files = ":empty",
|
||||
compiler_files = ":empty",
|
||||
dwp_files = ":empty",
|
||||
linker_files = ":empty",
|
||||
objcopy_files = ":empty",
|
||||
strip_files = ":empty",
|
||||
supports_param_files = 1,
|
||||
toolchain_config = ":local-osxcross",
|
||||
)
|
||||
|
||||
cc_toolchain(
|
||||
name = "cc-clang-amd64",
|
||||
all_files = ":empty",
|
||||
compiler_files = ":empty",
|
||||
dwp_files = ":empty",
|
||||
linker_files = ":empty",
|
||||
objcopy_files = ":empty",
|
||||
strip_files = ":empty",
|
||||
supports_param_files = 1,
|
||||
toolchain_config = ":local-amd64",
|
||||
)
|
||||
|
||||
toolchain(
|
||||
name = "cc-toolchain-multiarch",
|
||||
exec_compatible_with = [
|
||||
"@platforms//os:linux",
|
||||
"@platforms//cpu:x86_64",
|
||||
],
|
||||
target_compatible_with = [],
|
||||
toolchain = select({
|
||||
":linux_arm64": ":cc-clang-arm64",
|
||||
":linux_amd64": ":cc-clang-amd64",
|
||||
":osx_amd64": ":cc-clang-osx",
|
||||
":windows_amd64": ":cc-mingw-amd64",
|
||||
}),
|
||||
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
|
||||
)
|
@ -0,0 +1,2 @@
|
||||
# DO NOT EDIT: automatically generated WORKSPACE file for prysm_toolchains rule
|
||||
workspace(name = "prysm_toolchains")
|
@ -0,0 +1,304 @@
|
||||
load(
|
||||
"@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
|
||||
"action_config",
|
||||
"feature",
|
||||
"feature_set",
|
||||
"flag_group",
|
||||
"flag_set",
|
||||
"make_variable",
|
||||
"tool",
|
||||
"tool_path",
|
||||
"with_feature_set",
|
||||
)
|
||||
load(
|
||||
"@bazel_tools//tools/cpp:cc_toolchain_config.bzl",
|
||||
ALL_COMPILE_ACTIONS = "all_compile_actions",
|
||||
ALL_CPP_COMPILE_ACTIONS = "all_cpp_compile_actions",
|
||||
ALL_LINK_ACTIONS = "all_link_actions",
|
||||
)
|
||||
|
||||
def _impl(ctx):
|
||||
toolchain_identifier = "clang-linux-cross"
|
||||
compiler = "clang"
|
||||
abi_version = "clang"
|
||||
abi_libc_version = "glibc_unknown"
|
||||
target_libc = "glibc_unknown"
|
||||
target_cpu = ctx.attr.target.split("-")[0]
|
||||
|
||||
if (target_cpu == "aarch64"):
|
||||
sysroot = "/usr/aarch64-linux-gnu"
|
||||
include_path_prefix = sysroot
|
||||
elif (target_cpu == "x86_64"):
|
||||
sysroot = "/"
|
||||
include_path_prefix = "/usr"
|
||||
else:
|
||||
fail("Unreachable")
|
||||
|
||||
if (target_cpu == "aarch64"):
|
||||
cross_system_include_dirs = [
|
||||
include_path_prefix + "/include/c++/v1",
|
||||
include_path_prefix + "/lib/clang/10.0.0/include",
|
||||
]
|
||||
else:
|
||||
cross_system_include_dirs = [
|
||||
include_path_prefix + "/include/c++/v1",
|
||||
include_path_prefix + "/lib/clang/10.0.0/include",
|
||||
include_path_prefix + "/include/x86_64-linux-gnu",
|
||||
]
|
||||
|
||||
cross_system_include_dirs += [
|
||||
include_path_prefix + "/include/",
|
||||
include_path_prefix + "/include/linux",
|
||||
include_path_prefix + "/include/asm",
|
||||
include_path_prefix + "/include/asm-generic",
|
||||
]
|
||||
|
||||
if (target_cpu == "aarch64"):
|
||||
cross_system_lib_dirs = [
|
||||
"/usr/" + ctx.attr.target + "/lib",
|
||||
]
|
||||
else:
|
||||
cross_system_lib_dirs = [
|
||||
"/usr/lib/x86_64-linux-gnu/",
|
||||
]
|
||||
|
||||
cross_system_lib_dirs += [
|
||||
"/usr/lib/gcc/x86_64-linux-gnu/8",
|
||||
]
|
||||
|
||||
opt_feature = feature(name = "opt")
|
||||
dbg_feature = feature(name = "dbg")
|
||||
fastbuild_feature = feature(name = "fastbuild")
|
||||
random_seed_feature = feature(name = "random_seed", enabled = True)
|
||||
supports_pic_feature = feature(name = "supports_pic", enabled = True)
|
||||
supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
|
||||
|
||||
unfiltered_compile_flags_feature = feature(
|
||||
name = "unfiltered_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-no-canonical-prefixes",
|
||||
"-Wno-builtin-macro-redefined",
|
||||
"-D__DATE__=\"redacted\"",
|
||||
"-D__TIMESTAMP__=\"redacted\"",
|
||||
"-D__TIME__=\"redacted\"",
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
# explicit arch specific system includes
|
||||
system_include_flags = []
|
||||
for d in cross_system_include_dirs:
|
||||
system_include_flags += ["-idirafter", d]
|
||||
|
||||
default_compile_flags_feature = feature(
|
||||
name = "default_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"--target=" + ctx.attr.target,
|
||||
"-nostdinc",
|
||||
"-U_FORTIFY_SOURCE",
|
||||
"-fstack-protector",
|
||||
"-fno-omit-frame-pointer",
|
||||
"-fcolor-diagnostics",
|
||||
"-Wall",
|
||||
"-Wthread-safety",
|
||||
"-Wself-assign",
|
||||
] + system_include_flags,
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-g", "-fstandalone-debug"])],
|
||||
with_features = [with_feature_set(features = ["dbg"])],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-g0",
|
||||
"-O2",
|
||||
"-D_FORTIFY_SOURCE=1",
|
||||
"-DNDEBUG",
|
||||
"-ffunction-sections",
|
||||
"-fdata-sections",
|
||||
],
|
||||
),
|
||||
],
|
||||
with_features = [with_feature_set(features = ["opt"])],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_CPP_COMPILE_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-std=c++17", "-nostdinc++"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
additional_link_flags = [
|
||||
"-l:libc++.a",
|
||||
"-l:libc++abi.a",
|
||||
"-l:libunwind.a",
|
||||
"-lpthread",
|
||||
"-ldl",
|
||||
"-rtlib=compiler-rt",
|
||||
]
|
||||
|
||||
default_link_flags_feature = feature(
|
||||
name = "default_link_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = additional_link_flags + [
|
||||
"--target=" + ctx.attr.target,
|
||||
"-lm",
|
||||
"-no-canonical-prefixes",
|
||||
"-fuse-ld=lld",
|
||||
"-Wl,--build-id=md5",
|
||||
"-Wl,--hash-style=gnu",
|
||||
"-Wl,-z,relro,-z,now",
|
||||
] + ["-L" + d for d in cross_system_lib_dirs],
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-Wl,--gc-sections"])],
|
||||
with_features = [with_feature_set(features = ["opt"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
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"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
user_compile_flags_feature = feature(
|
||||
name = "user_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
expand_if_available = "user_compile_flags",
|
||||
flags = ["%{user_compile_flags}"],
|
||||
iterate_over = "user_compile_flags",
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
sysroot_feature = feature(
|
||||
name = "sysroot",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS + ALL_LINK_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
expand_if_available = "sysroot",
|
||||
flags = ["--sysroot=%{sysroot}"],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
coverage_feature = feature(
|
||||
name = "coverage",
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = ["-fprofile-instr-generate", "-fcoverage-mapping"],
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-fprofile-instr-generate"])],
|
||||
),
|
||||
],
|
||||
provides = ["profile"],
|
||||
)
|
||||
|
||||
features = [
|
||||
opt_feature,
|
||||
fastbuild_feature,
|
||||
dbg_feature,
|
||||
random_seed_feature,
|
||||
supports_pic_feature,
|
||||
supports_dynamic_linker_feature,
|
||||
unfiltered_compile_flags_feature,
|
||||
default_link_flags_feature,
|
||||
default_compile_flags_feature,
|
||||
objcopy_embed_flags_feature,
|
||||
user_compile_flags_feature,
|
||||
sysroot_feature,
|
||||
coverage_feature,
|
||||
]
|
||||
|
||||
tool_paths = [
|
||||
tool_path(name = "ld", path = "/usr/bin/ld.lld"),
|
||||
tool_path(name = "cpp", path = "/usr/bin/clang-cpp"),
|
||||
tool_path(name = "dwp", path = "/usr/bin/llvm-dwp"),
|
||||
tool_path(name = "gcov", path = "/usr/bin/llvm-profdata"),
|
||||
tool_path(name = "nm", path = "/usr/bin/llvm-nm"),
|
||||
tool_path(name = "objcopy", path = "/usr/bin/llvm-objcopy"),
|
||||
tool_path(name = "objdump", path = "/usr/bin/llvm-objdump"),
|
||||
tool_path(name = "strip", path = "/usr/bin/strip"),
|
||||
tool_path(name = "gcc", path = "/usr/bin/clang"),
|
||||
tool_path(name = "ar", path = "/usr/bin/llvm-ar"),
|
||||
]
|
||||
|
||||
return cc_common.create_cc_toolchain_config_info(
|
||||
ctx = ctx,
|
||||
features = features,
|
||||
abi_version = abi_version,
|
||||
abi_libc_version = abi_libc_version,
|
||||
builtin_sysroot = sysroot,
|
||||
compiler = compiler,
|
||||
cxx_builtin_include_directories = cross_system_include_dirs,
|
||||
host_system_name = "x86_64-unknown-linux-gnu",
|
||||
target_cpu = target_cpu,
|
||||
target_libc = target_libc,
|
||||
target_system_name = ctx.attr.target,
|
||||
tool_paths = tool_paths,
|
||||
toolchain_identifier = toolchain_identifier,
|
||||
)
|
||||
|
||||
arm64_cc_toolchain_config = rule(
|
||||
implementation = _impl,
|
||||
attrs = {
|
||||
"target": attr.string(mandatory = True),
|
||||
"stdlib": attr.string(),
|
||||
},
|
||||
provides = [CcToolchainConfigInfo],
|
||||
)
|
@ -0,0 +1,250 @@
|
||||
load(
|
||||
"@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
|
||||
"action_config",
|
||||
"feature",
|
||||
"feature_set",
|
||||
"flag_group",
|
||||
"flag_set",
|
||||
"make_variable",
|
||||
"tool",
|
||||
"tool_path",
|
||||
"with_feature_set",
|
||||
)
|
||||
load(
|
||||
"@bazel_tools//tools/cpp:cc_toolchain_config.bzl",
|
||||
ALL_COMPILE_ACTIONS = "all_compile_actions",
|
||||
ALL_CPP_COMPILE_ACTIONS = "all_cpp_compile_actions",
|
||||
ALL_LINK_ACTIONS = "all_link_actions",
|
||||
)
|
||||
|
||||
def _impl(ctx):
|
||||
toolchain_identifier = "osxcross"
|
||||
compiler = "clang"
|
||||
abi_version = "darwin_x86_64"
|
||||
abi_libc_version = "darwin_x86_64"
|
||||
install = "/usr/x86_64-apple-darwin/"
|
||||
clang_version = "10.0.0"
|
||||
target_libc = "macosx"
|
||||
target_cpu = "x86_64"
|
||||
osxcross = install + "osxcross/"
|
||||
osxcross_binprefix = osxcross + "bin/x86_64-apple-darwin14-"
|
||||
sdkroot = osxcross + "SDK/MacOSX10.10.sdk/"
|
||||
cross_system_include_dirs = [
|
||||
"/usr/lib/clang/10.0.0/include",
|
||||
osxcross + "include",
|
||||
sdkroot + "usr/include",
|
||||
]
|
||||
cross_system_lib_dirs = [
|
||||
"/usr/x86_64-apple-darwin/lib",
|
||||
sdkroot + "usr/lib",
|
||||
osxcross + "/lib",
|
||||
]
|
||||
|
||||
opt_feature = feature(name = "opt")
|
||||
dbg_feature = feature(name = "dbg")
|
||||
fastbuild_feature = feature(name = "fastbuild")
|
||||
random_seed_feature = feature(name = "random_seed", enabled = True)
|
||||
supports_pic_feature = feature(name = "supports_pic", enabled = True)
|
||||
supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
|
||||
|
||||
unfiltered_compile_flags_feature = feature(
|
||||
name = "unfiltered_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-stdlib=libc++",
|
||||
"-no-canonical-prefixes",
|
||||
"-Wno-builtin-macro-redefined",
|
||||
"-D__DATE__=\"redacted\"",
|
||||
"-D__TIMESTAMP__=\"redacted\"",
|
||||
"-D__TIME__=\"redacted\"",
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
# explicit arch specific system includes
|
||||
system_include_flags = []
|
||||
for d in cross_system_include_dirs:
|
||||
system_include_flags += ["-idirafter", d]
|
||||
|
||||
default_compile_flags_feature = feature(
|
||||
name = "default_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-mlinker-version=400",
|
||||
"-B " + osxcross + "bin",
|
||||
"-nostdinc",
|
||||
"-U_FORTIFY_SOURCE",
|
||||
"-fstack-protector",
|
||||
"-fno-omit-frame-pointer",
|
||||
"-fcolor-diagnostics",
|
||||
"-Wall",
|
||||
"-Wthread-safety",
|
||||
"-Wself-assign",
|
||||
] + system_include_flags,
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-g", "-fstandalone-debug"])],
|
||||
with_features = [with_feature_set(features = ["dbg"])],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-g0",
|
||||
"-O2",
|
||||
"-D_FORTIFY_SOURCE=1",
|
||||
"-DNDEBUG",
|
||||
"-ffunction-sections",
|
||||
"-fdata-sections",
|
||||
],
|
||||
),
|
||||
],
|
||||
with_features = [with_feature_set(features = ["opt"])],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_CPP_COMPILE_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-std=c++17", "-nostdinc++"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
default_link_flags_feature = feature(
|
||||
name = "default_link_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-v",
|
||||
"-lm",
|
||||
"-no-canonical-prefixes",
|
||||
"-fuse-ld=lld",
|
||||
"-lc++",
|
||||
"-lc++abi",
|
||||
"-F" + sdkroot + "System/Library/Frameworks/",
|
||||
"-L" + sdkroot + "usr/lib",
|
||||
"-undefined",
|
||||
"dynamic_lookup",
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
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"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
user_compile_flags_feature = feature(
|
||||
name = "user_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
expand_if_available = "user_compile_flags",
|
||||
flags = ["%{user_compile_flags}"],
|
||||
iterate_over = "user_compile_flags",
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
coverage_feature = feature(
|
||||
name = "coverage",
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = ["-fprofile-instr-generate", "-fcoverage-mapping"],
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-fprofile-instr-generate"])],
|
||||
),
|
||||
],
|
||||
provides = ["profile"],
|
||||
)
|
||||
|
||||
features = [
|
||||
opt_feature,
|
||||
fastbuild_feature,
|
||||
dbg_feature,
|
||||
random_seed_feature,
|
||||
supports_pic_feature,
|
||||
supports_dynamic_linker_feature,
|
||||
unfiltered_compile_flags_feature,
|
||||
default_link_flags_feature,
|
||||
default_compile_flags_feature,
|
||||
objcopy_embed_flags_feature,
|
||||
user_compile_flags_feature,
|
||||
coverage_feature,
|
||||
]
|
||||
|
||||
tool_paths = [
|
||||
tool_path(name = "ld", path = osxcross_binprefix + "ld"),
|
||||
tool_path(name = "cpp", path = osxcross + "bin/o64-clang++"),
|
||||
tool_path(name = "dwp", path = "/usr/bin/dwp"),
|
||||
tool_path(name = "gcov", path = "/usr/bin/gcov"),
|
||||
tool_path(name = "nm", path = osxcross_binprefix + "nm"),
|
||||
tool_path(name = "objdump", path = osxcross_binprefix + "ObjectDump"),
|
||||
tool_path(name = "strip", path = osxcross_binprefix + "strip"),
|
||||
tool_path(name = "gcc", path = osxcross + "bin/o64-clang"),
|
||||
tool_path(name = "ar", path = osxcross_binprefix + "libtool"),
|
||||
]
|
||||
|
||||
return cc_common.create_cc_toolchain_config_info(
|
||||
ctx = ctx,
|
||||
features = features,
|
||||
abi_version = abi_version,
|
||||
abi_libc_version = abi_libc_version,
|
||||
compiler = compiler,
|
||||
cxx_builtin_include_directories = cross_system_include_dirs,
|
||||
host_system_name = "x86_64-unknown-linux-gnu",
|
||||
target_cpu = target_cpu,
|
||||
target_libc = target_libc,
|
||||
target_system_name = ctx.attr.target,
|
||||
tool_paths = tool_paths,
|
||||
toolchain_identifier = toolchain_identifier,
|
||||
)
|
||||
|
||||
osx_cc_toolchain_config = rule(
|
||||
implementation = _impl,
|
||||
attrs = {
|
||||
"target": attr.string(mandatory = True),
|
||||
"stdlib": attr.string(),
|
||||
},
|
||||
provides = [CcToolchainConfigInfo],
|
||||
)
|
@ -0,0 +1,209 @@
|
||||
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",
|
||||
"with_feature_set",
|
||||
)
|
||||
load(
|
||||
"@bazel_tools//tools/cpp:cc_toolchain_config.bzl",
|
||||
ALL_COMPILE_ACTIONS = "all_compile_actions",
|
||||
ALL_CPP_COMPILE_ACTIONS = "all_cpp_compile_actions",
|
||||
ALL_LINK_ACTIONS = "all_link_actions",
|
||||
)
|
||||
load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
|
||||
|
||||
def _impl(ctx):
|
||||
toolchain_identifier = "msys_x64_mingw"
|
||||
host_system_name = "local"
|
||||
target_system_name = "local"
|
||||
target_cpu = "x64_windows"
|
||||
target_libc = "mingw"
|
||||
compiler = "mingw-gcc"
|
||||
abi_version = "local"
|
||||
abi_libc_version = "local"
|
||||
cc_target_os = None
|
||||
builtin_sysroot = None
|
||||
action_configs = []
|
||||
|
||||
install = "/usr/x86_64-w64-mingw32/"
|
||||
bin_prefix = "/usr/bin/x86_64-w64-mingw32-"
|
||||
|
||||
targets_windows_feature = feature(
|
||||
name = "targets_windows",
|
||||
implies = ["copy_dynamic_libraries_to_binary"],
|
||||
enabled = True,
|
||||
)
|
||||
|
||||
copy_dynamic_libraries_to_binary_feature = feature(name = "copy_dynamic_libraries_to_binary")
|
||||
|
||||
gcc_env_feature = feature(
|
||||
name = "gcc_env",
|
||||
enabled = True,
|
||||
env_sets = [
|
||||
env_set(
|
||||
actions = [
|
||||
ACTION_NAMES.c_compile,
|
||||
ACTION_NAMES.cpp_compile,
|
||||
ACTION_NAMES.cpp_module_compile,
|
||||
ACTION_NAMES.cpp_module_codegen,
|
||||
ACTION_NAMES.cpp_header_parsing,
|
||||
ACTION_NAMES.assemble,
|
||||
ACTION_NAMES.preprocess_assemble,
|
||||
ACTION_NAMES.cpp_link_executable,
|
||||
ACTION_NAMES.cpp_link_dynamic_library,
|
||||
ACTION_NAMES.cpp_link_nodeps_dynamic_library,
|
||||
ACTION_NAMES.cpp_link_static_library,
|
||||
],
|
||||
env_entries = [
|
||||
env_entry(key = "PATH", value = "NOT_USED"),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
msys_mingw_flags = [
|
||||
"-B " + install + "bin",
|
||||
"-nostdinc",
|
||||
"-U_FORTIFY_SOURCE",
|
||||
"-fstack-protector",
|
||||
"-fno-omit-frame-pointer",
|
||||
"-fcolor-diagnostics",
|
||||
"-Wall",
|
||||
"-Wthread-safety",
|
||||
"-Wself-assign",
|
||||
"-x c++",
|
||||
"-lstdc++",
|
||||
"-lpthread",
|
||||
]
|
||||
|
||||
msys_mingw_link_flags = [
|
||||
"-l:libstdc++.a",
|
||||
"-L" + install + "lib",
|
||||
"-L/usr/lib/gcc/x86_64-w64-mingw32/8.3-w32",
|
||||
"-v",
|
||||
"-lm",
|
||||
"-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_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 = msys_mingw_flags)] if msys_mingw_flags else []),
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
compiler_param_file_feature = feature(
|
||||
name = "compiler_param_file",
|
||||
)
|
||||
|
||||
default_link_flags_feature = feature(
|
||||
name = "default_link_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = ([flag_group(flags = msys_mingw_link_flags)] if msys_mingw_link_flags else []),
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
|
||||
|
||||
features = [
|
||||
targets_windows_feature,
|
||||
copy_dynamic_libraries_to_binary_feature,
|
||||
gcc_env_feature,
|
||||
default_compile_flags_feature,
|
||||
compiler_param_file_feature,
|
||||
default_link_flags_feature,
|
||||
supports_dynamic_linker_feature,
|
||||
]
|
||||
|
||||
cxx_builtin_include_directories = [
|
||||
install + "include",
|
||||
]
|
||||
|
||||
artifact_name_patterns = [
|
||||
artifact_name_pattern(
|
||||
category_name = "executable",
|
||||
prefix = "",
|
||||
extension = ".exe",
|
||||
),
|
||||
]
|
||||
|
||||
make_variables = []
|
||||
tool_paths = [
|
||||
tool_path(name = "ld", path = bin_prefix + "ld"),
|
||||
tool_path(name = "cpp", path = bin_prefix + "cpp"),
|
||||
tool_path(name = "gcov", path = "/usr/bin/gcov"),
|
||||
tool_path(name = "nm", path = bin_prefix + "nm"),
|
||||
tool_path(name = "objcopy", path = bin_prefix + "objcopy"),
|
||||
tool_path(name = "objdump", path = bin_prefix + "objdump"),
|
||||
tool_path(name = "strip", path = bin_prefix + "strip"),
|
||||
tool_path(name = "gcc", path = bin_prefix + "gcc"),
|
||||
tool_path(name = "ar", path = bin_prefix + "ar"),
|
||||
]
|
||||
|
||||
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,
|
||||
)
|
||||
|
||||
windows_cc_toolchain_config = rule(
|
||||
implementation = _impl,
|
||||
attrs = {
|
||||
"target": attr.string(mandatory = True),
|
||||
"stdlib": attr.string(),
|
||||
},
|
||||
provides = [CcToolchainConfigInfo],
|
||||
)
|
164
tools/cross-toolchain/configs/gcc/bazel_2.1.1/cc/BUILD
Executable file
164
tools/cross-toolchain/configs/gcc/bazel_2.1.1/cc/BUILD
Executable file
@ -0,0 +1,164 @@
|
||||
# Copyright 2016 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.
|
||||
|
||||
# This becomes the BUILD file for @local_config_cc// under non-FreeBSD unixes.
|
||||
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(":cc_toolchain_config.bzl", "cc_toolchain_config")
|
||||
load(":armeabi_cc_toolchain_config.bzl", "armeabi_cc_toolchain_config")
|
||||
load("@rules_cc//cc:defs.bzl", "cc_toolchain", "cc_toolchain_suite")
|
||||
|
||||
licenses(["notice"]) # Apache 2.0
|
||||
|
||||
cc_library(
|
||||
name = "malloc",
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "empty",
|
||||
srcs = [],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "cc_wrapper",
|
||||
srcs = ["cc_wrapper.sh"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "compiler_deps",
|
||||
srcs = glob(
|
||||
["extra_tools/**"],
|
||||
allow_empty = True,
|
||||
) + [":builtin_include_directory_paths"],
|
||||
)
|
||||
|
||||
# This is the entry point for --crosstool_top. Toolchains are found
|
||||
# by lopping off the name of --crosstool_top and searching for
|
||||
# the "${CPU}" entry in the toolchains attribute.
|
||||
cc_toolchain_suite(
|
||||
name = "toolchain",
|
||||
toolchains = {
|
||||
"k8|gcc": ":cc-compiler-k8",
|
||||
"k8": ":cc-compiler-k8",
|
||||
"armeabi-v7a|compiler": ":cc-compiler-armeabi-v7a",
|
||||
"armeabi-v7a": ":cc-compiler-armeabi-v7a",
|
||||
},
|
||||
)
|
||||
|
||||
cc_toolchain(
|
||||
name = "cc-compiler-k8",
|
||||
all_files = ":compiler_deps",
|
||||
ar_files = ":compiler_deps",
|
||||
as_files = ":compiler_deps",
|
||||
compiler_files = ":compiler_deps",
|
||||
dwp_files = ":empty",
|
||||
linker_files = ":compiler_deps",
|
||||
objcopy_files = ":empty",
|
||||
strip_files = ":empty",
|
||||
supports_param_files = 1,
|
||||
toolchain_config = ":local",
|
||||
toolchain_identifier = "local",
|
||||
)
|
||||
|
||||
cc_toolchain_config(
|
||||
name = "local",
|
||||
abi_libc_version = "local",
|
||||
abi_version = "local",
|
||||
compile_flags = [
|
||||
"-U_FORTIFY_SOURCE",
|
||||
"-fstack-protector",
|
||||
"-Wall",
|
||||
"-Wunused-but-set-parameter",
|
||||
"-Wno-free-nonheap-object",
|
||||
"-fno-omit-frame-pointer",
|
||||
],
|
||||
compiler = "gcc",
|
||||
coverage_compile_flags = ["--coverage"],
|
||||
coverage_link_flags = ["--coverage"],
|
||||
cpu = "k8",
|
||||
cxx_builtin_include_directories = [
|
||||
"/usr/lib/gcc/x86_64-linux-gnu/8/include",
|
||||
"/usr/local/include",
|
||||
"/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed",
|
||||
"/usr/include/x86_64-linux-gnu",
|
||||
"/usr/include",
|
||||
"/usr/include/c++/8",
|
||||
"/usr/include/x86_64-linux-gnu/c++/8",
|
||||
"/usr/include/c++/8/backward",
|
||||
],
|
||||
cxx_flags = ["-std=c++0x"],
|
||||
dbg_compile_flags = ["-g"],
|
||||
host_system_name = "local",
|
||||
link_flags = [
|
||||
"-fuse-ld=gold",
|
||||
"-Wl,-no-as-needed",
|
||||
"-Wl,-z,relro,-z,now",
|
||||
"-B/usr/bin",
|
||||
"-pass-exit-codes",
|
||||
"-lm",
|
||||
"-static-libgcc",
|
||||
],
|
||||
link_libs = ["-l:libstdc++.a"],
|
||||
opt_compile_flags = [
|
||||
"-g0",
|
||||
"-O2",
|
||||
"-D_FORTIFY_SOURCE=1",
|
||||
"-DNDEBUG",
|
||||
"-ffunction-sections",
|
||||
"-fdata-sections",
|
||||
],
|
||||
opt_link_flags = ["-Wl,--gc-sections"],
|
||||
supports_start_end_lib = True,
|
||||
target_libc = "local",
|
||||
target_system_name = "local",
|
||||
tool_paths = {
|
||||
"ar": "/usr/bin/ar",
|
||||
"ld": "/usr/bin/ld",
|
||||
"cpp": "/usr/bin/cpp",
|
||||
"gcc": "/usr/bin/gcc",
|
||||
"dwp": "/usr/bin/dwp",
|
||||
"gcov": "/usr/bin/gcov",
|
||||
"nm": "/usr/bin/nm",
|
||||
"objcopy": "/usr/bin/objcopy",
|
||||
"objdump": "/usr/bin/objdump",
|
||||
"strip": "/usr/bin/strip",
|
||||
},
|
||||
toolchain_identifier = "local",
|
||||
unfiltered_compile_flags = [
|
||||
"-fno-canonical-system-headers",
|
||||
"-Wno-builtin-macro-redefined",
|
||||
"-D__DATE__=\"redacted\"",
|
||||
"-D__TIMESTAMP__=\"redacted\"",
|
||||
"-D__TIME__=\"redacted\"",
|
||||
],
|
||||
)
|
||||
|
||||
# Android tooling requires a default toolchain for the armeabi-v7a cpu.
|
||||
cc_toolchain(
|
||||
name = "cc-compiler-armeabi-v7a",
|
||||
all_files = ":empty",
|
||||
ar_files = ":empty",
|
||||
as_files = ":empty",
|
||||
compiler_files = ":empty",
|
||||
dwp_files = ":empty",
|
||||
linker_files = ":empty",
|
||||
objcopy_files = ":empty",
|
||||
strip_files = ":empty",
|
||||
supports_param_files = 1,
|
||||
toolchain_config = ":stub_armeabi-v7a",
|
||||
toolchain_identifier = "stub_armeabi-v7a",
|
||||
)
|
||||
|
||||
armeabi_cc_toolchain_config(name = "stub_armeabi-v7a")
|
@ -0,0 +1,82 @@
|
||||
# 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",
|
||||
"feature",
|
||||
"tool_path",
|
||||
)
|
||||
|
||||
def _impl(ctx):
|
||||
toolchain_identifier = "stub_armeabi-v7a"
|
||||
host_system_name = "armeabi-v7a"
|
||||
target_system_name = "armeabi-v7a"
|
||||
target_cpu = "armeabi-v7a"
|
||||
target_libc = "armeabi-v7a"
|
||||
compiler = "compiler"
|
||||
abi_version = "armeabi-v7a"
|
||||
abi_libc_version = "armeabi-v7a"
|
||||
cc_target_os = None
|
||||
builtin_sysroot = None
|
||||
action_configs = []
|
||||
|
||||
supports_pic_feature = feature(name = "supports_pic", enabled = True)
|
||||
supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
|
||||
features = [supports_dynamic_linker_feature, supports_pic_feature]
|
||||
|
||||
cxx_builtin_include_directories = []
|
||||
artifact_name_patterns = []
|
||||
make_variables = []
|
||||
|
||||
tool_paths = [
|
||||
tool_path(name = "ar", path = "/bin/false"),
|
||||
tool_path(name = "compat-ld", path = "/bin/false"),
|
||||
tool_path(name = "cpp", path = "/bin/false"),
|
||||
tool_path(name = "dwp", path = "/bin/false"),
|
||||
tool_path(name = "gcc", path = "/bin/false"),
|
||||
tool_path(name = "gcov", path = "/bin/false"),
|
||||
tool_path(name = "ld", path = "/bin/false"),
|
||||
tool_path(name = "nm", path = "/bin/false"),
|
||||
tool_path(name = "objcopy", path = "/bin/false"),
|
||||
tool_path(name = "objdump", path = "/bin/false"),
|
||||
tool_path(name = "strip", path = "/bin/false"),
|
||||
]
|
||||
|
||||
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,
|
||||
)
|
||||
|
||||
armeabi_cc_toolchain_config = rule(
|
||||
implementation = _impl,
|
||||
attrs = {},
|
||||
provides = [CcToolchainConfigInfo],
|
||||
)
|
@ -0,0 +1,14 @@
|
||||
This file is generated by cc_configure and contains builtin include directories
|
||||
that /usr/bin/gcc reported. This file is a dependency of every compilation action and
|
||||
changes to it will be reflected in the action cache key. When some of these
|
||||
paths change, Bazel will make sure to rerun the action, even though none of
|
||||
declared action inputs or the action commandline changes.
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/8/include
|
||||
/usr/local/include
|
||||
/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed
|
||||
/usr/include/x86_64-linux-gnu
|
||||
/usr/include
|
||||
/usr/include/c++/8
|
||||
/usr/include/x86_64-linux-gnu/c++/8
|
||||
/usr/include/c++/8/backward
|
1197
tools/cross-toolchain/configs/gcc/bazel_2.1.1/cc/cc_toolchain_config.bzl
Executable file
1197
tools/cross-toolchain/configs/gcc/bazel_2.1.1/cc/cc_toolchain_config.bzl
Executable file
File diff suppressed because it is too large
Load Diff
25
tools/cross-toolchain/configs/gcc/bazel_2.1.1/cc/cc_wrapper.sh
Executable file
25
tools/cross-toolchain/configs/gcc/bazel_2.1.1/cc/cc_wrapper.sh
Executable file
@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright 2015 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.
|
||||
#
|
||||
# Ship the environment to the C++ action
|
||||
#
|
||||
set -eu
|
||||
|
||||
# Set-up the environment
|
||||
|
||||
|
||||
# Call the C++ compiler
|
||||
/usr/bin/gcc "$@"
|
53
tools/cross-toolchain/configs/gcc/bazel_2.1.1/config/BUILD
Normal file
53
tools/cross-toolchain/configs/gcc/bazel_2.1.1/config/BUILD
Normal file
@ -0,0 +1,53 @@
|
||||
# Copyright 2016 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.
|
||||
|
||||
# This file is auto-generated by an rbe_autoconfig repository rule
|
||||
# and should not be modified directly.
|
||||
# See @bazel_toolchains//rules:rbe_repo.bzl
|
||||
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
toolchain(
|
||||
name = "cc-toolchain",
|
||||
exec_compatible_with = [
|
||||
"@bazel_tools//platforms:x86_64",
|
||||
"@bazel_tools//platforms:linux",
|
||||
"@bazel_tools//tools/cpp:clang",
|
||||
],
|
||||
target_compatible_with = [
|
||||
"@bazel_tools//platforms:linux",
|
||||
"@bazel_tools//platforms:x86_64",
|
||||
],
|
||||
toolchain = "//tools/cross-toolchain/configs/gcc/bazel_2.1.1/cc:cc-compiler-k8",
|
||||
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
|
||||
)
|
||||
|
||||
platform(
|
||||
name = "platform",
|
||||
constraint_values = [
|
||||
"@bazel_tools//platforms:x86_64",
|
||||
"@bazel_tools//platforms:linux",
|
||||
"@bazel_tools//tools/cpp:clang",
|
||||
],
|
||||
remote_execution_properties = """
|
||||
properties: {
|
||||
name: "container-image"
|
||||
value:"docker://gcr.io/prysmaticlabs/rbe-worker@sha256:dd72753a00743d0010ebc9fbcc73061623adc863532b49bb994c6e5c70739e97"
|
||||
}
|
||||
properties {
|
||||
name: "OSFamily"
|
||||
value: "Linux"
|
||||
}
|
||||
""",
|
||||
)
|
25
tools/cross-toolchain/configs/gcc/bazel_2.1.1/java/BUILD
Normal file
25
tools/cross-toolchain/configs/gcc/bazel_2.1.1/java/BUILD
Normal file
@ -0,0 +1,25 @@
|
||||
# Copyright 2016 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.
|
||||
|
||||
# This file is auto-generated by an rbe_autoconfig repository rule
|
||||
# and should not be modified directly.
|
||||
# See @bazel_toolchains//rules:rbe_repo.bzl
|
||||
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
java_runtime(
|
||||
name = "jdk",
|
||||
srcs = [],
|
||||
java_home = "/usr/lib/jvm/java-8-openjdk-amd64",
|
||||
)
|
147
tools/cross-toolchain/configs/gcc/bazel_2.1.1/prysm_toolchains/BUILD.bazel
Executable file
147
tools/cross-toolchain/configs/gcc/bazel_2.1.1/prysm_toolchains/BUILD.bazel
Executable file
@ -0,0 +1,147 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(":cc_toolchain_config_osx.bzl", "osx_cc_toolchain_config")
|
||||
load(":cc_toolchain_config_linux_arm64.bzl", "arm64_cc_toolchain_config")
|
||||
load(":cc_toolchain_config_windows.bzl", "windows_cc_toolchain_config")
|
||||
|
||||
cc_toolchain_suite(
|
||||
name = "multiarch_toolchain",
|
||||
toolchains = {
|
||||
"k8|osxcross": ":cc-clang-osx",
|
||||
"k8|clang": "cc-clang-amd64",
|
||||
"aarch64|clang": ":cc-clang-arm64",
|
||||
"k8": "cc-clang-amd64",
|
||||
"aarch64": ":cc-clang-arm64",
|
||||
"k8|mingw-w64": ":cc-mingw-amd64",
|
||||
},
|
||||
)
|
||||
|
||||
cc_toolchain_suite(
|
||||
name = "hostonly_toolchain",
|
||||
toolchains = {
|
||||
"k8": "cc-clang-amd64",
|
||||
},
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "empty",
|
||||
srcs = [],
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "osx_amd64",
|
||||
constraint_values = [
|
||||
"@platforms//os:osx",
|
||||
"@platforms//cpu:x86_64",
|
||||
],
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "linux_arm64",
|
||||
constraint_values = [
|
||||
"@platforms//os:linux",
|
||||
"@platforms//cpu:aarch64",
|
||||
],
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "linux_amd64",
|
||||
constraint_values = [
|
||||
"@platforms//os:linux",
|
||||
"@platforms//cpu:x86_64",
|
||||
],
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "windows_amd64",
|
||||
constraint_values = [
|
||||
"@platforms//os:windows",
|
||||
"@platforms//cpu:x86_64",
|
||||
],
|
||||
)
|
||||
|
||||
arm64_cc_toolchain_config(
|
||||
name = "local-arm64",
|
||||
target = "aarch64-linux-gnu",
|
||||
)
|
||||
|
||||
arm64_cc_toolchain_config(
|
||||
name = "local-amd64",
|
||||
target = "x86_64-unknown-linux-gnu",
|
||||
)
|
||||
|
||||
osx_cc_toolchain_config(
|
||||
name = "local-osxcross",
|
||||
target = "darwin_x86_64",
|
||||
)
|
||||
|
||||
windows_cc_toolchain_config(
|
||||
name = "local-windows",
|
||||
target = "x86_64-w64",
|
||||
)
|
||||
|
||||
cc_toolchain(
|
||||
name = "cc-mingw-amd64",
|
||||
all_files = ":empty",
|
||||
ar_files = ":empty",
|
||||
as_files = ":mingw_compiler_files",
|
||||
compiler_files = ":mingw_compiler_files",
|
||||
dwp_files = ":empty",
|
||||
linker_files = ":empty",
|
||||
objcopy_files = ":empty",
|
||||
strip_files = ":empty",
|
||||
supports_param_files = 0,
|
||||
toolchain_config = ":local-windows",
|
||||
)
|
||||
|
||||
cc_toolchain(
|
||||
name = "cc-clang-arm64",
|
||||
all_files = ":empty",
|
||||
compiler_files = ":empty",
|
||||
dwp_files = ":empty",
|
||||
linker_files = ":empty",
|
||||
objcopy_files = ":empty",
|
||||
strip_files = ":empty",
|
||||
supports_param_files = 1,
|
||||
toolchain_config = ":local-arm64",
|
||||
)
|
||||
|
||||
cc_toolchain(
|
||||
name = "cc-clang-osx",
|
||||
all_files = ":empty",
|
||||
compiler_files = ":empty",
|
||||
dwp_files = ":empty",
|
||||
linker_files = ":empty",
|
||||
objcopy_files = ":empty",
|
||||
strip_files = ":empty",
|
||||
supports_param_files = 1,
|
||||
toolchain_config = ":local-osxcross",
|
||||
)
|
||||
|
||||
cc_toolchain(
|
||||
name = "cc-clang-amd64",
|
||||
all_files = ":empty",
|
||||
compiler_files = ":empty",
|
||||
dwp_files = ":empty",
|
||||
linker_files = ":empty",
|
||||
objcopy_files = ":empty",
|
||||
strip_files = ":empty",
|
||||
supports_param_files = 1,
|
||||
toolchain_config = ":local-amd64",
|
||||
)
|
||||
|
||||
toolchain(
|
||||
name = "cc-toolchain-multiarch",
|
||||
exec_compatible_with = [
|
||||
"@platforms//os:linux",
|
||||
"@platforms//cpu:x86_64",
|
||||
],
|
||||
target_compatible_with = [],
|
||||
toolchain = select({
|
||||
":linux_arm64": ":cc-clang-arm64",
|
||||
":linux_amd64": ":cc-clang-amd64",
|
||||
":osx_amd64": ":cc-clang-osx",
|
||||
":windows_amd64": ":cc-mingw-amd64",
|
||||
}),
|
||||
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
|
||||
)
|
@ -0,0 +1,2 @@
|
||||
# DO NOT EDIT: automatically generated WORKSPACE file for prysm_toolchains rule
|
||||
workspace(name = "prysm_toolchains")
|
@ -0,0 +1,304 @@
|
||||
load(
|
||||
"@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
|
||||
"action_config",
|
||||
"feature",
|
||||
"feature_set",
|
||||
"flag_group",
|
||||
"flag_set",
|
||||
"make_variable",
|
||||
"tool",
|
||||
"tool_path",
|
||||
"with_feature_set",
|
||||
)
|
||||
load(
|
||||
"@bazel_tools//tools/cpp:cc_toolchain_config.bzl",
|
||||
ALL_COMPILE_ACTIONS = "all_compile_actions",
|
||||
ALL_CPP_COMPILE_ACTIONS = "all_cpp_compile_actions",
|
||||
ALL_LINK_ACTIONS = "all_link_actions",
|
||||
)
|
||||
|
||||
def _impl(ctx):
|
||||
toolchain_identifier = "clang-linux-cross"
|
||||
compiler = "clang"
|
||||
abi_version = "clang"
|
||||
abi_libc_version = "glibc_unknown"
|
||||
target_libc = "glibc_unknown"
|
||||
target_cpu = ctx.attr.target.split("-")[0]
|
||||
|
||||
if (target_cpu == "aarch64"):
|
||||
sysroot = "/usr/aarch64-linux-gnu"
|
||||
include_path_prefix = sysroot
|
||||
elif (target_cpu == "x86_64"):
|
||||
sysroot = "/"
|
||||
include_path_prefix = "/usr"
|
||||
else:
|
||||
fail("Unreachable")
|
||||
|
||||
if (target_cpu == "aarch64"):
|
||||
cross_system_include_dirs = [
|
||||
include_path_prefix + "/include/c++/v1",
|
||||
include_path_prefix + "/lib/clang/10.0.0/include",
|
||||
]
|
||||
else:
|
||||
cross_system_include_dirs = [
|
||||
include_path_prefix + "/include/c++/v1",
|
||||
include_path_prefix + "/lib/clang/10.0.0/include",
|
||||
include_path_prefix + "/include/x86_64-linux-gnu",
|
||||
]
|
||||
|
||||
cross_system_include_dirs += [
|
||||
include_path_prefix + "/include/",
|
||||
include_path_prefix + "/include/linux",
|
||||
include_path_prefix + "/include/asm",
|
||||
include_path_prefix + "/include/asm-generic",
|
||||
]
|
||||
|
||||
if (target_cpu == "aarch64"):
|
||||
cross_system_lib_dirs = [
|
||||
"/usr/" + ctx.attr.target + "/lib",
|
||||
]
|
||||
else:
|
||||
cross_system_lib_dirs = [
|
||||
"/usr/lib/x86_64-linux-gnu/",
|
||||
]
|
||||
|
||||
cross_system_lib_dirs += [
|
||||
"/usr/lib/gcc/x86_64-linux-gnu/8",
|
||||
]
|
||||
|
||||
opt_feature = feature(name = "opt")
|
||||
dbg_feature = feature(name = "dbg")
|
||||
fastbuild_feature = feature(name = "fastbuild")
|
||||
random_seed_feature = feature(name = "random_seed", enabled = True)
|
||||
supports_pic_feature = feature(name = "supports_pic", enabled = True)
|
||||
supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
|
||||
|
||||
unfiltered_compile_flags_feature = feature(
|
||||
name = "unfiltered_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-no-canonical-prefixes",
|
||||
"-Wno-builtin-macro-redefined",
|
||||
"-D__DATE__=\"redacted\"",
|
||||
"-D__TIMESTAMP__=\"redacted\"",
|
||||
"-D__TIME__=\"redacted\"",
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
# explicit arch specific system includes
|
||||
system_include_flags = []
|
||||
for d in cross_system_include_dirs:
|
||||
system_include_flags += ["-idirafter", d]
|
||||
|
||||
default_compile_flags_feature = feature(
|
||||
name = "default_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"--target=" + ctx.attr.target,
|
||||
"-nostdinc",
|
||||
"-U_FORTIFY_SOURCE",
|
||||
"-fstack-protector",
|
||||
"-fno-omit-frame-pointer",
|
||||
"-fcolor-diagnostics",
|
||||
"-Wall",
|
||||
"-Wthread-safety",
|
||||
"-Wself-assign",
|
||||
] + system_include_flags,
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-g", "-fstandalone-debug"])],
|
||||
with_features = [with_feature_set(features = ["dbg"])],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-g0",
|
||||
"-O2",
|
||||
"-D_FORTIFY_SOURCE=1",
|
||||
"-DNDEBUG",
|
||||
"-ffunction-sections",
|
||||
"-fdata-sections",
|
||||
],
|
||||
),
|
||||
],
|
||||
with_features = [with_feature_set(features = ["opt"])],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_CPP_COMPILE_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-std=c++17", "-nostdinc++"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
additional_link_flags = [
|
||||
"-l:libc++.a",
|
||||
"-l:libc++abi.a",
|
||||
"-l:libunwind.a",
|
||||
"-lpthread",
|
||||
"-ldl",
|
||||
"-rtlib=compiler-rt",
|
||||
]
|
||||
|
||||
default_link_flags_feature = feature(
|
||||
name = "default_link_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = additional_link_flags + [
|
||||
"--target=" + ctx.attr.target,
|
||||
"-lm",
|
||||
"-no-canonical-prefixes",
|
||||
"-fuse-ld=lld",
|
||||
"-Wl,--build-id=md5",
|
||||
"-Wl,--hash-style=gnu",
|
||||
"-Wl,-z,relro,-z,now",
|
||||
] + ["-L" + d for d in cross_system_lib_dirs],
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-Wl,--gc-sections"])],
|
||||
with_features = [with_feature_set(features = ["opt"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
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"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
user_compile_flags_feature = feature(
|
||||
name = "user_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
expand_if_available = "user_compile_flags",
|
||||
flags = ["%{user_compile_flags}"],
|
||||
iterate_over = "user_compile_flags",
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
sysroot_feature = feature(
|
||||
name = "sysroot",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS + ALL_LINK_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
expand_if_available = "sysroot",
|
||||
flags = ["--sysroot=%{sysroot}"],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
coverage_feature = feature(
|
||||
name = "coverage",
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = ["-fprofile-instr-generate", "-fcoverage-mapping"],
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-fprofile-instr-generate"])],
|
||||
),
|
||||
],
|
||||
provides = ["profile"],
|
||||
)
|
||||
|
||||
features = [
|
||||
opt_feature,
|
||||
fastbuild_feature,
|
||||
dbg_feature,
|
||||
random_seed_feature,
|
||||
supports_pic_feature,
|
||||
supports_dynamic_linker_feature,
|
||||
unfiltered_compile_flags_feature,
|
||||
default_link_flags_feature,
|
||||
default_compile_flags_feature,
|
||||
objcopy_embed_flags_feature,
|
||||
user_compile_flags_feature,
|
||||
sysroot_feature,
|
||||
coverage_feature,
|
||||
]
|
||||
|
||||
tool_paths = [
|
||||
tool_path(name = "ld", path = "/usr/bin/ld.lld"),
|
||||
tool_path(name = "cpp", path = "/usr/bin/clang-cpp"),
|
||||
tool_path(name = "dwp", path = "/usr/bin/llvm-dwp"),
|
||||
tool_path(name = "gcov", path = "/usr/bin/llvm-profdata"),
|
||||
tool_path(name = "nm", path = "/usr/bin/llvm-nm"),
|
||||
tool_path(name = "objcopy", path = "/usr/bin/llvm-objcopy"),
|
||||
tool_path(name = "objdump", path = "/usr/bin/llvm-objdump"),
|
||||
tool_path(name = "strip", path = "/usr/bin/strip"),
|
||||
tool_path(name = "gcc", path = "/usr/bin/clang"),
|
||||
tool_path(name = "ar", path = "/usr/bin/llvm-ar"),
|
||||
]
|
||||
|
||||
return cc_common.create_cc_toolchain_config_info(
|
||||
ctx = ctx,
|
||||
features = features,
|
||||
abi_version = abi_version,
|
||||
abi_libc_version = abi_libc_version,
|
||||
builtin_sysroot = sysroot,
|
||||
compiler = compiler,
|
||||
cxx_builtin_include_directories = cross_system_include_dirs,
|
||||
host_system_name = "x86_64-unknown-linux-gnu",
|
||||
target_cpu = target_cpu,
|
||||
target_libc = target_libc,
|
||||
target_system_name = ctx.attr.target,
|
||||
tool_paths = tool_paths,
|
||||
toolchain_identifier = toolchain_identifier,
|
||||
)
|
||||
|
||||
arm64_cc_toolchain_config = rule(
|
||||
implementation = _impl,
|
||||
attrs = {
|
||||
"target": attr.string(mandatory = True),
|
||||
"stdlib": attr.string(),
|
||||
},
|
||||
provides = [CcToolchainConfigInfo],
|
||||
)
|
@ -0,0 +1,250 @@
|
||||
load(
|
||||
"@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
|
||||
"action_config",
|
||||
"feature",
|
||||
"feature_set",
|
||||
"flag_group",
|
||||
"flag_set",
|
||||
"make_variable",
|
||||
"tool",
|
||||
"tool_path",
|
||||
"with_feature_set",
|
||||
)
|
||||
load(
|
||||
"@bazel_tools//tools/cpp:cc_toolchain_config.bzl",
|
||||
ALL_COMPILE_ACTIONS = "all_compile_actions",
|
||||
ALL_CPP_COMPILE_ACTIONS = "all_cpp_compile_actions",
|
||||
ALL_LINK_ACTIONS = "all_link_actions",
|
||||
)
|
||||
|
||||
def _impl(ctx):
|
||||
toolchain_identifier = "osxcross"
|
||||
compiler = "clang"
|
||||
abi_version = "darwin_x86_64"
|
||||
abi_libc_version = "darwin_x86_64"
|
||||
install = "/usr/x86_64-apple-darwin/"
|
||||
clang_version = "10.0.0"
|
||||
target_libc = "macosx"
|
||||
target_cpu = "x86_64"
|
||||
osxcross = install + "osxcross/"
|
||||
osxcross_binprefix = osxcross + "bin/x86_64-apple-darwin14-"
|
||||
sdkroot = osxcross + "SDK/MacOSX10.10.sdk/"
|
||||
cross_system_include_dirs = [
|
||||
"/usr/lib/clang/10.0.0/include",
|
||||
osxcross + "include",
|
||||
sdkroot + "usr/include",
|
||||
]
|
||||
cross_system_lib_dirs = [
|
||||
"/usr/x86_64-apple-darwin/lib",
|
||||
sdkroot + "usr/lib",
|
||||
osxcross + "/lib",
|
||||
]
|
||||
|
||||
opt_feature = feature(name = "opt")
|
||||
dbg_feature = feature(name = "dbg")
|
||||
fastbuild_feature = feature(name = "fastbuild")
|
||||
random_seed_feature = feature(name = "random_seed", enabled = True)
|
||||
supports_pic_feature = feature(name = "supports_pic", enabled = True)
|
||||
supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
|
||||
|
||||
unfiltered_compile_flags_feature = feature(
|
||||
name = "unfiltered_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-stdlib=libc++",
|
||||
"-no-canonical-prefixes",
|
||||
"-Wno-builtin-macro-redefined",
|
||||
"-D__DATE__=\"redacted\"",
|
||||
"-D__TIMESTAMP__=\"redacted\"",
|
||||
"-D__TIME__=\"redacted\"",
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
# explicit arch specific system includes
|
||||
system_include_flags = []
|
||||
for d in cross_system_include_dirs:
|
||||
system_include_flags += ["-idirafter", d]
|
||||
|
||||
default_compile_flags_feature = feature(
|
||||
name = "default_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-mlinker-version=400",
|
||||
"-B " + osxcross + "bin",
|
||||
"-nostdinc",
|
||||
"-U_FORTIFY_SOURCE",
|
||||
"-fstack-protector",
|
||||
"-fno-omit-frame-pointer",
|
||||
"-fcolor-diagnostics",
|
||||
"-Wall",
|
||||
"-Wthread-safety",
|
||||
"-Wself-assign",
|
||||
] + system_include_flags,
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-g", "-fstandalone-debug"])],
|
||||
with_features = [with_feature_set(features = ["dbg"])],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-g0",
|
||||
"-O2",
|
||||
"-D_FORTIFY_SOURCE=1",
|
||||
"-DNDEBUG",
|
||||
"-ffunction-sections",
|
||||
"-fdata-sections",
|
||||
],
|
||||
),
|
||||
],
|
||||
with_features = [with_feature_set(features = ["opt"])],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_CPP_COMPILE_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-std=c++17", "-nostdinc++"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
default_link_flags_feature = feature(
|
||||
name = "default_link_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = [
|
||||
"-v",
|
||||
"-lm",
|
||||
"-no-canonical-prefixes",
|
||||
"-fuse-ld=lld",
|
||||
"-lc++",
|
||||
"-lc++abi",
|
||||
"-F" + sdkroot + "System/Library/Frameworks/",
|
||||
"-L" + sdkroot + "usr/lib",
|
||||
"-undefined",
|
||||
"dynamic_lookup",
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
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"])],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
user_compile_flags_feature = feature(
|
||||
name = "user_compile_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
expand_if_available = "user_compile_flags",
|
||||
flags = ["%{user_compile_flags}"],
|
||||
iterate_over = "user_compile_flags",
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
coverage_feature = feature(
|
||||
name = "coverage",
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_COMPILE_ACTIONS,
|
||||
flag_groups = [
|
||||
flag_group(
|
||||
flags = ["-fprofile-instr-generate", "-fcoverage-mapping"],
|
||||
),
|
||||
],
|
||||
),
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = [flag_group(flags = ["-fprofile-instr-generate"])],
|
||||
),
|
||||
],
|
||||
provides = ["profile"],
|
||||
)
|
||||
|
||||
features = [
|
||||
opt_feature,
|
||||
fastbuild_feature,
|
||||
dbg_feature,
|
||||
random_seed_feature,
|
||||
supports_pic_feature,
|
||||
supports_dynamic_linker_feature,
|
||||
unfiltered_compile_flags_feature,
|
||||
default_link_flags_feature,
|
||||
default_compile_flags_feature,
|
||||
objcopy_embed_flags_feature,
|
||||
user_compile_flags_feature,
|
||||
coverage_feature,
|
||||
]
|
||||
|
||||
tool_paths = [
|
||||
tool_path(name = "ld", path = osxcross_binprefix + "ld"),
|
||||
tool_path(name = "cpp", path = osxcross + "bin/o64-clang++"),
|
||||
tool_path(name = "dwp", path = "/usr/bin/dwp"),
|
||||
tool_path(name = "gcov", path = "/usr/bin/gcov"),
|
||||
tool_path(name = "nm", path = osxcross_binprefix + "nm"),
|
||||
tool_path(name = "objdump", path = osxcross_binprefix + "ObjectDump"),
|
||||
tool_path(name = "strip", path = osxcross_binprefix + "strip"),
|
||||
tool_path(name = "gcc", path = osxcross + "bin/o64-clang"),
|
||||
tool_path(name = "ar", path = osxcross_binprefix + "libtool"),
|
||||
]
|
||||
|
||||
return cc_common.create_cc_toolchain_config_info(
|
||||
ctx = ctx,
|
||||
features = features,
|
||||
abi_version = abi_version,
|
||||
abi_libc_version = abi_libc_version,
|
||||
compiler = compiler,
|
||||
cxx_builtin_include_directories = cross_system_include_dirs,
|
||||
host_system_name = "x86_64-unknown-linux-gnu",
|
||||
target_cpu = target_cpu,
|
||||
target_libc = target_libc,
|
||||
target_system_name = ctx.attr.target,
|
||||
tool_paths = tool_paths,
|
||||
toolchain_identifier = toolchain_identifier,
|
||||
)
|
||||
|
||||
osx_cc_toolchain_config = rule(
|
||||
implementation = _impl,
|
||||
attrs = {
|
||||
"target": attr.string(mandatory = True),
|
||||
"stdlib": attr.string(),
|
||||
},
|
||||
provides = [CcToolchainConfigInfo],
|
||||
)
|
@ -0,0 +1,209 @@
|
||||
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",
|
||||
"with_feature_set",
|
||||
)
|
||||
load(
|
||||
"@bazel_tools//tools/cpp:cc_toolchain_config.bzl",
|
||||
ALL_COMPILE_ACTIONS = "all_compile_actions",
|
||||
ALL_CPP_COMPILE_ACTIONS = "all_cpp_compile_actions",
|
||||
ALL_LINK_ACTIONS = "all_link_actions",
|
||||
)
|
||||
load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
|
||||
|
||||
def _impl(ctx):
|
||||
toolchain_identifier = "msys_x64_mingw"
|
||||
host_system_name = "local"
|
||||
target_system_name = "local"
|
||||
target_cpu = "x64_windows"
|
||||
target_libc = "mingw"
|
||||
compiler = "mingw-gcc"
|
||||
abi_version = "local"
|
||||
abi_libc_version = "local"
|
||||
cc_target_os = None
|
||||
builtin_sysroot = None
|
||||
action_configs = []
|
||||
|
||||
install = "/usr/x86_64-w64-mingw32/"
|
||||
bin_prefix = "/usr/bin/x86_64-w64-mingw32-"
|
||||
|
||||
targets_windows_feature = feature(
|
||||
name = "targets_windows",
|
||||
implies = ["copy_dynamic_libraries_to_binary"],
|
||||
enabled = True,
|
||||
)
|
||||
|
||||
copy_dynamic_libraries_to_binary_feature = feature(name = "copy_dynamic_libraries_to_binary")
|
||||
|
||||
gcc_env_feature = feature(
|
||||
name = "gcc_env",
|
||||
enabled = True,
|
||||
env_sets = [
|
||||
env_set(
|
||||
actions = [
|
||||
ACTION_NAMES.c_compile,
|
||||
ACTION_NAMES.cpp_compile,
|
||||
ACTION_NAMES.cpp_module_compile,
|
||||
ACTION_NAMES.cpp_module_codegen,
|
||||
ACTION_NAMES.cpp_header_parsing,
|
||||
ACTION_NAMES.assemble,
|
||||
ACTION_NAMES.preprocess_assemble,
|
||||
ACTION_NAMES.cpp_link_executable,
|
||||
ACTION_NAMES.cpp_link_dynamic_library,
|
||||
ACTION_NAMES.cpp_link_nodeps_dynamic_library,
|
||||
ACTION_NAMES.cpp_link_static_library,
|
||||
],
|
||||
env_entries = [
|
||||
env_entry(key = "PATH", value = "NOT_USED"),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
msys_mingw_flags = [
|
||||
"-B " + install + "bin",
|
||||
"-nostdinc",
|
||||
"-U_FORTIFY_SOURCE",
|
||||
"-fstack-protector",
|
||||
"-fno-omit-frame-pointer",
|
||||
"-fcolor-diagnostics",
|
||||
"-Wall",
|
||||
"-Wthread-safety",
|
||||
"-Wself-assign",
|
||||
"-x c++",
|
||||
"-lstdc++",
|
||||
"-lpthread",
|
||||
]
|
||||
|
||||
msys_mingw_link_flags = [
|
||||
"-l:libstdc++.a",
|
||||
"-L" + install + "lib",
|
||||
"-L/usr/lib/gcc/x86_64-w64-mingw32/8.3-w32",
|
||||
"-v",
|
||||
"-lm",
|
||||
"-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_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 = msys_mingw_flags)] if msys_mingw_flags else []),
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
compiler_param_file_feature = feature(
|
||||
name = "compiler_param_file",
|
||||
)
|
||||
|
||||
default_link_flags_feature = feature(
|
||||
name = "default_link_flags",
|
||||
enabled = True,
|
||||
flag_sets = [
|
||||
flag_set(
|
||||
actions = ALL_LINK_ACTIONS,
|
||||
flag_groups = ([flag_group(flags = msys_mingw_link_flags)] if msys_mingw_link_flags else []),
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
|
||||
|
||||
features = [
|
||||
targets_windows_feature,
|
||||
copy_dynamic_libraries_to_binary_feature,
|
||||
gcc_env_feature,
|
||||
default_compile_flags_feature,
|
||||
compiler_param_file_feature,
|
||||
default_link_flags_feature,
|
||||
supports_dynamic_linker_feature,
|
||||
]
|
||||
|
||||
cxx_builtin_include_directories = [
|
||||
install + "include",
|
||||
]
|
||||
|
||||
artifact_name_patterns = [
|
||||
artifact_name_pattern(
|
||||
category_name = "executable",
|
||||
prefix = "",
|
||||
extension = ".exe",
|
||||
),
|
||||
]
|
||||
|
||||
make_variables = []
|
||||
tool_paths = [
|
||||
tool_path(name = "ld", path = bin_prefix + "ld"),
|
||||
tool_path(name = "cpp", path = bin_prefix + "cpp"),
|
||||
tool_path(name = "gcov", path = "/usr/bin/gcov"),
|
||||
tool_path(name = "nm", path = bin_prefix + "nm"),
|
||||
tool_path(name = "objcopy", path = bin_prefix + "objcopy"),
|
||||
tool_path(name = "objdump", path = bin_prefix + "objdump"),
|
||||
tool_path(name = "strip", path = bin_prefix + "strip"),
|
||||
tool_path(name = "gcc", path = bin_prefix + "gcc"),
|
||||
tool_path(name = "ar", path = bin_prefix + "ar"),
|
||||
]
|
||||
|
||||
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,
|
||||
)
|
||||
|
||||
windows_cc_toolchain_config = rule(
|
||||
implementation = _impl,
|
||||
attrs = {
|
||||
"target": attr.string(mandatory = True),
|
||||
"stdlib": attr.string(),
|
||||
},
|
||||
provides = [CcToolchainConfigInfo],
|
||||
)
|
17
tools/cross-toolchain/configs/versions.bzl
Normal file
17
tools/cross-toolchain/configs/versions.bzl
Normal file
@ -0,0 +1,17 @@
|
||||
# Generated file, do not modify by hand
|
||||
# Generated by 'rbe_ubuntu_gcc_gen' rbe_autoconfig rule
|
||||
"""Definitions to be used in rbe_repo attr of an rbe_autoconf rule """
|
||||
toolchain_config_spec0 = struct(config_repos = ["prysm_toolchains"], create_cc_configs = True, create_java_configs = True, env = {"BAZEL_COMPILER": "clang", "BAZEL_LINKLIBS": "-l%:libstdc++.a", "BAZEL_LINKOPTS": "-lm:-static-libgcc", "BAZEL_USE_LLVM_NATIVE_COVERAGE": "1", "GCOV": "llvm-profdata", "CC": "clang", "CXX": "clang++"}, java_home = "/usr/lib/jvm/java-8-openjdk-amd64", name = "clang")
|
||||
toolchain_config_spec1 = struct(config_repos = ["prysm_toolchains"], create_cc_configs = True, create_java_configs = True, env = {"BAZEL_COMPILER": "gcc", "BAZEL_LINKLIBS": "-l%:libstdc++.a", "BAZEL_LINKOPTS": "-lm:-static-libgcc", "CC": "gcc", "CXX": "g++"}, java_home = "/usr/lib/jvm/java-8-openjdk-amd64", name = "gcc")
|
||||
_TOOLCHAIN_CONFIG_SPECS = [toolchain_config_spec0, toolchain_config_spec1]
|
||||
_BAZEL_TO_CONFIG_SPEC_NAMES = {"2.1.1": ["clang", "gcc"]}
|
||||
LATEST = "sha256:dd72753a00743d0010ebc9fbcc73061623adc863532b49bb994c6e5c70739e97"
|
||||
CONTAINER_TO_CONFIG_SPEC_NAMES = {"sha256:dd72753a00743d0010ebc9fbcc73061623adc863532b49bb994c6e5c70739e97": ["clang", "gcc"]}
|
||||
_DEFAULT_TOOLCHAIN_CONFIG_SPEC = toolchain_config_spec0
|
||||
TOOLCHAIN_CONFIG_AUTOGEN_SPEC = struct(
|
||||
bazel_to_config_spec_names_map = _BAZEL_TO_CONFIG_SPEC_NAMES,
|
||||
container_to_config_spec_names_map = CONTAINER_TO_CONFIG_SPEC_NAMES,
|
||||
default_toolchain_config_spec = _DEFAULT_TOOLCHAIN_CONFIG_SPEC,
|
||||
latest_container = LATEST,
|
||||
toolchain_config_specs = _TOOLCHAIN_CONFIG_SPECS,
|
||||
)
|
18
tools/cross-toolchain/empty.bzl
Normal file
18
tools/cross-toolchain/empty.bzl
Normal file
@ -0,0 +1,18 @@
|
||||
_BAZEL_TO_CONFIG_SPEC_NAMES = {}
|
||||
|
||||
# sha256 digest of the latest version of the toolchain container.
|
||||
LATEST = ""
|
||||
|
||||
_CONTAINER_TO_CONFIG_SPEC_NAMES = {}
|
||||
|
||||
_DEFAULT_TOOLCHAIN_CONFIG_SPEC = ""
|
||||
|
||||
_TOOLCHAIN_CONFIG_SPECS = []
|
||||
|
||||
TOOLCHAIN_CONFIG_AUTOGEN_SPEC = struct(
|
||||
bazel_to_config_spec_names_map = _BAZEL_TO_CONFIG_SPEC_NAMES,
|
||||
container_to_config_spec_names_map = _CONTAINER_TO_CONFIG_SPEC_NAMES,
|
||||
default_toolchain_config_spec = _DEFAULT_TOOLCHAIN_CONFIG_SPEC,
|
||||
latest_container = LATEST,
|
||||
toolchain_config_specs = _TOOLCHAIN_CONFIG_SPECS,
|
||||
)
|
23
tools/cross-toolchain/install_clang_cross10.sh
Executable file
23
tools/cross-toolchain/install_clang_cross10.sh
Executable file
@ -0,0 +1,23 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
curl -L https://github.com/llvm/llvm-project/releases/download/llvmorg-${INSTALL_LLVM_VERSION}/clang+llvm-${INSTALL_LLVM_VERSION}-x86_64-linux-gnu-ubuntu-18.04.tar.xz \
|
||||
-o clang+llvm-${INSTALL_LLVM_VERSION}-x86_64-linux-gnu-ubuntu-18.04.tar.xz
|
||||
tar xf clang+llvm-${INSTALL_LLVM_VERSION}-x86_64-linux-gnu-ubuntu-18.04.tar.xz --strip-components=1 -C /usr
|
||||
rm -f clang+llvm-${INSTALL_LLVM_VERSION}-x86_64-linux-gnu-ubuntu-18.04.tar.xz
|
||||
# arm64
|
||||
curl -L https://github.com/llvm/llvm-project/releases/download/llvmorg-${INSTALL_LLVM_VERSION}/clang+llvm-${INSTALL_LLVM_VERSION}-aarch64-linux-gnu.tar.xz \
|
||||
-o clang+llvm-${INSTALL_LLVM_VERSION}-aarch64-linux-gnu.tar.xz
|
||||
tar xf clang+llvm-${INSTALL_LLVM_VERSION}-aarch64-linux-gnu.tar.xz
|
||||
rm -f clang+llvm-${INSTALL_LLVM_VERSION}-aarch64-linux-gnu.tar.xz
|
||||
mkdir -p /usr/aarch64-linux-gnu/lib/clang/10.0.0
|
||||
mkdir -p /usr/aarch64-linux-gnu/include/c++
|
||||
mv /clang+llvm-${INSTALL_LLVM_VERSION}-aarch64-linux-gnu/include/c++/v1 /usr/aarch64-linux-gnu/include/c++/
|
||||
mv /clang+llvm-${INSTALL_LLVM_VERSION}-aarch64-linux-gnu/lib/clang/10.0.0/include /usr/aarch64-linux-gnu/lib/clang/10.0.0
|
||||
mv /clang+llvm-${INSTALL_LLVM_VERSION}-aarch64-linux-gnu/lib/libc++.a /usr/aarch64-linux-gnu/lib/
|
||||
mv /clang+llvm-${INSTALL_LLVM_VERSION}-aarch64-linux-gnu/lib/libc++abi.a /usr/aarch64-linux-gnu/lib/
|
||||
mv /clang+llvm-${INSTALL_LLVM_VERSION}-aarch64-linux-gnu/lib/libunwind.a /usr/aarch64-linux-gnu/lib/
|
||||
mv /clang+llvm-${INSTALL_LLVM_VERSION}-aarch64-linux-gnu/lib/clang/10.0.0/lib/linux/libclang_rt.builtins-aarch64.a /usr/lib/clang/10.0.0/lib/linux/
|
||||
mv /clang+llvm-${INSTALL_LLVM_VERSION}-aarch64-linux-gnu/lib/clang/10.0.0/lib/linux/clang_rt.crtbegin-aarch64.o /usr/lib/clang/10.0.0/lib/linux/
|
||||
mv /clang+llvm-${INSTALL_LLVM_VERSION}-aarch64-linux-gnu/lib/clang/10.0.0/lib/linux/clang_rt.crtend-aarch64.o /usr/lib/clang/10.0.0/lib/linux/
|
||||
rm -rf /clang+llvm-${INSTALL_LLVM_VERSION}-aarch64-linux-gnu
|
28
tools/cross-toolchain/install_osxcross.sh
Executable file
28
tools/cross-toolchain/install_osxcross.sh
Executable file
@ -0,0 +1,28 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
OSXCROSS_REPO=tpoechtrager/osxcross
|
||||
OSXCROSS_SHA1=bee9df6
|
||||
DARWIN_SDK_URL=https://www.dropbox.com/s/yfbesd249w10lpc/MacOSX10.10.sdk.tar.xz
|
||||
|
||||
# darwin
|
||||
mkdir -p /usr/x86_64-apple-darwin/osxcross
|
||||
mkdir -p /tmp/osxcross && cd "/tmp/osxcross"
|
||||
curl -sLo osxcross.tar.gz "https://codeload.github.com/${OSXCROSS_REPO}/tar.gz/${OSXCROSS_SHA1}"
|
||||
tar --strip=1 -xzf osxcross.tar.gz
|
||||
rm -f osxcross.tar.gz
|
||||
curl -sLo tarballs/MacOSX10.10.sdk.tar.xz "${DARWIN_SDK_URL}"
|
||||
yes "" | SDK_VERSION=10.10 OSX_VERSION_MIN=10.10 ./build.sh
|
||||
mv target/* /usr/x86_64-apple-darwin/osxcross/
|
||||
mv tools /usr/x86_64-apple-darwin/osxcross/
|
||||
cd /usr/x86_64-apple-darwin/osxcross/include
|
||||
ln -s ../SDK/MacOSX10.10.sdk/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/ CarbonCore
|
||||
ln -s ../SDK/MacOSX10.10.sdk/System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/ CoreFoundation
|
||||
ln -s ../SDK/MacOSX10.10.sdk/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/ Frameworks
|
||||
ln -s ../SDK/MacOSX10.10.sdk/System/Library/Frameworks/Security.framework/Versions/A/Headers/ Security
|
||||
rm -rf /tmp/osxcross
|
||||
rm -rf "/usr/x86_64-apple-darwin/osxcross/SDK/MacOSX10.10.sdk/usr/share/man"
|
||||
# symlink ld64.lld
|
||||
ln -s /usr/x86_64-apple-darwin/osxcross/bin/x86_64-apple-darwin14-ld /usr/x86_64-apple-darwin/osxcross/bin/ld64.lld
|
||||
ln -s /usr/x86_64-apple-darwin/osxcross/lib/libxar.so.1 /usr/lib
|
40
tools/cross-toolchain/prysm_toolchains.bzl
Normal file
40
tools/cross-toolchain/prysm_toolchains.bzl
Normal file
@ -0,0 +1,40 @@
|
||||
def _pryms_toolchains_impl(ctx):
|
||||
ctx.template(
|
||||
"BUILD.bazel",
|
||||
ctx.attr._build_tpl,
|
||||
)
|
||||
ctx.template(
|
||||
"cc_toolchain_config_linux_arm64.bzl",
|
||||
ctx.attr._cc_toolchain_config_linux_arm_tpl,
|
||||
)
|
||||
ctx.template(
|
||||
"cc_toolchain_config_osx.bzl",
|
||||
ctx.attr._cc_toolchain_config_osx_tpl,
|
||||
)
|
||||
ctx.template(
|
||||
"cc_toolchain_config_windows.bzl",
|
||||
ctx.attr._cc_toolchain_config_windows_tpl,
|
||||
)
|
||||
|
||||
prysm_toolchains = repository_rule(
|
||||
implementation = _pryms_toolchains_impl,
|
||||
attrs = {
|
||||
"_build_tpl": attr.label(
|
||||
default = "@prysm//tools/cross-toolchain:cc_toolchain.BUILD.bazel.tpl",
|
||||
),
|
||||
"_cc_toolchain_config_linux_arm_tpl": attr.label(
|
||||
default = "@prysm//tools/cross-toolchain:cc_toolchain_config_linux_arm64.bzl.tpl",
|
||||
),
|
||||
"_cc_toolchain_config_osx_tpl": attr.label(
|
||||
default = "@prysm//tools/cross-toolchain:cc_toolchain_config_osx.bzl.tpl",
|
||||
),
|
||||
"_cc_toolchain_config_windows_tpl": attr.label(
|
||||
default = "@prysm//tools/cross-toolchain:cc_toolchain_config_windows.bzl.tpl",
|
||||
),
|
||||
},
|
||||
doc = "Configures Prysm custom toolchains for cross compilation and remote build execution.",
|
||||
)
|
||||
|
||||
def configure_prysm_toolchains():
|
||||
prysm_toolchains(name = "prysm_toolchains")
|
||||
native.register_toolchains("@prysm_toolchains//:cc-toolchain-multiarch")
|
84
tools/cross-toolchain/rbe_toolchains_config.bzl
Normal file
84
tools/cross-toolchain/rbe_toolchains_config.bzl
Normal file
@ -0,0 +1,84 @@
|
||||
load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
|
||||
load("@prysm//tools/cross-toolchain:configs/versions.bzl", _generated_toolchain_config_suite_autogen_spec = "TOOLCHAIN_CONFIG_AUTOGEN_SPEC")
|
||||
|
||||
_PRYSM_BUILD_IMAGE_REGISTRY = "gcr.io"
|
||||
_PRYSM_BUILD_IMAGE_REPOSITORY = "prysmaticlabs/rbe-worker"
|
||||
_PRYSM_BUILD_IMAGE_DIGEST = "sha256:dd72753a00743d0010ebc9fbcc73061623adc863532b49bb994c6e5c70739e97"
|
||||
_PRYSM_BUILD_IMAGE_JAVA_HOME = "/usr/lib/jvm/java-8-openjdk-amd64"
|
||||
_CONFIGS_OUTPUT_BASE = "tools/cross-toolchain/configs"
|
||||
|
||||
_CLANG_ENV = {
|
||||
"BAZEL_COMPILER": "clang",
|
||||
"BAZEL_LINKLIBS": "-l%:libstdc++.a",
|
||||
"BAZEL_LINKOPTS": "-lm:-static-libgcc",
|
||||
"BAZEL_USE_LLVM_NATIVE_COVERAGE": "1",
|
||||
"GCOV": "llvm-profdata",
|
||||
"CC": "clang",
|
||||
"CXX": "clang++",
|
||||
}
|
||||
|
||||
_GCC_ENV = {
|
||||
"BAZEL_COMPILER": "gcc",
|
||||
"BAZEL_LINKLIBS": "-l%:libstdc++.a",
|
||||
"BAZEL_LINKOPTS": "-lm:-static-libgcc",
|
||||
"CC": "gcc",
|
||||
"CXX": "g++",
|
||||
}
|
||||
|
||||
_TOOLCHAIN_CONFIG_SUITE_SPEC = {
|
||||
"container_registry": _PRYSM_BUILD_IMAGE_REGISTRY,
|
||||
"container_repo": _PRYSM_BUILD_IMAGE_REPOSITORY,
|
||||
"output_base": _CONFIGS_OUTPUT_BASE,
|
||||
"repo_name": "prysm",
|
||||
"toolchain_config_suite_autogen_spec": _generated_toolchain_config_suite_autogen_spec,
|
||||
}
|
||||
|
||||
def _rbe_toolchains_generator():
|
||||
rbe_autoconfig(
|
||||
name = "rbe_ubuntu_clang_gen",
|
||||
digest = _PRYSM_BUILD_IMAGE_DIGEST,
|
||||
export_configs = True,
|
||||
java_home = _PRYSM_BUILD_IMAGE_JAVA_HOME,
|
||||
registry = _PRYSM_BUILD_IMAGE_REGISTRY,
|
||||
repository = _PRYSM_BUILD_IMAGE_REPOSITORY,
|
||||
env = _CLANG_ENV,
|
||||
toolchain_config_spec_name = "clang",
|
||||
toolchain_config_suite_spec = _TOOLCHAIN_CONFIG_SUITE_SPEC,
|
||||
use_checked_in_confs = "False",
|
||||
config_repos = [
|
||||
"prysm_toolchains",
|
||||
],
|
||||
)
|
||||
|
||||
rbe_autoconfig(
|
||||
name = "rbe_ubuntu_gcc_gen",
|
||||
digest = _PRYSM_BUILD_IMAGE_DIGEST,
|
||||
export_configs = True,
|
||||
java_home = _PRYSM_BUILD_IMAGE_JAVA_HOME,
|
||||
registry = _PRYSM_BUILD_IMAGE_REGISTRY,
|
||||
repository = _PRYSM_BUILD_IMAGE_REPOSITORY,
|
||||
env = _GCC_ENV,
|
||||
toolchain_config_spec_name = "gcc",
|
||||
toolchain_config_suite_spec = _TOOLCHAIN_CONFIG_SUITE_SPEC,
|
||||
use_checked_in_confs = "False",
|
||||
config_repos = [
|
||||
"prysm_toolchains",
|
||||
],
|
||||
)
|
||||
|
||||
def _generated_rbe_toolchains():
|
||||
rbe_autoconfig(
|
||||
name = "rbe_ubuntu_clang",
|
||||
digest = _PRYSM_BUILD_IMAGE_DIGEST,
|
||||
export_configs = True,
|
||||
java_home = _PRYSM_BUILD_IMAGE_JAVA_HOME,
|
||||
registry = _PRYSM_BUILD_IMAGE_REGISTRY,
|
||||
repository = _PRYSM_BUILD_IMAGE_REPOSITORY,
|
||||
toolchain_config_spec_name = "clang",
|
||||
toolchain_config_suite_spec = _TOOLCHAIN_CONFIG_SUITE_SPEC,
|
||||
use_checked_in_confs = "Force",
|
||||
)
|
||||
|
||||
def rbe_toolchains_config():
|
||||
_rbe_toolchains_generator()
|
||||
_generated_rbe_toolchains()
|
12
tools/cross-toolchain/regenerate.sh
Executable file
12
tools/cross-toolchain/regenerate.sh
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
export RBE_AUTOCONF_ROOT=$(bazel info workspace)
|
||||
|
||||
rm -rf "${RBE_AUTOCONF_ROOT}/tools/cross-toolchain/configs/*"
|
||||
cp -vf "${RBE_AUTOCONF_ROOT}/tools/cross-toolchain/empty.bzl" "${RBE_AUTOCONF_ROOT}/tools/cross-toolchain/configs/versions.bzl"
|
||||
|
||||
# Bazel query is the right command so bazel won't fail itself.
|
||||
bazel query "@rbe_ubuntu_clang_gen//..."
|
||||
bazel query "@rbe_ubuntu_gcc_gen//..."
|
Loading…
Reference in New Issue
Block a user