Skip to content

Commit 8d49aab

Browse files
Support a serialization_configuration option for native_image (#466)
feat: add `serialization_configuration` option for `native_image` Fixes #465 Signed-off-by: Chris Gray <[email protected]>
1 parent 00b337d commit 8d49aab

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

graal/graal.bzl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ def native_image(
5252
include_resources = None,
5353
reflection_configuration = None,
5454
jni_configuration = None,
55+
serialization_configuration = None,
5556
initialize_at_build_time = [],
5657
initialize_at_run_time = [],
5758
native_features = [],
@@ -79,6 +80,7 @@ def native_image(
7980
The special string `%target%`, if present, is replaced with `name`.
8081
include_resources: Glob to pass to `IncludeResources`. No default; optional.
8182
reflection_configuration: Reflection configuration file. No default; optional.
83+
serialization_configuration: Serialization configuration file. No default; optional.
8284
jni_configuration: JNI configuration file. No default; optional.
8385
initialize_at_build_time: Classes or patterns to pass to `--initialize-at-build-time`. No default; optional.
8486
initialize_at_run_time: Classes or patterns to pass to `--initialize-at-run-time`. No default; optional.
@@ -108,6 +110,7 @@ def native_image(
108110
include_resources = include_resources,
109111
reflection_configuration = reflection_configuration,
110112
jni_configuration = jni_configuration,
113+
serialization_configuration = serialization_configuration,
111114
initialize_at_build_time = initialize_at_build_time,
112115
initialize_at_run_time = initialize_at_run_time,
113116
native_features = native_features,
@@ -136,6 +139,7 @@ def graal_binary(
136139
include_resources = None,
137140
reflection_configuration = None,
138141
jni_configuration = None,
142+
serialization_configuration = None,
139143
initialize_at_build_time = [],
140144
initialize_at_run_time = [],
141145
native_features = [],
@@ -163,6 +167,7 @@ def graal_binary(
163167
The special string `%target%`, if present, is replaced with `name`.
164168
include_resources: Glob to pass to `IncludeResources`. No default; optional.
165169
reflection_configuration: Reflection configuration file. No default; optional.
170+
serialization_configuration: Serialization configuration file. No default; optional.
166171
jni_configuration: JNI configuration file. No default; optional.
167172
initialize_at_build_time: Classes or patterns to pass to `--initialize-at-build-time`. No default; optional.
168173
initialize_at_run_time: Classes or patterns to pass to `--initialize-at-run-time`. No default; optional.
@@ -192,6 +197,7 @@ def graal_binary(
192197
include_resources = include_resources,
193198
reflection_configuration = reflection_configuration,
194199
jni_configuration = jni_configuration,
200+
serialization_configuration = serialization_configuration,
195201
initialize_at_build_time = initialize_at_build_time,
196202
initialize_at_run_time = initialize_at_run_time,
197203
native_features = native_features,

internal/native_image/builder.bzl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,10 @@ def _configure_reflection(ctx, args, direct_inputs):
125125
direct_inputs.append(ctx.file.jni_configuration)
126126
args.add("-H:+JNI")
127127

128+
if ctx.attr.serialization_configuration != None:
129+
args.add(ctx.file.serialization_configuration, format = "-H:SerializationConfigurationFiles=%s")
130+
direct_inputs.append(ctx.file.serialization_configuration)
131+
128132
def _configure_native_compiler(ctx, args, c_compiler_path, gvm_toolchain):
129133
"""Configure native compiler and linker flags for a Native Image build.
130134

internal/native_image/common.bzl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ _NATIVE_IMAGE_ATTRS = {
6565
mandatory = False,
6666
allow_single_file = True,
6767
),
68+
"serialization_configuration": attr.label(
69+
mandatory = False,
70+
allow_single_file = True,
71+
),
6872
"debug": attr.bool(
6973
mandatory = False,
7074
default = False,

0 commit comments

Comments
 (0)