added nativeCompilerPath
property to GraalVM NativeImage
task
All checks were successful
CI / build (push) Successful in 1m49s
All checks were successful
CI / build (push) Successful in 1m49s
This commit is contained in:
@@ -19,6 +19,7 @@ import org.gradle.api.tasks.Classpath;
|
|||||||
import org.gradle.api.tasks.Exec;
|
import org.gradle.api.tasks.Exec;
|
||||||
import org.gradle.api.tasks.Input;
|
import org.gradle.api.tasks.Input;
|
||||||
import org.gradle.api.tasks.InputDirectory;
|
import org.gradle.api.tasks.InputDirectory;
|
||||||
|
import org.gradle.api.tasks.InputFile;
|
||||||
import org.gradle.api.tasks.Optional;
|
import org.gradle.api.tasks.Optional;
|
||||||
import org.gradle.api.tasks.OutputFile;
|
import org.gradle.api.tasks.OutputFile;
|
||||||
import org.gradle.api.tasks.PathSensitive;
|
import org.gradle.api.tasks.PathSensitive;
|
||||||
@@ -30,6 +31,7 @@ import org.gradle.jvm.toolchain.JavaToolchainService;
|
|||||||
import org.gradle.process.CommandLineArgumentProvider;
|
import org.gradle.process.CommandLineArgumentProvider;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -41,6 +43,9 @@ import static net.woggioni.gradle.graalvm.Constants.GRAALVM_TASK_GROUP;
|
|||||||
@CacheableTask
|
@CacheableTask
|
||||||
public abstract class NativeImageTask extends Exec {
|
public abstract class NativeImageTask extends Exec {
|
||||||
|
|
||||||
|
public static final String NATIVE_COMPILER_PATH_ENV_VARIABLE = "GRAAL_NATIVE_COMPILER_PATH";
|
||||||
|
public static final String NATIVE_COMPILER_PATH_PROPERTY_KEY = "graal.native.compiler.path";
|
||||||
|
|
||||||
@Classpath
|
@Classpath
|
||||||
public abstract Property<FileCollection> getClasspath();
|
public abstract Property<FileCollection> getClasspath();
|
||||||
|
|
||||||
@@ -48,6 +53,10 @@ public abstract class NativeImageTask extends Exec {
|
|||||||
@PathSensitive(PathSensitivity.RELATIVE)
|
@PathSensitive(PathSensitivity.RELATIVE)
|
||||||
public abstract DirectoryProperty getGraalVmHome();
|
public abstract DirectoryProperty getGraalVmHome();
|
||||||
|
|
||||||
|
@InputFile
|
||||||
|
@PathSensitive(PathSensitivity.ABSOLUTE)
|
||||||
|
public abstract RegularFileProperty getNativeCompilerPath();
|
||||||
|
|
||||||
@Input
|
@Input
|
||||||
public abstract Property<Boolean> getUseMusl();
|
public abstract Property<Boolean> getUseMusl();
|
||||||
@Input
|
@Input
|
||||||
@@ -80,6 +89,17 @@ public abstract class NativeImageTask extends Exec {
|
|||||||
getBuildStaticImage().convention(false);
|
getBuildStaticImage().convention(false);
|
||||||
getEnableFallback().convention(false);
|
getEnableFallback().convention(false);
|
||||||
getLinkAtBuildTime().convention(false);
|
getLinkAtBuildTime().convention(false);
|
||||||
|
Provider<File> nativeComnpilerProvider = project.provider(() -> {
|
||||||
|
String envVar;
|
||||||
|
File compilerPath = null;
|
||||||
|
if(project.hasProperty(NATIVE_COMPILER_PATH_PROPERTY_KEY)) {
|
||||||
|
compilerPath = new File(project.property(NATIVE_COMPILER_PATH_PROPERTY_KEY).toString());
|
||||||
|
} else if((envVar = System.getenv(NATIVE_COMPILER_PATH_ENV_VARIABLE)) != null) {
|
||||||
|
compilerPath = new File(envVar);
|
||||||
|
}
|
||||||
|
return compilerPath;
|
||||||
|
});
|
||||||
|
getNativeCompilerPath().convention(project.getLayout().file(nativeComnpilerProvider));
|
||||||
ExtensionContainer ext = project.getExtensions();
|
ExtensionContainer ext = project.getExtensions();
|
||||||
JavaApplication javaApplication = ext.findByType(JavaApplication.class);
|
JavaApplication javaApplication = ext.findByType(JavaApplication.class);
|
||||||
if(!Objects.isNull(javaApplication)) {
|
if(!Objects.isNull(javaApplication)) {
|
||||||
@@ -124,6 +144,9 @@ public abstract class NativeImageTask extends Exec {
|
|||||||
if(getLinkAtBuildTime().get()) {
|
if(getLinkAtBuildTime().get()) {
|
||||||
result.add("--link-at-build-time");
|
result.add("--link-at-build-time");
|
||||||
}
|
}
|
||||||
|
if(getNativeCompilerPath().isPresent()) {
|
||||||
|
result.add("--native-compiler-path=" + getNativeCompilerPath().getAsFile().get());
|
||||||
|
}
|
||||||
JavaModuleDetector javaModuleDetector = getJavaModuleDetector();
|
JavaModuleDetector javaModuleDetector = getJavaModuleDetector();
|
||||||
boolean useJpms = getMainModule().isPresent();
|
boolean useJpms = getMainModule().isPresent();
|
||||||
FileCollection classpath = getClasspath().get();
|
FileCollection classpath = getClasspath().get();
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
lys.catalog.version=2025.02.05
|
lys.catalog.version=2025.02.05
|
||||||
version.myGradlePlugins=2025.02.28
|
version.myGradlePlugins=2025.03.03
|
||||||
version.gradle=8.12
|
version.gradle=8.12
|
||||||
|
|
||||||
gitea.maven.url = https://gitea.woggioni.net/api/packages/woggioni/maven
|
gitea.maven.url = https://gitea.woggioni.net/api/packages/woggioni/maven
|
||||||
|
Reference in New Issue
Block a user