Skip to content
Closed
Show file tree
Hide file tree
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
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,12 @@ Ensure you've downloaded git submodules. That could be achieved:
- Install dependencies: `openjdk8`, `mingw-w64-gcc`, `ant`. (Package names could vary from system to system.)
- Build with: `./gradlew imgui-binding:generateLibs -Denvs=linux -Dlocal`
- Run with: `./gradlew example:run -PlibPath=../imgui-binding/build/libsNative/linux64`

### Linux (arm64)

- Check dependencies from "Linux" section and make sure you have them installed.
- Build with: `./gradlew imgui-binding:generateLibs -Denvs=linuxarm64 -Dlocal`
- Run with: `./gradlew example:run -PlibPath=../imgui-binding/build/libsNative/linuxarm64`

### macOS

Expand All @@ -389,7 +395,7 @@ Ensure you've downloaded git submodules. That could be achieved:
- Build with: `./gradlew imgui-binding:generateLibs -Denvs=macosarm64 -Dlocal`
- Run with: `./gradlew example:run -PlibPath=../imgui-binding/build/libsNative/macosxarm64`

In `envs` parameter next values could be used `windows`, `linux` or `macos` or `macosarm64`.
In `envs` parameter next values could be used `windows`, `linux`, `linuxarm64`, `macos` or `macosarm64`.

`-Dlocal` is optional and means that natives will be built under the `./imgui-binding/build/` folder. Otherwise `/tmp/imgui` folder will be used.

Expand Down
21 changes: 18 additions & 3 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 @@ -113,9 +114,11 @@ class GenerateLibs extends DefaultTask {
}

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

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

if (forMac) {
Expand All @@ -137,6 +140,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 @@ -148,6 +153,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 @@ -162,6 +169,14 @@ class GenerateLibs extends DefaultTask {
}
}

BuildTarget createLinuxTarget(Architecture arch) {
def linuxTarget = BuildTarget.newDefaultTarget(Os.Linux, Architecture.Bitness._64, arch)
linuxTarget.compilerPrefix = "" // TODO: test with GNU gcc
linuxTarget.libName = "libimgui-java64.so" // Lib for arm64 will be named the same for consistency
addFreeTypeIfEnabled(linuxTarget)
return linuxTarget
}

BuildTarget createMacTarget(Architecture arch) {
def minMacOsVersion = '10.15'
def macTarget = BuildTarget.newDefaultTarget(Os.MacOsX, Architecture.Bitness._64, arch)
Expand Down
2 changes: 1 addition & 1 deletion imgui-app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ dependencies {
api 'org.lwjgl:lwjgl-glfw'
api 'org.lwjgl:lwjgl-opengl'

['natives-linux', 'natives-windows', 'natives-macos', 'natives-macos-arm64'].each {
['natives-linux', 'natives-linux-arm64', 'natives-windows', 'natives-macos', 'natives-macos-arm64'].each {
api "org.lwjgl:lwjgl::$it"
api "org.lwjgl:lwjgl-glfw::$it"
api "org.lwjgl:lwjgl-opengl::$it"
Expand Down