blob: a5d831c9a8adf028cdab56009dceb98126e0df71 [file] [log] [blame]
David L. Jones52655b12022-05-06 12:11:46 -07001# Internal Starlark definitions for Protobuf.
2
3load("@rules_cc//cc:defs.bzl", starlark_cc_proto_library = "cc_proto_library")
4load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix")
5load(":cc_proto_blacklist_test.bzl", "cc_proto_blacklist_test")
6load(":compiler_config_setting.bzl", "create_compiler_config_setting")
7
8package(
9 default_visibility = [
10 # Public, but Protobuf only visibility.
11 "//:__subpackages__",
12 ],
13)
14
15create_compiler_config_setting(
16 name = "config_msvc",
17 value = "msvc-cl",
18)
19
20# Android NDK builds can specify different crosstool_top flags to choose which
21# STL they use for C++. We need these multiple variants to catch all of those
22# versions of crosstool_top and reliably detect Android.
23#
24# For more info on the various crosstool_tops used by NDK Bazel builds, see:
25# https://docs.bazel.build/versions/master/android-ndk.html#configuring-the-stl
26
27config_setting(
28 name = "config_android",
29 values = {
30 "crosstool_top": "//external:android/crosstool",
31 },
32)
33
34config_setting(
35 name = "config_android-stlport",
36 values = {
37 "crosstool_top": "@androidndk//:toolchain-stlport",
38 },
39)
40
41config_setting(
42 name = "config_android-libcpp",
43 values = {
44 "crosstool_top": "@androidndk//:toolchain-libcpp",
45 },
46)
47
48config_setting(
49 name = "config_android-gnu-libstdcpp",
50 values = {
51 "crosstool_top": "@androidndk//:toolchain-gnu-libstdcpp",
52 },
53)
54
55config_setting(
56 name = "config_android-default",
57 values = {
58 "crosstool_top": "@androidndk//:default_crosstool",
59 },
60)
61
Joshua Haberman2dc76792022-05-23 20:59:31 +000062config_setting(
63 name = "config_win32",
64 values = {
65 "cpu": "win32",
66 },
67)
68
69config_setting(
70 name = "config_win64",
71 values = {
72 "cpu": "win64",
73 },
74)
75
David L. Jones52655b12022-05-06 12:11:46 -070076# Internal testing:
77
78starlark_cc_proto_library(
79 name = "any_cc_proto",
80 visibility = ["//visibility:private"],
81 deps = ["//:any_proto"],
82)
83
84starlark_cc_proto_library(
85 name = "api_cc_proto",
86 visibility = ["//visibility:private"],
87 deps = ["//:api_proto"],
88)
89
90starlark_cc_proto_library(
91 name = "compiler_plugin_cc_proto",
92 visibility = ["//visibility:private"],
93 deps = ["//:compiler_plugin_proto"],
94)
95
96starlark_cc_proto_library(
97 name = "descriptor_cc_proto",
98 visibility = ["//visibility:private"],
99 deps = ["//:descriptor_proto"],
100)
101
102starlark_cc_proto_library(
103 name = "duration_cc_proto",
104 visibility = ["//visibility:private"],
105 deps = ["//:duration_proto"],
106)
107
108starlark_cc_proto_library(
109 name = "empty_cc_proto",
110 visibility = ["//visibility:private"],
111 deps = ["//:empty_proto"],
112)
113
114starlark_cc_proto_library(
115 name = "field_mask_cc_proto",
116 visibility = ["//visibility:private"],
117 deps = ["//:field_mask_proto"],
118)
119
120starlark_cc_proto_library(
121 name = "source_context_cc_proto",
122 visibility = ["//visibility:private"],
123 deps = ["//:source_context_proto"],
124)
125
126starlark_cc_proto_library(
127 name = "struct_cc_proto",
128 visibility = ["//visibility:private"],
129 deps = ["//:struct_proto"],
130)
131
132starlark_cc_proto_library(
133 name = "timestamp_cc_proto",
134 visibility = ["//visibility:private"],
135 deps = ["//:timestamp_proto"],
136)
137
138starlark_cc_proto_library(
139 name = "type_cc_proto",
140 visibility = ["//visibility:private"],
141 deps = ["//:type_proto"],
142)
143
144starlark_cc_proto_library(
145 name = "wrappers_cc_proto",
146 visibility = ["//visibility:private"],
147 deps = ["//:wrappers_proto"],
148)
149
150cc_proto_blacklist_test(
151 name = "cc_proto_blacklist_test",
152 deps = [
153 ":any_cc_proto",
154 ":api_cc_proto",
155 ":compiler_plugin_cc_proto",
156 ":descriptor_cc_proto",
157 ":duration_cc_proto",
158 ":empty_cc_proto",
159 ":field_mask_cc_proto",
160 ":source_context_cc_proto",
161 ":struct_cc_proto",
162 ":timestamp_cc_proto",
163 ":type_cc_proto",
164 ":wrappers_cc_proto",
165 ],
166)
167
168pkg_files(
169 name = "dist_files",
170 srcs = glob(["*"]),
171 strip_prefix = strip_prefix.from_root(""),
172 visibility = ["//pkg:__pkg__"],
173)