From 989f6d80887b887b8f2d1bde7b91d35b805d8534 Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Fri, 31 Mar 2023 16:18:16 -0600 Subject: [PATCH 01/21] use platform specific naming --- cc/repositories.bzl | 6 +++--- cc/toolchains/BUILD.bazel | 24 ++++++++++++------------ cc/toolchains/wrappers/wrapper | 2 +- clang_format/BUILD.bazel | 2 +- clang_tidy/BUILD.bazel | 2 +- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/cc/repositories.bzl b/cc/repositories.bzl index e6cb75ee..cc2310bf 100644 --- a/cc/repositories.bzl +++ b/cc/repositories.bzl @@ -11,14 +11,14 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") -LLVM_DISTRIBUTION_URL = "https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang%2Bllvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz" +X64_64_LINUX_LLVM = "https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang%2Bllvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz" def swift_cc_toolchain(): maybe( http_archive, - name = "llvm-distribution", + name = "x86_64-linux-llvm", build_file = Label("//cc/toolchains:llvm.BUILD.bzl"), - url = LLVM_DISTRIBUTION_URL, + url = X64_64_LINUX_LLVM, strip_prefix = "clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04", sha256 = "61582215dafafb7b576ea30cc136be92c877ba1f1c31ddbbd372d6d65622fef5", ) diff --git a/cc/toolchains/BUILD.bazel b/cc/toolchains/BUILD.bazel index e760c819..72ee0f5c 100644 --- a/cc/toolchains/BUILD.bazel +++ b/cc/toolchains/BUILD.bazel @@ -25,7 +25,7 @@ filegroup( name = "ar_files", srcs = [ ":wrappers", - "@llvm-distribution//:ar", + "@x86_64-linux-llvm//:ar", ], ) @@ -33,7 +33,7 @@ filegroup( name = "as_files", srcs = [ ":wrappers", - "@llvm-distribution//:as", + "@x86_64-linux-llvm//:as", ], ) @@ -41,8 +41,8 @@ filegroup( name = "compiler_files", srcs = [ ":wrappers", - "@llvm-distribution//:clang", - "@llvm-distribution//:include", + "@x86_64-linux-llvm//:clang", + "@x86_64-linux-llvm//:include", ], ) @@ -50,7 +50,7 @@ filegroup( name = "dwp_files", srcs = [ ":wrappers", - "@llvm-distribution//:dwp", + "@x86_64-linux-llvm//:dwp", ], ) @@ -58,10 +58,10 @@ filegroup( name = "linker_files", srcs = [ ":wrappers", - "@llvm-distribution//:ar", - "@llvm-distribution//:clang", - "@llvm-distribution//:ld", - "@llvm-distribution//:lib", + "@x86_64-linux-llvm//:ar", + "@x86_64-linux-llvm//:clang", + "@x86_64-linux-llvm//:ld", + "@x86_64-linux-llvm//:lib", ], ) @@ -69,7 +69,7 @@ filegroup( name = "objcopy_files", srcs = [ ":wrappers", - "@llvm-distribution//:objcopy", + "@x86_64-linux-llvm//:objcopy", ], ) @@ -77,7 +77,7 @@ filegroup( name = "strip_files", srcs = [ ":wrappers", - "@llvm-distribution//:strip", + "@x86_64-linux-llvm//:strip", ], ) @@ -86,7 +86,7 @@ filegroup( srcs = [ "linker_files", ":compiler_files", - "@llvm-distribution//:bin", + "@x86_64-linux-llvm//:bin", ], ) diff --git a/cc/toolchains/wrappers/wrapper b/cc/toolchains/wrappers/wrapper index b73fdcd5..da8464cd 100755 --- a/cc/toolchains/wrappers/wrapper +++ b/cc/toolchains/wrappers/wrapper @@ -34,7 +34,7 @@ if [[ -n "$SWIFTNAV_VERBOSE_TOOLCHAIN" ]]; then fi tool_name=$(basename "${BASH_SOURCE[0]}") -toolchain_bindir=external/llvm-distribution/bin +toolchain_bindir=external/x86_64-linux-llvm/bin if [[ -f "${toolchain_bindir}"/"${tool_name}" ]]; then # We're running under _execroot_, call the real tool. diff --git a/clang_format/BUILD.bazel b/clang_format/BUILD.bazel index e92d216b..08643a56 100644 --- a/clang_format/BUILD.bazel +++ b/clang_format/BUILD.bazel @@ -19,7 +19,7 @@ choose_clang_format( filegroup( name = "_clang_format_bin", srcs = select({ - "@platforms//os:linux": ["@llvm-distribution//:clang-format"], + "@platforms//os:linux": ["@x86_64-linux-llvm//:clang-format"], "//conditions:default": [":clang_format_bin"], }), visibility = ["//visibility:public"], diff --git a/clang_tidy/BUILD.bazel b/clang_tidy/BUILD.bazel index f97431be..e7743a45 100644 --- a/clang_tidy/BUILD.bazel +++ b/clang_tidy/BUILD.bazel @@ -27,7 +27,7 @@ filegroup( name = "clang_tidy_executable_default", srcs = select( { - "@platforms//os:linux": ["@llvm-distribution//:clang-tidy"], + "@platforms//os:linux": ["@x86_64-linux-llvm//:clang-tidy"], "//conditions:default": [":clang_tidy_bin"], }, ), From 3df98cd90965f430100a458571164471439a96c3 Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Fri, 31 Mar 2023 16:36:06 -0600 Subject: [PATCH 02/21] restructure --- cc/repositories.bzl | 4 +- cc/toolchains/BUILD.bazel | 121 ------------------ cc/toolchains/llvm/BUILD.bazel | 121 ++++++++++++++++++ .../{ => llvm}/cc_toolchain_config.bzl | 0 cc/toolchains/{ => llvm}/llvm.BUILD.bzl | 0 cc/toolchains/{ => llvm}/wrappers/clang | 0 cc/toolchains/{ => llvm}/wrappers/clang-cpp | 0 cc/toolchains/{ => llvm}/wrappers/ld.lld | 0 cc/toolchains/{ => llvm}/wrappers/llvm-ar | 0 cc/toolchains/{ => llvm}/wrappers/llvm-cov | 0 cc/toolchains/{ => llvm}/wrappers/llvm-nm | 0 .../{ => llvm}/wrappers/llvm-objcopy | 0 .../{ => llvm}/wrappers/llvm-objdump | 0 .../{ => llvm}/wrappers/llvm-profdata | 0 cc/toolchains/{ => llvm}/wrappers/llvm-strip | 0 cc/toolchains/{ => llvm}/wrappers/wrapper | 4 +- 16 files changed, 125 insertions(+), 125 deletions(-) create mode 100644 cc/toolchains/llvm/BUILD.bazel rename cc/toolchains/{ => llvm}/cc_toolchain_config.bzl (100%) rename cc/toolchains/{ => llvm}/llvm.BUILD.bzl (100%) rename cc/toolchains/{ => llvm}/wrappers/clang (100%) rename cc/toolchains/{ => llvm}/wrappers/clang-cpp (100%) rename cc/toolchains/{ => llvm}/wrappers/ld.lld (100%) rename cc/toolchains/{ => llvm}/wrappers/llvm-ar (100%) rename cc/toolchains/{ => llvm}/wrappers/llvm-cov (100%) rename cc/toolchains/{ => llvm}/wrappers/llvm-nm (100%) rename cc/toolchains/{ => llvm}/wrappers/llvm-objcopy (100%) rename cc/toolchains/{ => llvm}/wrappers/llvm-objdump (100%) rename cc/toolchains/{ => llvm}/wrappers/llvm-profdata (100%) rename cc/toolchains/{ => llvm}/wrappers/llvm-strip (100%) rename cc/toolchains/{ => llvm}/wrappers/wrapper (94%) diff --git a/cc/repositories.bzl b/cc/repositories.bzl index cc2310bf..d0a1b554 100644 --- a/cc/repositories.bzl +++ b/cc/repositories.bzl @@ -17,11 +17,11 @@ def swift_cc_toolchain(): maybe( http_archive, name = "x86_64-linux-llvm", - build_file = Label("//cc/toolchains:llvm.BUILD.bzl"), + build_file = Label("//cc/toolchains/llvm:llvm.BUILD.bzl"), url = X64_64_LINUX_LLVM, strip_prefix = "clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04", sha256 = "61582215dafafb7b576ea30cc136be92c877ba1f1c31ddbbd372d6d65622fef5", ) def register_swift_cc_toolchains(): - native.register_toolchains("@rules_swiftnav//cc/toolchains:cc-toolchain-x86_64-linux") + native.register_toolchains("@rules_swiftnav//cc/toolchains/llvm:cc-toolchain-x86_64-linux") diff --git a/cc/toolchains/BUILD.bazel b/cc/toolchains/BUILD.bazel index 72ee0f5c..e69de29b 100644 --- a/cc/toolchains/BUILD.bazel +++ b/cc/toolchains/BUILD.bazel @@ -1,121 +0,0 @@ -# Copyright (C) 2022 Swift Navigation Inc. -# Contact: Swift Navigation -# -# This source is subject to the license found in the file 'LICENSE' which must -# be be distributed together with this source. All other rights reserved. -# -# THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, -# EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. - -package(default_visibility = ["//visibility:public"]) - -load(":cc_toolchain_config.bzl", "cc_toolchain_config") - -filegroup(name = "empty") - -filegroup( - name = "wrappers", - srcs = glob([ - "wrappers/**", - ]), -) - -filegroup( - name = "ar_files", - srcs = [ - ":wrappers", - "@x86_64-linux-llvm//:ar", - ], -) - -filegroup( - name = "as_files", - srcs = [ - ":wrappers", - "@x86_64-linux-llvm//:as", - ], -) - -filegroup( - name = "compiler_files", - srcs = [ - ":wrappers", - "@x86_64-linux-llvm//:clang", - "@x86_64-linux-llvm//:include", - ], -) - -filegroup( - name = "dwp_files", - srcs = [ - ":wrappers", - "@x86_64-linux-llvm//:dwp", - ], -) - -filegroup( - name = "linker_files", - srcs = [ - ":wrappers", - "@x86_64-linux-llvm//:ar", - "@x86_64-linux-llvm//:clang", - "@x86_64-linux-llvm//:ld", - "@x86_64-linux-llvm//:lib", - ], -) - -filegroup( - name = "objcopy_files", - srcs = [ - ":wrappers", - "@x86_64-linux-llvm//:objcopy", - ], -) - -filegroup( - name = "strip_files", - srcs = [ - ":wrappers", - "@x86_64-linux-llvm//:strip", - ], -) - -filegroup( - name = "all_files", - srcs = [ - "linker_files", - ":compiler_files", - "@x86_64-linux-llvm//:bin", - ], -) - -cc_toolchain_config(name = "local-x86_64-linux") - -cc_toolchain( - name = "cc-clang-x86_64-linux", - all_files = ":all_files", - ar_files = ":ar_files", - as_files = ":as_files", - compiler_files = ":compiler_files", - dwp_files = ":dwp_files", - linker_files = ":linker_files", - objcopy_files = ":objcopy_files", - strip_files = ":strip_files", - toolchain_config = ":local-x86_64-linux", -) - -toolchain( - name = "cc-toolchain-x86_64-linux", - exec_compatible_with = [ - "@platforms//cpu:x86_64", - "@platforms//os:linux", - ], - target_compatible_with = [ - "@platforms//cpu:x86_64", - "@platforms//os:linux", - ], - target_settings = None, - toolchain = ":cc-clang-x86_64-linux", - toolchain_type = "@bazel_tools//tools/cpp:toolchain_type", -) diff --git a/cc/toolchains/llvm/BUILD.bazel b/cc/toolchains/llvm/BUILD.bazel new file mode 100644 index 00000000..72ee0f5c --- /dev/null +++ b/cc/toolchains/llvm/BUILD.bazel @@ -0,0 +1,121 @@ +# Copyright (C) 2022 Swift Navigation Inc. +# Contact: Swift Navigation +# +# This source is subject to the license found in the file 'LICENSE' which must +# be be distributed together with this source. All other rights reserved. +# +# THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +# EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + +package(default_visibility = ["//visibility:public"]) + +load(":cc_toolchain_config.bzl", "cc_toolchain_config") + +filegroup(name = "empty") + +filegroup( + name = "wrappers", + srcs = glob([ + "wrappers/**", + ]), +) + +filegroup( + name = "ar_files", + srcs = [ + ":wrappers", + "@x86_64-linux-llvm//:ar", + ], +) + +filegroup( + name = "as_files", + srcs = [ + ":wrappers", + "@x86_64-linux-llvm//:as", + ], +) + +filegroup( + name = "compiler_files", + srcs = [ + ":wrappers", + "@x86_64-linux-llvm//:clang", + "@x86_64-linux-llvm//:include", + ], +) + +filegroup( + name = "dwp_files", + srcs = [ + ":wrappers", + "@x86_64-linux-llvm//:dwp", + ], +) + +filegroup( + name = "linker_files", + srcs = [ + ":wrappers", + "@x86_64-linux-llvm//:ar", + "@x86_64-linux-llvm//:clang", + "@x86_64-linux-llvm//:ld", + "@x86_64-linux-llvm//:lib", + ], +) + +filegroup( + name = "objcopy_files", + srcs = [ + ":wrappers", + "@x86_64-linux-llvm//:objcopy", + ], +) + +filegroup( + name = "strip_files", + srcs = [ + ":wrappers", + "@x86_64-linux-llvm//:strip", + ], +) + +filegroup( + name = "all_files", + srcs = [ + "linker_files", + ":compiler_files", + "@x86_64-linux-llvm//:bin", + ], +) + +cc_toolchain_config(name = "local-x86_64-linux") + +cc_toolchain( + name = "cc-clang-x86_64-linux", + all_files = ":all_files", + ar_files = ":ar_files", + as_files = ":as_files", + compiler_files = ":compiler_files", + dwp_files = ":dwp_files", + linker_files = ":linker_files", + objcopy_files = ":objcopy_files", + strip_files = ":strip_files", + toolchain_config = ":local-x86_64-linux", +) + +toolchain( + name = "cc-toolchain-x86_64-linux", + exec_compatible_with = [ + "@platforms//cpu:x86_64", + "@platforms//os:linux", + ], + target_compatible_with = [ + "@platforms//cpu:x86_64", + "@platforms//os:linux", + ], + target_settings = None, + toolchain = ":cc-clang-x86_64-linux", + toolchain_type = "@bazel_tools//tools/cpp:toolchain_type", +) diff --git a/cc/toolchains/cc_toolchain_config.bzl b/cc/toolchains/llvm/cc_toolchain_config.bzl similarity index 100% rename from cc/toolchains/cc_toolchain_config.bzl rename to cc/toolchains/llvm/cc_toolchain_config.bzl diff --git a/cc/toolchains/llvm.BUILD.bzl b/cc/toolchains/llvm/llvm.BUILD.bzl similarity index 100% rename from cc/toolchains/llvm.BUILD.bzl rename to cc/toolchains/llvm/llvm.BUILD.bzl diff --git a/cc/toolchains/wrappers/clang b/cc/toolchains/llvm/wrappers/clang similarity index 100% rename from cc/toolchains/wrappers/clang rename to cc/toolchains/llvm/wrappers/clang diff --git a/cc/toolchains/wrappers/clang-cpp b/cc/toolchains/llvm/wrappers/clang-cpp similarity index 100% rename from cc/toolchains/wrappers/clang-cpp rename to cc/toolchains/llvm/wrappers/clang-cpp diff --git a/cc/toolchains/wrappers/ld.lld b/cc/toolchains/llvm/wrappers/ld.lld similarity index 100% rename from cc/toolchains/wrappers/ld.lld rename to cc/toolchains/llvm/wrappers/ld.lld diff --git a/cc/toolchains/wrappers/llvm-ar b/cc/toolchains/llvm/wrappers/llvm-ar similarity index 100% rename from cc/toolchains/wrappers/llvm-ar rename to cc/toolchains/llvm/wrappers/llvm-ar diff --git a/cc/toolchains/wrappers/llvm-cov b/cc/toolchains/llvm/wrappers/llvm-cov similarity index 100% rename from cc/toolchains/wrappers/llvm-cov rename to cc/toolchains/llvm/wrappers/llvm-cov diff --git a/cc/toolchains/wrappers/llvm-nm b/cc/toolchains/llvm/wrappers/llvm-nm similarity index 100% rename from cc/toolchains/wrappers/llvm-nm rename to cc/toolchains/llvm/wrappers/llvm-nm diff --git a/cc/toolchains/wrappers/llvm-objcopy b/cc/toolchains/llvm/wrappers/llvm-objcopy similarity index 100% rename from cc/toolchains/wrappers/llvm-objcopy rename to cc/toolchains/llvm/wrappers/llvm-objcopy diff --git a/cc/toolchains/wrappers/llvm-objdump b/cc/toolchains/llvm/wrappers/llvm-objdump similarity index 100% rename from cc/toolchains/wrappers/llvm-objdump rename to cc/toolchains/llvm/wrappers/llvm-objdump diff --git a/cc/toolchains/wrappers/llvm-profdata b/cc/toolchains/llvm/wrappers/llvm-profdata similarity index 100% rename from cc/toolchains/wrappers/llvm-profdata rename to cc/toolchains/llvm/wrappers/llvm-profdata diff --git a/cc/toolchains/wrappers/llvm-strip b/cc/toolchains/llvm/wrappers/llvm-strip similarity index 100% rename from cc/toolchains/wrappers/llvm-strip rename to cc/toolchains/llvm/wrappers/llvm-strip diff --git a/cc/toolchains/wrappers/wrapper b/cc/toolchains/llvm/wrappers/wrapper similarity index 94% rename from cc/toolchains/wrappers/wrapper rename to cc/toolchains/llvm/wrappers/wrapper index da8464cd..87bcbb48 100755 --- a/cc/toolchains/wrappers/wrapper +++ b/cc/toolchains/llvm/wrappers/wrapper @@ -45,10 +45,10 @@ elif [[ "${BASH_SOURCE[0]}" == "/"* ]]; then # with its absolute path. # # To deal with this we find the tool relative to this script, which is at - # _execroot_/external/rules_swiftnav/cc/toolchain/wrappers/wrapper. + # _execroot_/external/rules_swiftnav/cc/toolchain/llvm/wrappers/wrapper. # # If the wrapper is relocated then this line needs to be adjusted. - execroot_path="${BASH_SOURCE[0]%/*/*/*/*/*/*}" + execroot_path="${BASH_SOURCE[0]%/*/*/*/*/*/*/*}" tool="${execroot_path}/${toolchain_bindir}/${tool_name}" exec "${tool}" "${@}" else From cabbc4b41d0369f4268d91e4cc9bf6ae989bbcee Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Fri, 31 Mar 2023 16:52:29 -0600 Subject: [PATCH 03/21] more restructure --- cc/repositories.bzl | 2 +- cc/toolchains/llvm/BUILD.bazel | 103 +----------------- cc/toolchains/llvm/x86_64-linux/BUILD.bazel | 112 ++++++++++++++++++++ 3 files changed, 114 insertions(+), 103 deletions(-) create mode 100644 cc/toolchains/llvm/x86_64-linux/BUILD.bazel diff --git a/cc/repositories.bzl b/cc/repositories.bzl index d0a1b554..89e6db49 100644 --- a/cc/repositories.bzl +++ b/cc/repositories.bzl @@ -24,4 +24,4 @@ def swift_cc_toolchain(): ) def register_swift_cc_toolchains(): - native.register_toolchains("@rules_swiftnav//cc/toolchains/llvm:cc-toolchain-x86_64-linux") + native.register_toolchains("@rules_swiftnav//cc/toolchains/llvm/x86_64-linux:cc-toolchain-x86_64-linux") diff --git a/cc/toolchains/llvm/BUILD.bazel b/cc/toolchains/llvm/BUILD.bazel index 72ee0f5c..cd2c38d0 100644 --- a/cc/toolchains/llvm/BUILD.bazel +++ b/cc/toolchains/llvm/BUILD.bazel @@ -10,112 +10,11 @@ package(default_visibility = ["//visibility:public"]) -load(":cc_toolchain_config.bzl", "cc_toolchain_config") - -filegroup(name = "empty") - filegroup( name = "wrappers", srcs = glob([ "wrappers/**", ]), + visibility = ["//visibility:public"], ) -filegroup( - name = "ar_files", - srcs = [ - ":wrappers", - "@x86_64-linux-llvm//:ar", - ], -) - -filegroup( - name = "as_files", - srcs = [ - ":wrappers", - "@x86_64-linux-llvm//:as", - ], -) - -filegroup( - name = "compiler_files", - srcs = [ - ":wrappers", - "@x86_64-linux-llvm//:clang", - "@x86_64-linux-llvm//:include", - ], -) - -filegroup( - name = "dwp_files", - srcs = [ - ":wrappers", - "@x86_64-linux-llvm//:dwp", - ], -) - -filegroup( - name = "linker_files", - srcs = [ - ":wrappers", - "@x86_64-linux-llvm//:ar", - "@x86_64-linux-llvm//:clang", - "@x86_64-linux-llvm//:ld", - "@x86_64-linux-llvm//:lib", - ], -) - -filegroup( - name = "objcopy_files", - srcs = [ - ":wrappers", - "@x86_64-linux-llvm//:objcopy", - ], -) - -filegroup( - name = "strip_files", - srcs = [ - ":wrappers", - "@x86_64-linux-llvm//:strip", - ], -) - -filegroup( - name = "all_files", - srcs = [ - "linker_files", - ":compiler_files", - "@x86_64-linux-llvm//:bin", - ], -) - -cc_toolchain_config(name = "local-x86_64-linux") - -cc_toolchain( - name = "cc-clang-x86_64-linux", - all_files = ":all_files", - ar_files = ":ar_files", - as_files = ":as_files", - compiler_files = ":compiler_files", - dwp_files = ":dwp_files", - linker_files = ":linker_files", - objcopy_files = ":objcopy_files", - strip_files = ":strip_files", - toolchain_config = ":local-x86_64-linux", -) - -toolchain( - name = "cc-toolchain-x86_64-linux", - exec_compatible_with = [ - "@platforms//cpu:x86_64", - "@platforms//os:linux", - ], - target_compatible_with = [ - "@platforms//cpu:x86_64", - "@platforms//os:linux", - ], - target_settings = None, - toolchain = ":cc-clang-x86_64-linux", - toolchain_type = "@bazel_tools//tools/cpp:toolchain_type", -) diff --git a/cc/toolchains/llvm/x86_64-linux/BUILD.bazel b/cc/toolchains/llvm/x86_64-linux/BUILD.bazel new file mode 100644 index 00000000..74702e9a --- /dev/null +++ b/cc/toolchains/llvm/x86_64-linux/BUILD.bazel @@ -0,0 +1,112 @@ +# Copyright (C) 2022 Swift Navigation Inc. +# Contact: Swift Navigation +# +# This source is subject to the license found in the file 'LICENSE' which must +# be be distributed together with this source. All other rights reserved. +# +# THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +# EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + +package(default_visibility = ["//visibility:public"]) + +load("//cc/toolchains/llvm:cc_toolchain_config.bzl", "cc_toolchain_config") + +filegroup( + name = "ar_files", + srcs = [ + "//cc/toolchains/llvm:wrappers", + "@x86_64-linux-llvm//:ar", + ], +) + +filegroup( + name = "as_files", + srcs = [ + "//cc/toolchains/llvm:wrappers", + "@x86_64-linux-llvm//:as", + ], +) + +filegroup( + name = "compiler_files", + srcs = [ + "//cc/toolchains/llvm:wrappers", + "@x86_64-linux-llvm//:clang", + "@x86_64-linux-llvm//:include", + ], +) + +filegroup( + name = "dwp_files", + srcs = [ + "//cc/toolchains/llvm:wrappers", + "@x86_64-linux-llvm//:dwp", + ], +) + +filegroup( + name = "linker_files", + srcs = [ + "//cc/toolchains/llvm:wrappers", + "@x86_64-linux-llvm//:ar", + "@x86_64-linux-llvm//:clang", + "@x86_64-linux-llvm//:ld", + "@x86_64-linux-llvm//:lib", + ], +) + +filegroup( + name = "objcopy_files", + srcs = [ + "//cc/toolchains/llvm:wrappers", + "@x86_64-linux-llvm//:objcopy", + ], +) + +filegroup( + name = "strip_files", + srcs = [ + "//cc/toolchains/llvm:wrappers", + "@x86_64-linux-llvm//:strip", + ], +) + +filegroup( + name = "all_files", + srcs = [ + "linker_files", + ":compiler_files", + "@x86_64-linux-llvm//:bin", + ], +) + +cc_toolchain_config(name = "local-x86_64-linux") + +cc_toolchain( + name = "cc-clang-x86_64-linux", + all_files = ":all_files", + ar_files = ":ar_files", + as_files = ":as_files", + compiler_files = ":compiler_files", + dwp_files = ":dwp_files", + linker_files = ":linker_files", + objcopy_files = ":objcopy_files", + strip_files = ":strip_files", + toolchain_config = ":local-x86_64-linux", +) + +toolchain( + name = "cc-toolchain-x86_64-linux", + exec_compatible_with = [ + "@platforms//cpu:x86_64", + "@platforms//os:linux", + ], + target_compatible_with = [ + "@platforms//cpu:x86_64", + "@platforms//os:linux", + ], + target_settings = None, + toolchain = ":cc-clang-x86_64-linux", + toolchain_type = "@bazel_tools//tools/cpp:toolchain_type", +) From bb718b71839c0d33ac3fb16a12b25aa16cfb3461 Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Fri, 31 Mar 2023 17:02:41 -0600 Subject: [PATCH 04/21] more restructure --- cc/toolchains/llvm/x86_64-linux/BUILD.bazel | 22 +++++++++++++------ .../llvm/{ => x86_64-linux}/wrappers/clang | 0 .../{ => x86_64-linux}/wrappers/clang-cpp | 0 .../llvm/{ => x86_64-linux}/wrappers/ld.lld | 0 .../llvm/{ => x86_64-linux}/wrappers/llvm-ar | 0 .../llvm/{ => x86_64-linux}/wrappers/llvm-cov | 0 .../llvm/{ => x86_64-linux}/wrappers/llvm-nm | 0 .../{ => x86_64-linux}/wrappers/llvm-objcopy | 0 .../{ => x86_64-linux}/wrappers/llvm-objdump | 0 .../{ => x86_64-linux}/wrappers/llvm-profdata | 0 .../{ => x86_64-linux}/wrappers/llvm-strip | 0 .../llvm/{ => x86_64-linux}/wrappers/wrapper | 4 ++-- 12 files changed, 17 insertions(+), 9 deletions(-) rename cc/toolchains/llvm/{ => x86_64-linux}/wrappers/clang (100%) rename cc/toolchains/llvm/{ => x86_64-linux}/wrappers/clang-cpp (100%) rename cc/toolchains/llvm/{ => x86_64-linux}/wrappers/ld.lld (100%) rename cc/toolchains/llvm/{ => x86_64-linux}/wrappers/llvm-ar (100%) rename cc/toolchains/llvm/{ => x86_64-linux}/wrappers/llvm-cov (100%) rename cc/toolchains/llvm/{ => x86_64-linux}/wrappers/llvm-nm (100%) rename cc/toolchains/llvm/{ => x86_64-linux}/wrappers/llvm-objcopy (100%) rename cc/toolchains/llvm/{ => x86_64-linux}/wrappers/llvm-objdump (100%) rename cc/toolchains/llvm/{ => x86_64-linux}/wrappers/llvm-profdata (100%) rename cc/toolchains/llvm/{ => x86_64-linux}/wrappers/llvm-strip (100%) rename cc/toolchains/llvm/{ => x86_64-linux}/wrappers/wrapper (93%) diff --git a/cc/toolchains/llvm/x86_64-linux/BUILD.bazel b/cc/toolchains/llvm/x86_64-linux/BUILD.bazel index 74702e9a..ca9a340e 100644 --- a/cc/toolchains/llvm/x86_64-linux/BUILD.bazel +++ b/cc/toolchains/llvm/x86_64-linux/BUILD.bazel @@ -12,10 +12,18 @@ package(default_visibility = ["//visibility:public"]) load("//cc/toolchains/llvm:cc_toolchain_config.bzl", "cc_toolchain_config") +filegroup( + name = "wrappers", + srcs = glob([ + "wrappers/**", + ]), + visibility = ["//visibility:public"], +) + filegroup( name = "ar_files", srcs = [ - "//cc/toolchains/llvm:wrappers", + ":wrappers", "@x86_64-linux-llvm//:ar", ], ) @@ -23,7 +31,7 @@ filegroup( filegroup( name = "as_files", srcs = [ - "//cc/toolchains/llvm:wrappers", + ":wrappers", "@x86_64-linux-llvm//:as", ], ) @@ -31,7 +39,7 @@ filegroup( filegroup( name = "compiler_files", srcs = [ - "//cc/toolchains/llvm:wrappers", + ":wrappers", "@x86_64-linux-llvm//:clang", "@x86_64-linux-llvm//:include", ], @@ -40,7 +48,7 @@ filegroup( filegroup( name = "dwp_files", srcs = [ - "//cc/toolchains/llvm:wrappers", + ":wrappers", "@x86_64-linux-llvm//:dwp", ], ) @@ -48,7 +56,7 @@ filegroup( filegroup( name = "linker_files", srcs = [ - "//cc/toolchains/llvm:wrappers", + ":wrappers", "@x86_64-linux-llvm//:ar", "@x86_64-linux-llvm//:clang", "@x86_64-linux-llvm//:ld", @@ -59,7 +67,7 @@ filegroup( filegroup( name = "objcopy_files", srcs = [ - "//cc/toolchains/llvm:wrappers", + ":wrappers", "@x86_64-linux-llvm//:objcopy", ], ) @@ -67,7 +75,7 @@ filegroup( filegroup( name = "strip_files", srcs = [ - "//cc/toolchains/llvm:wrappers", + ":wrappers", "@x86_64-linux-llvm//:strip", ], ) diff --git a/cc/toolchains/llvm/wrappers/clang b/cc/toolchains/llvm/x86_64-linux/wrappers/clang similarity index 100% rename from cc/toolchains/llvm/wrappers/clang rename to cc/toolchains/llvm/x86_64-linux/wrappers/clang diff --git a/cc/toolchains/llvm/wrappers/clang-cpp b/cc/toolchains/llvm/x86_64-linux/wrappers/clang-cpp similarity index 100% rename from cc/toolchains/llvm/wrappers/clang-cpp rename to cc/toolchains/llvm/x86_64-linux/wrappers/clang-cpp diff --git a/cc/toolchains/llvm/wrappers/ld.lld b/cc/toolchains/llvm/x86_64-linux/wrappers/ld.lld similarity index 100% rename from cc/toolchains/llvm/wrappers/ld.lld rename to cc/toolchains/llvm/x86_64-linux/wrappers/ld.lld diff --git a/cc/toolchains/llvm/wrappers/llvm-ar b/cc/toolchains/llvm/x86_64-linux/wrappers/llvm-ar similarity index 100% rename from cc/toolchains/llvm/wrappers/llvm-ar rename to cc/toolchains/llvm/x86_64-linux/wrappers/llvm-ar diff --git a/cc/toolchains/llvm/wrappers/llvm-cov b/cc/toolchains/llvm/x86_64-linux/wrappers/llvm-cov similarity index 100% rename from cc/toolchains/llvm/wrappers/llvm-cov rename to cc/toolchains/llvm/x86_64-linux/wrappers/llvm-cov diff --git a/cc/toolchains/llvm/wrappers/llvm-nm b/cc/toolchains/llvm/x86_64-linux/wrappers/llvm-nm similarity index 100% rename from cc/toolchains/llvm/wrappers/llvm-nm rename to cc/toolchains/llvm/x86_64-linux/wrappers/llvm-nm diff --git a/cc/toolchains/llvm/wrappers/llvm-objcopy b/cc/toolchains/llvm/x86_64-linux/wrappers/llvm-objcopy similarity index 100% rename from cc/toolchains/llvm/wrappers/llvm-objcopy rename to cc/toolchains/llvm/x86_64-linux/wrappers/llvm-objcopy diff --git a/cc/toolchains/llvm/wrappers/llvm-objdump b/cc/toolchains/llvm/x86_64-linux/wrappers/llvm-objdump similarity index 100% rename from cc/toolchains/llvm/wrappers/llvm-objdump rename to cc/toolchains/llvm/x86_64-linux/wrappers/llvm-objdump diff --git a/cc/toolchains/llvm/wrappers/llvm-profdata b/cc/toolchains/llvm/x86_64-linux/wrappers/llvm-profdata similarity index 100% rename from cc/toolchains/llvm/wrappers/llvm-profdata rename to cc/toolchains/llvm/x86_64-linux/wrappers/llvm-profdata diff --git a/cc/toolchains/llvm/wrappers/llvm-strip b/cc/toolchains/llvm/x86_64-linux/wrappers/llvm-strip similarity index 100% rename from cc/toolchains/llvm/wrappers/llvm-strip rename to cc/toolchains/llvm/x86_64-linux/wrappers/llvm-strip diff --git a/cc/toolchains/llvm/wrappers/wrapper b/cc/toolchains/llvm/x86_64-linux/wrappers/wrapper similarity index 93% rename from cc/toolchains/llvm/wrappers/wrapper rename to cc/toolchains/llvm/x86_64-linux/wrappers/wrapper index 87bcbb48..14658085 100755 --- a/cc/toolchains/llvm/wrappers/wrapper +++ b/cc/toolchains/llvm/x86_64-linux/wrappers/wrapper @@ -45,10 +45,10 @@ elif [[ "${BASH_SOURCE[0]}" == "/"* ]]; then # with its absolute path. # # To deal with this we find the tool relative to this script, which is at - # _execroot_/external/rules_swiftnav/cc/toolchain/llvm/wrappers/wrapper. + # _execroot_/external/rules_swiftnav/cc/toolchain/llvm/x86_64-linux/wrappers/wrapper. # # If the wrapper is relocated then this line needs to be adjusted. - execroot_path="${BASH_SOURCE[0]%/*/*/*/*/*/*/*}" + execroot_path="${BASH_SOURCE[0]%/*/*/*/*/*/*/*/*}" tool="${execroot_path}/${toolchain_bindir}/${tool_name}" exec "${tool}" "${@}" else From ca8b1bed70e43d40e3bdfe838eca74abc78d12bc Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Fri, 31 Mar 2023 17:46:58 -0600 Subject: [PATCH 05/21] :) --- cc/toolchains/llvm/cc_toolchain_config.bzl | 48 ++++++--------------- cc/toolchains/llvm/x86_64-linux/BUILD.bazel | 30 ++++++++++++- 2 files changed, 43 insertions(+), 35 deletions(-) diff --git a/cc/toolchains/llvm/cc_toolchain_config.bzl b/cc/toolchains/llvm/cc_toolchain_config.bzl index 5a65afa5..547d9143 100644 --- a/cc/toolchains/llvm/cc_toolchain_config.bzl +++ b/cc/toolchains/llvm/cc_toolchain_config.bzl @@ -13,40 +13,20 @@ load( unix_cc_toolchain_config = "cc_toolchain_config", ) -def cc_toolchain_config(name): - # These variables are passed directly through to unix_cc_toolchain_config - # below. As far as I can tell they are just metadata that doesn't affect - # the build. - host_system_name = "linux-x86_64" - toolchain_identifier = "clang-x86_64-linux" - target_cpu = "k8" - target_libc = "glibc_unknown" - compiler = "clang" - abi_version = "clang" - abi_libc_version = "glibc_unknown" - - cxx_builtin_include_directories = [ - "/include", - "/usr/include", - "/usr/local/include", - ] - - tool_paths = { - "ar": "wrappers/llvm-ar", - "cpp": "wrappers/clang-cpp", - "gcc": "wrappers/clang", - "gcov": "wrappers/llvm-profdata", - "llvm-cov": "wrappers/llvm-cov", - "llvm-profdata": "wrappers/llvm-profdata", - "ld": "wrappers/ld.ldd", - "nm": "wrappers/llvm-nm", - "objcopy": "wrappers/llvm-objcopy", - "objdump": "wrappers/llvm-objdump", - "strip": "wrappers/llvm-strip", - } - - target_system_name = "x86_64-unknown-linux-gnu" - +def cc_toolchain_config( + name, + host_system_name, + toolchain_identifier, + target_cpu, + target_libc, + compiler, + abi_version, + abi_libc_version, + cxx_builtin_include_directories, + tool_paths, + target_system_name, + is_darwin = False, +): # Default compiler flags: compile_flags = [ "--target=" + target_system_name, diff --git a/cc/toolchains/llvm/x86_64-linux/BUILD.bazel b/cc/toolchains/llvm/x86_64-linux/BUILD.bazel index ca9a340e..776e83d5 100644 --- a/cc/toolchains/llvm/x86_64-linux/BUILD.bazel +++ b/cc/toolchains/llvm/x86_64-linux/BUILD.bazel @@ -89,7 +89,35 @@ filegroup( ], ) -cc_toolchain_config(name = "local-x86_64-linux") +cc_toolchain_config( + name = "local-x86_64-linux", + host_system_name = "linux-x86_64", + toolchain_identifier = "clang-x86_64-linux", + target_cpu = "k8", + target_libc = "glibc_unknown", + compiler = "clang", + abi_version = "clang", + abi_libc_version = "glibc_unknown", + cxx_builtin_include_directories = [ + "/include", + "/usr/include", + "/usr/local/include", + ], + tool_paths = { + "ar": "wrappers/llvm-ar", + "cpp": "wrappers/clang-cpp", + "gcc": "wrappers/clang", + "gcov": "wrappers/llvm-profdata", + "llvm-cov": "wrappers/llvm-cov", + "llvm-profdata": "wrappers/llvm-profdata", + "ld": "wrappers/ld.ldd", + "nm": "wrappers/llvm-nm", + "objcopy": "wrappers/llvm-objcopy", + "objdump": "wrappers/llvm-objdump", + "strip": "wrappers/llvm-strip", + }, + target_system_name = "x86_64-unknown-linux-gnu", +) cc_toolchain( name = "cc-clang-x86_64-linux", From 494d3f658ca1e816e97ce685c0ddb4e789908781 Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Mon, 3 Apr 2023 14:32:34 -0600 Subject: [PATCH 06/21] add darwin conditions --- cc/toolchains/llvm/cc_toolchain_config.bzl | 66 +++++++++++++++------- 1 file changed, 45 insertions(+), 21 deletions(-) diff --git a/cc/toolchains/llvm/cc_toolchain_config.bzl b/cc/toolchains/llvm/cc_toolchain_config.bzl index 547d9143..1e0c079a 100644 --- a/cc/toolchains/llvm/cc_toolchain_config.bzl +++ b/cc/toolchains/llvm/cc_toolchain_config.bzl @@ -27,6 +27,10 @@ def cc_toolchain_config( target_system_name, is_darwin = False, ): + # Mach-O support in lld is experimental, so on mac + # we use the system linker. + use_lld = not is_darwin + # Default compiler flags: compile_flags = [ "--target=" + target_system_name, @@ -73,32 +77,53 @@ def cc_toolchain_config( "--target=" + target_system_name, "-lm", "-no-canonical-prefixes", - # Below this line, assumes libc++ & lld - "-l:libc++.a", - "-l:libc++abi.a", - "-l:libunwind.a", - # Compiler runtime features. - "-rtlib=compiler-rt", - # To support libunwind - # It's ok to assume posix when using this toolchain - "-lpthread", - "-ldl", ] - # linux/lld only! - link_flags.extend([ - "-fuse-ld=lld", - "-Wl,--build-id=md5", - "-Wl,--hash-style=gnu", - "-Wl,-z,relro,-z,now", - ]) - # Similar to link_flags, but placed later in the command line such that # unused symbols are not stripped. link_libs = [] + if is_darwin: + # Mach-O support in lld is experimental, so on mac + # we use the system linker. + use_lld = False + link_flags.extend([ + "-headerpad_max_install_names", + "-undefined", + "dynamic_lookup", + ]) + else: + use_lld = True + link_flags.extend([ + "-fuse-ld=lld", + "-Wl,--build-id=md5", + "-Wl,--hash-style=gnu", + "-Wl,-z,relro,-z,now", + ]) + + if use_lld: + link_flags.extend([ + # Below this line, assumes libc++ & lld + "-l:libc++.a", + "-l:libc++abi.a", + "-l:libunwind.a", + # Compiler runtime features. + "-rtlib=compiler-rt", + # To support libunwind + # It's ok to assume posix when using this toolchain + "-lpthread", + "-ldl", + ]) + else: + link_flags.extend([ + "-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib" + "-lc++", + "-lc++abi", + "-Lexternal/x86_64-darwin-llvm/" # toolchain_path_prefix + ]) + # linux/lld only - opt_link_flags = ["-Wl,--gc-sections"] + opt_link_flags = ["-Wl,--gc-sections"] if not is_darwin else [] # Unfiltered compiler flags; these are placed at the end of the command # line, so take precendence over any user supplied flags through --copts or @@ -120,8 +145,7 @@ def cc_toolchain_config( coverage_compile_flags = ["-fprofile-instr-generate", "-fcoverage-mapping"] coverage_link_flags = ["-fprofile-instr-generate"] - # true if using lld - supports_start_end_lib = True + supports_start_end_lib = use_lld # Calls https://github.com/bazelbuild/bazel/blob/master/tools/cpp/unix_cc_toolchain_config.bzl # Which defines the rule that actually sets up the cc toolchain. From dcd51e5ab820643acc5fd9c4a2c49528b02c7f9c Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Mon, 3 Apr 2023 14:54:23 -0600 Subject: [PATCH 07/21] format --- cc/toolchains/llvm/BUILD.bazel | 1 - cc/toolchains/llvm/cc_toolchain_config.bzl | 29 ++++++++++----------- cc/toolchains/llvm/x86_64-linux/BUILD.bazel | 14 +++++----- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/cc/toolchains/llvm/BUILD.bazel b/cc/toolchains/llvm/BUILD.bazel index cd2c38d0..cfebdefd 100644 --- a/cc/toolchains/llvm/BUILD.bazel +++ b/cc/toolchains/llvm/BUILD.bazel @@ -17,4 +17,3 @@ filegroup( ]), visibility = ["//visibility:public"], ) - diff --git a/cc/toolchains/llvm/cc_toolchain_config.bzl b/cc/toolchains/llvm/cc_toolchain_config.bzl index 1e0c079a..61428bb5 100644 --- a/cc/toolchains/llvm/cc_toolchain_config.bzl +++ b/cc/toolchains/llvm/cc_toolchain_config.bzl @@ -14,19 +14,18 @@ load( ) def cc_toolchain_config( - name, - host_system_name, - toolchain_identifier, - target_cpu, - target_libc, - compiler, - abi_version, - abi_libc_version, - cxx_builtin_include_directories, - tool_paths, - target_system_name, - is_darwin = False, -): + name, + host_system_name, + toolchain_identifier, + target_cpu, + target_libc, + compiler, + abi_version, + abi_libc_version, + cxx_builtin_include_directories, + tool_paths, + target_system_name, + is_darwin = False): # Mach-O support in lld is experimental, so on mac # we use the system linker. use_lld = not is_darwin @@ -116,10 +115,10 @@ def cc_toolchain_config( ]) else: link_flags.extend([ - "-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib" + "-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib", "-lc++", "-lc++abi", - "-Lexternal/x86_64-darwin-llvm/" # toolchain_path_prefix + "-Lexternal/x86_64-darwin-llvm/", # toolchain_path_prefix ]) # linux/lld only diff --git a/cc/toolchains/llvm/x86_64-linux/BUILD.bazel b/cc/toolchains/llvm/x86_64-linux/BUILD.bazel index 776e83d5..78e0d78b 100644 --- a/cc/toolchains/llvm/x86_64-linux/BUILD.bazel +++ b/cc/toolchains/llvm/x86_64-linux/BUILD.bazel @@ -91,18 +91,18 @@ filegroup( cc_toolchain_config( name = "local-x86_64-linux", - host_system_name = "linux-x86_64", - toolchain_identifier = "clang-x86_64-linux", - target_cpu = "k8", - target_libc = "glibc_unknown", - compiler = "clang", - abi_version = "clang", abi_libc_version = "glibc_unknown", + abi_version = "clang", + compiler = "clang", cxx_builtin_include_directories = [ "/include", "/usr/include", "/usr/local/include", ], + host_system_name = "linux-x86_64", + target_cpu = "k8", + target_libc = "glibc_unknown", + target_system_name = "x86_64-unknown-linux-gnu", tool_paths = { "ar": "wrappers/llvm-ar", "cpp": "wrappers/clang-cpp", @@ -116,7 +116,7 @@ cc_toolchain_config( "objdump": "wrappers/llvm-objdump", "strip": "wrappers/llvm-strip", }, - target_system_name = "x86_64-unknown-linux-gnu", + toolchain_identifier = "clang-x86_64-linux", ) cc_toolchain( From 5f78695d647979e6c5ed964e6ad3963505b40b8a Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Mon, 3 Apr 2023 15:23:01 -0600 Subject: [PATCH 08/21] Add x86_64-darwin toolchain --- cc/repositories.bzl | 15 +- cc/toolchains/llvm/x86_64-darwin/BUILD.bazel | 149 ++++++++++++++++++ .../llvm/x86_64-darwin/wrappers/clang | 1 + .../llvm/x86_64-darwin/wrappers/clang-cpp | 1 + .../llvm/x86_64-darwin/wrappers/llvm-cov | 1 + .../llvm/x86_64-darwin/wrappers/llvm-nm | 1 + .../llvm/x86_64-darwin/wrappers/llvm-objcopy | 1 + .../llvm/x86_64-darwin/wrappers/llvm-objdump | 1 + .../llvm/x86_64-darwin/wrappers/llvm-profdata | 1 + .../llvm/x86_64-darwin/wrappers/llvm-strip | 1 + .../llvm/x86_64-darwin/wrappers/wrapper | 58 +++++++ 11 files changed, 228 insertions(+), 2 deletions(-) create mode 100644 cc/toolchains/llvm/x86_64-darwin/BUILD.bazel create mode 120000 cc/toolchains/llvm/x86_64-darwin/wrappers/clang create mode 120000 cc/toolchains/llvm/x86_64-darwin/wrappers/clang-cpp create mode 120000 cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-cov create mode 120000 cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-nm create mode 120000 cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-objcopy create mode 120000 cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-objdump create mode 120000 cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-profdata create mode 120000 cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-strip create mode 100755 cc/toolchains/llvm/x86_64-darwin/wrappers/wrapper diff --git a/cc/repositories.bzl b/cc/repositories.bzl index 89e6db49..f7ae70ff 100644 --- a/cc/repositories.bzl +++ b/cc/repositories.bzl @@ -11,17 +11,28 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") -X64_64_LINUX_LLVM = "https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang%2Bllvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz" +X86_64_LINUX_LLVM = "https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang%2Bllvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz" + +X86_64_DARWIN_LLVM = "https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang%2Bllvm-14.0.0-x86_64-apple-darwin-18.04.tar.xz" def swift_cc_toolchain(): maybe( http_archive, name = "x86_64-linux-llvm", build_file = Label("//cc/toolchains/llvm:llvm.BUILD.bzl"), - url = X64_64_LINUX_LLVM, + url = X86_64_LINUX_LLVM, strip_prefix = "clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04", sha256 = "61582215dafafb7b576ea30cc136be92c877ba1f1c31ddbbd372d6d65622fef5", ) + maybe( + http_archive, + name = "x86_64-darwin-llvm", + build_file = Label("//cc/toolchains/llvm:llvm.BUILD.bzl"), + url = X86_64_DARWIN_LLVM, + strip_prefix = "clang+llvm-14.0.0-x86_64-apple-darwin", + ) + def register_swift_cc_toolchains(): native.register_toolchains("@rules_swiftnav//cc/toolchains/llvm/x86_64-linux:cc-toolchain-x86_64-linux") + native.register_toolchains("@rules_swiftnav//cc/toolchains/llvm/x86_64-darwin:cc-toolchain-x86_64-darwin") diff --git a/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel b/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel new file mode 100644 index 00000000..a27ac8e2 --- /dev/null +++ b/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel @@ -0,0 +1,149 @@ +# Copyright (C) 2022 Swift Navigation Inc. +# Contact: Swift Navigation +# +# This source is subject to the license found in the file 'LICENSE' which must +# be be distributed together with this source. All other rights reserved. +# +# THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +# EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + +package(default_visibility = ["//visibility:public"]) + +load("//cc/toolchains/llvm:cc_toolchain_config.bzl", "cc_toolchain_config") + +filegroup( + name = "wrappers", + srcs = glob([ + "wrappers/**", + ]), + visibility = ["//visibility:public"], +) + +filegroup( + name = "ar_files", + srcs = [ + ":wrappers", + "@x86_64-darwin-llvm//:ar", + ], +) + +filegroup( + name = "as_files", + srcs = [ + ":wrappers", + "@x86_64-darwin-llvm//:as", + ], +) + +filegroup( + name = "compiler_files", + srcs = [ + ":wrappers", + "@x86_64-darwin-llvm//:clang", + "@x86_64-darwin-llvm//:include", + ], +) + +filegroup( + name = "dwp_files", + srcs = [ + ":wrappers", + "@x86_64-darwin-llvm//:dwp", + ], +) + +filegroup( + name = "linker_files", + srcs = [ + ":wrappers", + "@x86_64-darwin-llvm//:ar", + "@x86_64-darwin-llvm//:clang", + "@x86_64-darwin-llvm//:ld", + "@x86_64-darwin-llvm//:lib", + ], +) + +filegroup( + name = "objcopy_files", + srcs = [ + ":wrappers", + "@x86_64-darwin-llvm//:objcopy", + ], +) + +filegroup( + name = "strip_files", + srcs = [ + ":wrappers", + "@x86_64-darwin-llvm//:strip", + ], +) + +filegroup( + name = "all_files", + srcs = [ + "linker_files", + ":compiler_files", + "@x86_64-darwin-llvm//:bin", + ], +) + +cc_toolchain_config( + name = "local-x86_64-darwin", + abi_libc_version = "glibc_unknown", + abi_version = "clang", + compiler = "clang", + cxx_builtin_include_directories = [ + "/include", + "/usr/include", + "/usr/local/include", + ], + host_system_name = "linux-x86_64", + target_cpu = "k8", + target_libc = "glibc_unknown", + target_system_name = "x86_64-unknown-linux-gnu", + tool_paths = { + "ar": "/usr/bin/libtool", + "cpp": "wrappers/clang-cpp", + "gcc": "wrappers/clang", + "gcov": "wrappers/llvm-profdata", + "llvm-cov": "wrappers/llvm-cov", + "llvm-profdata": "wrappers/llvm-profdata", + "ld": "/usr/bin/ld", + "nm": "wrappers/llvm-nm", + "objcopy": "wrappers/llvm-objcopy", + "objdump": "wrappers/llvm-objdump", + "strip": "wrappers/llvm-strip", + }, + toolchain_identifier = "clang-x86_64-darwin", + is_darwin = True, +) + +cc_toolchain( + name = "cc-clang-x86_64-darwin", + all_files = ":all_files", + ar_files = ":ar_files", + as_files = ":as_files", + compiler_files = ":compiler_files", + dwp_files = ":dwp_files", + linker_files = ":linker_files", + objcopy_files = ":objcopy_files", + strip_files = ":strip_files", + toolchain_config = ":local-x86_64-darwin", +) + +toolchain( + name = "cc-toolchain-x86_64-darwin", + exec_compatible_with = [ + "@platforms//cpu:x86_64", + "@platforms//os:macos", + ], + target_compatible_with = [ + "@platforms//cpu:x86_64", + "@platforms//os:macos", + ], + target_settings = None, + toolchain = ":cc-clang-x86_64-darwin", + toolchain_type = "@bazel_tools//tools/cpp:toolchain_type", +) diff --git a/cc/toolchains/llvm/x86_64-darwin/wrappers/clang b/cc/toolchains/llvm/x86_64-darwin/wrappers/clang new file mode 120000 index 00000000..22cb46f8 --- /dev/null +++ b/cc/toolchains/llvm/x86_64-darwin/wrappers/clang @@ -0,0 +1 @@ +wrapper \ No newline at end of file diff --git a/cc/toolchains/llvm/x86_64-darwin/wrappers/clang-cpp b/cc/toolchains/llvm/x86_64-darwin/wrappers/clang-cpp new file mode 120000 index 00000000..22cb46f8 --- /dev/null +++ b/cc/toolchains/llvm/x86_64-darwin/wrappers/clang-cpp @@ -0,0 +1 @@ +wrapper \ No newline at end of file diff --git a/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-cov b/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-cov new file mode 120000 index 00000000..22cb46f8 --- /dev/null +++ b/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-cov @@ -0,0 +1 @@ +wrapper \ No newline at end of file diff --git a/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-nm b/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-nm new file mode 120000 index 00000000..22cb46f8 --- /dev/null +++ b/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-nm @@ -0,0 +1 @@ +wrapper \ No newline at end of file diff --git a/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-objcopy b/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-objcopy new file mode 120000 index 00000000..22cb46f8 --- /dev/null +++ b/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-objcopy @@ -0,0 +1 @@ +wrapper \ No newline at end of file diff --git a/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-objdump b/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-objdump new file mode 120000 index 00000000..22cb46f8 --- /dev/null +++ b/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-objdump @@ -0,0 +1 @@ +wrapper \ No newline at end of file diff --git a/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-profdata b/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-profdata new file mode 120000 index 00000000..22cb46f8 --- /dev/null +++ b/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-profdata @@ -0,0 +1 @@ +wrapper \ No newline at end of file diff --git a/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-strip b/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-strip new file mode 120000 index 00000000..22cb46f8 --- /dev/null +++ b/cc/toolchains/llvm/x86_64-darwin/wrappers/llvm-strip @@ -0,0 +1 @@ +wrapper \ No newline at end of file diff --git a/cc/toolchains/llvm/x86_64-darwin/wrappers/wrapper b/cc/toolchains/llvm/x86_64-darwin/wrappers/wrapper new file mode 100755 index 00000000..e8a60c3e --- /dev/null +++ b/cc/toolchains/llvm/x86_64-darwin/wrappers/wrapper @@ -0,0 +1,58 @@ +#!/usr/bin/env bash + +# Copyright (C) 2022 Swift Navigation Inc. +# Contact: Swift Navigation +# +# This source is subject to the license found in the file 'LICENSE' which must +# be be distributed together with this source. All other rights reserved. +# +# THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +# EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + +# Locates the actual tool paths relative to the location this script is +# executed from. +# +# This is necessary because we download the toolchain using +# http_archive, which bazel places in _execroot_/external/_repo_name_. +# +# Unfortunately we cannot provide this location as the argument of tool_path +# when configuring the toolchain, because tool_path only takes a relative path. +# +# This is the fairly common workaround to handle this. +# +# TODO: [BUILD-549] - Remove need for wrapper files +# +# Recent versions of Bazel may have introduced a mechanism that removes +# the need for this workaround: https://github.com/bazelbuild/bazel/issues/7746 + +set -e + +# Use --actionv_env=SWIFTNAV_VERBOSE_TOOLCHAIN to enable +if [[ -n "$SWIFTNAV_VERBOSE_TOOLCHAIN" ]]; then + set -x +fi + +tool_name=$(basename "${BASH_SOURCE[0]}") +toolchain_bindir=external/x86_64-darwin-llvm/bin + +if [[ -f "${toolchain_bindir}"/"${tool_name}" ]]; then + # We're running under _execroot_, call the real tool. + exec "${toolchain_bindir}"/"${tool_name}" "$@" +elif [[ "${BASH_SOURCE[0]}" == "/"* ]]; then + # This branch exists because some users of the toolchain, + # namely rules_foreign_cc, will change CWD and call $CC (this script) + # with its absolute path. + # + # To deal with this we find the tool relative to this script, which is at + # _execroot_/external/rules_swiftnav/cc/toolchain/llvm/x86_64-linux/wrappers/wrapper. + # + # If the wrapper is relocated then this line needs to be adjusted. + execroot_path="${BASH_SOURCE[0]%/*/*/*/*/*/*/*/*}" + tool="${execroot_path}/${toolchain_bindir}/${tool_name}" + exec "${tool}" "${@}" +else + >&2 echo "ERROR: could not find ${tool_name}; PWD=\"$(pwd)\"; PATH=\"${PATH}\"." + exit 5 +fi + From b22243df15acbc9e481ec812125b43eac2caaa21 Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Mon, 3 Apr 2023 15:23:24 -0600 Subject: [PATCH 09/21] format --- cc/toolchains/llvm/x86_64-darwin/BUILD.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel b/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel index a27ac8e2..a800f229 100644 --- a/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel +++ b/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel @@ -100,6 +100,7 @@ cc_toolchain_config( "/usr/local/include", ], host_system_name = "linux-x86_64", + is_darwin = True, target_cpu = "k8", target_libc = "glibc_unknown", target_system_name = "x86_64-unknown-linux-gnu", @@ -117,7 +118,6 @@ cc_toolchain_config( "strip": "wrappers/llvm-strip", }, toolchain_identifier = "clang-x86_64-darwin", - is_darwin = True, ) cc_toolchain( From 26633c92a3b49df70669e065182082561c690f15 Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Mon, 3 Apr 2023 16:06:41 -0600 Subject: [PATCH 10/21] fixes --- cc/repositories.bzl | 2 +- cc/toolchains/llvm/cc_toolchain_config.bzl | 3 +++ cc/toolchains/llvm/x86_64-darwin/BUILD.bazel | 17 ++++++++--------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/cc/repositories.bzl b/cc/repositories.bzl index f7ae70ff..5bfde53f 100644 --- a/cc/repositories.bzl +++ b/cc/repositories.bzl @@ -13,7 +13,7 @@ load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") X86_64_LINUX_LLVM = "https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang%2Bllvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz" -X86_64_DARWIN_LLVM = "https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang%2Bllvm-14.0.0-x86_64-apple-darwin-18.04.tar.xz" +X86_64_DARWIN_LLVM = "https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang%2Bllvm-14.0.0-x86_64-apple-darwin.tar.xz" def swift_cc_toolchain(): maybe( diff --git a/cc/toolchains/llvm/cc_toolchain_config.bzl b/cc/toolchains/llvm/cc_toolchain_config.bzl index 61428bb5..5c43325f 100644 --- a/cc/toolchains/llvm/cc_toolchain_config.bzl +++ b/cc/toolchains/llvm/cc_toolchain_config.bzl @@ -146,6 +146,8 @@ def cc_toolchain_config( supports_start_end_lib = use_lld + builtin_sysroot = "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk" if is_darwin else "" + # Calls https://github.com/bazelbuild/bazel/blob/master/tools/cpp/unix_cc_toolchain_config.bzl # Which defines the rule that actually sets up the cc toolchain. unix_cc_toolchain_config( @@ -171,4 +173,5 @@ def cc_toolchain_config( coverage_compile_flags = coverage_compile_flags, coverage_link_flags = coverage_link_flags, supports_start_end_lib = supports_start_end_lib, + builtin_sysroot = builtin_sysroot, ) diff --git a/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel b/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel index a800f229..9471e94e 100644 --- a/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel +++ b/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel @@ -91,19 +91,18 @@ filegroup( cc_toolchain_config( name = "local-x86_64-darwin", - abi_libc_version = "glibc_unknown", - abi_version = "clang", + abi_libc_version = "darwin_x86_64", + abi_version = "darwin_x86_64", compiler = "clang", cxx_builtin_include_directories = [ - "/include", - "/usr/include", - "/usr/local/include", + "%sysroot%/usr/include", + "%sysroot%/System/Library/Frameworks", ], - host_system_name = "linux-x86_64", + host_system_name = "darwin-x86_64", is_darwin = True, - target_cpu = "k8", - target_libc = "glibc_unknown", - target_system_name = "x86_64-unknown-linux-gnu", + target_cpu = "darwin", + target_libc = "macosx", + target_system_name = "x86_64-apple-macosx", tool_paths = { "ar": "/usr/bin/libtool", "cpp": "wrappers/clang-cpp", From 15b580dcdc842988197072230834035bfa86e5c1 Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Mon, 3 Apr 2023 16:10:10 -0600 Subject: [PATCH 11/21] add checksum --- cc/repositories.bzl | 1 + 1 file changed, 1 insertion(+) diff --git a/cc/repositories.bzl b/cc/repositories.bzl index 5bfde53f..a8c1d1c4 100644 --- a/cc/repositories.bzl +++ b/cc/repositories.bzl @@ -31,6 +31,7 @@ def swift_cc_toolchain(): build_file = Label("//cc/toolchains/llvm:llvm.BUILD.bzl"), url = X86_64_DARWIN_LLVM, strip_prefix = "clang+llvm-14.0.0-x86_64-apple-darwin", + sha256 = "cf5af0f32d78dcf4413ef6966abbfd5b1445fe80bba57f2ff8a08f77e672b9b3", ) def register_swift_cc_toolchains(): From dd5d0fe5149ab46ef6ff88c0fbab636bfcffe2dd Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Mon, 3 Apr 2023 18:50:46 -0600 Subject: [PATCH 12/21] cleanup --- cc/toolchains/llvm/cc_toolchain_config.bzl | 26 ++++++++++++++++++++ cc/toolchains/llvm/x86_64-darwin/BUILD.bazel | 1 + cc/toolchains/llvm/x86_64-linux/BUILD.bazel | 1 + 3 files changed, 28 insertions(+) diff --git a/cc/toolchains/llvm/cc_toolchain_config.bzl b/cc/toolchains/llvm/cc_toolchain_config.bzl index 5c43325f..fdadca7f 100644 --- a/cc/toolchains/llvm/cc_toolchain_config.bzl +++ b/cc/toolchains/llvm/cc_toolchain_config.bzl @@ -17,6 +17,7 @@ def cc_toolchain_config( name, host_system_name, toolchain_identifier, + toolchain_path_prefix, target_cpu, target_libc, compiler, @@ -114,6 +115,19 @@ def cc_toolchain_config( "-ldl", ]) else: + # The comments below were copied directly from: + # https://github.com/grailbio/bazel-toolchain/blob/795d76fd03e0b17c0961f0981a8512a00cba4fa2/toolchain/cc_toolchain_config.bzl#L202 + + # The only known mechanism to static link libraries in ld64 is to + # not have the corresponding .dylib files in the library search + # path. The link time sandbox does not include the .dylib files, so + # anything we pick up from the toolchain should be statically + # linked. However, several system libraries on macOS dynamically + # link libc++ and libc++abi, so static linking them becomes a problem. + # We need to ensure that they are dynamic linked from the system + # sysroot and not static linked from the toolchain, so explicitly + # have the sysroot directory on the search path and then add the + # toolchain directory back after we are done. link_flags.extend([ "-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib", "-lc++", @@ -121,6 +135,18 @@ def cc_toolchain_config( "-Lexternal/x86_64-darwin-llvm/", # toolchain_path_prefix ]) + # Let's provide the path to the toolchain library directory + # explicitly as part of the search path to make it easy for a user + # to pick up something. This also makes the behavior consistent with + # targets when a user explicitly depends on something like + # libomp.dylib, which adds this directory to the search path, and would + # (unintentionally) lead to static linking of libraries from the + # toolchain. + link_flags.extend([ + "-L{}lib".format(toolchain_path_prefix), + ]) + + # linux/lld only opt_link_flags = ["-Wl,--gc-sections"] if not is_darwin else [] diff --git a/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel b/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel index 9471e94e..473c700b 100644 --- a/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel +++ b/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel @@ -117,6 +117,7 @@ cc_toolchain_config( "strip": "wrappers/llvm-strip", }, toolchain_identifier = "clang-x86_64-darwin", + toolchain_path_prefix = "external/x86_64-darwin-llvm", ) cc_toolchain( diff --git a/cc/toolchains/llvm/x86_64-linux/BUILD.bazel b/cc/toolchains/llvm/x86_64-linux/BUILD.bazel index 78e0d78b..d3c68877 100644 --- a/cc/toolchains/llvm/x86_64-linux/BUILD.bazel +++ b/cc/toolchains/llvm/x86_64-linux/BUILD.bazel @@ -117,6 +117,7 @@ cc_toolchain_config( "strip": "wrappers/llvm-strip", }, toolchain_identifier = "clang-x86_64-linux", + toolchain_path_prefix = "external/x86_64-linux-llvm", ) cc_toolchain( From 1dea885ff8bcaf3dba9c77f285c88a34eba29bed Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Mon, 3 Apr 2023 18:51:10 -0600 Subject: [PATCH 13/21] format --- cc/toolchains/llvm/cc_toolchain_config.bzl | 1 - 1 file changed, 1 deletion(-) diff --git a/cc/toolchains/llvm/cc_toolchain_config.bzl b/cc/toolchains/llvm/cc_toolchain_config.bzl index fdadca7f..63c55148 100644 --- a/cc/toolchains/llvm/cc_toolchain_config.bzl +++ b/cc/toolchains/llvm/cc_toolchain_config.bzl @@ -146,7 +146,6 @@ def cc_toolchain_config( "-L{}lib".format(toolchain_path_prefix), ]) - # linux/lld only opt_link_flags = ["-Wl,--gc-sections"] if not is_darwin else [] From b599696a71c14e7fd8f76837fac02c20fb6b876a Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Mon, 3 Apr 2023 19:13:17 -0600 Subject: [PATCH 14/21] fixes --- cc/toolchains/llvm/cc_toolchain_config.bzl | 3 --- 1 file changed, 3 deletions(-) diff --git a/cc/toolchains/llvm/cc_toolchain_config.bzl b/cc/toolchains/llvm/cc_toolchain_config.bzl index 63c55148..ca35abb1 100644 --- a/cc/toolchains/llvm/cc_toolchain_config.bzl +++ b/cc/toolchains/llvm/cc_toolchain_config.bzl @@ -27,9 +27,6 @@ def cc_toolchain_config( tool_paths, target_system_name, is_darwin = False): - # Mach-O support in lld is experimental, so on mac - # we use the system linker. - use_lld = not is_darwin # Default compiler flags: compile_flags = [ From 3e9295081a37423828e423d73276a2369e96c5f8 Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Mon, 3 Apr 2023 19:13:28 -0600 Subject: [PATCH 15/21] format --- cc/toolchains/llvm/cc_toolchain_config.bzl | 1 - 1 file changed, 1 deletion(-) diff --git a/cc/toolchains/llvm/cc_toolchain_config.bzl b/cc/toolchains/llvm/cc_toolchain_config.bzl index ca35abb1..de55615b 100644 --- a/cc/toolchains/llvm/cc_toolchain_config.bzl +++ b/cc/toolchains/llvm/cc_toolchain_config.bzl @@ -27,7 +27,6 @@ def cc_toolchain_config( tool_paths, target_system_name, is_darwin = False): - # Default compiler flags: compile_flags = [ "--target=" + target_system_name, From 7b02e80b0fa308feaa27d889d84d94e6f4780852 Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Tue, 4 Apr 2023 11:40:54 -0600 Subject: [PATCH 16/21] fix --- cc/toolchains/llvm/cc_toolchain_config.bzl | 7 +++---- cc/toolchains/llvm/x86_64-darwin/BUILD.bazel | 1 + 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cc/toolchains/llvm/cc_toolchain_config.bzl b/cc/toolchains/llvm/cc_toolchain_config.bzl index de55615b..19b64956 100644 --- a/cc/toolchains/llvm/cc_toolchain_config.bzl +++ b/cc/toolchains/llvm/cc_toolchain_config.bzl @@ -26,6 +26,7 @@ def cc_toolchain_config( cxx_builtin_include_directories, tool_paths, target_system_name, + builtin_sysroot = None, is_darwin = False): # Default compiler flags: compile_flags = [ @@ -125,10 +126,9 @@ def cc_toolchain_config( # have the sysroot directory on the search path and then add the # toolchain directory back after we are done. link_flags.extend([ - "-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib", + "-L{}/usr/lib".format(builtin_sysroot), "-lc++", "-lc++abi", - "-Lexternal/x86_64-darwin-llvm/", # toolchain_path_prefix ]) # Let's provide the path to the toolchain library directory @@ -139,7 +139,7 @@ def cc_toolchain_config( # (unintentionally) lead to static linking of libraries from the # toolchain. link_flags.extend([ - "-L{}lib".format(toolchain_path_prefix), + "-L{}/lib".format(toolchain_path_prefix), ]) # linux/lld only @@ -167,7 +167,6 @@ def cc_toolchain_config( supports_start_end_lib = use_lld - builtin_sysroot = "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk" if is_darwin else "" # Calls https://github.com/bazelbuild/bazel/blob/master/tools/cpp/unix_cc_toolchain_config.bzl # Which defines the rule that actually sets up the cc toolchain. diff --git a/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel b/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel index 473c700b..e92a6b75 100644 --- a/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel +++ b/cc/toolchains/llvm/x86_64-darwin/BUILD.bazel @@ -93,6 +93,7 @@ cc_toolchain_config( name = "local-x86_64-darwin", abi_libc_version = "darwin_x86_64", abi_version = "darwin_x86_64", + builtin_sysroot = "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk", compiler = "clang", cxx_builtin_include_directories = [ "%sysroot%/usr/include", From ea5afeb289ea4d1afb5f29f3ffc46ed4383365fd Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Tue, 4 Apr 2023 11:42:58 -0600 Subject: [PATCH 17/21] format --- cc/toolchains/llvm/cc_toolchain_config.bzl | 1 - 1 file changed, 1 deletion(-) diff --git a/cc/toolchains/llvm/cc_toolchain_config.bzl b/cc/toolchains/llvm/cc_toolchain_config.bzl index 19b64956..dc6507a2 100644 --- a/cc/toolchains/llvm/cc_toolchain_config.bzl +++ b/cc/toolchains/llvm/cc_toolchain_config.bzl @@ -167,7 +167,6 @@ def cc_toolchain_config( supports_start_end_lib = use_lld - # Calls https://github.com/bazelbuild/bazel/blob/master/tools/cpp/unix_cc_toolchain_config.bzl # Which defines the rule that actually sets up the cc toolchain. unix_cc_toolchain_config( From f736bb8749b284b8c7a81bb2fc64bde5053b15e3 Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Tue, 4 Apr 2023 11:45:18 -0600 Subject: [PATCH 18/21] tidy --- cc/toolchains/llvm/BUILD.bazel | 8 -------- 1 file changed, 8 deletions(-) diff --git a/cc/toolchains/llvm/BUILD.bazel b/cc/toolchains/llvm/BUILD.bazel index cfebdefd..15894856 100644 --- a/cc/toolchains/llvm/BUILD.bazel +++ b/cc/toolchains/llvm/BUILD.bazel @@ -9,11 +9,3 @@ # WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. package(default_visibility = ["//visibility:public"]) - -filegroup( - name = "wrappers", - srcs = glob([ - "wrappers/**", - ]), - visibility = ["//visibility:public"], -) From e29c0dad38f46b5e69e0b163c94ce6150edf7dcf Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Tue, 4 Apr 2023 12:19:30 -0600 Subject: [PATCH 19/21] add support for clang tools --- clang_format/BUILD.bazel | 3 ++- clang_tidy/BUILD.bazel | 3 ++- platforms/BUILD.bazel | 36 ++++++++++++++++++++++++++++++++++++ third_party/netcdf-c.BUILD | 31 +++---------------------------- 4 files changed, 43 insertions(+), 30 deletions(-) create mode 100644 platforms/BUILD.bazel diff --git a/clang_format/BUILD.bazel b/clang_format/BUILD.bazel index 08643a56..466add66 100644 --- a/clang_format/BUILD.bazel +++ b/clang_format/BUILD.bazel @@ -19,7 +19,8 @@ choose_clang_format( filegroup( name = "_clang_format_bin", srcs = select({ - "@platforms//os:linux": ["@x86_64-linux-llvm//:clang-format"], + "//platforms:x86_64-darwin": ["@x86_64-darwin-llvm//:clang-format"], + "//platforms:x86_64-linux": ["@x86_64-linux-llvm//:clang-format"], "//conditions:default": [":clang_format_bin"], }), visibility = ["//visibility:public"], diff --git a/clang_tidy/BUILD.bazel b/clang_tidy/BUILD.bazel index e7743a45..4ae49ffd 100644 --- a/clang_tidy/BUILD.bazel +++ b/clang_tidy/BUILD.bazel @@ -27,7 +27,8 @@ filegroup( name = "clang_tidy_executable_default", srcs = select( { - "@platforms//os:linux": ["@x86_64-linux-llvm//:clang-tidy"], + "//platforms:x86_64-darwin": ["@x86_64-darwin-llvm//:clang-tidy"], + "//platforms:x86_64-linux": ["@x86_64-linux-llvm//:clang-tidy"], "//conditions:default": [":clang_tidy_bin"], }, ), diff --git a/platforms/BUILD.bazel b/platforms/BUILD.bazel new file mode 100644 index 00000000..1a2778a9 --- /dev/null +++ b/platforms/BUILD.bazel @@ -0,0 +1,36 @@ +# Copyright (C) 2022 Swift Navigation Inc. +# Contact: Swift Navigation +# +# This source is subject to the license found in the file 'LICENSE' which must +# be be distributed together with this source. All other rights reserved. +# +# THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +# EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + +load("@bazel_skylib//lib:selects.bzl", "selects") + +selects.config_setting_group( + name = "aarch64-darwin", + match_all = [ + "@platforms//cpu:aarch64", + "@platforms//os:macos", + ], +) + +selects.config_setting_group( + name = "x86_64-darwin", + match_all = [ + "@platforms//cpu:x86_64", + "@platforms//os:macos", + ], +) + +selects.config_setting_group( + name = "x86_64-linux", + match_all = [ + "@platforms//cpu:x86_64", + "@platforms//os:linux", + ], +) + diff --git a/third_party/netcdf-c.BUILD b/third_party/netcdf-c.BUILD index 161ec233..6c9d769d 100644 --- a/third_party/netcdf-c.BUILD +++ b/third_party/netcdf-c.BUILD @@ -12,7 +12,6 @@ netcdf-c@4.9.0 """ -load("@bazel_skylib//lib:selects.bzl", "selects") load("@rules_swiftnav//tools:configure_file.bzl", "configure_file") load("@rules_swiftnav//third_party/netcdf-c:aarch64-darwin-config.bzl", "AARCH64_DARWIN_CONFIG") load("@rules_swiftnav//third_party/netcdf-c:x86_64-darwin-config.bzl", "X86_64_DARWIN_CONFIG") @@ -21,30 +20,6 @@ load("@rules_swiftnav//third_party/netcdf-c:attr.bzl", "attr") load("@rules_swiftnav//third_party/netcdf-c:ncx.bzl", "ncx") load("@rules_swiftnav//third_party/netcdf-c:putget.bzl", "putget") -selects.config_setting_group( - name = "aarch64-darwin", - match_all = [ - "@platforms//cpu:aarch64", - "@platforms//os:macos", - ], -) - -selects.config_setting_group( - name = "x86_64-darwin", - match_all = [ - "@platforms//cpu:x86_64", - "@platforms//os:macos", - ], -) - -selects.config_setting_group( - name = "x86_64-linux", - match_all = [ - "@platforms//cpu:x86_64", - "@platforms//os:linux", - ], -) - configure_file( name = "netcdf_dispatch", out = "netcdf_dispatch.h", @@ -157,9 +132,9 @@ genrule( outs = ["config.h"], cmd = select( { - ":aarch64-darwin": "cat <<'EOF' > $@ {}EOF".format(AARCH64_DARWIN_CONFIG), - ":x86_64-darwin": "cat <<'EOF' > $@ {}EOF".format(X86_64_DARWIN_CONFIG), - ":x86_64-linux": "cat <<'EOF' > $@ {}EOF".format(X86_64_LINUX_CONFIG), + "@rules_swiftnav//platforms:aarch64-darwin": "cat <<'EOF' > $@ {}EOF".format(AARCH64_DARWIN_CONFIG), + "@rules_swiftnav//platforms:x86_64-darwin": "cat <<'EOF' > $@ {}EOF".format(X86_64_DARWIN_CONFIG), + "@rules_swiftnav//platforms:x86_64-linux": "cat <<'EOF' > $@ {}EOF".format(X86_64_LINUX_CONFIG), }, no_match_error = "Currently only aarch64-darwin, x86_64-darwin, and x86_64-linux are supported.", ), From 483baec826d638eab83206fc797448e40420d632 Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Tue, 4 Apr 2023 12:25:33 -0600 Subject: [PATCH 20/21] format --- platforms/BUILD.bazel | 1 - 1 file changed, 1 deletion(-) diff --git a/platforms/BUILD.bazel b/platforms/BUILD.bazel index 1a2778a9..c23eb909 100644 --- a/platforms/BUILD.bazel +++ b/platforms/BUILD.bazel @@ -33,4 +33,3 @@ selects.config_setting_group( "@platforms//os:linux", ], ) - From f1af988d6262019cf8a46df932aa098356711769 Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Wed, 5 Apr 2023 11:24:56 -0600 Subject: [PATCH 21/21] just add a comment --- cc/toolchains/llvm/cc_toolchain_config.bzl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cc/toolchains/llvm/cc_toolchain_config.bzl b/cc/toolchains/llvm/cc_toolchain_config.bzl index dc6507a2..e13145a3 100644 --- a/cc/toolchains/llvm/cc_toolchain_config.bzl +++ b/cc/toolchains/llvm/cc_toolchain_config.bzl @@ -86,6 +86,9 @@ def cc_toolchain_config( use_lld = False link_flags.extend([ "-headerpad_max_install_names", + # This will issue a warning on macOS ventura; see: + # https://github.com/python/cpython/issues/97524 + # https://developer.apple.com/forums/thread/719961 "-undefined", "dynamic_lookup", ])