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