blob: e60b5187b32ea1966a892463a4e37ae4c405c017 [file] [log] [blame] [edit]
load("@rules_java//java:defs.bzl", "java_library")
load("//src:release_archive.bzl", "release_archive")
load("//third_party/ijar:darwin_universal_binary.bzl", "darwin_universal_binary")
# 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_binary_for_deploy"],
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",
],
)
alias(
name = "singlejar_local_binary_for_deploy",
actual = select({
"//src/conditions:darwin": ":singlejar_local_darwin",
"//conditions:default": ":singlejar_local",
}),
)
darwin_universal_binary(
name = "singlejar_local_darwin",
binary = ":singlejar_local",
output_name = "singlejar_local",
)
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"],
)