Skip to content

Commit

Permalink
toolchain init
Browse files Browse the repository at this point in the history
  • Loading branch information
Tom-Ski committed Oct 8, 2024
1 parent 64e1dcb commit 9f0027f
Show file tree
Hide file tree
Showing 57 changed files with 3,902 additions and 2,643 deletions.
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;
}
}

Original file line number Diff line number Diff line change
@@ -1,7 +1,21 @@
package com.badlogic.gdx.jnigen.commons;

public enum Architecture {
x86, ARM, RISCV,LOONGARCH;

x86("x86"),
ARM("Arm"),
RISCV("Riscv"),
LOONGARCH("LoongArch");

private final String displayName;

Architecture (String displayName) {
this.displayName = displayName;
}

public String getDisplayName () {
return displayName;
}

public String toSuffix() {
if (this == x86) return "";
Expand Down
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
}
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;

}
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 "";
}
}
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
}
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;
}
}

This file was deleted.

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);
}
}
}
Loading

0 comments on commit 9f0027f

Please sign in to comment.