1load("@bazel_skylib//rules:common_settings.bzl", "bool_flag") 2load("@rules_jvm_external//:defs.bzl", "java_export") 3load("//:maven.bzl", "JAZZER_API_COORDINATES", "JAZZER_COORDINATES", "JAZZER_JUNIT_COORDINATES") 4load("//bazel:compat.bzl", "SKIP_ON_WINDOWS") 5 6bool_flag( 7 name = "linked_javadoc", 8 build_setting_default = False, 9) 10 11config_setting( 12 name = "emit_linked_javadoc", 13 flag_values = { 14 ":linked_javadoc": "True", 15 }, 16 visibility = ["//:__subpackages__"], 17) 18 19sh_binary( 20 name = "deploy", 21 srcs = ["deploy.sh"], 22 args = [JAZZER_COORDINATES], 23) 24 25java_export( 26 name = "jazzer-api", 27 javadocopts = select({ 28 ":emit_linked_javadoc": [ 29 "-link", 30 "https://docs.oracle.com/en/java/javase/17/docs/api/", 31 ], 32 "//conditions:default": [], 33 }), 34 maven_coordinates = JAZZER_API_COORDINATES, 35 pom_template = "//deploy:jazzer-api.pom", 36 visibility = ["//visibility:public"], 37 runtime_deps = ["//src/main/java/com/code_intelligence/jazzer/api"], 38) 39 40java_export( 41 name = "jazzer", 42 maven_coordinates = JAZZER_COORDINATES, 43 pom_template = "jazzer.pom", 44 # Do not generate an implicit javadocs target - the current target is based on the shaded deploy 45 # JAR, for which the docs JAR generated by default would be empty. 46 tags = ["no-javadocs"], 47 visibility = ["//visibility:public"], 48 runtime_deps = [ 49 "//src/main/java/com/code_intelligence/jazzer:jazzer_import", 50 ], 51) 52 53alias( 54 name = "jazzer-docs", 55 actual = "//src/main/java/com/code_intelligence/jazzer:jazzer-docs", 56) 57 58alias( 59 name = "jazzer-sources", 60 actual = "//src/main/java/com/code_intelligence/jazzer:jazzer-sources", 61) 62 63java_export( 64 name = "jazzer-junit", 65 # Exclude the unshaded classes comprising com.code-intelligence:jazzer since the java_library 66 # target comprising jazzer-junit depend on the individual libraries, not the shaded jar. 67 deploy_env = ["//src/main/java/com/code_intelligence/jazzer:jazzer_lib"], 68 javadocopts = select({ 69 ":emit_linked_javadoc": [ 70 "-link", 71 "https://docs.oracle.com/en/java/javase/17/docs/api/", 72 "-link", 73 "https://codeintelligencetesting.github.io/jazzer-docs/jazzer-api/", 74 "-link", 75 "https://codeintelligencetesting.github.io/jazzer-docs/jazzer/", 76 "-link", 77 "https://junit.org/junit5/docs/current/api/", 78 ], 79 "//conditions:default": [], 80 }), 81 maven_coordinates = JAZZER_JUNIT_COORDINATES, 82 pom_template = "jazzer-junit.pom", 83 visibility = ["//visibility:public"], 84 runtime_deps = [ 85 # These deps' only effect is to include a dependency on the 'jazzer' and 'jazzer-api' Maven artifacts in the 86 # POM. 87 "//deploy:jazzer", 88 "//deploy:jazzer-api", 89 "//src/main/java/com/code_intelligence/jazzer/junit", 90 ], 91) 92 93[ 94 sh_test( 95 name = artifact + "_artifact_test", 96 srcs = [artifact + "_artifact_test.sh"], 97 args = [ 98 "$(rootpath :%s)" % artifact, 99 ], 100 data = [ 101 ":" + artifact, 102 "@local_jdk//:bin/jar", 103 ], 104 tags = [ 105 # Coverage instrumentation necessarily adds files to the jar that we 106 # wouldn't want to release and thus causes this test to fail. 107 "no-coverage", 108 ], 109 target_compatible_with = SKIP_ON_WINDOWS, 110 ) 111 for artifact in [ 112 "jazzer-api", 113 "jazzer", 114 "jazzer-junit", 115 ] 116] 117