|  | load("@rules_cc//cc:cc_binary.bzl", "cc_binary") | 
|  | load("@rules_cc//cc:cc_library.bzl", "cc_library") | 
|  |  | 
|  | genrule( | 
|  | name = "copy_link_jni_md_header", | 
|  | srcs = select({ | 
|  | "//src/conditions:darwin": ["@rules_java//toolchains:jni_md_header-darwin"], | 
|  | "//src/conditions:freebsd": ["@rules_java//toolchains:jni_md_header-freebsd"], | 
|  | "//src/conditions:openbsd": ["@rules_java//toolchains:jni_md_header-openbsd"], | 
|  | "//src/conditions:windows": ["@rules_java//toolchains:jni_md_header-windows"], | 
|  | "//conditions:default": ["@rules_java//toolchains:jni_md_header-linux"], | 
|  | }), | 
|  | outs = ["jni_md.h"], | 
|  | cmd = "cp -f $< $@", | 
|  | visibility = ["//src/main/native:__subpackages__"], | 
|  | ) | 
|  |  | 
|  | genrule( | 
|  | name = "copy_link_jni_header", | 
|  | srcs = ["@rules_java//toolchains:jni_header"], | 
|  | outs = ["jni.h"], | 
|  | cmd = "cp -f $< $@", | 
|  | visibility = ["//src/main/native:__subpackages__"], | 
|  | ) | 
|  |  | 
|  | filegroup( | 
|  | name = "jni_os", | 
|  | srcs = select({ | 
|  | "//src/conditions:darwin": [ | 
|  | "darwin/file_jni.cc", | 
|  | "darwin/fsevents.cc", | 
|  | "darwin/sleep_prevention_jni.cc", | 
|  | "darwin/system_cpu_speed_monitor_jni.cc", | 
|  | "darwin/system_disk_space_monitor_jni.cc", | 
|  | "darwin/system_load_advisory_monitor_jni.cc", | 
|  | "darwin/system_memory_pressure_jni.cc", | 
|  | "darwin/system_network_stats.cc", | 
|  | "darwin/system_suspension_monitor_jni.cc", | 
|  | "darwin/system_thermal_monitor_jni.cc", | 
|  | "darwin/util.cc", | 
|  | "darwin/util.h", | 
|  | ], | 
|  | "//src/conditions:freebsd": ["unix_jni_bsd.cc"], | 
|  | "//src/conditions:openbsd": ["unix_jni_bsd.cc"], | 
|  | "//conditions:default": ["unix_jni_linux.cc"], | 
|  | }), | 
|  | ) | 
|  |  | 
|  | cc_library( | 
|  | name = "latin1_jni_path", | 
|  | srcs = [ | 
|  | "latin1_jni_path.cc", | 
|  | ":jni.h", | 
|  | ":jni_md.h", | 
|  | ], | 
|  | hdrs = ["latin1_jni_path.h"], | 
|  | includes = ["."],  # For jni headers. | 
|  | deps = [ | 
|  | "//src/main/cpp/util:logging", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_library( | 
|  | name = "common", | 
|  | srcs = [ | 
|  | "common.cc", | 
|  | ":jni.h", | 
|  | ":jni_md.h", | 
|  | ], | 
|  | includes = ["."],  # For jni headers. | 
|  | visibility = ["//src/main/native:__subpackages__"], | 
|  | alwayslink = 1, | 
|  | ) | 
|  |  | 
|  | cc_library( | 
|  | name = "blake3_jni", | 
|  | srcs = [ | 
|  | "blake3_jni.cc", | 
|  | ":jni.h", | 
|  | ":jni_md.h", | 
|  | ], | 
|  | includes = ["."],  # For jni headers. | 
|  | visibility = ["//src/main/native:__subpackages__"], | 
|  | deps = [ | 
|  | "@blake3", | 
|  | ], | 
|  | alwayslink = 1, | 
|  | ) | 
|  |  | 
|  | cc_binary( | 
|  | name = "libunix_jni.so", | 
|  | srcs = [ | 
|  | "macros.h", | 
|  | "process.cc", | 
|  | "unix_jni.cc", | 
|  | "unix_jni.h", | 
|  | ":jni.h", | 
|  | ":jni_md.h", | 
|  | ":jni_os", | 
|  | ], | 
|  | copts = [ | 
|  | "-fPIC", | 
|  | "-DBLAZE_JAVA_CPU=\"k8\"", | 
|  | ], | 
|  | includes = ["."],  # For jni headers. | 
|  | linkopts = select({ | 
|  | "//src/conditions:darwin": [ | 
|  | "-Wl,-framework,CoreServices", | 
|  | "-Wl,-framework,IOKit", | 
|  | ], | 
|  | "//conditions:default": [], | 
|  | }), | 
|  | linkshared = 1, | 
|  | visibility = ["//src/main/java/com/google/devtools/build/lib/jni:__pkg__"], | 
|  | deps = [ | 
|  | ":blake3_jni", | 
|  | ":common", | 
|  | ":latin1_jni_path", | 
|  | "//src/main/cpp/util:logging", | 
|  | "//src/main/cpp/util:md5", | 
|  | "//src/main/cpp/util:port", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | # TODO(bazel-team): Come up with a way to support platform-specific dynamic | 
|  | # library extensions.  This is issue #914. | 
|  | genrule( | 
|  | name = "mac-compat", | 
|  | srcs = ["libunix_jni.so"], | 
|  | outs = ["libunix_jni.dylib"], | 
|  | cmd = "cp $< $@", | 
|  | output_to_bindir = 1, | 
|  | visibility = ["//src/main/java/com/google/devtools/build/lib/jni:__pkg__"], | 
|  | ) | 
|  |  | 
|  | filegroup( | 
|  | name = "srcs", | 
|  | srcs = glob(["**"]) + [ | 
|  | "//src/main/native/windows:srcs", | 
|  | ], | 
|  | visibility = ["//src:__pkg__"], | 
|  | ) | 
|  |  | 
|  | filegroup( | 
|  | name = "embedded_tools", | 
|  | srcs = [ | 
|  | "BUILD", | 
|  | "//src/main/native/windows:embedded_tools", | 
|  | ], | 
|  | visibility = ["//visibility:public"], | 
|  | ) |