diff --git a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenExtension.java b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenExtension.java index c9ade0a0..d3b9397c 100644 --- a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenExtension.java +++ b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenExtension.java @@ -264,6 +264,7 @@ private void checkForTasksToAdd (BuildTarget target) { jnigenBuildTask.dependsOn(jnigenTask); JnigenSignTask jnigenSignTask = project.getTasks().create("jnigenSign" + os.name() + "_" + architecture.getDisplayName() + bitness.name(), JnigenSignTask.class, this); + jnigenSignTask.setBuildTarget(target); jnigenSignTask.dependsOn(jnigenBuildTask); platformLevelTargetsSeen.get(platform).mustRunAfter(jnigenBuildTask); diff --git a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java index 32c49f62..7ef5806f 100644 --- a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java +++ b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java @@ -1,6 +1,7 @@ package com.badlogic.gdx.jnigen.gradle; import com.badlogic.gdx.jnigen.BuildConfig; +import com.badlogic.gdx.jnigen.BuildTarget; import com.badlogic.gdx.jnigen.FileDescriptor; import com.badlogic.gdx.jnigen.build.RuntimeEnv; import com.badlogic.gdx.jnigen.build.ToolFinder; @@ -24,6 +25,8 @@ public class JnigenSignTask extends DefaultTask { private final JnigenExtension ext; + private BuildTarget buildTarget; + @Inject public JnigenSignTask(JnigenExtension ext) { this.ext = ext; @@ -32,57 +35,29 @@ public JnigenSignTask(JnigenExtension ext) { setDescription("Signs native libraries"); } + public void setBuildTarget (BuildTarget buildTarget) { + this.buildTarget = buildTarget; + } + @TaskAction public void run() { BuildConfig buildConfig = new BuildConfig(ext.sharedLibName, ext.subProjectDir + ext.temporaryDir, ext.subProjectDir + ext.libsDir, ext.subProjectDir + ext.jniDir, null, new FileDescriptor(ext.subProjectDir)); RuntimeEnv env = new RuntimeEnv(); List args = new ArrayList<>(); - ext.targets.forEach(target -> { - switch (target.os) { + switch (buildTarget.os) { case Windows: Map params = ext.signing.getJsignParams(); - params.put("file", target.getTargetBinaryFile(buildConfig).getPath()); + params.put("file", buildTarget.getTargetBinaryFile(buildConfig).getPath()); Closure jsign = (Closure) ext.project.getExtensions().getByName("jsign"); jsign.call(params); break; - case Linux: - File bsign = ToolFinder.getToolFile("bsign", env, true); - String secretKeyRingFile = (String) getProject().property("signing.secretKeyRingFile"); - String keyId = (String) getProject().property("signing.keyId"); - String password = (String) getProject().property("signing.password"); - args.add("--sign"); - args.add(target.getTargetBinaryFile(buildConfig).getPath()); - args.add("-P"); - args.add(String.format("\"--keyring %s --default-key %s --passphrase %s --batch\"", secretKeyRingFile, keyId, password)); - ToolchainExecutor.execute(bsign, new File(""), args, new ToolchainExecutor.ToolchainCallback() { - @Override - public void onInfoMessage(String message) { - log.info(message); - } - - @Override - public void onErrorMessage(String message) { - log.error(message); - } - - @Override - public void onSuccess() { - log.info("Signing successful"); - } - - @Override - public void onFail(int statusCode) { - log.error("Signing failed with status code: {}", statusCode); - } - }); - break; case MacOsX: case IOS: File codesign = ToolFinder.getToolFile("codesign", env, true); args.add("-s"); args.add(ext.signing.getIdentity()); args.add("-f"); - args.add(target.getTargetBinaryFile(buildConfig).getPath()); + args.add(buildTarget.getTargetBinaryFile(buildConfig).getPath()); ToolchainExecutor.execute(codesign, new File(""), args, new ToolchainExecutor.ToolchainCallback() { @Override public void onInfoMessage(String message) { @@ -105,10 +80,10 @@ public void onFail(int statusCode) { } }); break; + case Linux: case Android: - log.info("Signing not supported on Android"); + log.warn("Signing not supported for {}", buildTarget.os); break; } - }); } } diff --git a/gdx-jnigen-generator-test/build.gradle b/gdx-jnigen-generator-test/build.gradle index 70035942..48d75021 100644 --- a/gdx-jnigen-generator-test/build.gradle +++ b/gdx-jnigen-generator-test/build.gradle @@ -3,6 +3,7 @@ import com.badlogic.gdx.jnigen.commons.Os plugins { id "com.badlogicgames.jnigen.jnigen-gradle" + id 'net.jsign' version '6.0' } sourceCompatibility = 1.8 @@ -57,6 +58,18 @@ jnigen { options = ["-I" + file("src/test/resources/").absolutePath] } + signing { + jsignParams = [ + name : 'My Application', + url : 'http://www.example.com', + keystore : 'keystore.p12', + alias : 'test', + storepass: 'secret', + tsaurl : 'http://timestamp.sectigo.com' + ] + identity = '-' + } + addLinux(x32, ARM) addLinux(x64, x86) addLinux(x64, ARM) @@ -83,4 +96,4 @@ eclipse { project { name = "gdx-jnigen-generator-test" } -} \ No newline at end of file +} diff --git a/gdx-jnigen-generator-test/keystore.p12 b/gdx-jnigen-generator-test/keystore.p12 new file mode 100644 index 00000000..07449481 Binary files /dev/null and b/gdx-jnigen-generator-test/keystore.p12 differ