rules_graalvm

Rules for building native binaries using the GraalVM native-image tool on Bazel 5 and older.

graal_binary

load("@rules_graalvm//graal:graal.bzl", "graal_binary")

graal_binary(name, deps, main_class, executable_name, include_resources, reflection_configuration,
             jni_configuration, serialization_configuration, initialize_at_build_time,
             initialize_at_run_time, native_features, debug, optimization_mode, shared_library,
             static_zlib, c_compiler_option, data, extra_args, allow_fallback, check_toolchains,
             native_image_tool, **kwargs)

Alias for the renamed native_image rule. Identical.

PARAMETERS

Name Description Default Value
name Name of the target; required. none
deps Dependency java_library targets to assemble the classpath from. Mandatory. none
main_class Entrypoint main class to build from; mandatory unless building a shared library. None
executable_name Set the name of the output binary; defaults to %target%-bin, or %target%-bin.exe on Windows. The special string %target%, if present, is replaced with name. select({"@bazel_tools//src/conditions:windows": "%target%-bin.exe", "//conditions:default": "%target%-bin"})
include_resources Glob to pass to IncludeResources. No default; optional. None
reflection_configuration Reflection configuration file. No default; optional. None
jni_configuration JNI configuration file. No default; optional. None
serialization_configuration Serialization configuration file. No default; optional. None
initialize_at_build_time Classes or patterns to pass to --initialize-at-build-time. No default; optional. []
initialize_at_run_time Classes or patterns to pass to --initialize-at-run-time. No default; optional. []
native_features GraalVM Feature classes to include and apply. No default; optional. []
debug Whether to include debug symbols; by default, this flag’s state is managed by Bazel. Passing --compilation_mode=dbg is sufficient to flip this to True, or it can be overridden via this parameter. select({"@rules_graalvm//internal/conditions/compiler:debug": True, "//conditions:default": False})
optimization_mode Behaves the same as debug; normally, this flag’s state is managed by Bazel. Passing --compilation_mode=fastbuild\|opt\|dbg is sufficient to set this flag, or it can be overridden via this parameter. select({"@rules_graalvm//internal/conditions/compiler:fastbuild": "b", "@rules_graalvm//internal/conditions/compiler:optimized": "2", "//conditions:default": ""})
shared_library Build a shared library binary instead of an executable. None
static_zlib A cc_library or cc_import target that provides zlib as a static library. On Linux, this is used when Graal statically links zlib into the binary, e.g. with -H:+StaticExecutableWithDynamicLibC. None
c_compiler_option Extra C compiler options to pass through native-image. No default; optional. []
data Data files to make available during the compilation. No default; optional. []
extra_args Extra native-image args to pass. Last wins. No default; optional. []
allow_fallback Whether to allow fall-back to a partial native image; defaults to False. False
check_toolchains Whether to perform toolchain checks in native-image; defaults to True on Windows, False otherwise. select({"@bazel_tools//src/conditions:windows": True, "//conditions:default": False})
native_image_tool Specific native-image executable target to use. Label("@graalvm//:native-image")
kwargs Extra keyword arguments are passed to the underlying native_image rule. none

native_image

load("@rules_graalvm//graal:graal.bzl", "native_image")

native_image(name, deps, main_class, executable_name, include_resources, reflection_configuration,
             jni_configuration, serialization_configuration, initialize_at_build_time,
             initialize_at_run_time, native_features, debug, optimization_mode, shared_library,
             static_zlib, c_compiler_option, data, extra_args, allow_fallback, check_toolchains,
             native_image_tool, **kwargs)

Generates and compiles a GraalVM native image from a Java library target.

PARAMETERS

Name Description Default Value
name Name of the target; required. none
deps Dependency java_library targets to assemble the classpath from. Mandatory. none
main_class Entrypoint main class to build from; mandatory unless building a shared library. None
executable_name Set the name of the output binary; defaults to %target%-bin, or %target%-bin.exe on Windows. The special string %target%, if present, is replaced with name. select({"@bazel_tools//src/conditions:windows": "%target%-bin.exe", "//conditions:default": "%target%-bin"})
include_resources Glob to pass to IncludeResources. No default; optional. None
reflection_configuration Reflection configuration file. No default; optional. None
jni_configuration JNI configuration file. No default; optional. None
serialization_configuration Serialization configuration file. No default; optional. None
initialize_at_build_time Classes or patterns to pass to --initialize-at-build-time. No default; optional. []
initialize_at_run_time Classes or patterns to pass to --initialize-at-run-time. No default; optional. []
native_features GraalVM Feature classes to include and apply. No default; optional. []
debug Whether to include debug symbols; by default, this flag’s state is managed by Bazel. Passing --compilation_mode=dbg is sufficient to flip this to True, or it can be overridden via this parameter. select({"@rules_graalvm//internal/conditions/compiler:debug": True, "//conditions:default": False})
optimization_mode Behaves the same as debug; normally, this flag’s state is managed by Bazel. Passing --compilation_mode=fastbuild\|opt\|dbg is sufficient to set this flag, or it can be overridden via this parameter. select({"@rules_graalvm//internal/conditions/compiler:fastbuild": "b", "@rules_graalvm//internal/conditions/compiler:optimized": "2", "//conditions:default": ""})
shared_library Build a shared library binary instead of an executable. None
static_zlib A cc_library or cc_import target that provides zlib as a static library. On Linux, this is used when Graal statically links zlib into the binary, e.g. with -H:+StaticExecutableWithDynamicLibC. None
c_compiler_option Extra C compiler options to pass through native-image. No default; optional. []
data Data files to make available during the compilation. No default; optional. []
extra_args Extra native-image args to pass. Last wins. No default; optional. []
allow_fallback Whether to allow fall-back to a partial native image; defaults to False. False
check_toolchains Whether to perform toolchain checks in native-image; defaults to True on Windows, False otherwise. select({"@bazel_tools//src/conditions:windows": True, "//conditions:default": False})
native_image_tool Specific native-image executable target to use. Label("@graalvm//:native-image")
kwargs Extra keyword arguments are passed to the underlying native_image rule. none