123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- buildscript {
- repositories {
- gradlePluginPortal()
- }
- dependencies {
- classpath "io.github.fourlastor:construo:1.4.3"
- if(enableGraalNative == 'true') {
- classpath "org.graalvm.buildtools.native:org.graalvm.buildtools.native.gradle.plugin:0.9.28"
- }
- }
- }
- plugins {
- id "application"
- }
- apply plugin: 'io.github.fourlastor.construo'
- import io.github.fourlastor.construo.Target
- sourceSets.main.resources.srcDirs += [ rootProject.file('assets').path ]
- mainClassName = 'xyz.prismix.lwjgl3.Lwjgl3Launcher'
- application.setMainClass(mainClassName)
- eclipse.project.name = appName + '-lwjgl3'
- java.sourceCompatibility = 8
- java.targetCompatibility = 8
- if (JavaVersion.current().isJava9Compatible()) {
- compileJava.options.release.set(8)
- }
- dependencies {
- implementation "com.badlogicgames.gdx:gdx-backend-lwjgl3:$gdxVersion"
- implementation "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
- implementation "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-desktop"
- implementation "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
- implementation "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
- implementation "com.github.MrStahlfelge.gdx-websockets:common:$websocketVersion"
- implementation project(':core')
- if(enableGraalNative == 'true') {
- implementation "io.github.berstanio:gdx-svmhelper-backend-lwjgl3:$graalHelperVersion"
- implementation "io.github.berstanio:gdx-svmhelper-extension-box2d:$graalHelperVersion"
- implementation "io.github.berstanio:gdx-svmhelper-extension-bullet:$graalHelperVersion"
- implementation "io.github.berstanio:gdx-svmhelper-extension-freetype:$graalHelperVersion"
- }
- }
- def os = System.properties['os.name'].toLowerCase()
- run {
- workingDir = rootProject.file('assets').path
- setIgnoreExitValue(true)
- if (os.contains('mac')) jvmArgs += "-XstartOnFirstThread"
- }
- jar {
- // sets the name of the .jar file this produces to the name of the game or app, with the version after.
- archiveFileName.set("${appName}-${projectVersion}.jar")
- // the duplicatesStrategy matters starting in Gradle 7.0; this setting works.
- duplicatesStrategy(DuplicatesStrategy.EXCLUDE)
- dependsOn configurations.runtimeClasspath
- from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
- // these "exclude" lines remove some unnecessary duplicate files in the output JAR.
- exclude('META-INF/INDEX.LIST', 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA')
- dependencies {
- exclude('META-INF/INDEX.LIST', 'META-INF/maven/**')
- }
- // setting the manifest makes the JAR runnable.
- manifest {
- attributes 'Main-Class': project.mainClassName
- }
- // this last step may help on some OSes that need extra instruction to make runnable JARs.
- doLast {
- file(archiveFile).setExecutable(true, false)
- }
- }
- construo {
- // name of the executable
- name.set(appName)
- // human-readable name, used for example in the `.app` name for macOS
- humanName.set(appName)
- // Optional, defaults to project version property
- version.set("$projectVersion")
- targets.configure {
- create("linuxX64", Target.Linux) {
- architecture.set(Target.Architecture.X86_64)
- jdkUrl.set("https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.12%2B7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.12_7.tar.gz")
- }
- create("macM1", Target.MacOs) {
- architecture.set(Target.Architecture.AARCH64)
- jdkUrl.set("https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.12%2B7/OpenJDK17U-jdk_aarch64_mac_hotspot_17.0.12_7.tar.gz")
- // macOS needs an identifier
- identifier.set("xyz.prismix." + appName)
- // Optional: icon for macOS
- macIcon.set(project.file("icons/logo.icns"))
- }
- create("macX64", Target.MacOs) {
- architecture.set(Target.Architecture.X86_64)
- jdkUrl.set("https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.12%2B7/OpenJDK17U-jdk_x64_mac_hotspot_17.0.12_7.tar.gz")
- // macOS needs an identifier
- identifier.set("xyz.prismix." + appName)
- // Optional: icon for macOS
- macIcon.set(project.file("icons/logo.icns"))
- }
- create("winX64", Target.Windows) {
- architecture.set(Target.Architecture.X86_64)
- jdkUrl.set("https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.12%2B7/OpenJDK17U-jdk_x64_windows_hotspot_17.0.12_7.zip")
- // Uncomment the next line to show a console when the game runs, to print messages.
- //useConsole.set(true)
- }
- }
- }
- // Equivalent to the jar task; here for compatibility with gdx-setup.
- tasks.register('dist') {
- dependsOn 'jar'
- }
- distributions {
- main {
- contents {
- into('libs') {
- project.configurations.runtimeClasspath.files.findAll { file ->
- file.getName() != project.tasks.jar.outputs.files.singleFile.name
- }.each { file ->
- exclude file.name
- }
- }
- }
- }
- }
- startScripts.dependsOn(':lwjgl3:jar')
- startScripts.classpath = project.tasks.jar.outputs.files
- if(enableGraalNative == 'true') {
- apply from: file("nativeimage.gradle")
- }
|