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