aboutsummaryrefslogtreecommitdiff
path: root/third_party/libjpeg_turbo.BUILD
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libjpeg_turbo.BUILD')
-rw-r--r--third_party/libjpeg_turbo.BUILD69
1 files changed, 69 insertions, 0 deletions
diff --git a/third_party/libjpeg_turbo.BUILD b/third_party/libjpeg_turbo.BUILD
new file mode 100644
index 00000000..4621f862
--- /dev/null
+++ b/third_party/libjpeg_turbo.BUILD
@@ -0,0 +1,69 @@
+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"],
+)