64 lines
3.4 KiB
Groovy
64 lines
3.4 KiB
Groovy
package imgui.generate
|
|
|
|
import com.badlogic.gdx.jnigen.*
|
|
import groovy.transform.CompileStatic
|
|
import org.gradle.api.DefaultTask
|
|
import org.gradle.api.file.CopySpec
|
|
import org.gradle.api.tasks.TaskAction
|
|
|
|
@CompileStatic
|
|
class GenerateLibs extends DefaultTask {
|
|
String description = 'Generates native libraries using classes under ":imgui-binding" and Dear-ImGui itself from "imgui" submodule.'
|
|
|
|
private final String sourceDir = project.file('src/main/java')
|
|
private final String classpath = project.file('build/classes/java/main')
|
|
private final String jniDir = project.buildDir.path + '/jni'
|
|
private final String tmpFolder = project.buildDir.path + '/tmp'
|
|
private final String libsFolder = 'libsNative'
|
|
|
|
@TaskAction
|
|
void generate() {
|
|
// Generate h/cpp files for JNI
|
|
new NativeCodeGenerator().generate(sourceDir, classpath, jniDir)
|
|
|
|
// Copy ImGui h/cpp files
|
|
project.copy { CopySpec spec ->
|
|
spec.from(project.rootProject.file('imgui')) { CopySpec it -> it.include('*.h', '*.cpp') }
|
|
spec.from(project.rootProject.file('imgui/misc/freetype')) { CopySpec it -> it.include('*.h', '*.cpp') }
|
|
spec.from(project.rootProject.file('imgui-binding/src/main/native'))
|
|
spec.into(jniDir)
|
|
}
|
|
|
|
// Generate platform dependant ant configs and header files
|
|
def buildConfig = new BuildConfig('imgui-java', tmpFolder, libsFolder, jniDir)
|
|
|
|
def win32 = BuildTarget.newDefaultTarget(BuildTarget.TargetOs.Windows, false)
|
|
def win64 = BuildTarget.newDefaultTarget(BuildTarget.TargetOs.Windows, true)
|
|
|
|
def linux32 = BuildTarget.newDefaultTarget(BuildTarget.TargetOs.Linux, false)
|
|
def linux64 = BuildTarget.newDefaultTarget(BuildTarget.TargetOs.Linux, true)
|
|
|
|
// Freetype Deps Config
|
|
win32.cppFlags += " -fstack-protector -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include"
|
|
win32.libraries += "-lfreetype -lbz2 -lssp"
|
|
win64.cppFlags += " -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include"
|
|
win64.libraries += "-lfreetype -lbz2 -lssp"
|
|
linux32.cppFlags += " -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include"
|
|
linux32.linkerFlags += " -lfreetype"
|
|
linux64.cppFlags += " -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include"
|
|
linux64.linkerFlags += " -lfreetype"
|
|
// End
|
|
|
|
new AntScriptGenerator().generate(buildConfig, win32, win64, linux32, linux64)
|
|
|
|
// Generate native libraries
|
|
// Comment/uncomment lines with OS you need.
|
|
|
|
BuildExecutor.executeAnt(jniDir + '/build-windows32.xml', '-v', '-Dhas-compiler=true', '-Drelease=true', 'clean', 'postcompile')
|
|
BuildExecutor.executeAnt(jniDir + '/build-windows64.xml', '-v', '-Dhas-compiler=true', '-Drelease=true', 'clean', 'postcompile')
|
|
BuildExecutor.executeAnt(jniDir + '/build-linux32.xml', '-v', '-Dhas-compiler=true', '-Drelease=true', 'clean', 'postcompile')
|
|
BuildExecutor.executeAnt(jniDir + '/build-linux64.xml', '-v', '-Dhas-compiler=true', '-Drelease=true', 'clean', 'postcompile')
|
|
BuildExecutor.executeAnt(jniDir + '/build.xml', '-v', 'pack-natives')
|
|
}
|
|
}
|