• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Internal Starlark definitions for Protobuf.
2
3load("@bazel_skylib//lib:selects.bzl", "selects")
4load("@rules_pkg//pkg:mappings.bzl", "pkg_files", "strip_prefix")
5load("//bazel:cc_proto_library.bzl", starlark_cc_proto_library = "cc_proto_library")
6load(":cc_proto_blacklist_test.bzl", "cc_proto_blacklist_test")
7load(":compiler_config_setting.bzl", "create_compiler_config_setting")
8
9package(
10    default_visibility = [
11        # Public, but Protobuf only visibility.
12        "//:__subpackages__",
13    ],
14)
15
16create_compiler_config_setting(
17    name = "config_msvc_cl",
18    value = "msvc-cl",
19)
20
21# Caveat: clang-cl support in protobuf is only best-effort / untested for now.
22create_compiler_config_setting(
23    name = "config_clang_cl",
24    value = "clang-cl",
25)
26
27selects.config_setting_group(
28    name = "config_msvc",
29    match_any = [
30        ":config_clang_cl",
31        ":config_msvc_cl",
32    ],
33)
34
35config_setting(
36    name = "aarch64",
37    values = {"cpu": "linux-aarch_64"},
38)
39
40config_setting(
41    name = "x86_64",
42    values = {"cpu": "linux-x86_64"},
43)
44
45# Android NDK builds can specify different crosstool_top flags to choose which
46# STL they use for C++. We need these multiple variants to catch all of those
47# versions of crosstool_top and reliably detect Android.
48#
49# For more info on the various crosstool_tops used by NDK Bazel builds, see:
50# https://docs.bazel.build/versions/master/android-ndk.html#configuring-the-stl
51
52# When using https://bazel.build/concepts/platforms
53config_setting(
54    name = "config_android",
55    constraint_values = ["@platforms//os:android"],
56)
57
58# When using legacy flags like --android_crosstool_top, --android_cpu, and --fat_apk_cpu
59config_setting(
60    name = "config_android-legacy-default-crosstool",
61    values = {
62        # Default of `--android_crosstool_top`
63        "crosstool_top": "//external:android/crosstool",
64    },
65)
66
67config_setting(
68    name = "config_android-stlport",
69    values = {
70        "crosstool_top": "@androidndk//:toolchain-stlport",
71    },
72)
73
74config_setting(
75    name = "config_android-libcpp",
76    values = {
77        "crosstool_top": "@androidndk//:toolchain-libcpp",
78    },
79)
80
81config_setting(
82    name = "config_android-gnu-libstdcpp",
83    values = {
84        "crosstool_top": "@androidndk//:toolchain-gnu-libstdcpp",
85    },
86)
87
88config_setting(
89    name = "config_android-default",
90    values = {
91        "crosstool_top": "@androidndk//:default_crosstool",
92    },
93)
94
95config_setting(
96    name = "config_win32",
97    values = {
98        "cpu": "win32",
99    },
100)
101
102config_setting(
103    name = "config_win64",
104    values = {
105        "cpu": "win64",
106    },
107)
108
109selects.config_setting_group(
110    name = "config_win",
111    match_any = [
112        ":config_win32",
113        ":config_win64",
114    ],
115)
116
117config_setting(
118    name = "config_osx_aarch64",
119    values = {"cpu": "osx-aarch_64"},
120)
121
122config_setting(
123    name = "config_osx_x86_64",
124    values = {"cpu": "osx-x86_64"},
125)
126
127selects.config_setting_group(
128    name = "config_osx",
129    match_any = [
130        ":config_osx_aarch64",
131        ":config_osx_x86_64",
132    ],
133)
134
135# Internal testing:
136
137starlark_cc_proto_library(
138    name = "any_cc_proto",
139    visibility = ["//visibility:private"],
140    deps = ["//:any_proto"],
141)
142
143starlark_cc_proto_library(
144    name = "api_cc_proto",
145    visibility = ["//visibility:private"],
146    deps = ["//:api_proto"],
147)
148
149starlark_cc_proto_library(
150    name = "compiler_plugin_cc_proto",
151    visibility = ["//visibility:private"],
152    deps = ["//:compiler_plugin_proto"],
153)
154
155starlark_cc_proto_library(
156    name = "descriptor_cc_proto",
157    visibility = ["//visibility:private"],
158    deps = ["//:descriptor_proto"],
159)
160
161starlark_cc_proto_library(
162    name = "duration_cc_proto",
163    visibility = ["//visibility:private"],
164    deps = ["//:duration_proto"],
165)
166
167starlark_cc_proto_library(
168    name = "empty_cc_proto",
169    visibility = ["//visibility:private"],
170    deps = ["//:empty_proto"],
171)
172
173starlark_cc_proto_library(
174    name = "field_mask_cc_proto",
175    visibility = ["//visibility:private"],
176    deps = ["//:field_mask_proto"],
177)
178
179starlark_cc_proto_library(
180    name = "source_context_cc_proto",
181    visibility = ["//visibility:private"],
182    deps = ["//:source_context_proto"],
183)
184
185starlark_cc_proto_library(
186    name = "struct_cc_proto",
187    visibility = ["//visibility:private"],
188    deps = ["//:struct_proto"],
189)
190
191starlark_cc_proto_library(
192    name = "timestamp_cc_proto",
193    visibility = ["//visibility:private"],
194    deps = ["//:timestamp_proto"],
195)
196
197starlark_cc_proto_library(
198    name = "type_cc_proto",
199    visibility = ["//visibility:private"],
200    deps = ["//:type_proto"],
201)
202
203starlark_cc_proto_library(
204    name = "wrappers_cc_proto",
205    visibility = ["//visibility:private"],
206    deps = ["//:wrappers_proto"],
207)
208
209cc_proto_blacklist_test(
210    name = "cc_proto_blacklist_test",
211    deps = [
212        ":any_cc_proto",
213        ":api_cc_proto",
214        ":compiler_plugin_cc_proto",
215        ":descriptor_cc_proto",
216        ":duration_cc_proto",
217        ":empty_cc_proto",
218        ":field_mask_cc_proto",
219        ":source_context_cc_proto",
220        ":struct_cc_proto",
221        ":timestamp_cc_proto",
222        ":type_cc_proto",
223        ":wrappers_cc_proto",
224    ],
225)
226
227pkg_files(
228    name = "dist_files",
229    srcs = glob(["*"]),
230    strip_prefix = strip_prefix.from_root(""),
231    visibility = ["//pkg:__pkg__"],
232)
233