load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES") load( "@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl", "feature", "flag_group", "flag_set", "tool_path", ) all_link_actions = [ ACTION_NAMES.cpp_link_executable, ACTION_NAMES.cpp_link_dynamic_library, ACTION_NAMES.cpp_link_nodeps_dynamic_library, ] # Relevant documentation: # - https://bazel.build/rules/lib/providers/CcToolchainInfo # - https://bazel.build/rules/lib/toplevel/cc_common#create_cc_toolchain_config_info # - https://bazel.build/tutorials/ccp-toolchain-config def _impl(ctx): tool_paths = [ tool_path( name = "gcc", path = "/usr/bin/clang-%d" % ctx.attr.version, ), tool_path( name = "ld", path = "/usr/bin/ld", ), tool_path( name = "ar", path = "/usr/bin/ar", ), tool_path( name = "cpp", path = "/bin/false", ), tool_path( name = "gcov", path = "/bin/false", ), tool_path( name = "nm", path = "/bin/false", ), tool_path( name = "objdump", path = "/bin/false", ), tool_path( name = "strip", path = "/bin/false", ), ] features = [ feature( name = "default_linker_flags", enabled = True, flag_sets = [ flag_set( actions = [ACTION_NAMES.cpp_compile, ACTION_NAMES.c_compile], flag_groups = ([ flag_group( flags = [ "-fPIC", ], ), ]), ), flag_set( actions = all_link_actions, flag_groups = ([ flag_group( flags = [ "-lm", "-lstdc++", ], ), ]), ), ], ), ] return cc_common.create_cc_toolchain_config_info( ctx = ctx, features = features, cxx_builtin_include_directories = [ "/usr/include", "/usr/lib/clang/%d" % ctx.attr.version, "/usr/lib/llvm-%d/lib/clang/" % ctx.attr.version, ], toolchain_identifier = "local", host_system_name = "local", target_system_name = "local", target_cpu = "k8", target_libc = "unknown", compiler = "clang", abi_version = "unknown", abi_libc_version = "unknown", tool_paths = tool_paths, ) # Relevant documentation: # - https://bazel.build/rules/lib/globals/bzl.html#rule # - https://bazel.build/rules/lib/toplevel/attr.html#int linux_local_clang_toolchain_config = rule( implementation = _impl, attrs = { "version": attr.int(mandatory = True), }, provides = [CcToolchainConfigInfo], )