From 264a0c3f19c292b83aeaf070dde650fd41c0b271 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Tue, 13 Jun 2023 14:29:00 +0200 Subject: [PATCH 1/6] cc: toolchain: Add x86_64 sysroot [CLARM-39] --- cc/BUILD.bazel | 12 +++++ cc/repositories.bzl | 15 +++++++ cc/toolchains/llvm/x86_64-linux/BUILD.bazel | 49 ++++++++++++++++----- 3 files changed, 65 insertions(+), 11 deletions(-) diff --git a/cc/BUILD.bazel b/cc/BUILD.bazel index 2a91fa83..4383b13a 100644 --- a/cc/BUILD.bazel +++ b/cc/BUILD.bazel @@ -94,3 +94,15 @@ config_setting( flag_values = {":cxx_standard": "23"}, visibility = ["//visibility:public"], ) + +bool_flag( + name = "enable_sysroot", + build_setting_default = False, + visibility = ["//visibility:public"], +) + +config_setting( + name = "_enable_sysroot", + flag_values = {":enable_sysroot": "true"}, + visibility = ["//visibility:public"], +) diff --git a/cc/repositories.bzl b/cc/repositories.bzl index b5733582..e1828dbf 100644 --- a/cc/repositories.bzl +++ b/cc/repositories.bzl @@ -69,6 +69,21 @@ filegroup( url = "https://github.com/swift-nav/swift-toolchains/releases/download/bullseye-aarch64-sysroot-v1/debian_bullseye_aarch64_sysroot.tar.xz", ) +def x86_64_sysroot(): + maybe( + http_archive, + name = "x86_64-sysroot", + # sha256 = "9bd27c7ec6aa4bd3d4df60cd04228669bcf366aec32d4b4dc7b504de2f63121e", + build_file_content = """ +filegroup( + name = "x86_64-sysroot", + srcs = glob(["*/**"]), + visibility = ["//visibility:public"], +) + """, + url = "https://github.com/swift-nav/swift-toolchains/releases/download/bullseye-x86_64-sysroot-v1/debian_bullseye_x86_64_sysroot.tar.xz", + ) + def register_swift_cc_toolchains(): native.register_toolchains("@rules_swiftnav//cc/toolchains/llvm/aarch64-darwin:cc-toolchain-aarch64-darwin") native.register_toolchains("@rules_swiftnav//cc/toolchains/llvm/x86_64-darwin:cc-toolchain-x86_64-darwin") diff --git a/cc/toolchains/llvm/x86_64-linux/BUILD.bazel b/cc/toolchains/llvm/x86_64-linux/BUILD.bazel index 5cad9056..28035904 100644 --- a/cc/toolchains/llvm/x86_64-linux/BUILD.bazel +++ b/cc/toolchains/llvm/x86_64-linux/BUILD.bazel @@ -12,6 +12,7 @@ package(default_visibility = ["//visibility:public"]) load("//cc/toolchains/llvm:cc_toolchain_config.bzl", "cc_toolchain_config") load("//cc/toolchains/llvm:target_triplets.bzl", "X86_64_LINUX") +load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "string_flag") filegroup( name = "wrappers", @@ -26,7 +27,10 @@ filegroup( srcs = [ ":wrappers", "@x86_64-linux-llvm//:ar", - ], + ] + select({ + "//cc:_enable_sysroot": ["@x86_64-sysroot"], + "//conditions:default": [], + }), ) filegroup( @@ -34,7 +38,10 @@ filegroup( srcs = [ ":wrappers", "@x86_64-linux-llvm//:as", - ], + ] + select({ + "//cc:_enable_sysroot": ["@x86_64-sysroot"], + "//conditions:default": [], + }), ) filegroup( @@ -43,7 +50,10 @@ filegroup( ":wrappers", "@x86_64-linux-llvm//:clang", "@x86_64-linux-llvm//:include", - ], + ] + select({ + "//cc:_enable_sysroot": ["@x86_64-sysroot"], + "//conditions:default": [], + }), ) filegroup( @@ -51,7 +61,10 @@ filegroup( srcs = [ ":wrappers", "@x86_64-linux-llvm//:dwp", - ], + ] + select({ + "//cc:_enable_sysroot": ["@x86_64-sysroot"], + "//conditions:default": [], + }), ) filegroup( @@ -62,7 +75,10 @@ filegroup( "@x86_64-linux-llvm//:clang", "@x86_64-linux-llvm//:ld", "@x86_64-linux-llvm//:lib", - ], + ] + select({ + "//cc:_enable_sysroot": ["@x86_64-sysroot"], + "//conditions:default": [], + }), ) filegroup( @@ -70,6 +86,7 @@ filegroup( srcs = [ ":wrappers", "@x86_64-linux-llvm//:objcopy", + "@x86_64-sysroot", ], ) @@ -87,19 +104,29 @@ filegroup( "linker_files", ":compiler_files", "@x86_64-linux-llvm//:bin", - ], + ] + select({ + "//cc:_enable_sysroot": ["@x86_64-sysroot"], + "//conditions:default": [], + }), ) cc_toolchain_config( name = "local-x86_64-linux", abi_libc_version = "glibc_unknown", abi_version = "clang", + builtin_sysroot = select({ + "//cc:_enable_sysroot": "external/x86_64-sysroot", + "//conditions:default": None, + }), compiler = "clang", - cxx_builtin_include_directories = [ - "/include", - "/usr/include", - "/usr/local/include", - ], + cxx_builtin_include_directories = select({ + "//cc:_enable_sysroot": ["%sysroot%/usr/include"], + "//conditions:default": [ + "/include", + "/usr/include", + "/usr/local/include", + ], + }), host_system_name = X86_64_LINUX, target_cpu = "k8", target_libc = "glibc_unknown", From 8945b6c6b57c8c2474c9dca5053a0fe16a49e865 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Tue, 13 Jun 2023 16:10:15 +0200 Subject: [PATCH 2/6] Remove unnecessary load --- cc/toolchains/llvm/x86_64-linux/BUILD.bazel | 1 - 1 file changed, 1 deletion(-) diff --git a/cc/toolchains/llvm/x86_64-linux/BUILD.bazel b/cc/toolchains/llvm/x86_64-linux/BUILD.bazel index 28035904..500dff1e 100644 --- a/cc/toolchains/llvm/x86_64-linux/BUILD.bazel +++ b/cc/toolchains/llvm/x86_64-linux/BUILD.bazel @@ -12,7 +12,6 @@ package(default_visibility = ["//visibility:public"]) load("//cc/toolchains/llvm:cc_toolchain_config.bzl", "cc_toolchain_config") load("//cc/toolchains/llvm:target_triplets.bzl", "X86_64_LINUX") -load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "string_flag") filegroup( name = "wrappers", From d61c4e2a55e1490d4c1ad37cd18e2c8a1e106480 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Tue, 13 Jun 2023 16:31:02 +0200 Subject: [PATCH 3/6] Use bundled libc++ when builtin sysroot is defined --- cc/toolchains/llvm/cc_toolchain_config.bzl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cc/toolchains/llvm/cc_toolchain_config.bzl b/cc/toolchains/llvm/cc_toolchain_config.bzl index 41d9da1f..0f4bf5f7 100644 --- a/cc/toolchains/llvm/cc_toolchain_config.bzl +++ b/cc/toolchains/llvm/cc_toolchain_config.bzl @@ -35,7 +35,7 @@ def cc_toolchain_config( if not is_target_triplet(target_system_name): fail(target_system_name + " is not a target tripplet") - cross_compile = host_system_name != target_system_name + use_bundled_libcpp = builtin_sysroot != None # Default compiler flags: compile_flags = [ @@ -82,7 +82,7 @@ def cc_toolchain_config( # The whole codebase should build with c++14 "-std=c++14", # Use bundled libc++ for hermeticity if not cross compiling - ] + ["-stdlib=libstdc++"] if cross_compile else ["-stdlib=libc++"] + ] + ["-stdlib=libstdc++"] if use_bundled_libcpp else ["-stdlib=libc++"] link_flags = [ "--target=" + target_system_name, @@ -124,7 +124,7 @@ def cc_toolchain_config( "-ldl", ]) - if cross_compile: + if use_bundled_libcpp: link_flags.extend([ # Use libstdc++ from the sysroot when cross compiling "-l:libstdc++.a", From 34f35144bdd808e4de1d8fa132b1617022cea79d Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Thu, 15 Jun 2023 19:46:07 +0200 Subject: [PATCH 4/6] Review --- cc/toolchains/llvm/cc_toolchain_config.bzl | 2 +- cc/toolchains/llvm/x86_64-linux/BUILD.bazel | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/cc/toolchains/llvm/cc_toolchain_config.bzl b/cc/toolchains/llvm/cc_toolchain_config.bzl index 0f4bf5f7..6331b33b 100644 --- a/cc/toolchains/llvm/cc_toolchain_config.bzl +++ b/cc/toolchains/llvm/cc_toolchain_config.bzl @@ -35,7 +35,7 @@ def cc_toolchain_config( if not is_target_triplet(target_system_name): fail(target_system_name + " is not a target tripplet") - use_bundled_libcpp = builtin_sysroot != None + use_bundled_libcpp = builtin_sysroot != None and not is_darwin # Default compiler flags: compile_flags = [ diff --git a/cc/toolchains/llvm/x86_64-linux/BUILD.bazel b/cc/toolchains/llvm/x86_64-linux/BUILD.bazel index 500dff1e..408e9cdb 100644 --- a/cc/toolchains/llvm/x86_64-linux/BUILD.bazel +++ b/cc/toolchains/llvm/x86_64-linux/BUILD.bazel @@ -85,8 +85,10 @@ filegroup( srcs = [ ":wrappers", "@x86_64-linux-llvm//:objcopy", - "@x86_64-sysroot", - ], + ] + select({ + "//cc:_enable_sysroot": ["@x86_64-sysroot"], + "//conditions:default": [], + }), ) filegroup( From 41912cd6b5dabecd571a1305e7791f40d4c4a0ee Mon Sep 17 00:00:00 2001 From: Isaac Torres Date: Thu, 15 Jun 2023 14:27:13 -0600 Subject: [PATCH 5/6] fix variable name --- cc/toolchains/llvm/cc_toolchain_config.bzl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cc/toolchains/llvm/cc_toolchain_config.bzl b/cc/toolchains/llvm/cc_toolchain_config.bzl index 6331b33b..c3b10291 100644 --- a/cc/toolchains/llvm/cc_toolchain_config.bzl +++ b/cc/toolchains/llvm/cc_toolchain_config.bzl @@ -35,7 +35,7 @@ def cc_toolchain_config( if not is_target_triplet(target_system_name): fail(target_system_name + " is not a target tripplet") - use_bundled_libcpp = builtin_sysroot != None and not is_darwin + use_libstdcpp = builtin_sysroot != None and not is_darwin # Default compiler flags: compile_flags = [ @@ -82,7 +82,7 @@ def cc_toolchain_config( # The whole codebase should build with c++14 "-std=c++14", # Use bundled libc++ for hermeticity if not cross compiling - ] + ["-stdlib=libstdc++"] if use_bundled_libcpp else ["-stdlib=libc++"] + ] + ["-stdlib=libstdc++"] if use_libstdcpp else ["-stdlib=libc++"] link_flags = [ "--target=" + target_system_name, @@ -124,7 +124,7 @@ def cc_toolchain_config( "-ldl", ]) - if use_bundled_libcpp: + if use_libstdcpp: link_flags.extend([ # Use libstdc++ from the sysroot when cross compiling "-l:libstdc++.a", From 8e751ca20af0a4a017a3105db97cbba720bc9706 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Fri, 16 Jun 2023 11:39:10 +0200 Subject: [PATCH 6/6] Update checksum --- cc/repositories.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cc/repositories.bzl b/cc/repositories.bzl index e1828dbf..266eda2a 100644 --- a/cc/repositories.bzl +++ b/cc/repositories.bzl @@ -73,7 +73,7 @@ def x86_64_sysroot(): maybe( http_archive, name = "x86_64-sysroot", - # sha256 = "9bd27c7ec6aa4bd3d4df60cd04228669bcf366aec32d4b4dc7b504de2f63121e", + sha256 = "a19dd3fe4a61d0e1a18f197be1b0c9a2a06b1deabaff2f1479cfcc2cb0df85d1", build_file_content = """ filegroup( name = "x86_64-sysroot",