• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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        "CMAKE_BUILD_TYPE": "Release",
27        "CMAKE_C_COMPILER": "clang",
28        "CMAKE_C_FLAGS": "-fsanitize=address,fuzzer-no-link",
29        "CMAKE_SHARED_LINKER_FLAGS": "-fsanitize=address,fuzzer-no-link",
30        "WITH_JAVA": "1",
31    },
32    lib_source = ":all_files",
33    out_shared_libs = [
34        "libjpeg.so",
35        "libturbojpeg.so",
36    ],
37    deps = [
38        ":libawt",
39        "@fmeum_rules_jni//jni",
40    ],
41)
42
43select_file(
44    name = "libturbojpeg_so",
45    srcs = ":libjpeg_turbo",
46    subpath = "lib/libturbojpeg.so",
47)
48
49copy_file(
50    name = "turbojpeg_native",
51    src = ":libturbojpeg_so",
52    out = "libturbojpeg.so",
53    visibility = ["//visibility:public"],
54)
55
56genrule(
57    name = "generate_jni_loader",
58    outs = ["TJLoader.java"],
59    cmd = "echo 'package org.libjpegturbo.turbojpeg; final class TJLoader { static void load() { System.loadLibrary(\"turbojpeg\"); }}' > $@",
60)
61
62java_library(
63    name = "turbojpeg_java",
64    srcs = [
65        ":generate_jni_loader",
66        ":java_files",
67    ],
68    visibility = ["//visibility:public"],
69)
70