apply plugin: "java" sourceCompatibility = 1.8 sourceSets.main.java.srcDirs = ["src/"] project.ext.mainClassName = "io.anuke.mindustry.desktop.DesktopLauncher" project.ext.assetsDir = new File("../core/assets") def IKVM_DIR = System.env.IKVM_HOME import com.badlogicgames.packr.Packr import com.badlogicgames.packr.PackrConfig def JDK_DIR = "$System.env.PACKR_DIR" def ICON_DIR = new File("core/assets/icons/icon.icns") /* ext.getPlatform = { def lc = project.hasProperty("platform") ? platform.toLowerCase() : "" if(lc == "windows64"){ return PackrConfig.Platform.Windows64 }else if(lc == "windows32"){ return PackrConfig.Platform.Windows32 }else if(lc == "linux"){ return PackrConfig.Platform.Linux64 }else if(lc == "mac"){ return PackrConfig.Platform.MacOS }else{ throw new InvalidUserDataException("Invalid platform. Set platform with -Pplatform=windows64/windows32/linux/mac") } }*/ task run(dependsOn: classes, type: JavaExec){ main = project.mainClassName classpath = sourceSets.main.runtimeClasspath standardInput = System.in workingDir = project.assetsDir if(System.getProperty("os.name").toLowerCase().contains("mac")){ jvmArgs "-XstartOnFirstThread" } ignoreExitValue = true if(project.hasProperty("args")){ args Eval.me(project.getProperties()["args"]) } if(args.contains("debug")){ main = "io.anuke.mindustry.DebugLauncher" } } task debug(dependsOn: classes, type: JavaExec){ main = project.mainClassName classpath = sourceSets.main.runtimeClasspath standardInput = System.in workingDir = project.assetsDir ignoreExitValue = true debug = true } task dist(type: Jar){ dependsOn classes writeVersion() from files(sourceSets.main.output.classesDirs) from files(sourceSets.main.output.resourcesDir) from{ configurations.compile.collect{ zipTree(it) } } from files(project.assetsDir) manifest{ attributes 'Main-Class': project.mainClassName } } PackrConfig.Platform.values().each{ platform -> task "packr${platform.toString()}"{ doLast{ if(platform == PackrConfig.Platform.Windows32 || platform == PackrConfig.Platform.Windows64){ copy{ into "packr-out/" from "${JDK_DIR}/templates/${platform.toString().toLowerCase()}" } copy{ into "packr-out/" rename("desktop-release.jar", "desktop.jar") from "../desktop-sdl/build/libs/desktop.jar" } }else{ def config = new PackrConfig() config.with{ config.executable = appName config.platform = platform verbose = true bundleIdentifier = getPackage() + ".mac" iconResource = ICON_DIR outDir = file("packr-out/") mainClass = project.ext.mainClassName classpath = ["desktop-sdl/build/libs/desktop.jar"] removePlatformLibs = ["desktop-sdl/build/libs/desktop.jar"] vmArgs = ["Djava.net.preferIPv4Stack=true"] minimizeJre = "desktop/packr_minimize.json" jdk = JDK_DIR + "jdk-${platform.toString().toLowerCase()}.zip" if(platform == PackrConfig.Platform.MacOS){ vmArgs += "XstartOnFirstThread" } } new Packr().pack(config) if(platform == PackrConfig.Platform.MacOS){ copy{ into "packr-out/" + appName + ".app/Contents/" from "packr-out/Contents/" } delete{ delete "packr-out/Contents/" } } } task "zip${platform.toString()}"(type: Zip){ from "packr-out/" archiveName "${generateDeployName(platform.toString())}.zip" destinationDir(file("packr-export")) } finalizedBy 'rzip' delete "packr-out/" } } }