1*33edd672SMarkload("@build_bazel_apple_support//rules:universal_binary.bzl", "universal_binary") 2*33edd672SMark 3*33edd672SMarkcc_library( 4*33edd672SMark name = "jazzer_main", 5*33edd672SMark srcs = ["jazzer_main.cpp"], 6*33edd672SMark deps = [ 7*33edd672SMark ":jvm_tooling_lib", 8*33edd672SMark "@com_google_absl//absl/strings", 9*33edd672SMark "@fmeum_rules_jni//jni:libjvm", 10*33edd672SMark ], 11*33edd672SMark) 12*33edd672SMark 13*33edd672SMarkcc_library( 14*33edd672SMark name = "jvm_tooling_lib", 15*33edd672SMark srcs = ["jvm_tooling.cpp"], 16*33edd672SMark hdrs = ["jvm_tooling.h"], 17*33edd672SMark data = [ 18*33edd672SMark "//src/main/java/com/code_intelligence/jazzer:jazzer_standalone_deploy.jar", 19*33edd672SMark ], 20*33edd672SMark linkopts = select({ 21*33edd672SMark "@platforms//os:android": ["-ldl"], 22*33edd672SMark "//conditions:default": [], 23*33edd672SMark }), 24*33edd672SMark deps = [ 25*33edd672SMark "@bazel_tools//tools/cpp/runfiles", 26*33edd672SMark "@com_google_absl//absl/strings", 27*33edd672SMark "@com_google_absl//absl/strings:str_format", 28*33edd672SMark "@fmeum_rules_jni//jni", 29*33edd672SMark ], 30*33edd672SMark) 31*33edd672SMark 32*33edd672SMarkcc_binary( 33*33edd672SMark name = "jazzer_single_arch", 34*33edd672SMark linkstatic = True, 35*33edd672SMark tags = ["manual"], 36*33edd672SMark visibility = ["//launcher/android:__pkg__"], 37*33edd672SMark deps = [":jazzer_main"], 38*33edd672SMark) 39*33edd672SMark 40*33edd672SMark# On macOS, builds a binary that supports both x86_64 and arm64. 41*33edd672SMark# On all other platforms, it just symlinks the input binary. 42*33edd672SMarkuniversal_binary( 43*33edd672SMark name = "jazzer", 44*33edd672SMark binary = ":jazzer_single_arch", 45*33edd672SMark visibility = ["//visibility:public"], 46*33edd672SMark) 47*33edd672SMark 48*33edd672SMarkcc_test( 49*33edd672SMark name = "jvm_tooling_test", 50*33edd672SMark size = "small", 51*33edd672SMark srcs = ["jvm_tooling_test.cpp"], 52*33edd672SMark data = [ 53*33edd672SMark "//launcher/testdata:fuzz_target_mocks_deploy.jar", 54*33edd672SMark ], 55*33edd672SMark env = { 56*33edd672SMark "JAVA_OPTS": "-Djazzer.hooks=false", 57*33edd672SMark }, 58*33edd672SMark includes = ["."], 59*33edd672SMark deps = [ 60*33edd672SMark ":jvm_tooling_lib", 61*33edd672SMark ":test_main", 62*33edd672SMark "@bazel_tools//tools/cpp/runfiles", 63*33edd672SMark "@googletest//:gtest", 64*33edd672SMark ], 65*33edd672SMark) 66*33edd672SMark 67*33edd672SMarkcc_test( 68*33edd672SMark name = "fuzzed_data_provider_test", 69*33edd672SMark size = "medium", 70*33edd672SMark srcs = ["fuzzed_data_provider_test.cpp"], 71*33edd672SMark copts = select({ 72*33edd672SMark "@platforms//os:windows": ["/std:c++17"], 73*33edd672SMark "//conditions:default": ["-std=c++17"], 74*33edd672SMark }), 75*33edd672SMark data = [ 76*33edd672SMark "//launcher/testdata:fuzz_target_mocks_deploy.jar", 77*33edd672SMark ], 78*33edd672SMark env = { 79*33edd672SMark "JAVA_OPTS": "-Djazzer.hooks=false", 80*33edd672SMark }, 81*33edd672SMark includes = ["."], 82*33edd672SMark deps = [ 83*33edd672SMark ":jvm_tooling_lib", 84*33edd672SMark ":test_main", 85*33edd672SMark "//src/main/native/com/code_intelligence/jazzer/driver:fuzzed_data_provider", 86*33edd672SMark "@bazel_tools//tools/cpp/runfiles", 87*33edd672SMark "@googletest//:gtest", 88*33edd672SMark ], 89*33edd672SMark) 90*33edd672SMark 91*33edd672SMarkcc_library( 92*33edd672SMark name = "test_main", 93*33edd672SMark srcs = ["test_main.cpp"], 94*33edd672SMark linkstatic = True, 95*33edd672SMark deps = [ 96*33edd672SMark "@fmeum_rules_jni//jni:libjvm", 97*33edd672SMark "@googletest//:gtest", 98*33edd672SMark ], 99*33edd672SMark) 100