blob: e140bc0797d57853eb860a9f8008780b89203541 [file] [log] [blame]
load("@rules_foreign_cc//foreign_cc:defs.bzl", "cmake")
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
load("@bazel_skylib//rules:select_file.bzl", "select_file")
filegroup(
name = "all_files",
srcs = glob(["**"]),
)
filegroup(
name = "java_files",
srcs = glob(["java/org/libjpegturbo/turbojpeg/*.java"]),
)
cc_import(
name = "libawt",
hdrs = [
"@local_jdk//:include/jawt.h",
],
shared_library = "@local_jdk//:lib/libawt.so",
)
cmake(
name = "libjpeg_turbo",
cache_entries = {
"WITH_JAVA": "1",
},
copts = [
"-fsanitize=address,fuzzer-no-link",
"-fPIC",
],
lib_source = ":all_files",
linkopts = [
"-fsanitize=address,fuzzer-no-link",
],
out_shared_libs = [
"libjpeg.so",
"libturbojpeg.so",
],
deps = [
":libawt",
"@fmeum_rules_jni//jni",
],
)
select_file(
name = "libturbojpeg_so",
srcs = ":libjpeg_turbo",
subpath = "lib/libturbojpeg.so",
)
copy_file(
name = "turbojpeg_native",
src = ":libturbojpeg_so",
out = "libturbojpeg.so",
visibility = ["//visibility:public"],
)
genrule(
name = "generate_jni_loader",
outs = ["TJLoader.java"],
cmd = "echo 'package org.libjpegturbo.turbojpeg; final class TJLoader { static void load() { System.loadLibrary(\"turbojpeg\"); }}' > $@",
)
java_library(
name = "turbojpeg_java",
srcs = [
":generate_jni_loader",
":java_files",
],
visibility = ["//visibility:public"],
)