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", ], )