xref: /aosp_15_r20/external/jazzer-api/deploy/BUILD.bazel (revision 33edd6723662ea34453766bfdca85dbfdd5342b8)
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