• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1load("//cc/toolchains:args.bzl", "cc_args")
2load("//cc/toolchains:args_list.bzl", "cc_args_list")
3load("//cc/toolchains:nested_args.bzl", "cc_nested_args")
4
5package(default_visibility = ["//visibility:private"])
6
7cc_args_list(
8    name = "archiver_flags",
9    args = [
10        ":create_static_archive",
11        ":output_execpath",
12        ":libraries_to_link",
13    ],
14    visibility = ["//visibility:public"],
15)
16
17cc_args(
18    name = "create_static_archive",
19    actions = ["//cc/toolchains/actions:ar_actions"],
20    args = select({
21        "@platforms//os:macos": ["-static"],
22        "//conditions:default": ["rcsD"],
23    }),
24)
25
26cc_args(
27    name = "output_execpath",
28    actions = ["//cc/toolchains/actions:ar_actions"],
29    args = select({
30        "@platforms//os:macos": ["-o"],
31        "//conditions:default": [],
32    }) + ["{output_execpath}"],
33    format = {"output_execpath": "//cc/toolchains/variables:output_execpath"},
34    requires_not_none = "//cc/toolchains/variables:output_execpath",
35)
36
37cc_args(
38    name = "libraries_to_link",
39    actions = ["//cc/toolchains/actions:ar_actions"],
40    nested = ["libraries_to_link_expansion"],
41    requires_not_none = "//cc/toolchains/variables:libraries_to_link",
42)
43
44cc_nested_args(
45    name = "libraries_to_link_expansion",
46    iterate_over = "//cc/toolchains/variables:libraries_to_link",
47    nested = [
48        ":link_obj_file",
49        ":link_object_file_group",
50    ],
51)
52
53cc_nested_args(
54    name = "link_obj_file",
55    args = ["{object_file}"],
56    format = {"object_file": "//cc/toolchains/variables:libraries_to_link.name"},
57    requires_equal = "//cc/toolchains/variables:libraries_to_link.type",
58    requires_equal_value = "object_file",
59)
60
61cc_nested_args(
62    name = "link_object_file_group",
63    args = ["{object_files}"],
64    format = {"object_files": "//cc/toolchains/variables:libraries_to_link.object_files"},
65    iterate_over = "//cc/toolchains/variables:libraries_to_link.object_files",
66    requires_equal = "//cc/toolchains/variables:libraries_to_link.type",
67    requires_equal_value = "object_file_group",
68)
69