xref: /aosp_15_r20/external/bazelbuild-rules_python/python/config_settings/BUILD.bazel (revision 60517a1edbc8ecf509223e9af94a7adec7d736b8)
1load("@bazel_skylib//rules:common_settings.bzl", "string_flag")
2load("//python:versions.bzl", "MINOR_MAPPING", "TOOL_VERSIONS")
3load(
4    "//python/private:flags.bzl",
5    "BootstrapImplFlag",
6    "ExecToolsToolchainFlag",
7    "PrecompileAddToRunfilesFlag",
8    "PrecompileFlag",
9    "PrecompileSourceRetentionFlag",
10    "PycCollectionFlag",
11)
12load(
13    "//python/private/pypi:flags.bzl",
14    "UniversalWhlFlag",
15    "UseWhlFlag",
16    "WhlLibcFlag",
17    "define_pypi_internal_flags",
18)
19load(":config_settings.bzl", "construct_config_settings")
20
21filegroup(
22    name = "distribution",
23    srcs = glob(["**"]) + [
24        "//python/config_settings/private:distribution",
25    ],
26    visibility = ["//python:__pkg__"],
27)
28
29construct_config_settings(
30    name = "construct_config_settings",
31    minor_mapping = MINOR_MAPPING,
32    versions = TOOL_VERSIONS.keys(),
33)
34
35string_flag(
36    name = "exec_tools_toolchain",
37    build_setting_default = ExecToolsToolchainFlag.DISABLED,
38    values = sorted(ExecToolsToolchainFlag.__members__.values()),
39    # NOTE: Only public because it is used in py_toolchain_suite from toolchain
40    # repositories
41    visibility = ["//visibility:private"],
42)
43
44config_setting(
45    name = "is_exec_tools_toolchain_enabled",
46    flag_values = {
47        "exec_tools_toolchain": ExecToolsToolchainFlag.ENABLED,
48    },
49    # NOTE: Only public because it is used in py_toolchain_suite from toolchain
50    # repositories
51    visibility = ["//visibility:public"],
52)
53
54string_flag(
55    name = "precompile",
56    build_setting_default = PrecompileFlag.AUTO,
57    values = sorted(PrecompileFlag.__members__.values()),
58    # NOTE: Only public because it's an implicit dependency
59    visibility = ["//visibility:public"],
60)
61
62string_flag(
63    name = "precompile_source_retention",
64    build_setting_default = PrecompileSourceRetentionFlag.AUTO,
65    values = sorted(PrecompileSourceRetentionFlag.__members__.values()),
66    # NOTE: Only public because it's an implicit dependency
67    visibility = ["//visibility:public"],
68)
69
70string_flag(
71    name = "precompile_add_to_runfiles",
72    build_setting_default = PrecompileAddToRunfilesFlag.ALWAYS,
73    values = sorted(PrecompileAddToRunfilesFlag.__members__.values()),
74    # NOTE: Only public because it's an implicit dependency
75    visibility = ["//visibility:public"],
76)
77
78string_flag(
79    name = "pyc_collection",
80    build_setting_default = PycCollectionFlag.DISABLED,
81    values = sorted(PycCollectionFlag.__members__.values()),
82    # NOTE: Only public because it's an implicit dependency
83    visibility = ["//visibility:public"],
84)
85
86string_flag(
87    name = "bootstrap_impl",
88    build_setting_default = BootstrapImplFlag.SYSTEM_PYTHON,
89    values = sorted(BootstrapImplFlag.__members__.values()),
90    # NOTE: Only public because it's an implicit dependency
91    visibility = ["//visibility:public"],
92)
93
94# This is used for pip and hermetic toolchain resolution.
95string_flag(
96    name = "py_linux_libc",
97    build_setting_default = WhlLibcFlag.GLIBC,
98    values = sorted(WhlLibcFlag.__members__.values()),
99    # NOTE: Only public because it is used in pip hub and toolchain repos.
100    visibility = ["//visibility:public"],
101)
102
103# pip.parse related flags
104
105string_flag(
106    name = "pip_whl",
107    build_setting_default = UseWhlFlag.AUTO,
108    values = sorted(UseWhlFlag.__members__.values()),
109    # NOTE: Only public because it is used in pip hub repos.
110    visibility = ["//visibility:public"],
111)
112
113config_setting(
114    name = "is_pip_whl_auto",
115    flag_values = {
116        ":pip_whl": UseWhlFlag.AUTO,
117    },
118    # NOTE: Only public because it is used in pip hub repos.
119    visibility = ["//visibility:public"],
120)
121
122config_setting(
123    name = "is_pip_whl_no",
124    flag_values = {
125        ":pip_whl": UseWhlFlag.NO,
126    },
127    # NOTE: Only public because it is used in pip hub repos.
128    visibility = ["//visibility:public"],
129)
130
131config_setting(
132    name = "is_pip_whl_only",
133    flag_values = {
134        ":pip_whl": UseWhlFlag.ONLY,
135    },
136    # NOTE: Only public because it is used in pip hub repos.
137    visibility = ["//visibility:public"],
138)
139
140string_flag(
141    name = "pip_whl_osx_arch",
142    build_setting_default = UniversalWhlFlag.ARCH,
143    values = sorted(UniversalWhlFlag.__members__.values()),
144    # NOTE: Only public because it is used in pip hub repos.
145    visibility = ["//visibility:public"],
146)
147
148string_flag(
149    name = "pip_whl_glibc_version",
150    build_setting_default = "",
151    # NOTE: Only public because it is used in pip hub repos.
152    visibility = ["//visibility:public"],
153)
154
155string_flag(
156    name = "pip_whl_muslc_version",
157    build_setting_default = "",
158    # NOTE: Only public because it is used in pip hub repos.
159    visibility = ["//visibility:public"],
160)
161
162string_flag(
163    name = "pip_whl_osx_version",
164    build_setting_default = "",
165    # NOTE: Only public because it is used in pip hub repos.
166    visibility = ["//visibility:public"],
167)
168
169define_pypi_internal_flags(
170    name = "define_pypi_internal_flags",
171)
172