blob: edf806bd95686919b5b7aaa9011a527db6a7b576 [file] [log] [blame]
Sasha Smundak06a12e52016-07-15 17:35:51 +00001# Description:
2# singlejar C++ implementation.
3package(default_visibility = ["//src:__subpackages__"])
4
Laszlo Csomor561e4492017-03-09 08:11:19 +00005JAR_TOOL_PATH_COPT_TPL = "-DJAR_TOOL_PATH=\\\"external/local_jdk/bin/jar%s\\\""
6
7JAR_TOOL_PATH_COPTS = select({
tomlu1a483d42017-11-30 15:08:40 -08008 "//src/conditions:windows": [JAR_TOOL_PATH_COPT_TPL % ".exe"],
Laszlo Csomor561e4492017-03-09 08:11:19 +00009 "//conditions:default": [JAR_TOOL_PATH_COPT_TPL % ""],
10})
11
Sasha Smundak06a12e52016-07-15 17:35:51 +000012filegroup(
13 name = "srcs",
14 srcs = glob(["**"]),
15 visibility = ["//src:__pkg__"],
16)
17
Xin Gao33d05f62017-06-21 17:13:23 +020018filegroup(
19 name = "embedded_tools",
20 srcs = [
21 "BUILD",
22 "combiners.cc",
23 "combiners.h",
24 "diag.h",
25 "input_jar.cc",
26 "input_jar.h",
27 "mapped_file.h",
Laszlo Csomorc14b3c62018-03-09 02:11:23 -080028 "mapped_file_posix.inc",
29 "mapped_file_windows.inc",
Xin Gao33d05f62017-06-21 17:13:23 +020030 "options.cc",
31 "options.h",
32 "output_jar.cc",
33 "output_jar.h",
Loo Rong Jie8231cd72018-07-17 03:57:01 -070034 "port.cc",
35 "port.h",
Xin Gao33d05f62017-06-21 17:13:23 +020036 "singlejar_main.cc",
37 "token_stream.h",
38 "transient_bytes.h",
39 "zip_headers.h",
40 "zlib_interface.h",
41 ],
42 visibility = ["//visibility:public"],
43)
44
Sasha Smundak57472632016-08-05 20:07:40 +000045cc_binary(
46 name = "singlejar",
47 srcs = [
48 "singlejar_main.cc",
49 ],
Klaus Aehlig9f8d81e2017-06-09 13:34:34 -040050 linkopts = select({
tomlu1a483d42017-11-30 15:08:40 -080051 "//src/conditions:freebsd": ["-lm"],
Klaus Aehlig9f8d81e2017-06-09 13:34:34 -040052 "//conditions:default": [],
53 }),
Sasha Smundak57472632016-08-05 20:07:40 +000054 linkstatic = 1,
Xin Gao33d05f62017-06-21 17:13:23 +020055 visibility = ["//visibility:public"],
Sasha Smundak57472632016-08-05 20:07:40 +000056 deps = [
57 "options",
58 "output_jar",
59 "//third_party/zlib",
60 ],
61)
62
kmb5f911192018-03-29 15:51:32 -070063cc_binary(
64 name = "singlejar_local",
65 srcs = [
66 "singlejar_local_main.cc",
67 ],
68 linkopts = select({
69 "//src/conditions:freebsd": ["-lm"],
70 "//conditions:default": [],
71 }),
72 linkstatic = 1,
73 visibility = ["//visibility:public"],
74 deps = [
75 "combiners",
76 "desugar_checking",
77 "options",
78 "output_jar",
79 "//third_party/zlib",
80 ],
81)
82
Sasha Smundak06a12e52016-07-15 17:35:51 +000083cc_test(
Sasha Smundakde63c6f2016-07-27 17:05:11 +000084 name = "combiners_test",
85 size = "large",
86 srcs = [
87 "combiners_test.cc",
Sasha Smundakde63c6f2016-07-27 17:05:11 +000088 ":zip_headers",
89 ":zlib_interface",
90 ],
91 deps = [
Sasha Smundak3f814d72016-08-09 17:17:57 +000092 ":combiners",
Sasha Smundak5f35e522016-08-04 14:55:08 +000093 ":input_jar",
Sasha Smundakde63c6f2016-07-27 17:05:11 +000094 "//third_party/zlib",
ccalvarin8e9f4a82018-03-23 08:19:37 -070095 "@com_google_googletest//:gtest_main",
Sasha Smundakde63c6f2016-07-27 17:05:11 +000096 ],
97)
98
99cc_test(
kmb5f911192018-03-29 15:51:32 -0700100 name = "desugar_checking_test",
101 srcs = [
102 "combiners_test.cc",
103 ":zip_headers",
104 ":zlib_interface",
105 ],
106 deps = [
107 ":combiners",
108 ":desugar_checking",
109 ":input_jar",
110 "//third_party/zlib",
111 "@com_google_googletest//:gtest_main",
112 ],
113)
114
115cc_test(
Sasha Smundak07c3fe22016-08-24 13:20:22 +0000116 name = "input_jar_empty_jar_test",
117 srcs = [
118 "input_jar_empty_jar_test.cc",
119 ],
120 data = [
121 "data/empty.zip",
122 ],
123 deps = [
124 ":input_jar",
125 ":test_util",
126 "//src/main/cpp/util",
ccalvarin8e9f4a82018-03-23 08:19:37 -0700127 "@com_google_googletest//:gtest_main",
Sasha Smundak07c3fe22016-08-24 13:20:22 +0000128 ],
129)
130
131cc_test(
Sasha Smundak1e98fff2016-08-03 17:18:02 +0000132 name = "input_jar_preambled_test",
133 srcs = [
134 "input_jar_preambled_test.cc",
Sasha Smundak1e98fff2016-08-03 17:18:02 +0000135 ],
136 data = [
137 ":test1",
138 ],
139 deps = [
Sasha Smundak5f35e522016-08-04 14:55:08 +0000140 ":input_jar",
Sasha Smundak28d70942016-08-09 09:20:43 +0000141 ":test_util",
Sasha Smundak1e98fff2016-08-03 17:18:02 +0000142 "//src/main/cpp/util",
ccalvarin8e9f4a82018-03-23 08:19:37 -0700143 "@com_google_googletest//:gtest_main",
Sasha Smundak1e98fff2016-08-03 17:18:02 +0000144 ],
145)
146
147cc_test(
Sasha Smundak06a12e52016-07-15 17:35:51 +0000148 name = "input_jar_scan_jartool_test",
149 size = "large",
150 srcs = [
151 "input_jar_scan_entries_test.h",
152 "input_jar_scan_jartool_test.cc",
Sasha Smundak06a12e52016-07-15 17:35:51 +0000153 ],
Laszlo Csomor561e4492017-03-09 08:11:19 +0000154 copts = JAR_TOOL_PATH_COPTS,
Sasha Smundak06a12e52016-07-15 17:35:51 +0000155 data = [
Ulf Adamsc8510b12017-02-14 10:27:11 +0000156 "@local_jdk//:jar",
157 "@local_jdk//:jdk",
Sasha Smundak06a12e52016-07-15 17:35:51 +0000158 ],
Damien Martin-Guillerez57a965b2016-07-25 11:24:14 +0000159 # Timing out, see https://github.com/bazelbuild/bazel/issues/1555
160 tags = ["manual"],
Sasha Smundak5f35e522016-08-04 14:55:08 +0000161 deps = [
162 ":input_jar",
Sasha Smundak28d70942016-08-09 09:20:43 +0000163 ":test_util",
ccalvarin8e9f4a82018-03-23 08:19:37 -0700164 "@com_google_googletest//:gtest_main",
Sasha Smundak5f35e522016-08-04 14:55:08 +0000165 ],
Sasha Smundak06a12e52016-07-15 17:35:51 +0000166)
167
168cc_test(
169 name = "input_jar_scan_ziptool_test",
170 size = "large",
171 srcs = [
172 "input_jar_scan_entries_test.h",
173 "input_jar_scan_ziptool_test.cc",
Sasha Smundak06a12e52016-07-15 17:35:51 +0000174 ],
Damien Martin-Guillerez57a965b2016-07-25 11:24:14 +0000175 # Timing out, see https://github.com/bazelbuild/bazel/issues/1555
176 tags = ["manual"],
Sasha Smundak5f35e522016-08-04 14:55:08 +0000177 deps = [
178 ":input_jar",
Sasha Smundak28d70942016-08-09 09:20:43 +0000179 ":test_util",
ccalvarin8e9f4a82018-03-23 08:19:37 -0700180 "@com_google_googletest//:gtest_main",
Sasha Smundak5f35e522016-08-04 14:55:08 +0000181 ],
Sasha Smundak06a12e52016-07-15 17:35:51 +0000182)
183
184cc_test(
185 name = "input_jar_bad_jar_test",
186 srcs = [
187 "input_jar_bad_jar_test.cc",
Sasha Smundak06a12e52016-07-15 17:35:51 +0000188 ],
Sasha Smundak5f35e522016-08-04 14:55:08 +0000189 deps = [
190 ":input_jar",
Sasha Smundak28d70942016-08-09 09:20:43 +0000191 ":test_util",
ccalvarin8e9f4a82018-03-23 08:19:37 -0700192 "@com_google_googletest//:gtest_main",
Sasha Smundak5f35e522016-08-04 14:55:08 +0000193 ],
Sasha Smundak06a12e52016-07-15 17:35:51 +0000194)
195
196cc_test(
Sasha Smundakd3b0ede2016-07-20 09:11:34 +0000197 name = "options_test",
198 srcs = [
199 "options.h",
200 "options_test.cc",
Sasha Smundakd3b0ede2016-07-20 09:11:34 +0000201 ],
202 deps = [
203 ":options",
Sasha Smundak28d70942016-08-09 09:20:43 +0000204 ":test_util",
Liam Miller-Cushonf7ce0472016-12-06 07:23:09 +0000205 ":token_stream",
Sasha Smundak28d70942016-08-09 09:20:43 +0000206 "//src/main/cpp/util",
ccalvarin8e9f4a82018-03-23 08:19:37 -0700207 "@com_google_googletest//:gtest_main",
Sasha Smundakd3b0ede2016-07-20 09:11:34 +0000208 ],
209)
210
Sasha Smundak5733f7e2016-08-30 17:21:18 +0000211sh_test(
212 name = "output_jar_bash_test",
213 srcs = ["output_jar_shell_test.sh"],
Sasha Smundak5733f7e2016-08-30 17:21:18 +0000214 data = [
215 ":singlejar",
Loo Rong Jiea3390702018-07-23 07:38:55 -0700216 "//src/test/shell:bashunit",
217 "@bazel_tools//tools/bash/runfiles",
Sasha Smundak5733f7e2016-08-30 17:21:18 +0000218 ],
219 deps = ["//src/test/shell:bashunit"],
220)
221
Sasha Smundakd3b0ede2016-07-20 09:11:34 +0000222cc_test(
Sasha Smundak57472632016-08-05 20:07:40 +0000223 name = "output_jar_simple_test",
224 srcs = [
225 "output_jar_simple_test.cc",
226 ],
Laszlo Csomor561e4492017-03-09 08:11:19 +0000227 copts = JAR_TOOL_PATH_COPTS,
Sasha Smundak57472632016-08-05 20:07:40 +0000228 data = [
Sasha Smundak92fbef02016-08-10 15:53:11 +0000229 ":data1",
230 ":data2",
Sasha Smundakb01948d2016-08-17 18:20:37 +0000231 ":stored_jar",
Sasha Smundak57472632016-08-05 20:07:40 +0000232 ":test1",
233 ":test2",
Ulf Adamsc8510b12017-02-14 10:27:11 +0000234 "@local_jdk//:jar",
235 "@local_jdk//:jdk-default",
Sasha Smundak57472632016-08-05 20:07:40 +0000236 ],
237 deps = [
238 ":input_jar",
239 ":options",
240 ":output_jar",
Sasha Smundak28d70942016-08-09 09:20:43 +0000241 ":test_util",
Sasha Smundak57472632016-08-05 20:07:40 +0000242 "//src/main/cpp/util",
ccalvarin8e9f4a82018-03-23 08:19:37 -0700243 "@com_google_googletest//:gtest_main",
Sasha Smundak57472632016-08-05 20:07:40 +0000244 ],
245)
246
247cc_test(
Sasha Smundak876d6f62016-07-19 17:34:37 +0000248 name = "token_stream_test",
249 srcs = [
250 "token_stream_test.cc",
Sasha Smundak876d6f62016-07-19 17:34:37 +0000251 ],
Sasha Smundak28d70942016-08-09 09:20:43 +0000252 deps = [
253 ":test_util",
Liam Miller-Cushonf7ce0472016-12-06 07:23:09 +0000254 ":token_stream",
ccalvarin8e9f4a82018-03-23 08:19:37 -0700255 "@com_google_googletest//:gtest_main",
Sasha Smundak28d70942016-08-09 09:20:43 +0000256 ],
Sasha Smundak876d6f62016-07-19 17:34:37 +0000257)
258
259cc_test(
Sasha Smundak0c6cccd2016-07-19 19:52:03 +0000260 name = "transient_bytes_test",
261 size = "large",
262 srcs = [
263 "transient_bytes_test.cc",
Sasha Smundak0c6cccd2016-07-19 19:52:03 +0000264 ":transient_bytes",
265 ":zlib_interface",
266 ],
Damien Martin-Guillerez57a965b2016-07-25 11:24:14 +0000267 # Timing out, see https://github.com/bazelbuild/bazel/issues/1555
268 tags = ["manual"],
Sasha Smundak0c6cccd2016-07-19 19:52:03 +0000269 deps = [
Sasha Smundak5f35e522016-08-04 14:55:08 +0000270 ":input_jar",
Sasha Smundak28d70942016-08-09 09:20:43 +0000271 ":test_util",
Sasha Smundak0c6cccd2016-07-19 19:52:03 +0000272 "//third_party/zlib",
ccalvarin8e9f4a82018-03-23 08:19:37 -0700273 "@com_google_googletest//:gtest_main",
Sasha Smundak0c6cccd2016-07-19 19:52:03 +0000274 ],
275)
276
277cc_test(
Sasha Smundaka66060c2016-07-25 08:26:33 +0000278 name = "zip_headers_test",
279 size = "small",
280 srcs = [
281 "zip_headers_test.cc",
282 ":zip_headers",
283 ],
ccalvarin8e9f4a82018-03-23 08:19:37 -0700284 deps = [
285 "@com_google_googletest//:gtest_main",
286 ],
Sasha Smundaka66060c2016-07-25 08:26:33 +0000287)
288
289cc_test(
Sasha Smundak06a12e52016-07-15 17:35:51 +0000290 name = "zlib_interface_test",
291 srcs = [
292 "zlib_interface_test.cc",
293 ":zlib_interface",
294 ],
295 deps = [
Sasha Smundak28d70942016-08-09 09:20:43 +0000296 ":test_util",
Sasha Smundak06a12e52016-07-15 17:35:51 +0000297 "//third_party/zlib",
ccalvarin8e9f4a82018-03-23 08:19:37 -0700298 "@com_google_googletest//:gtest_main",
Sasha Smundak06a12e52016-07-15 17:35:51 +0000299 ],
300)
301
Sasha Smundak207349e2016-08-23 17:21:47 +0000302sh_test(
303 name = "zip64_test",
304 srcs = ["zip64_test.sh"],
Sasha Smundak207349e2016-08-23 17:21:47 +0000305 data = [
306 ":singlejar",
Loo Rong Jiea3390702018-07-23 07:38:55 -0700307 "//src/test/shell:bashunit",
308 "@bazel_tools//tools/bash/runfiles",
dbabkin35df7152018-06-26 05:47:54 -0700309 "@bazel_tools//tools/jdk:current_java_runtime",
Ulf Adamsc8510b12017-02-14 10:27:11 +0000310 "@local_jdk//:jar",
Sasha Smundak207349e2016-08-23 17:21:47 +0000311 ],
312 deps = ["//src/test/shell:bashunit"],
313)
314
Sasha Smundakd3b0ede2016-07-20 09:11:34 +0000315cc_library(
Sasha Smundak3f814d72016-08-09 17:17:57 +0000316 name = "combiners",
317 srcs = [
318 "combiners.cc",
319 ":transient_bytes",
320 ":zip_headers",
321 ],
322 hdrs = ["combiners.h"],
kmbf6b8d5e2017-10-12 01:21:26 +0200323 deps = [
kmbf6b8d5e2017-10-12 01:21:26 +0200324 "//third_party/zlib",
325 ],
Sasha Smundak3f814d72016-08-09 17:17:57 +0000326)
327
328cc_library(
kmb5f911192018-03-29 15:51:32 -0700329 name = "desugar_checking",
330 srcs = ["desugar_checking.cc"],
331 hdrs = ["desugar_checking.h"],
332 deps = [
333 ":combiners",
xingao5dcf5482018-06-29 07:35:32 -0700334 "//src/main/protobuf:desugar_deps_cc_proto",
kmb5f911192018-03-29 15:51:32 -0700335 ],
336)
337
338cc_library(
Laszlo Csomorc14b3c62018-03-09 02:11:23 -0800339 name = "diag",
340 hdrs = ["diag.h"],
341 visibility = ["//visibility:private"],
342)
343
344cc_library(
Loo Rong Jie8231cd72018-07-17 03:57:01 -0700345 name = "port",
346 srcs = ["port.cc"],
347 hdrs = ["port.h"],
348 visibility = ["//visibility:private"],
349)
350
351cc_library(
Laszlo Csomorc14b3c62018-03-09 02:11:23 -0800352 name = "mapped_file",
353 srcs = select({
354 "//src:windows": ["mapped_file_windows.inc"],
355 "//conditions:default": ["mapped_file_posix.inc"],
356 }),
357 hdrs = ["mapped_file.h"],
358 visibility = ["//visibility:private"],
359 deps = [":diag"],
360)
361
362cc_library(
Sasha Smundak5f35e522016-08-04 14:55:08 +0000363 name = "input_jar",
364 srcs = [
Sasha Smundak5f35e522016-08-04 14:55:08 +0000365 "input_jar.cc",
Sasha Smundak5f35e522016-08-04 14:55:08 +0000366 ],
367 hdrs = [
368 "input_jar.h",
369 "zip_headers.h",
370 ],
Laszlo Csomorc14b3c62018-03-09 02:11:23 -0800371 deps = [
372 ":diag",
373 ":mapped_file",
374 ],
Sasha Smundak5f35e522016-08-04 14:55:08 +0000375)
376
377cc_library(
Sasha Smundakd3b0ede2016-07-20 09:11:34 +0000378 name = "options",
379 srcs = [
Sasha Smundakd3b0ede2016-07-20 09:11:34 +0000380 "options.cc",
381 "options.h",
Sasha Smundakd3b0ede2016-07-20 09:11:34 +0000382 ],
Sasha Smundak57472632016-08-05 20:07:40 +0000383 hdrs = ["options.h"],
Liam Miller-Cushonf7ce0472016-12-06 07:23:09 +0000384 deps = [
Laszlo Csomorc14b3c62018-03-09 02:11:23 -0800385 ":diag",
Liam Miller-Cushonf7ce0472016-12-06 07:23:09 +0000386 ":token_stream",
387 ],
Sasha Smundak57472632016-08-05 20:07:40 +0000388)
389
390cc_library(
391 name = "output_jar",
392 srcs = [
393 "output_jar.cc",
394 "output_jar.h",
Sasha Smundak57472632016-08-05 20:07:40 +0000395 ":zip_headers",
396 ],
397 hdrs = ["output_jar.h"],
398 deps = [
Sasha Smundak3f814d72016-08-09 17:17:57 +0000399 ":combiners",
Laszlo Csomorc14b3c62018-03-09 02:11:23 -0800400 ":diag",
Sasha Smundak57472632016-08-05 20:07:40 +0000401 ":input_jar",
Laszlo Csomorc14b3c62018-03-09 02:11:23 -0800402 ":mapped_file",
Sasha Smundak57472632016-08-05 20:07:40 +0000403 ":options",
404 "//src/main/cpp/util",
405 "//third_party/zlib",
406 ],
Sasha Smundakd3b0ede2016-07-20 09:11:34 +0000407)
408
Sasha Smundak28d70942016-08-09 09:20:43 +0000409cc_library(
410 name = "test_util",
411 srcs = ["test_util.cc"],
412 hdrs = ["test_util.h"],
413 deps = [
Sasha Smundak28d70942016-08-09 09:20:43 +0000414 "//src/main/cpp/util",
ccalvarin8e9f4a82018-03-23 08:19:37 -0700415 "@com_google_googletest//:gtest_main",
Sasha Smundak28d70942016-08-09 09:20:43 +0000416 ],
417)
418
Liam Miller-Cushonf7ce0472016-12-06 07:23:09 +0000419cc_library(
Sasha Smundak876d6f62016-07-19 17:34:37 +0000420 name = "token_stream",
Liam Miller-Cushonf7ce0472016-12-06 07:23:09 +0000421 hdrs = ["token_stream.h"],
Laszlo Csomorc14b3c62018-03-09 02:11:23 -0800422 deps = [":diag"],
Sasha Smundak876d6f62016-07-19 17:34:37 +0000423)
424
425filegroup(
Sasha Smundak0c6cccd2016-07-19 19:52:03 +0000426 name = "transient_bytes",
427 srcs = [
428 "diag.h",
429 "transient_bytes.h",
Sasha Smundak0c6cccd2016-07-19 19:52:03 +0000430 "zlib_interface.h",
Sasha Smundaka66060c2016-07-25 08:26:33 +0000431 ":zip_headers",
Sasha Smundak0c6cccd2016-07-19 19:52:03 +0000432 ],
433)
434
435filegroup(
Sasha Smundaka66060c2016-07-25 08:26:33 +0000436 name = "zip_headers",
437 srcs = ["zip_headers.h"],
438)
439
440filegroup(
Sasha Smundak06a12e52016-07-15 17:35:51 +0000441 name = "zlib_interface",
Sasha Smundak0c6cccd2016-07-19 19:52:03 +0000442 srcs = [
443 "diag.h",
444 "zlib_interface.h",
445 ],
Sasha Smundak06a12e52016-07-15 17:35:51 +0000446)
Sasha Smundak1e98fff2016-08-03 17:18:02 +0000447
448java_library(
449 name = "test1",
450 resources = [
Sasha Smundak0241b592016-09-26 17:00:25 +0000451 "options.cc",
Sasha Smundak1e98fff2016-08-03 17:18:02 +0000452 "zip_headers.h",
453 "zlib_interface.h",
454 ],
455)
Sasha Smundak57472632016-08-05 20:07:40 +0000456
457java_library(
458 name = "test2",
459 resources = [
460 "token_stream.h",
461 "transient_bytes.h",
462 ],
463)
Sasha Smundak92fbef02016-08-10 15:53:11 +0000464
465java_library(
466 name = "data1",
467 resources = [
468 "data/extra_file1",
469 "data/extra_file2",
470 ],
471)
472
473java_library(
474 name = "data2",
475 resources = [
476 "data/extra_file1",
477 "data/extra_file3",
478 ],
479)
Sasha Smundakb01948d2016-08-17 18:20:37 +0000480
481genrule(
482 name = "stored_jar",
Yue Gan6905aab2016-08-22 14:15:16 +0000483 srcs = [
484 "output_jar.cc",
dbabkin35df7152018-06-26 05:47:54 -0700485 "@bazel_tools//tools/jdk:current_java_runtime",
Yue Gan6905aab2016-08-22 14:15:16 +0000486 ],
Sasha Smundakb01948d2016-08-17 18:20:37 +0000487 outs = ["stored.jar"],
Ulf Adamsc8510b12017-02-14 10:27:11 +0000488 cmd = "$(location @local_jdk//:jar) -0cf \"$@\" $(location :output_jar.cc)",
489 tools = ["@local_jdk//:jar"],
Sasha Smundakb01948d2016-08-17 18:20:37 +0000490)