| load("@rules_java//java:defs.bzl", "java_library") | 
 | load("//src:release_archive.bzl", "release_archive") | 
 |  | 
 | # Description: | 
 | #   singlejar C++ implementation. | 
 | package(default_visibility = ["//src:__subpackages__"]) | 
 |  | 
 | filegroup( | 
 |     name = "srcs", | 
 |     srcs = glob(["**"]), | 
 |     visibility = ["//src:__pkg__"], | 
 | ) | 
 |  | 
 | SOURCES = [ | 
 |     "combiners.cc", | 
 |     "combiners.h", | 
 |     "diag.h", | 
 |     "input_jar.cc", | 
 |     "input_jar.h", | 
 |     "mapped_file.cc", | 
 |     "mapped_file.h", | 
 |     "mapped_file_posix.inc", | 
 |     "mapped_file_windows.inc", | 
 |     "options.cc", | 
 |     "options.h", | 
 |     "output_jar.cc", | 
 |     "output_jar.h", | 
 |     "port.h", | 
 |     "singlejar_main.cc", | 
 |     "token_stream.h", | 
 |     "transient_bytes.h", | 
 |     "zip_headers.h", | 
 |     "zlib_interface.h", | 
 | ] | 
 |  | 
 | filegroup( | 
 |     name = "embedded_java_tools", | 
 |     srcs = SOURCES + [ | 
 |         "//src/main/cpp/util:embedded_java_tools", | 
 |         "//third_party/zlib:embedded_tools", | 
 |         "//src/main/protobuf:desugar_deps_filegroup", | 
 |     ], | 
 |     visibility = ["//src:__pkg__"], | 
 | ) | 
 |  | 
 | release_archive( | 
 |     name = "singlejar_transitive_zip", | 
 |     package_dir = "java_tools", | 
 |     visibility = ["//src:__pkg__"], | 
 |     deps = [ | 
 |         ":singlejar_zip", | 
 |         "//src:zlib_zip", | 
 |         "//src/main/cpp/util:cpp_util_with_deps_zip", | 
 |         "//src/main/protobuf:desugar_deps_zip", | 
 |     ], | 
 | ) | 
 |  | 
 | release_archive( | 
 |     name = "singlejar_zip", | 
 |     srcs = SOURCES, | 
 |     package_dir = "src/tools/singlejar", | 
 |     visibility = ["//visibility:private"], | 
 | ) | 
 |  | 
 | release_archive( | 
 |     name = "singlejar_deploy_zip", | 
 |     srcs = [":singlejar_local"], | 
 |     package_dir = "java_tools/src/tools/singlejar", | 
 |     visibility = ["//src:__pkg__"], | 
 | ) | 
 |  | 
 | cc_binary( | 
 |     name = "singlejar", | 
 |     srcs = [ | 
 |         "singlejar_main.cc", | 
 |     ], | 
 |     linkopts = select({ | 
 |         "//src/conditions:freebsd": ["-lm"], | 
 |         "//src/conditions:openbsd": ["-lm"], | 
 |         "//conditions:default": [], | 
 |     }), | 
 |     linkstatic = 1, | 
 |     visibility = ["//visibility:public"], | 
 |     deps = [ | 
 |         "options", | 
 |         "output_jar", | 
 |         "//third_party/zlib", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_binary( | 
 |     name = "singlejar_local", | 
 |     srcs = [ | 
 |         "singlejar_local_main.cc", | 
 |     ], | 
 |     linkopts = select({ | 
 |         "//src/conditions:freebsd": ["-lm"], | 
 |         "//src/conditions:openbsd": ["-lm"], | 
 |         "//conditions:default": [], | 
 |     }), | 
 |     linkstatic = 1, | 
 |     visibility = ["//visibility:public"], | 
 |     deps = [ | 
 |         "combiners", | 
 |         "desugar_checking", | 
 |         "options", | 
 |         "output_jar", | 
 |         "//third_party/zlib", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_test( | 
 |     name = "combiners_test", | 
 |     size = "large", | 
 |     srcs = [ | 
 |         "combiners_test.cc", | 
 |         ":zip_headers", | 
 |         ":zlib_interface", | 
 |     ], | 
 |     data = [ | 
 |         "data/multi_release.jar", | 
 |     ], | 
 |     # Requires at least 5 GiB of memory | 
 |     exec_compatible_with = ["//:highcpu_machine"], | 
 |     deps = [ | 
 |         ":combiners", | 
 |         ":input_jar", | 
 |         ":test_util", | 
 |         "//third_party/zlib", | 
 |         "@com_google_googletest//:gtest_main", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_test( | 
 |     name = "desugar_checking_test", | 
 |     srcs = [ | 
 |         "desugar_checking_test.cc", | 
 |         ":zip_headers", | 
 |         ":zlib_interface", | 
 |     ], | 
 |     deps = [ | 
 |         ":combiners", | 
 |         ":desugar_checking", | 
 |         ":input_jar", | 
 |         "//third_party/zlib", | 
 |         "@com_google_googletest//:gtest_main", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_test( | 
 |     name = "input_jar_empty_jar_test", | 
 |     srcs = [ | 
 |         "input_jar_empty_jar_test.cc", | 
 |     ], | 
 |     data = [ | 
 |         "data/empty.zip", | 
 |     ], | 
 |     deps = [ | 
 |         ":input_jar", | 
 |         ":test_util", | 
 |         "//src/main/cpp/util", | 
 |         "@com_google_googletest//:gtest_main", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_test( | 
 |     name = "input_jar_preambled_test", | 
 |     size = "large", | 
 |     srcs = [ | 
 |         "input_jar_preambled_test.cc", | 
 |     ], | 
 |     data = [ | 
 |         ":test1", | 
 |     ], | 
 |     deps = [ | 
 |         ":input_jar", | 
 |         ":test_util", | 
 |         "//src/main/cpp/util", | 
 |         "@com_google_googletest//:gtest_main", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_test( | 
 |     name = "input_jar_scan_jartool_test", | 
 |     size = "large", | 
 |     srcs = [ | 
 |         "input_jar_scan_entries_test.h", | 
 |         "input_jar_scan_jartool_test.cc", | 
 |     ], | 
 |     copts = select({ | 
 |         "//src/conditions:windows": ["-DJAR_TOOL_PATH=\\\"io_bazel/$(JAVABASE)/bin/jar.exe\\\""], | 
 |         "//conditions:default": ["-DJAR_TOOL_PATH=\\\"io_bazel/$(JAVABASE)/bin/jar\\\""], | 
 |     }), | 
 |     data = ["@bazel_tools//tools/jdk:current_java_runtime"], | 
 |     # Timing out, see https://github.com/bazelbuild/bazel/issues/1555 | 
 |     tags = ["manual"], | 
 |     toolchains = ["@bazel_tools//tools/jdk:current_java_runtime"], | 
 |     deps = [ | 
 |         ":input_jar", | 
 |         ":test_util", | 
 |         "@com_google_googletest//:gtest_main", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_test( | 
 |     name = "input_jar_scan_ziptool_test", | 
 |     size = "large", | 
 |     srcs = [ | 
 |         "input_jar_scan_entries_test.h", | 
 |         "input_jar_scan_ziptool_test.cc", | 
 |     ], | 
 |     # Timing out, see https://github.com/bazelbuild/bazel/issues/1555 | 
 |     tags = ["manual"], | 
 |     deps = [ | 
 |         ":input_jar", | 
 |         ":test_util", | 
 |         "@com_google_googletest//:gtest_main", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_test( | 
 |     name = "input_jar_bad_jar_test", | 
 |     srcs = [ | 
 |         "input_jar_bad_jar_test.cc", | 
 |     ], | 
 |     deps = [ | 
 |         ":input_jar", | 
 |         ":test_util", | 
 |         "@com_google_googletest//:gtest_main", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_test( | 
 |     name = "options_test", | 
 |     srcs = [ | 
 |         "options.h", | 
 |         "options_test.cc", | 
 |     ], | 
 |     deps = [ | 
 |         ":options", | 
 |         ":token_stream", | 
 |         "//src/main/cpp/util", | 
 |         "@com_google_googletest//:gtest_main", | 
 |     ], | 
 | ) | 
 |  | 
 | sh_test( | 
 |     name = "output_jar_bash_test", | 
 |     srcs = ["output_jar_shell_test.sh"], | 
 |     data = [ | 
 |         ":singlejar", | 
 |         "//src/test/shell:bashunit", | 
 |         "@bazel_tools//tools/bash/runfiles", | 
 |     ], | 
 |     deps = ["//src/test/shell:bashunit"], | 
 | ) | 
 |  | 
 | cc_test( | 
 |     name = "output_jar_simple_test", | 
 |     srcs = [ | 
 |         "output_jar_simple_test.cc", | 
 |     ], | 
 |     copts = select({ | 
 |         "//src/conditions:windows": ["-DJAR_TOOL_PATH=\\\"io_bazel/$(JAVABASE)/bin/jar.exe\\\""], | 
 |         "//conditions:default": ["-DJAR_TOOL_PATH=\\\"io_bazel/$(JAVABASE)/bin/jar\\\""], | 
 |     }), | 
 |     data = [ | 
 |         ":data1", | 
 |         ":data2", | 
 |         ":stored_jar", | 
 |         ":test1", | 
 |         ":test2", | 
 |         "@bazel_tools//tools/jdk:current_java_runtime", | 
 |     ], | 
 |     toolchains = ["@bazel_tools//tools/jdk:current_java_runtime"], | 
 |     deps = [ | 
 |         ":input_jar", | 
 |         ":options", | 
 |         ":output_jar", | 
 |         ":port", | 
 |         ":test_util", | 
 |         "//src/main/cpp/util", | 
 |         "@com_google_googletest//:gtest_main", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_test( | 
 |     name = "token_stream_test", | 
 |     srcs = [ | 
 |         "token_stream_test.cc", | 
 |     ], | 
 |     deps = [ | 
 |         ":test_util", | 
 |         ":token_stream", | 
 |         "@com_google_googletest//:gtest_main", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_test( | 
 |     name = "transient_bytes_test", | 
 |     size = "large", | 
 |     srcs = [ | 
 |         "transient_bytes_test.cc", | 
 |         ":transient_bytes", | 
 |         ":zlib_interface", | 
 |     ], | 
 |     # Timing out, see https://github.com/bazelbuild/bazel/issues/1555 | 
 |     tags = ["manual"], | 
 |     deps = [ | 
 |         ":input_jar", | 
 |         ":test_util", | 
 |         "//third_party/zlib", | 
 |         "@com_google_googletest//:gtest_main", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_test( | 
 |     name = "zip_headers_test", | 
 |     size = "small", | 
 |     srcs = [ | 
 |         "zip_headers_test.cc", | 
 |         ":zip_headers", | 
 |     ], | 
 |     deps = [ | 
 |         "@com_google_googletest//:gtest_main", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_test( | 
 |     name = "zlib_interface_test", | 
 |     srcs = [ | 
 |         "zlib_interface_test.cc", | 
 |         ":zlib_interface", | 
 |     ], | 
 |     deps = [ | 
 |         "//third_party/zlib", | 
 |         "@com_google_googletest//:gtest_main", | 
 |     ], | 
 | ) | 
 |  | 
 | sh_test( | 
 |     name = "zip64_test", | 
 |     srcs = ["zip64_test.sh"], | 
 |     args = ["$(JAVABASE)"], | 
 |     data = [ | 
 |         ":singlejar", | 
 |         "//src/test/shell:bashunit", | 
 |         "@bazel_tools//tools/bash/runfiles", | 
 |         "@bazel_tools//tools/jdk:current_java_runtime", | 
 |     ], | 
 |     toolchains = ["@bazel_tools//tools/jdk:current_java_runtime"], | 
 |     deps = ["//src/test/shell:bashunit"], | 
 | ) | 
 |  | 
 | cc_library( | 
 |     name = "combiners", | 
 |     srcs = [ | 
 |         "combiners.cc", | 
 |         ":transient_bytes", | 
 |         ":zip_headers", | 
 |     ], | 
 |     hdrs = ["combiners.h"], | 
 |     deps = [ | 
 |         "//third_party/zlib", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_library( | 
 |     name = "desugar_checking", | 
 |     srcs = ["desugar_checking.cc"], | 
 |     hdrs = ["desugar_checking.h"], | 
 |     deps = [ | 
 |         ":combiners", | 
 |         "//src/main/protobuf:desugar_deps_cc_proto", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_library( | 
 |     name = "diag", | 
 |     hdrs = ["diag.h"], | 
 |     visibility = ["//visibility:private"], | 
 | ) | 
 |  | 
 | cc_library( | 
 |     name = "port", | 
 |     hdrs = ["port.h"], | 
 |     visibility = ["//visibility:private"], | 
 | ) | 
 |  | 
 | cc_library( | 
 |     name = "mapped_file", | 
 |     srcs = ["mapped_file.cc"] + select({ | 
 |         "//src:windows": ["mapped_file_windows.inc"], | 
 |         "//conditions:default": ["mapped_file_posix.inc"], | 
 |     }), | 
 |     hdrs = ["mapped_file.h"], | 
 |     visibility = ["//visibility:private"], | 
 |     deps = [ | 
 |         ":diag", | 
 |         ":port", | 
 |         "//src/main/cpp/util", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_library( | 
 |     name = "input_jar", | 
 |     srcs = [ | 
 |         "input_jar.cc", | 
 |     ], | 
 |     hdrs = [ | 
 |         "input_jar.h", | 
 |         "zip_headers.h", | 
 |     ], | 
 |     deps = [ | 
 |         ":diag", | 
 |         ":mapped_file", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_library( | 
 |     name = "options", | 
 |     srcs = [ | 
 |         "options.cc", | 
 |         "options.h", | 
 |     ], | 
 |     hdrs = ["options.h"], | 
 |     deps = [ | 
 |         ":diag", | 
 |         ":token_stream", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_library( | 
 |     name = "output_jar", | 
 |     srcs = [ | 
 |         "output_jar.cc", | 
 |         "output_jar.h", | 
 |         ":zip_headers", | 
 |     ], | 
 |     hdrs = ["output_jar.h"], | 
 |     deps = [ | 
 |         ":combiners", | 
 |         ":diag", | 
 |         ":input_jar", | 
 |         ":mapped_file", | 
 |         ":options", | 
 |         ":port", | 
 |         "//src/main/cpp/util", | 
 |         "//third_party/zlib", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_library( | 
 |     name = "test_util", | 
 |     testonly = 1, | 
 |     srcs = ["test_util.cc"], | 
 |     hdrs = ["test_util.h"], | 
 |     deps = [ | 
 |         "//src/main/cpp/util", | 
 |         "@bazel_tools//tools/cpp/runfiles", | 
 |         "@com_google_googletest//:gtest_main", | 
 |     ], | 
 | ) | 
 |  | 
 | cc_library( | 
 |     name = "token_stream", | 
 |     hdrs = ["token_stream.h"], | 
 |     deps = [ | 
 |         ":diag", | 
 |         "//src/main/cpp/util", | 
 |     ], | 
 | ) | 
 |  | 
 | filegroup( | 
 |     name = "transient_bytes", | 
 |     srcs = [ | 
 |         "diag.h", | 
 |         "transient_bytes.h", | 
 |         "zlib_interface.h", | 
 |         ":zip_headers", | 
 |     ], | 
 | ) | 
 |  | 
 | filegroup( | 
 |     name = "zip_headers", | 
 |     srcs = ["zip_headers.h"], | 
 | ) | 
 |  | 
 | filegroup( | 
 |     name = "zlib_interface", | 
 |     srcs = [ | 
 |         "diag.h", | 
 |         "zlib_interface.h", | 
 |     ], | 
 | ) | 
 |  | 
 | java_library( | 
 |     name = "test1", | 
 |     resources = [ | 
 |         "options.cc", | 
 |         "zip_headers.h", | 
 |         "zlib_interface.h", | 
 |     ], | 
 | ) | 
 |  | 
 | java_library( | 
 |     name = "test2", | 
 |     resources = [ | 
 |         "token_stream.h", | 
 |         "transient_bytes.h", | 
 |     ], | 
 | ) | 
 |  | 
 | java_library( | 
 |     name = "data1", | 
 |     resources = [ | 
 |         "data/extra_file1", | 
 |         "data/extra_file2", | 
 |     ], | 
 | ) | 
 |  | 
 | java_library( | 
 |     name = "data2", | 
 |     resources = [ | 
 |         "data/extra_file1", | 
 |         "data/extra_file3", | 
 |     ], | 
 | ) | 
 |  | 
 | genrule( | 
 |     name = "stored_jar", | 
 |     srcs = [ | 
 |         "output_jar.cc", | 
 |         "@bazel_tools//tools/jdk:current_java_runtime", | 
 |     ], | 
 |     outs = ["stored.jar"], | 
 |     cmd = "$(JAVABASE)/bin/jar -0cf \"$@\" $(location :output_jar.cc)", | 
 |     toolchains = ["@bazel_tools//tools/jdk:current_java_runtime"], | 
 |     tools = ["@bazel_tools//tools/jdk:current_java_runtime"], | 
 | ) |