123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- project(":lwjgl3") {
- apply plugin: "org.graalvm.buildtools.native"
- graalvmNative {
- binaries {
- main {
- imageName = appName
- mainClass = project.mainClassName
- requiredVersion = '23.0'
- buildArgs.add("-march=compatibility")
- jvmArgs.addAll("-Dfile.encoding=UTF8")
- sharedLibrary = false
- resources.autodetect()
- }
- }
- }
- run {
- doNotTrackState("Running the app should not be affected by Graal.")
- }
- // Modified from https://lyze.dev/2021/04/29/libGDX-Internal-Assets-List/ ; thanks again, Lyze!
- // This creates a resource-config.json file based on the contents of the assets folder (and the libGDX icons).
- // This file is used by Graal Native to embed those specific files.
- // This has to run before nativeCompile, so it runs at the start of an unrelated resource-handling command.
- generateResourcesConfigFile.doFirst {
- def assetsFolder = new File("${project.rootDir}/assets/")
- def lwjgl3 = project(':lwjgl3')
- def resFolder = new File("${lwjgl3.projectDir}/src/main/resources/META-INF/native-image/${lwjgl3.ext.appName}")
- resFolder.mkdirs()
- def resFile = new File(resFolder, "resource-config.json")
- resFile.delete()
- resFile.append(
- """{
- "resources":{
- "includes":[
- {
- "pattern": ".*(""")
- // This adds every filename in the assets/ folder to a pattern that adds those files as resources.
- fileTree(assetsFolder).each {
- // The backslash-Q and backslash-E escape the start and end of a literal string, respectively.
- resFile.append("\\\\Q${it.name}\\\\E|")
- }
- // We also match all of the window icon images this way and the font files that are part of libGDX.
- resFile.append(
- """libgdx.+\\\\.png|lsans.+)"
- }
- ]},
- "bundles":[]
- }"""
- )
- }
- }
|