Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 25 additions & 4 deletions buildSrc/src/main/groovy/tool/generator/GenerateLibs.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ class GenerateLibs extends DefaultTask {
private final String[] buildEnvs = System.getProperty('envs')?.split(',')
private final boolean forWindows = buildEnvs?.contains('windows')
private final boolean forLinux = buildEnvs?.contains('linux')
private final boolean forLinuxArm64 = buildEnvs?.contains('linuxarm64')
private final boolean forMac = buildEnvs?.contains('macos')
private final boolean forMacArm64 = buildEnvs?.contains('macosarm64')

Expand Down Expand Up @@ -120,10 +121,11 @@ class GenerateLibs extends DefaultTask {
}

if (forLinux) {
def linux64 = BuildTarget.newDefaultTarget(Os.Linux, Architecture.Bitness._64)
requireCpp17(linux64)
addFreeTypeIfEnabled(linux64)
buildTargets += linux64
buildTargets += createLinuxTarget(Architecture.x86)
}

if (forLinuxArm64) {
buildTargets += createLinuxTarget(Architecture.ARM)
}

if (forMac) {
Expand All @@ -145,6 +147,8 @@ class GenerateLibs extends DefaultTask {
BuildExecutor.executeAnt(jniDir + '/build-windows64.xml', commonParams)
if (forLinux)
BuildExecutor.executeAnt(jniDir + '/build-linux64.xml', commonParams)
if (forLinuxArm64)
BuildExecutor.executeAnt(jniDir + '/build-linuxarm64.xml', commonParams)
if (forMac)
BuildExecutor.executeAnt(jniDir + '/build-macosx64.xml', commonParams)
if (forMacArm64)
Expand All @@ -156,6 +160,8 @@ class GenerateLibs extends DefaultTask {
checkLibExist("windows64/imgui-java64.dll")
if (forLinux)
checkLibExist("linux64/libimgui-java64.so")
if (forLinuxArm64)
checkLibExist("linuxarm64/libimgui-java64.so")
if (forMac)
checkLibExist("macosx64/libimgui-java64.dylib")
if (forMacArm64)
Expand All @@ -170,6 +176,21 @@ class GenerateLibs extends DefaultTask {
}
}

BuildTarget createLinuxTarget(Architecture arch) {
def linuxTarget = BuildTarget.newDefaultTarget(Os.Linux, Architecture.Bitness._64, arch)
linuxTarget.libName = "libimgui-java64.so" // Lib for arm64 will be named the same for consistency.
if (arch == Architecture.ARM && System.getProperty('os.arch') in ['aarch64', 'arm64']) {
// gdx-jnigen defaults ARM Linux targets to the aarch64-linux-gnu- cross-compiler
// prefix. When already running natively on an aarch64 host (e.g. GitHub's
// ubuntu-24.04-arm runners) that prefix isn't needed, and the cross toolchain
// package providing it usually isn't installed there anyway.
linuxTarget.compilerPrefix = ''
}
requireCpp17(linuxTarget)
addFreeTypeIfEnabled(linuxTarget)
return linuxTarget
}

BuildTarget createMacTarget(Architecture arch) {
def minMacOsVersion = '10.15'
def macTarget = BuildTarget.newDefaultTarget(Os.MacOsX, Architecture.Bitness._64, arch)
Expand Down
Loading