4d41304def
This can successfully build a C library: bazel build --config=clang //third_party:libpng This can build and run a statically-linked executable: bazel test --config=clang //:bazel_test For more verbose compile and linking output, add the `--features diagnostic` flag to a Bazel command (see _make_diagnostic_flags() in toolchain/clang_toolchain_config.bzl. Similarly, a `--features print_search_dirs` can be used to show where clang is looking for libraries etc to link against. These features are made available for easier debugging. Suggested review order: - Read https://docs.bazel.build/versions/4.2.1/tutorial/cc-toolchain-config.html if unfamiliar with setting up C++ toolchains in Bazel - .bazelrc and WORKSPACE.bazel that configure use and download of the toolchain (Clang 13, musl 1.2.2) - toolchain/build_toolchain.bzl which downloads and assembles the toolchain (w/o installing anything on the host machine) - toolchain/BUILD.bazel and toolchain/*trampoline.sh to see the setup of the toolchain rules. - toolchain/clang_toolchain_config.bzl to see the configuration of the toolchain. Pay special attention to the various command line flags that are set. - See that tools/bazel_test.cc has made a new home in experimental/bazel_test/bazel_test.cpp, with a companion BUILD.bazel. Note the addition of some function calls that test use of the C++ standard library. The number being used to test the PNG library is the latest and greatest that verifies we are compiling the one brought in via DEPS (and not a local one). - third_party/* to see how png (and its dependent zlib) have been built. Pay special attention to the musl_compat hack to fix static linking (any idea what the real cause is?) - //BUILD.bazel to see definition of the bazel_test executable. Change-Id: I7b0922d0d45cb9be8df2fd5fa5a1f48492654d5f Bug: skia:12541 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/461178 Reviewed-by: Ben Wagner <bungeman@google.com> Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
42 lines
1.0 KiB
Python
42 lines
1.0 KiB
Python
load("@rules_cc//cc:defs.bzl", "cc_toolchain", "cc_toolchain_suite")
|
|
load(":clang_toolchain_config.bzl", "provide_clang_toolchain_config")
|
|
|
|
package(default_visibility = ["//visibility:public"])
|
|
|
|
cc_toolchain_suite(
|
|
name = "clang_suite",
|
|
toolchains = {
|
|
"k8|clang": ":clang_toolchain",
|
|
},
|
|
)
|
|
|
|
filegroup(name = "not_implemented")
|
|
|
|
filegroup(
|
|
name = "all-toolchain-files",
|
|
srcs = [
|
|
"ar_trampoline.sh",
|
|
"clang_trampoline.sh",
|
|
"lld_trampoline.sh",
|
|
"@clang_linux_amd64_musl//:all_files",
|
|
],
|
|
)
|
|
|
|
provide_clang_toolchain_config(
|
|
name = "clang_toolchain_config",
|
|
)
|
|
|
|
cc_toolchain(
|
|
name = "clang_toolchain",
|
|
all_files = ":all-toolchain-files",
|
|
ar_files = ":all-toolchain-files",
|
|
compiler_files = ":all-toolchain-files",
|
|
dwp_files = ":not_implemented",
|
|
linker_files = ":all-toolchain-files",
|
|
objcopy_files = ":not_implemented",
|
|
strip_files = ":not_implemented",
|
|
supports_param_files = 0,
|
|
toolchain_config = ":clang_toolchain_config",
|
|
toolchain_identifier = "clang-toolchain",
|
|
)
|