1load("@rules_cc//cc/toolchains:args.bzl", "cc_args") 2load("@rules_cc//cc/toolchains:args_list.bzl", "cc_args_list") 3load("@rules_cc//cc/toolchains:feature.bzl", "cc_feature") 4 5def configurable_toolchain_feature(name, copts = [], cxxopts = [], linkopts = []): 6 7 all_args = [] 8 9 if copts: 10 cc_args( 11 name = name + "_cc_args", 12 actions = ["@rules_cc//cc/toolchains/actions:compile_actions"], 13 args = copts, 14 ) 15 all_args.append(name + "_cc_args") 16 17 if cxxopts: 18 cc_args( 19 name = name + "_cxx_args", 20 actions = ["@rules_cc//cc/toolchains/actions:cpp_compile_actions"], 21 args = cxxopts, 22 ) 23 all_args.append(name + "_cxx_args") 24 25 if linkopts: 26 cc_args( 27 name = name + "_link_args", 28 actions = ["@rules_cc//cc/toolchains/actions:link_actions"], 29 args = linkopts, 30 ) 31 all_args.append(name + "_link_args") 32 33 cc_args_list( 34 name = name + "_args", 35 args = all_args, 36 ) 37 38 cc_feature( 39 name = name, 40 feature_name = name, 41 args = [":{}_args".format(name)], 42 ) 43