xref: /aosp_15_r20/external/jazzer-api/third_party/libjpeg_turbo.BUILD (revision 33edd6723662ea34453766bfdca85dbfdd5342b8)
1load("@rules_foreign_cc//foreign_cc:defs.bzl", "cmake")
2load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
3load("@bazel_skylib//rules:select_file.bzl", "select_file")
4
5filegroup(
6    name = "all_files",
7    srcs = glob(["**"]),
8)
9
10filegroup(
11    name = "java_files",
12    srcs = glob(["java/org/libjpegturbo/turbojpeg/*.java"]),
13)
14
15cc_import(
16    name = "libawt",
17    hdrs = [
18        "@local_jdk//:include/jawt.h",
19    ],
20    shared_library = "@local_jdk//:lib/libawt.so",
21)
22
23cmake(
24    name = "libjpeg_turbo",
25    cache_entries = {
26        "WITH_JAVA": "1",
27    },
28    copts = [
29        "-fsanitize=address,fuzzer-no-link",
30        "-fPIC",
31    ],
32    lib_source = ":all_files",
33    linkopts = [
34        "-fsanitize=address,fuzzer-no-link",
35    ],
36    out_shared_libs = [
37        "libjpeg.so",
38        "libturbojpeg.so",
39    ],
40    deps = [
41        ":libawt",
42        "@fmeum_rules_jni//jni",
43    ],
44)
45
46select_file(
47    name = "libturbojpeg_so",
48    srcs = ":libjpeg_turbo",
49    subpath = "lib/libturbojpeg.so",
50)
51
52copy_file(
53    name = "turbojpeg_native",
54    src = ":libturbojpeg_so",
55    out = "libturbojpeg.so",
56    visibility = ["//visibility:public"],
57)
58
59genrule(
60    name = "generate_jni_loader",
61    outs = ["TJLoader.java"],
62    cmd = "echo 'package org.libjpegturbo.turbojpeg; final class TJLoader { static void load() { System.loadLibrary(\"turbojpeg\"); }}' > $@",
63)
64
65java_library(
66    name = "turbojpeg_java",
67    srcs = [
68        ":generate_jni_loader",
69        ":java_files",
70    ],
71    visibility = ["//visibility:public"],
72)
73