-
Notifications
You must be signed in to change notification settings - Fork 25
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
57 changed files
with
3,902 additions
and
2,643 deletions.
There are no files selected for viewing
20 changes: 20 additions & 0 deletions
20
compiling/gdx-jnigen-commons/src/main/java/com/badlogic/gdx/jnigen/commons/AndroidABI.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package com.badlogic.gdx.jnigen.commons; | ||
|
||
public enum AndroidABI { | ||
|
||
ABI_ARMEABI_V7A("armeabi-v7a"), | ||
ABI_x86("x86"), | ||
ABI_x86_64("x86_64"), | ||
ABI_ARM64_V8A("arm64-v8a"); | ||
|
||
private final String abiString; | ||
|
||
AndroidABI (String abiString) { | ||
this.abiString = abiString; | ||
} | ||
|
||
public String getAbiString () { | ||
return abiString; | ||
} | ||
} | ||
|
16 changes: 15 additions & 1 deletion
16
compiling/gdx-jnigen-commons/src/main/java/com/badlogic/gdx/jnigen/commons/Architecture.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
6 changes: 6 additions & 0 deletions
6
...ing/gdx-jnigen-commons/src/main/java/com/badlogic/gdx/jnigen/commons/CompilerABIType.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
package com.badlogic.gdx.jnigen.commons; | ||
|
||
public enum CompilerABIType { | ||
GCC_CLANG, | ||
MSVC | ||
} |
79 changes: 79 additions & 0 deletions
79
...iling/gdx-jnigen-commons/src/main/java/com/badlogic/gdx/jnigen/commons/HostDetection.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
package com.badlogic.gdx.jnigen.commons; | ||
|
||
public class HostDetection { | ||
|
||
static public Os os; | ||
static public Architecture.Bitness bitness = Architecture.Bitness._32; | ||
static public Architecture architecture = Architecture.x86; | ||
|
||
static { | ||
if (System.getProperty("os.name").contains("Windows")) | ||
os = Os.Windows; | ||
else if (System.getProperty("os.name").contains("Linux")) | ||
os = Os.Linux; | ||
else if (System.getProperty("os.name").contains("Mac")) | ||
os = Os.MacOsX; | ||
|
||
if (System.getProperty("os.arch").startsWith("arm") || System.getProperty("os.arch").startsWith("aarch64")) | ||
architecture = Architecture.ARM; | ||
else if (System.getProperty("os.arch").startsWith("riscv")) | ||
architecture = Architecture.RISCV; | ||
else if (System.getProperty("os.arch").startsWith("loongarch")) | ||
architecture = Architecture.LOONGARCH; | ||
|
||
if (System.getProperty("os.arch").contains("64") || System.getProperty("os.arch").startsWith("armv8")) | ||
bitness = Architecture.Bitness._64; | ||
else if (System.getProperty("os.arch").contains("128")) | ||
bitness = Architecture.Bitness._128; | ||
|
||
boolean isMOEiOS = System.getProperty("moe.platform.name") != null; | ||
String vm = System.getProperty("java.runtime.name"); | ||
if (vm != null && vm.contains("Android Runtime")) { | ||
os = Os.Android; | ||
bitness = Architecture.Bitness._32; | ||
architecture = Architecture.x86; | ||
} | ||
if (isMOEiOS || (os != Os.Android && os != Os.Windows && os != Os.Linux && os != Os.MacOsX)) { | ||
os = Os.IOS; | ||
bitness = Architecture.Bitness._32; | ||
architecture = Architecture.x86; | ||
} | ||
} | ||
|
||
/** | ||
* @deprecated Use {@link #os} as {@code SharedLibraryLoader.os == Os.Windows} instead. | ||
*/ | ||
@Deprecated | ||
static public boolean isWindows = os == Os.Windows; | ||
/** | ||
* @deprecated Use {@link #os} as {@code SharedLibraryLoader.os == Os.Linux} instead. | ||
*/ | ||
@Deprecated | ||
static public boolean isLinux = os == Os.Linux; | ||
/** | ||
* @deprecated Use {@link #os} as {@code SharedLibraryLoader.os == Os.MacOsX} instead. | ||
*/ | ||
@Deprecated | ||
static public boolean isMac = os == Os.MacOsX; | ||
/** | ||
* @deprecated Use {@link #os} as {@code SharedLibraryLoader.os == Os.IOS} instead. | ||
*/ | ||
@Deprecated | ||
static public boolean isIos = os == Os.IOS; | ||
/** | ||
* @deprecated Use {@link #os} as {@code SharedLibraryLoader.os == Os.Android} instead. | ||
*/ | ||
@Deprecated | ||
static public boolean isAndroid = os == Os.Android; | ||
/** | ||
* @deprecated Use {@link #architecture} as {@code SharedLibraryLoader.architecture == Architecture.ARM} instead. | ||
*/ | ||
@Deprecated | ||
static public boolean isARM = architecture == Architecture.ARM; | ||
/** | ||
* @deprecated Use {@link #bitness} as {@code SharedLibraryLoader.bitness == Architecture.Bitness._64} instead. | ||
*/ | ||
@Deprecated | ||
static public boolean is64Bit = bitness == Architecture.Bitness._64; | ||
|
||
} |
67 changes: 43 additions & 24 deletions
67
compiling/gdx-jnigen-commons/src/main/java/com/badlogic/gdx/jnigen/commons/Os.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,28 +1,47 @@ | ||
package com.badlogic.gdx.jnigen.commons; | ||
|
||
/** The target operating system of a build target. */ | ||
|
||
/** | ||
* The target operating system of a build target. | ||
*/ | ||
public enum Os { | ||
Windows, Linux, MacOsX, Android, IOS; | ||
|
||
public String getJniPlatform () { | ||
if (this == Os.Windows) return "win32"; | ||
if (this == Os.Linux) return "linux"; | ||
if (this == Os.MacOsX) return "mac"; | ||
return ""; | ||
} | ||
|
||
public String getLibPrefix () { | ||
if (this == Os.Linux || this == Os.Android || this == Os.MacOsX) { | ||
return "lib"; | ||
} | ||
return ""; | ||
} | ||
|
||
public String getLibExtension () { | ||
if (this == Os.Windows) return "dll"; | ||
if (this == Os.Linux) return "so"; | ||
if (this == Os.MacOsX) return "dylib"; | ||
if (this == Os.Android) return "so"; | ||
return ""; | ||
} | ||
|
||
Windows(Platform.Desktop), | ||
Linux(Platform.Desktop), | ||
MacOsX(Platform.Desktop), | ||
Android(Platform.Android), | ||
IOS(Platform.IOS); | ||
|
||
private final Platform platform; | ||
|
||
Os (Platform platform) { | ||
this.platform = platform; | ||
} | ||
|
||
public Platform getPlatform () { | ||
return platform; | ||
} | ||
|
||
public String getJniPlatform () { | ||
if (this == Os.Windows) return "win32"; | ||
if (this == Os.Linux) return "linux"; | ||
if (this == Os.MacOsX) return "mac"; | ||
if (this == Os.IOS) return "mac"; | ||
return ""; | ||
} | ||
|
||
public String getLibPrefix () { | ||
if (this == Os.Linux || this == Os.Android || this == Os.MacOsX) { | ||
return "lib"; | ||
} | ||
return ""; | ||
} | ||
|
||
public String getLibExtension () { | ||
if (this == Os.Windows) return "dll"; | ||
if (this == Os.Linux) return "so"; | ||
if (this == Os.MacOsX) return "dylib"; | ||
if (this == Os.Android) return "so"; | ||
return ""; | ||
} | ||
} |
7 changes: 7 additions & 0 deletions
7
compiling/gdx-jnigen-commons/src/main/java/com/badlogic/gdx/jnigen/commons/Platform.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package com.badlogic.gdx.jnigen.commons; | ||
|
||
public enum Platform { | ||
Desktop, | ||
Android, | ||
IOS | ||
} |
23 changes: 23 additions & 0 deletions
23
compiling/gdx-jnigen-commons/src/main/java/com/badlogic/gdx/jnigen/commons/TargetType.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package com.badlogic.gdx.jnigen.commons; | ||
|
||
public enum TargetType { | ||
|
||
SIMULATOR("simulator", "iphoneos"), | ||
DEVICE("device", "iphonesimulator"); | ||
|
||
private final String targetTypeBuildDirName; | ||
private final String platformName; | ||
|
||
TargetType (String device, String xcodeDeviceTypeArg) { | ||
this.targetTypeBuildDirName = device; | ||
this.platformName = xcodeDeviceTypeArg; | ||
} | ||
|
||
public String getTargetTypeBuildDirName () { | ||
return targetTypeBuildDirName; | ||
} | ||
|
||
public String getPlatformName () { | ||
return platformName; | ||
} | ||
} |
37 changes: 0 additions & 37 deletions
37
...gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenBuildTargetTask.java
This file was deleted.
Oops, something went wrong.
80 changes: 62 additions & 18 deletions
80
...iling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenBuildTask.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,26 +1,70 @@ | ||
package com.badlogic.gdx.jnigen.gradle; | ||
|
||
import javax.inject.Inject; | ||
|
||
import com.badlogic.gdx.jnigen.BuildConfig; | ||
import com.badlogic.gdx.jnigen.BuildTarget; | ||
import com.badlogic.gdx.jnigen.FileDescriptor; | ||
import com.badlogic.gdx.jnigen.RobovmBuildConfig; | ||
import com.badlogic.gdx.jnigen.build.PlatformBuilder; | ||
import com.badlogic.gdx.jnigen.commons.Os; | ||
import org.gradle.api.DefaultTask; | ||
import org.gradle.api.tasks.TaskAction; | ||
import org.slf4j.Logger; | ||
import org.slf4j.LoggerFactory; | ||
|
||
import javax.inject.Inject; | ||
import java.util.Collections; | ||
|
||
/** | ||
* @author Desu | ||
*/ | ||
public class JnigenBuildTask extends DefaultTask { | ||
JnigenExtension ext; | ||
|
||
@Inject | ||
public JnigenBuildTask(JnigenExtension ext) { | ||
this.ext = ext; | ||
|
||
setGroup("jnigen"); | ||
setDescription("Executes all available jnigen build scripts for the current platform."); | ||
} | ||
|
||
@TaskAction | ||
public void run() { | ||
// Empty task | ||
} | ||
} | ||
public class JnigenBuildTask extends DefaultTask { | ||
|
||
private static final Logger logger = LoggerFactory.getLogger(JnigenBuildTask.class); | ||
|
||
private final JnigenExtension ext; | ||
|
||
private BuildTarget buildTarget; | ||
private Os osToBuild; | ||
|
||
@Inject | ||
public JnigenBuildTask (JnigenExtension ext) { | ||
this.ext = ext; | ||
|
||
setGroup("jnigen"); | ||
setDescription("Builds native libraries"); | ||
} | ||
|
||
public void setBuildTarget (BuildTarget buildTarget) { | ||
this.buildTarget = buildTarget; | ||
} | ||
|
||
|
||
public void setOsToBuild (Os osToBuild) { | ||
this.osToBuild = osToBuild; | ||
} | ||
|
||
@TaskAction | ||
public void run () { | ||
RobovmBuildConfig robovmBuildConfig = new RobovmBuildConfig(); | ||
if (ext.robovm != null) { | ||
ext.robovm.execute(robovmBuildConfig); | ||
} | ||
|
||
BuildConfig buildConfig = new BuildConfig(ext.sharedLibName, ext.subProjectDir + ext.temporaryDir, ext.subProjectDir + ext.libsDir, ext.subProjectDir + ext.jniDir, robovmBuildConfig, new FileDescriptor(ext.subProjectDir)); | ||
|
||
buildConfig.multiThreadedCompile = ext.multiThreadedCompile; | ||
|
||
//Build the build target! | ||
//If we have no build target, its OS level build target build | ||
|
||
//If we have build target, its a specific build | ||
|
||
PlatformBuilder platformBuilder = new PlatformBuilder(); | ||
|
||
if (buildTarget != null) { | ||
platformBuilder.build(buildTarget.os, buildConfig, Collections.singletonList(buildTarget)); | ||
} else { | ||
platformBuilder.build(osToBuild, buildConfig, ext.targets); | ||
} | ||
} | ||
} |
Oops, something went wrong.