blob: 296bda23f2fe999889c5b3cedb72d681c3507044 [file] [log] [blame]
Joshua Haberman823eb092021-04-05 12:26:41 -07001# Copyright (c) 2009-2021, Google LLC
Joshua Habermane59d2c82021-04-05 10:47:53 -07002# All rights reserved.
3#
4# Redistribution and use in source and binary forms, with or without
5# modification, are permitted provided that the following conditions are met:
6# * Redistributions of source code must retain the above copyright
7# notice, this list of conditions and the following disclaimer.
8# * Redistributions in binary form must reproduce the above copyright
9# notice, this list of conditions and the following disclaimer in the
10# documentation and/or other materials provided with the distribution.
11# * Neither the name of Google LLC nor the
12# names of its contributors may be used to endorse or promote products
13# derived from this software without specific prior written permission.
14#
15# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18# DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY
19# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
Josh Haberman2655ed92018-11-03 13:04:10 -070026load(
Joshua Haberman5611ff22019-05-16 11:35:00 -070027 "//bazel:build_defs.bzl",
Joshua Habermane3f41de2020-10-17 13:15:58 -070028 "UPB_DEFAULT_COPTS",
Joshua Haberman11b6df02022-02-15 19:55:44 -080029 "UPB_DEFAULT_CPPOPTS",
30 "make_shell_script",
Joshua Haberman2c166492020-10-17 15:49:11 -070031 "upb_amalgamation", # copybara:strip_for_google3
Joshua Haberman06b90f92019-05-14 15:58:58 -070032)
Joshua Haberman06b90f92019-05-14 15:58:58 -070033load(
Joshua Haberman5611ff22019-05-16 11:35:00 -070034 "//bazel:upb_proto_library.bzl",
Joshua Habermana345af92020-10-18 13:39:13 -070035 "upb_fasttable_enabled",
Josh Habermana7ebe542018-11-03 18:18:47 -070036 "upb_proto_library",
Joshua Habermana274ad72020-10-28 13:06:30 -070037 "upb_proto_library_copts",
Joshua Habermane8f9eac2020-10-28 22:50:03 -070038 "upb_proto_reflection_library",
Josh Haberman2655ed92018-11-03 13:04:10 -070039)
Joshua Haberman0dc23942020-06-05 09:17:33 -070040
Joshua Haberman83c0edb2021-02-28 16:56:49 -080041licenses(["notice"])
Joshua Haberman7f9f7222019-01-23 17:10:22 -080042
43exports_files([
44 "LICENSE",
45 "build_defs",
46])
47
Joshua Haberman00f96cb2019-03-27 12:13:59 -070048config_setting(
Nicolas "Pixel" Noblece3ba4d2019-07-18 01:12:00 +020049 name = "windows",
50 constraint_values = ["@bazel_tools//platforms:windows"],
Eli Schleifer231daa32021-12-20 16:01:23 -080051 visibility = ["//visibility:public"],
Nicolas "Pixel" Noblece3ba4d2019-07-18 01:12:00 +020052)
53
Joshua Habermana345af92020-10-18 13:39:13 -070054upb_fasttable_enabled(
55 name = "fasttable_enabled",
Joshua Habermanb9286962020-10-26 21:23:16 -070056 build_setting_default = False,
Joshua Habermana345af92020-10-18 13:39:13 -070057 visibility = ["//visibility:public"],
58)
59
Joshua Habermane8f9eac2020-10-28 22:50:03 -070060config_setting(
61 name = "fasttable_enabled_setting",
62 flag_values = {"//:fasttable_enabled": "true"},
63)
64
Joshua Habermana274ad72020-10-28 13:06:30 -070065upb_proto_library_copts(
66 name = "upb_proto_library_copts__for_generated_code_only_do_not_use",
67 copts = UPB_DEFAULT_COPTS,
68 visibility = ["//visibility:public"],
69)
70
Joshua Haberman928ef7f2019-03-27 12:52:33 -070071# Public C/C++ libraries #######################################################
Josh Haberman01ed4ce2018-11-02 12:49:15 -070072
73cc_library(
Anna Rde1bc112020-01-07 15:45:19 -080074 name = "port",
Joshua Haberman558315a2020-10-28 17:13:13 -070075 copts = UPB_DEFAULT_COPTS,
Anna Rde1bc112020-01-07 15:45:19 -080076 textual_hdrs = [
77 "upb/port_def.inc",
78 "upb/port_undef.inc",
79 ],
Matt Kulukundisc49e6df2022-02-21 20:12:58 -050080 visibility = ["//:__subpackages__"],
Anna Rde1bc112020-01-07 15:45:19 -080081)
82
83cc_library(
Josh Haberman01ed4ce2018-11-02 12:49:15 -070084 name = "upb",
85 srcs = [
Josh Haberman01ed4ce2018-11-02 12:49:15 -070086 "upb/decode.c",
Joshua Haberman38813932021-04-05 16:00:25 -070087 "upb/decode_internal.h",
Josh Haberman01ed4ce2018-11-02 12:49:15 -070088 "upb/encode.c",
Josh Haberman01ed4ce2018-11-02 12:49:15 -070089 "upb/msg.c",
Joshua Haberman38813932021-04-05 16:00:25 -070090 "upb/msg_internal.h",
Josh Haberman01ed4ce2018-11-02 12:49:15 -070091 "upb/table.c",
Joshua Haberman38813932021-04-05 16:00:25 -070092 "upb/table_internal.h",
Josh Haberman01ed4ce2018-11-02 12:49:15 -070093 "upb/upb.c",
Joshua Haberman38813932021-04-05 16:00:25 -070094 "upb/upb_internal.h",
Josh Haberman01ed4ce2018-11-02 12:49:15 -070095 ],
96 hdrs = [
Josh Haberman01ed4ce2018-11-02 12:49:15 -070097 "upb/decode.h",
Josh Haberman01ed4ce2018-11-02 12:49:15 -070098 "upb/encode.h",
Joshua Haberman1674f282021-04-04 18:43:24 -070099 "upb/msg.h",
Josh Haberman01ed4ce2018-11-02 12:49:15 -0700100 "upb/upb.h",
Joshua Haberman2559e782020-04-09 14:36:24 -0700101 "upb/upb.hpp",
Josh Haberman01ed4ce2018-11-02 12:49:15 -0700102 ],
Joshua Habermane3f41de2020-10-17 13:15:58 -0700103 copts = UPB_DEFAULT_COPTS,
Joshua Habermanba29af32019-06-01 19:27:49 -0700104 visibility = ["//visibility:public"],
Joshua Habermanefd576b2020-10-26 21:37:17 -0700105 deps = [
106 ":fastdecode",
107 ":port",
Joshua Haberman4307f5d2021-10-11 23:02:32 -0700108 "//third_party/utf8_range",
Joshua Habermanefd576b2020-10-26 21:37:17 -0700109 ],
Joshua Habermancb234e62020-10-17 17:48:32 -0700110)
111
112cc_library(
Joshua Haberman970c6452022-03-08 17:44:06 -0800113 name = "mini_table_internal",
114 hdrs = ["upb/msg_internal.h"],
115 deps = [
116 ":port",
117 ":table",
118 ":upb",
119 ],
120)
121
122cc_library(
Joshua Haberman8ede0d52022-03-05 18:33:27 -0800123 name = "mini_table",
124 srcs = ["upb/mini_table.c"],
125 hdrs = [
126 "upb/mini_table.h",
127 "upb/mini_table.hpp",
128 ],
129 copts = UPB_DEFAULT_COPTS,
130 visibility = ["//visibility:public"],
Joshua Haberman970c6452022-03-08 17:44:06 -0800131 deps = [
132 ":mini_table_internal",
133 ":port",
134 ":upb",
135 ],
Joshua Haberman8ede0d52022-03-05 18:33:27 -0800136)
137
138cc_test(
139 name = "mini_table_test",
140 srcs = ["upb/mini_table_test.cc"],
141 deps = [
142 ":mini_table",
Joshua Haberman970c6452022-03-08 17:44:06 -0800143 ":mini_table_internal",
144 ":upb",
Joshua Haberman8ede0d52022-03-05 18:33:27 -0800145 "@com_google_absl//absl/container:flat_hash_set",
Joshua Haberman970c6452022-03-08 17:44:06 -0800146 "@com_google_googletest//:gtest_main",
Joshua Haberman8ede0d52022-03-05 18:33:27 -0800147 ],
148)
149
150cc_library(
Joshua Habermancb234e62020-10-17 17:48:32 -0700151 name = "fastdecode",
152 srcs = [
Joshua Haberman3d437bb2021-10-13 09:53:36 -0700153 "upb/decode.h",
Joshua Habermancb234e62020-10-17 17:48:32 -0700154 "upb/decode_fast.c",
155 "upb/decode_fast.h",
Matt Kulukundis61b09052022-02-19 19:35:58 -0500156 "upb/decode_internal.h",
Joshua Habermancb234e62020-10-17 17:48:32 -0700157 "upb/msg.h",
Joshua Haberman38813932021-04-05 16:00:25 -0700158 "upb/msg_internal.h",
159 "upb/upb_internal.h",
Joshua Habermancb234e62020-10-17 17:48:32 -0700160 ],
Joshua Habermane86541a2020-10-28 17:53:09 -0700161 copts = UPB_DEFAULT_COPTS,
Joshua Habermanefd576b2020-10-26 21:37:17 -0700162 deps = [
163 ":port",
164 ":table",
Joshua Haberman4307f5d2021-10-11 23:02:32 -0700165 "//third_party/utf8_range",
Joshua Habermanefd576b2020-10-26 21:37:17 -0700166 ],
Joshua Habermanba29af32019-06-01 19:27:49 -0700167)
168
169# Common support routines used by generated code. This library has no
170# implementation, but depends on :upb and exposes a few more hdrs.
171#
172# This is public only because we have no way of visibility-limiting it to
173# upb_proto_library() only. This interface is not stable and by using it you
174# give up any backward compatibility guarantees.
175cc_library(
176 name = "generated_code_support__only_for_generated_code_do_not_use__i_give_permission_to_break_me",
Joshua Habermanba29af32019-06-01 19:27:49 -0700177 hdrs = [
Joshua Haberman8c530f92022-02-22 14:50:55 -0800178 "upb/decode.h",
Joshua Habermanaec762e2020-10-11 23:14:50 -0700179 "upb/decode_fast.h",
Joshua Haberman8c530f92022-02-22 14:50:55 -0800180 "upb/encode.h",
Joshua Habermanba29af32019-06-01 19:27:49 -0700181 "upb/msg.h",
Joshua Haberman42bdfcb2021-04-06 09:25:28 -0700182 "upb/msg_internal.h",
Anna Ra27429f2020-01-09 14:50:03 -0800183 "upb/port_def.inc",
184 "upb/port_undef.inc",
Joshua Habermanba29af32019-06-01 19:27:49 -0700185 ],
Joshua Habermane3f41de2020-10-17 13:15:58 -0700186 copts = UPB_DEFAULT_COPTS,
Vishal Powar7031f772018-11-28 15:32:16 -0800187 visibility = ["//visibility:public"],
Anna Rde1bc112020-01-07 15:45:19 -0800188 deps = [
Joshua Haberman4b8c04e2020-02-18 16:50:25 -0800189 ":table",
Anna Rde1bc112020-01-07 15:45:19 -0800190 ":upb",
191 ],
Josh Haberman01ed4ce2018-11-02 12:49:15 -0700192)
193
Joshua Haberman8c530f92022-02-22 14:50:55 -0800194cc_library(
195 name = "generated_reflection_support__only_for_generated_code_do_not_use__i_give_permission_to_break_me",
196 hdrs = [
197 "upb/def.h",
198 "upb/port_def.inc",
199 "upb/port_undef.inc",
200 ],
201 copts = UPB_DEFAULT_COPTS,
202 visibility = ["//visibility:public"],
203 deps = [
204 ":descriptor_upb_proto",
205 ":reflection",
206 ":table",
207 ],
208)
209
Josh Habermancd9e1e62019-04-17 15:23:00 -0700210upb_proto_library(
Joshua Haberman543a0ce2020-05-26 22:30:50 -0700211 name = "descriptor_upb_proto",
212 visibility = ["//visibility:public"],
213 deps = ["@com_google_protobuf//:descriptor_proto"],
214)
215
216upb_proto_reflection_library(
217 name = "descriptor_upb_proto_reflection",
Joshua Habermanc58541e2019-05-15 09:49:29 -0700218 visibility = ["//visibility:public"],
Google-Autofuzz8f196672019-06-25 20:14:14 -0400219 deps = ["@com_google_protobuf//:descriptor_proto"],
Josh Habermancd9e1e62019-04-17 15:23:00 -0700220)
221
Josh Haberman01ed4ce2018-11-02 12:49:15 -0700222cc_library(
Joshua Haberman928ef7f2019-03-27 12:52:33 -0700223 name = "reflection",
224 srcs = [
225 "upb/def.c",
Joshua Haberman58010a32020-02-18 16:53:21 -0800226 "upb/msg.h",
Joshua Haberman9a360ad2019-11-12 08:08:46 -0800227 "upb/reflection.c",
Joshua Haberman928ef7f2019-03-27 12:52:33 -0700228 ],
229 hdrs = [
230 "upb/def.h",
Joshua Haberman2559e782020-04-09 14:36:24 -0700231 "upb/def.hpp",
Joshua Haberman9a360ad2019-11-12 08:08:46 -0800232 "upb/reflection.h",
Joshua Haberman5e550e82021-01-09 15:45:44 -0800233 "upb/reflection.hpp",
Joshua Haberman928ef7f2019-03-27 12:52:33 -0700234 ],
Joshua Habermane3f41de2020-10-17 13:15:58 -0700235 copts = UPB_DEFAULT_COPTS,
Joshua Haberman928ef7f2019-03-27 12:52:33 -0700236 visibility = ["//visibility:public"],
Josh Habermancd9e1e62019-04-17 15:23:00 -0700237 deps = [
Joshua Haberman543a0ce2020-05-26 22:30:50 -0700238 ":descriptor_upb_proto",
Anna Rfc494112020-01-09 14:16:25 -0800239 ":port",
Joshua Haberman9b073112019-05-14 11:12:13 -0700240 ":table",
Joshua Haberman9a663562019-05-13 16:13:39 -0700241 ":upb",
Josh Habermancd9e1e62019-04-17 15:23:00 -0700242 ],
Joshua Haberman928ef7f2019-03-27 12:52:33 -0700243)
244
Joshua Habermance1a3992020-02-04 06:22:09 -0800245cc_library(
246 name = "textformat",
247 srcs = [
Joshua Haberman02c89a82020-02-10 14:56:27 -0800248 "upb/text_encode.c",
Matt Kulukundisc8f823e2022-02-20 14:29:19 -0500249 "upb/upb_internal.h",
Joshua Habermance1a3992020-02-04 06:22:09 -0800250 ],
251 hdrs = [
Joshua Haberman02c89a82020-02-10 14:56:27 -0800252 "upb/text_encode.h",
Joshua Habermance1a3992020-02-04 06:22:09 -0800253 ],
Joshua Habermane3f41de2020-10-17 13:15:58 -0700254 copts = UPB_DEFAULT_COPTS,
Joshua Habermance1a3992020-02-04 06:22:09 -0800255 visibility = ["//visibility:public"],
256 deps = [
Joshua Haberman4b8c04e2020-02-18 16:50:25 -0800257 ":port",
Joshua Habermance1a3992020-02-04 06:22:09 -0800258 ":reflection",
Matt Kulukundisedd1dd32022-02-20 17:44:27 -0500259 ":table",
Joshua Habermance1a3992020-02-04 06:22:09 -0800260 ],
261)
262
Joshua Haberman6e9db7d2020-02-15 19:31:51 -0800263cc_library(
264 name = "json",
265 srcs = [
Joshua Habermand49c1db2020-02-23 19:49:39 -0800266 "upb/json_decode.c",
Joshua Haberman6e9db7d2020-02-15 19:31:51 -0800267 "upb/json_encode.c",
Matt Kulukundisc8f823e2022-02-20 14:29:19 -0500268 "upb/upb_internal.h",
Joshua Haberman6e9db7d2020-02-15 19:31:51 -0800269 ],
270 hdrs = [
Joshua Habermand49c1db2020-02-23 19:49:39 -0800271 "upb/json_decode.h",
Joshua Haberman6e9db7d2020-02-15 19:31:51 -0800272 "upb/json_encode.h",
273 ],
Joshua Habermane3f41de2020-10-17 13:15:58 -0700274 copts = UPB_DEFAULT_COPTS,
Lidi Zhengf72c26c2020-12-10 16:23:08 -0800275 visibility = ["//visibility:public"],
Joshua Haberman6e9db7d2020-02-15 19:31:51 -0800276 deps = [
Joshua Haberman4b8c04e2020-02-18 16:50:25 -0800277 ":port",
Joshua Haberman6e9db7d2020-02-15 19:31:51 -0800278 ":reflection",
Joshua Haberman4b8c04e2020-02-18 16:50:25 -0800279 ":upb",
Joshua Haberman6e9db7d2020-02-15 19:31:51 -0800280 ],
281)
282
Joshua Haberman11b6df02022-02-15 19:55:44 -0800283# Tests ########################################################################
284
285cc_test(
286 name = "test_generated_code",
287 srcs = ["upb/test_generated_code.cc"],
288 deps = [
289 ":empty_upbdefs_proto",
290 ":test_messages_proto3_proto_upb",
291 ":test_upb_proto",
Matt Kulukundisedd1dd32022-02-20 17:44:27 -0500292 ":upb",
Joshua Haberman11b6df02022-02-15 19:55:44 -0800293 "@com_google_googletest//:gtest_main",
294 ],
295)
296
297proto_library(
298 name = "test_proto",
299 testonly = 1,
300 srcs = ["upb/test.proto"],
301)
302
303upb_proto_library(
304 name = "test_upb_proto",
305 testonly = 1,
306 deps = [":test_proto"],
307)
308
309proto_library(
310 name = "empty_proto",
311 srcs = ["upb/empty.proto"],
312)
313
314upb_proto_reflection_library(
315 name = "empty_upbdefs_proto",
316 testonly = 1,
317 deps = [":empty_proto"],
318)
319
320upb_proto_library(
321 name = "test_messages_proto3_proto_upb",
322 testonly = 1,
323 deps = ["@com_google_protobuf//:test_messages_proto3_proto"],
324)
Matt Kulukundis61b09052022-02-19 19:35:58 -0500325
Joshua Habermance012b72021-10-01 16:34:42 -0700326cc_test(
327 name = "msg_test",
328 srcs = ["upb/msg_test.cc"],
329 deps = [
Joshua Habermance012b72021-10-01 16:34:42 -0700330 ":json",
Matt Kulukundisa3bd5f82022-02-21 23:47:27 -0500331 ":msg_test_upb_proto",
Matt Kulukundis61b09052022-02-19 19:35:58 -0500332 ":msg_test_upb_proto_reflection",
Matt Kulukundisa3bd5f82022-02-21 23:47:27 -0500333 ":reflection",
Matt Kulukundis42c121e2022-02-21 23:58:17 -0500334 ":test_messages_proto3_proto_upb",
Matt Kulukundisa3bd5f82022-02-21 23:47:27 -0500335 ":upb",
Matt Kulukundis61b09052022-02-19 19:35:58 -0500336 "@com_google_googletest//:gtest_main",
Joshua Habermance012b72021-10-01 16:34:42 -0700337 ],
338)
339
340proto_library(
341 name = "msg_test_proto",
Matt Kulukundis61b09052022-02-19 19:35:58 -0500342 testonly = 1,
Joshua Habermance012b72021-10-01 16:34:42 -0700343 srcs = ["upb/msg_test.proto"],
344 deps = ["@com_google_protobuf//:test_messages_proto3_proto"],
345)
346
Matt Kulukundisa3bd5f82022-02-21 23:47:27 -0500347upb_proto_library(
348 name = "msg_test_upb_proto",
349 testonly = 1,
350 deps = [":msg_test_proto"],
351)
352
Joshua Habermance012b72021-10-01 16:34:42 -0700353upb_proto_reflection_library(
354 name = "msg_test_upb_proto_reflection",
Matt Kulukundis61b09052022-02-19 19:35:58 -0500355 testonly = 1,
Joshua Habermance012b72021-10-01 16:34:42 -0700356 deps = [":msg_test_proto"],
357)
358
Joshua Haberman11b6df02022-02-15 19:55:44 -0800359proto_library(
360 name = "test_cpp_proto",
361 srcs = ["upb/test_cpp.proto"],
Matt Kulukundis61b09052022-02-19 19:35:58 -0500362 deps = ["@com_google_protobuf//:timestamp_proto"],
Joshua Haberman11b6df02022-02-15 19:55:44 -0800363)
364
365upb_proto_library(
366 name = "test_cpp_upb_proto",
367 deps = ["test_cpp_proto"],
368)
369
370upb_proto_reflection_library(
371 name = "test_cpp_upb_proto_reflection",
372 deps = ["test_cpp_proto"],
373)
374
Matt Kulukundis92d71a42022-02-20 15:20:48 -0500375upb_proto_library(
376 name = "timestamp_upb_proto",
377 deps = ["@com_google_protobuf//:timestamp_proto"],
378)
379
380upb_proto_reflection_library(
381 name = "timestamp_upb_proto_reflection",
382 deps = ["@com_google_protobuf//:timestamp_proto"],
383)
384
Joshua Haberman11b6df02022-02-15 19:55:44 -0800385cc_test(
386 name = "test_cpp",
387 srcs = ["upb/test_cpp.cc"],
388 copts = UPB_DEFAULT_CPPOPTS,
389 deps = [
390 ":test_cpp_upb_proto",
391 ":test_cpp_upb_proto_reflection",
Matt Kulukundis92d71a42022-02-20 15:20:48 -0500392 ":timestamp_upb_proto",
393 ":timestamp_upb_proto_reflection",
Joshua Haberman11b6df02022-02-15 19:55:44 -0800394 "//:json",
395 "//:port",
396 "//:reflection",
397 "//:upb",
398 "@com_google_googletest//:gtest_main",
399 ],
400)
401
402cc_test(
403 name = "test_table",
404 srcs = ["upb/test_table.cc"],
405 copts = UPB_DEFAULT_CPPOPTS,
406 deps = [
407 "//:port",
408 "//:table",
409 "//:upb",
410 "@com_google_googletest//:gtest_main",
411 ],
412)
413
Joshua Haberman11b6df02022-02-15 19:55:44 -0800414upb_proto_library(
415 name = "conformance_proto_upb",
416 testonly = 1,
417 deps = ["@com_google_protobuf//:conformance_proto"],
418)
419
420upb_proto_reflection_library(
421 name = "conformance_proto_upbdefs",
422 testonly = 1,
423 deps = ["@com_google_protobuf//:conformance_proto"],
424)
425
426upb_proto_reflection_library(
427 name = "test_messages_proto2_upbdefs",
428 testonly = 1,
429 deps = ["@com_google_protobuf//:test_messages_proto2_proto"],
430)
431
432upb_proto_reflection_library(
433 name = "test_messages_proto3_upbdefs",
434 testonly = 1,
435 deps = ["@com_google_protobuf//:test_messages_proto3_proto"],
436)
437
438cc_binary(
439 name = "conformance_upb",
440 testonly = 1,
441 srcs = ["upb/conformance_upb.c"],
442 copts = UPB_DEFAULT_COPTS,
443 data = ["upb/conformance_upb_failures.txt"],
444 deps = [
445 ":conformance_proto_upb",
446 ":conformance_proto_upbdefs",
447 ":test_messages_proto2_upbdefs",
448 ":test_messages_proto3_upbdefs",
449 "//:json",
450 "//:port",
451 "//:reflection",
452 "//:textformat",
453 "//:upb",
454 ],
455)
456
457make_shell_script(
458 name = "gen_test_conformance_upb",
459 out = "test_conformance_upb.sh",
460 contents = "external/com_google_protobuf/conformance_test_runner " +
461 " --enforce_recommended " +
462 " --failure_list ./upb/conformance_upb_failures.txt" +
463 " ./conformance_upb",
464)
465
466sh_test(
467 name = "test_conformance_upb",
468 srcs = ["test_conformance_upb.sh"],
469 data = [
470 "upb/conformance_upb_failures.txt",
471 ":conformance_upb",
472 "@com_google_protobuf//:conformance_test_runner",
473 ],
474 deps = ["@bazel_tools//tools/bash/runfiles"],
475)
476
Joshua Haberman50c12982022-03-08 15:52:37 -0800477cc_binary(
478 name = "conformance_upb_dynamic_minitable",
479 testonly = 1,
480 srcs = ["upb/conformance_upb.c"],
481 copts = UPB_DEFAULT_COPTS + [
Joshua Haberman970c6452022-03-08 17:44:06 -0800482 "-DREBUILD_MINITABLES",
Joshua Haberman50c12982022-03-08 15:52:37 -0800483 ],
484 data = ["upb/conformance_upb_failures.txt"],
485 deps = [
486 ":conformance_proto_upb",
487 ":conformance_proto_upbdefs",
488 ":test_messages_proto2_upbdefs",
489 ":test_messages_proto3_upbdefs",
490 "//:json",
491 "//:port",
492 "//:reflection",
493 "//:textformat",
494 "//:upb",
495 ],
496)
497
498make_shell_script(
499 name = "gen_test_conformance_upb_dynamic_minitable",
500 out = "test_conformance_upb_dynamic_minitable.sh",
501 contents = "external/com_google_protobuf/conformance_test_runner " +
502 " --enforce_recommended " +
503 " --failure_list ./upb/conformance_upb_failures.txt" +
504 " ./conformance_upb_dynamic_minitable",
505)
506
507sh_test(
508 name = "test_conformance_upb_dynamic_minitable",
509 srcs = ["test_conformance_upb_dynamic_minitable.sh"],
510 data = [
511 "upb/conformance_upb_failures.txt",
512 ":conformance_upb_dynamic_minitable",
513 "@com_google_protobuf//:conformance_test_runner",
514 ],
515 deps = ["@bazel_tools//tools/bash/runfiles"],
516)
517
Joshua Haberman928ef7f2019-03-27 12:52:33 -0700518# Internal C/C++ libraries #####################################################
519
520cc_library(
521 name = "table",
Joshua Habermancb234e62020-10-17 17:48:32 -0700522 hdrs = [
Joshua Haberman38813932021-04-05 16:00:25 -0700523 "upb/table_internal.h",
Joshua Habermanefd576b2020-10-26 21:37:17 -0700524 "upb/upb.h",
Joshua Habermancb234e62020-10-17 17:48:32 -0700525 ],
Joshua Habermandfc07a82022-02-26 21:51:59 -0800526 visibility = [
527 "//python:__pkg__",
528 "//tests:__pkg__",
529 ],
Anna Rde1bc112020-01-07 15:45:19 -0800530 deps = [
531 ":port",
Anna Rde1bc112020-01-07 15:45:19 -0800532 ],
Joshua Haberman928ef7f2019-03-27 12:52:33 -0700533)
534
Joshua Haberman77371f02019-01-23 16:26:13 -0800535# Amalgamation #################################################################
536
Joshua Haberman83c0edb2021-02-28 16:56:49 -0800537# copybara:strip_for_google3_begin
538
Joshua Haberman77371f02019-01-23 16:26:13 -0800539upb_amalgamation(
540 name = "gen_amalgamation",
541 outs = [
542 "upb.c",
543 "upb.h",
544 ],
Joshua Haberman77371f02019-01-23 16:26:13 -0800545 libs = [
546 ":upb",
Joshua Habermancb234e62020-10-17 17:48:32 -0700547 ":fastdecode",
Joshua Haberman543a0ce2020-05-26 22:30:50 -0700548 ":descriptor_upb_proto",
Joshua Haberman928ef7f2019-03-27 12:52:33 -0700549 ":reflection",
Anna Rde1bc112020-01-07 15:45:19 -0800550 ":port",
Joshua Haberman77371f02019-01-23 16:26:13 -0800551 ],
552)
553
554cc_library(
555 name = "amalgamation",
556 srcs = ["upb.c"],
557 hdrs = ["upb.h"],
Joshua Habermane86541a2020-10-28 17:53:09 -0700558 copts = UPB_DEFAULT_COPTS,
Joshua Haberman4307f5d2021-10-11 23:02:32 -0700559 deps = ["//third_party/utf8_range"],
Joshua Haberman77371f02019-01-23 16:26:13 -0800560)
561
Joshua Haberman16facab2020-05-08 16:40:24 -0700562upb_amalgamation(
Joshua Haberman543a0ce2020-05-26 22:30:50 -0700563 name = "gen_php_amalgamation",
Joshua Haberman16facab2020-05-08 16:40:24 -0700564 outs = [
Joshua Haberman543a0ce2020-05-26 22:30:50 -0700565 "php-upb.c",
566 "php-upb.h",
Joshua Haberman16facab2020-05-08 16:40:24 -0700567 ],
Joshua Haberman16facab2020-05-08 16:40:24 -0700568 libs = [
569 ":upb",
Joshua Habermancb234e62020-10-17 17:48:32 -0700570 ":fastdecode",
Joshua Haberman543a0ce2020-05-26 22:30:50 -0700571 ":descriptor_upb_proto",
572 ":descriptor_upb_proto_reflection",
Joshua Haberman16facab2020-05-08 16:40:24 -0700573 ":reflection",
574 ":port",
575 ":json",
576 ],
Joshua Habermane3f41de2020-10-17 13:15:58 -0700577 prefix = "php-",
Joshua Haberman16facab2020-05-08 16:40:24 -0700578)
579
580cc_library(
Joshua Haberman543a0ce2020-05-26 22:30:50 -0700581 name = "php_amalgamation",
582 srcs = ["php-upb.c"],
583 hdrs = ["php-upb.h"],
Joshua Habermane86541a2020-10-28 17:53:09 -0700584 copts = UPB_DEFAULT_COPTS,
Joshua Haberman4307f5d2021-10-11 23:02:32 -0700585 deps = ["//third_party/utf8_range"],
Joshua Haberman16facab2020-05-08 16:40:24 -0700586)
587
Joshua Habermanefefbff2020-08-03 10:12:31 -0700588upb_amalgamation(
589 name = "gen_ruby_amalgamation",
Joshua Habermanefefbff2020-08-03 10:12:31 -0700590 outs = [
591 "ruby-upb.c",
592 "ruby-upb.h",
593 ],
Joshua Habermanefefbff2020-08-03 10:12:31 -0700594 libs = [
595 ":upb",
Joshua Habermancb234e62020-10-17 17:48:32 -0700596 ":fastdecode",
Joshua Habermanefefbff2020-08-03 10:12:31 -0700597 ":descriptor_upb_proto",
598 ":reflection",
599 ":port",
600 ":json",
601 ],
Joshua Habermane3f41de2020-10-17 13:15:58 -0700602 prefix = "ruby-",
Joshua Habermanefefbff2020-08-03 10:12:31 -0700603)
604
605cc_library(
606 name = "ruby_amalgamation",
607 srcs = ["ruby-upb.c"],
608 hdrs = ["ruby-upb.h"],
Joshua Habermane86541a2020-10-28 17:53:09 -0700609 copts = UPB_DEFAULT_COPTS,
Joshua Haberman4307f5d2021-10-11 23:02:32 -0700610 deps = ["//third_party/utf8_range"],
Joshua Habermanefefbff2020-08-03 10:12:31 -0700611)
612
Joshua Habermane3f41de2020-10-17 13:15:58 -0700613exports_files(
614 [
615 "upb/json/parser.rl",
616 "BUILD",
617 "WORKSPACE",
Josh Haberman01ed4ce2018-11-02 12:49:15 -0700618 ],
Joshua Habermane3f41de2020-10-17 13:15:58 -0700619 visibility = ["//cmake:__pkg__"],
Josh Haberman01ed4ce2018-11-02 12:49:15 -0700620)
621
Joshua Habermane3f41de2020-10-17 13:15:58 -0700622exports_files(
623 [
Joshua Habermanbfc86d32019-12-04 16:56:40 -0800624 "third_party/lunit/console.lua",
625 "third_party/lunit/lunit.lua",
626 ],
Joshua Haberman11b6df02022-02-15 19:55:44 -0800627 visibility = ["//upb/bindings/lua:__pkg__"],
Josh Haberman01ed4ce2018-11-02 12:49:15 -0700628)
629
Joshua Haberman985145c2019-04-24 17:36:17 +0000630filegroup(
631 name = "cmake_files",
632 srcs = glob([
Joshua Haberman985145c2019-04-24 17:36:17 +0000633 "google/**/*",
634 "upbc/**/*",
635 "upb/**/*",
636 "tests/**/*",
Joshua Haberman4f901b62020-10-14 16:32:43 -0700637 "third_party/**/*",
Joshua Haberman9a663562019-05-13 16:13:39 -0700638 ]),
Joshua Habermane3f41de2020-10-17 13:15:58 -0700639 visibility = ["//cmake:__pkg__"],
Josh Haberman01ed4ce2018-11-02 12:49:15 -0700640)
Joshua Haberman83c0edb2021-02-28 16:56:49 -0800641
642# copybara:strip_end