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