1*33edd672SMarkload("@rules_foreign_cc//foreign_cc:defs.bzl", "cmake") 2*33edd672SMarkload("@bazel_skylib//rules:copy_file.bzl", "copy_file") 3*33edd672SMarkload("@bazel_skylib//rules:select_file.bzl", "select_file") 4*33edd672SMark 5*33edd672SMarkfilegroup( 6*33edd672SMark name = "all_files", 7*33edd672SMark srcs = glob(["**"]), 8*33edd672SMark) 9*33edd672SMark 10*33edd672SMarkfilegroup( 11*33edd672SMark name = "java_files", 12*33edd672SMark srcs = glob(["java/org/libjpegturbo/turbojpeg/*.java"]), 13*33edd672SMark) 14*33edd672SMark 15*33edd672SMarkcc_import( 16*33edd672SMark name = "libawt", 17*33edd672SMark hdrs = [ 18*33edd672SMark "@local_jdk//:include/jawt.h", 19*33edd672SMark ], 20*33edd672SMark shared_library = "@local_jdk//:lib/libawt.so", 21*33edd672SMark) 22*33edd672SMark 23*33edd672SMarkcmake( 24*33edd672SMark name = "libjpeg_turbo", 25*33edd672SMark cache_entries = { 26*33edd672SMark "WITH_JAVA": "1", 27*33edd672SMark }, 28*33edd672SMark copts = [ 29*33edd672SMark "-fsanitize=address,fuzzer-no-link", 30*33edd672SMark "-fPIC", 31*33edd672SMark ], 32*33edd672SMark lib_source = ":all_files", 33*33edd672SMark linkopts = [ 34*33edd672SMark "-fsanitize=address,fuzzer-no-link", 35*33edd672SMark ], 36*33edd672SMark out_shared_libs = [ 37*33edd672SMark "libjpeg.so", 38*33edd672SMark "libturbojpeg.so", 39*33edd672SMark ], 40*33edd672SMark deps = [ 41*33edd672SMark ":libawt", 42*33edd672SMark "@fmeum_rules_jni//jni", 43*33edd672SMark ], 44*33edd672SMark) 45*33edd672SMark 46*33edd672SMarkselect_file( 47*33edd672SMark name = "libturbojpeg_so", 48*33edd672SMark srcs = ":libjpeg_turbo", 49*33edd672SMark subpath = "lib/libturbojpeg.so", 50*33edd672SMark) 51*33edd672SMark 52*33edd672SMarkcopy_file( 53*33edd672SMark name = "turbojpeg_native", 54*33edd672SMark src = ":libturbojpeg_so", 55*33edd672SMark out = "libturbojpeg.so", 56*33edd672SMark visibility = ["//visibility:public"], 57*33edd672SMark) 58*33edd672SMark 59*33edd672SMarkgenrule( 60*33edd672SMark name = "generate_jni_loader", 61*33edd672SMark outs = ["TJLoader.java"], 62*33edd672SMark cmd = "echo 'package org.libjpegturbo.turbojpeg; final class TJLoader { static void load() { System.loadLibrary(\"turbojpeg\"); }}' > $@", 63*33edd672SMark) 64*33edd672SMark 65*33edd672SMarkjava_library( 66*33edd672SMark name = "turbojpeg_java", 67*33edd672SMark srcs = [ 68*33edd672SMark ":generate_jni_loader", 69*33edd672SMark ":java_files", 70*33edd672SMark ], 71*33edd672SMark visibility = ["//visibility:public"], 72*33edd672SMark) 73