diff options
Diffstat (limited to 'launcher/BUILD.bazel')
-rw-r--r-- | launcher/BUILD.bazel | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/launcher/BUILD.bazel b/launcher/BUILD.bazel new file mode 100644 index 00000000..50bd4772 --- /dev/null +++ b/launcher/BUILD.bazel @@ -0,0 +1,99 @@ +load("@build_bazel_apple_support//rules:universal_binary.bzl", "universal_binary") + +cc_library( + name = "jazzer_main", + srcs = ["jazzer_main.cpp"], + deps = [ + ":jvm_tooling_lib", + "@com_google_absl//absl/strings", + "@fmeum_rules_jni//jni:libjvm", + ], +) + +cc_library( + name = "jvm_tooling_lib", + srcs = ["jvm_tooling.cpp"], + hdrs = ["jvm_tooling.h"], + data = [ + "//src/main/java/com/code_intelligence/jazzer:jazzer_standalone_deploy.jar", + ], + linkopts = select({ + "@platforms//os:android": ["-ldl"], + "//conditions:default": [], + }), + deps = [ + "@bazel_tools//tools/cpp/runfiles", + "@com_google_absl//absl/strings", + "@com_google_absl//absl/strings:str_format", + "@fmeum_rules_jni//jni", + ], +) + +cc_binary( + name = "jazzer_single_arch", + linkstatic = True, + tags = ["manual"], + visibility = ["//launcher/android:__pkg__"], + deps = [":jazzer_main"], +) + +# On macOS, builds a binary that supports both x86_64 and arm64. +# On all other platforms, it just symlinks the input binary. +universal_binary( + name = "jazzer", + binary = ":jazzer_single_arch", + visibility = ["//visibility:public"], +) + +cc_test( + name = "jvm_tooling_test", + size = "small", + srcs = ["jvm_tooling_test.cpp"], + data = [ + "//launcher/testdata:fuzz_target_mocks_deploy.jar", + ], + env = { + "JAVA_OPTS": "-Djazzer.hooks=false", + }, + includes = ["."], + deps = [ + ":jvm_tooling_lib", + ":test_main", + "@bazel_tools//tools/cpp/runfiles", + "@googletest//:gtest", + ], +) + +cc_test( + name = "fuzzed_data_provider_test", + size = "medium", + srcs = ["fuzzed_data_provider_test.cpp"], + copts = select({ + "@platforms//os:windows": ["/std:c++17"], + "//conditions:default": ["-std=c++17"], + }), + data = [ + "//launcher/testdata:fuzz_target_mocks_deploy.jar", + ], + env = { + "JAVA_OPTS": "-Djazzer.hooks=false", + }, + includes = ["."], + deps = [ + ":jvm_tooling_lib", + ":test_main", + "//src/main/native/com/code_intelligence/jazzer/driver:fuzzed_data_provider", + "@bazel_tools//tools/cpp/runfiles", + "@googletest//:gtest", + ], +) + +cc_library( + name = "test_main", + srcs = ["test_main.cpp"], + linkstatic = True, + deps = [ + "@fmeum_rules_jni//jni:libjvm", + "@googletest//:gtest", + ], +) |