blob: 4621f862ea843ff0e2beb1657cf189a4afe269b3 [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 = {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_C_COMPILER": "clang",
"CMAKE_C_FLAGS": "-fsanitize=address,fuzzer-no-link",
"CMAKE_SHARED_LINKER_FLAGS": "-fsanitize=address,fuzzer-no-link",
"WITH_JAVA": "1",
},
lib_source = ":all_files",
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"],
)