2018-12-13 18:01:51 -05:00
|
|
|
buildscript{
|
2020-01-22 19:16:56 -05:00
|
|
|
ext{
|
2020-01-24 10:23:48 -05:00
|
|
|
getArcHash = {
|
|
|
|
return new Properties().with{ p -> p.load(file('gradle.properties').newReader()); return p }["archash"]
|
|
|
|
}
|
|
|
|
|
|
|
|
arcHash = getArcHash()
|
2020-01-22 19:16:56 -05:00
|
|
|
}
|
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
repositories{
|
2017-04-29 21:25:59 -04:00
|
|
|
mavenLocal()
|
|
|
|
mavenCentral()
|
2017-12-19 20:51:46 -05:00
|
|
|
google()
|
2018-12-13 18:01:51 -05:00
|
|
|
maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
2017-04-29 21:25:59 -04:00
|
|
|
jcenter()
|
2019-10-22 18:45:05 -04:00
|
|
|
maven{ url 'https://jitpack.io' }
|
2017-04-29 21:25:59 -04:00
|
|
|
}
|
2018-12-29 15:58:11 -05:00
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
dependencies{
|
2019-11-19 19:08:41 -05:00
|
|
|
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.8'
|
2019-10-22 18:45:05 -04:00
|
|
|
classpath "com.github.anuken:packr:-SNAPSHOT"
|
2020-01-24 10:23:48 -05:00
|
|
|
classpath "com.github.Anuken.Arc:packer:$arcHash"
|
|
|
|
classpath "com.github.Anuken.Arc:arc-core:$arcHash"
|
2017-04-29 21:25:59 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
allprojects{
|
2017-12-19 00:05:41 -05:00
|
|
|
version = 'release'
|
2019-11-19 22:32:59 -05:00
|
|
|
apply plugin: 'maven'
|
2019-08-28 22:07:08 -04:00
|
|
|
group = 'com.github.Anuken'
|
2018-02-21 19:50:27 -05:00
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
ext{
|
2019-10-24 18:52:42 -04:00
|
|
|
versionNumber = '5'
|
2019-09-07 16:03:20 -04:00
|
|
|
if(!project.hasProperty("versionModifier")) versionModifier = 'release'
|
2018-12-13 18:01:51 -05:00
|
|
|
if(!project.hasProperty("versionType")) versionType = 'official'
|
2018-02-08 23:41:07 -05:00
|
|
|
appName = 'Mindustry'
|
2019-07-22 12:42:42 -04:00
|
|
|
gdxVersion = '1.9.10'
|
2019-11-19 19:08:41 -05:00
|
|
|
roboVMVersion = '2.3.8'
|
2019-11-06 13:59:35 -05:00
|
|
|
steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256'
|
2019-04-08 09:03:18 -04:00
|
|
|
|
2019-11-19 19:08:41 -05:00
|
|
|
loadVersionProps = {
|
|
|
|
return new Properties().with{p -> p.load(file('../core/assets/version.properties').newReader()); return p }
|
|
|
|
}
|
|
|
|
|
2019-02-07 23:06:43 -05:00
|
|
|
debugged = {
|
2019-09-21 16:44:47 -04:00
|
|
|
return new File(projectDir.parent, '../Mindustry-Debug').exists() && !project.hasProperty("release") && project.hasProperty("args")
|
2019-02-07 23:06:43 -05:00
|
|
|
}
|
2018-12-29 12:22:41 -05:00
|
|
|
|
|
|
|
localArc = {
|
2019-09-13 13:05:10 -04:00
|
|
|
return !project.hasProperty("release") && new File(projectDir.parent, '../Arc').exists()
|
2018-12-29 12:22:41 -05:00
|
|
|
}
|
|
|
|
|
2018-12-29 11:59:43 -05:00
|
|
|
arcModule = { String name ->
|
2018-12-29 12:22:41 -05:00
|
|
|
if(localArc()){
|
2018-12-29 11:59:43 -05:00
|
|
|
return project(":Arc:$name")
|
|
|
|
}else{
|
2018-12-29 12:22:41 -05:00
|
|
|
//skip to last submodule
|
2018-12-29 11:59:43 -05:00
|
|
|
if(name.contains(':')) name = name.split(':').last()
|
2018-12-29 12:22:41 -05:00
|
|
|
return "com.github.Anuken.Arc:$name:${getArcHash()}"
|
2018-12-29 11:59:43 -05:00
|
|
|
}
|
|
|
|
}
|
2018-02-08 23:41:07 -05:00
|
|
|
|
2019-08-16 11:00:15 -04:00
|
|
|
generateDeployName = { String platform ->
|
|
|
|
if(platform == "windows"){
|
|
|
|
platform += "64"
|
|
|
|
}
|
|
|
|
platform = platform.capitalize()
|
|
|
|
|
|
|
|
if(platform.endsWith("64") || platform.endsWith("32")){
|
|
|
|
platform = "${platform.substring(0, platform.length() - 2)}-${platform.substring(platform.length() - 2)}bit"
|
|
|
|
}
|
|
|
|
|
2019-08-16 11:14:18 -04:00
|
|
|
return "[${platform}]${getModifierString()}[${getNeatVersionString()}]${appName}"
|
2019-08-16 11:00:15 -04:00
|
|
|
}
|
|
|
|
|
2018-02-08 23:41:07 -05:00
|
|
|
getVersionString = {
|
|
|
|
String buildVersion = getBuildVersion()
|
2018-10-17 00:36:43 -04:00
|
|
|
return "$versionNumber-$versionModifier-$buildVersion"
|
2018-02-08 23:41:07 -05:00
|
|
|
}
|
|
|
|
|
2019-08-16 11:00:15 -04:00
|
|
|
getNeatVersionString = {
|
|
|
|
String buildVersion = getBuildVersion()
|
|
|
|
return "v$buildVersion"
|
|
|
|
}
|
|
|
|
|
|
|
|
getModifierString = {
|
|
|
|
if(versionModifier != "release"){
|
|
|
|
return "[${versionModifier.toUpperCase()}]"
|
|
|
|
}
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
|
2018-02-08 23:41:07 -05:00
|
|
|
getBuildVersion = {
|
|
|
|
if(!project.hasProperty("buildversion")) return "custom build"
|
|
|
|
return project.getProperties()["buildversion"]
|
|
|
|
}
|
|
|
|
|
|
|
|
getPackage = {
|
|
|
|
return project.ext.mainClassName.substring(0, project.ext.mainClassName.indexOf("desktop") - 1)
|
|
|
|
}
|
2018-05-03 13:04:30 -04:00
|
|
|
|
2018-07-21 00:44:13 -04:00
|
|
|
generateLocales = {
|
2018-09-09 16:19:53 -04:00
|
|
|
def output = 'en\n'
|
2018-08-24 13:54:53 -04:00
|
|
|
def bundles = new File(project(':core').projectDir, 'assets/bundles/')
|
2018-12-13 18:01:51 -05:00
|
|
|
bundles.listFiles().each{ other ->
|
2018-10-06 11:56:39 -04:00
|
|
|
if(other.name == "bundle.properties") return
|
2018-09-09 16:19:53 -04:00
|
|
|
output += other.name.substring("bundle".length() + 1, other.name.lastIndexOf('.')) + "\n"
|
2018-07-21 00:44:13 -04:00
|
|
|
}
|
2018-10-06 11:56:39 -04:00
|
|
|
new File(project(':core').projectDir, 'assets/locales').text = output
|
2018-07-21 00:44:13 -04:00
|
|
|
}
|
|
|
|
|
2018-05-03 13:04:30 -04:00
|
|
|
writeVersion = {
|
2018-08-24 13:54:53 -04:00
|
|
|
def pfile = new File(project(':core').projectDir, 'assets/version.properties')
|
2018-05-03 13:04:30 -04:00
|
|
|
def props = new Properties()
|
|
|
|
|
|
|
|
try{
|
|
|
|
pfile.createNewFile()
|
2019-04-08 09:03:18 -04:00
|
|
|
}catch(Exception ignored){
|
|
|
|
}
|
2018-05-03 13:04:30 -04:00
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
if(pfile.exists()){
|
2018-05-03 13:04:30 -04:00
|
|
|
props.load(new FileInputStream(pfile))
|
|
|
|
|
2018-09-04 12:10:48 -04:00
|
|
|
String buildid = getBuildVersion()
|
2019-08-25 22:02:00 -04:00
|
|
|
println("Compiling with build: '$buildid'")
|
2018-05-03 13:04:30 -04:00
|
|
|
|
2018-09-04 12:10:48 -04:00
|
|
|
props["type"] = versionType
|
|
|
|
props["number"] = versionNumber
|
|
|
|
props["modifier"] = versionModifier
|
|
|
|
props["build"] = buildid
|
2018-05-03 13:04:30 -04:00
|
|
|
|
|
|
|
props.store(pfile.newWriter(), "Autogenerated file. Do not modify.")
|
|
|
|
}
|
|
|
|
}
|
2020-01-24 18:31:54 -05:00
|
|
|
|
|
|
|
writeProcessors = {
|
2020-01-26 13:16:42 -05:00
|
|
|
new File(rootDir, "annotations/src/main/resources/META-INF/services/").mkdirs()
|
2020-01-24 18:31:54 -05:00
|
|
|
def processorFile = new File(rootDir, "annotations/src/main/resources/META-INF/services/javax.annotation.processing.Processor")
|
|
|
|
def text = new StringBuilder()
|
|
|
|
def files = new File(rootDir, "annotations/src/main/java")
|
|
|
|
files.eachFileRecurse(groovy.io.FileType.FILES){ file ->
|
|
|
|
if(file.name.endsWith(".java") && (file.text.contains(" extends BaseProcessor") || (file.text.contains(" extends AbstractProcessor") && !file.text.contains("abstract class")))){
|
|
|
|
text.append(file.path.substring(files.path.length() + 1)).append("\n")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
processorFile.text = text.toString().replace(".java", "").replace("/", ".").replace("\\", ".")
|
|
|
|
}
|
2017-04-29 21:25:59 -04:00
|
|
|
}
|
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
repositories{
|
2017-04-29 21:25:59 -04:00
|
|
|
mavenLocal()
|
|
|
|
mavenCentral()
|
2018-12-13 18:01:51 -05:00
|
|
|
maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
|
|
|
maven{ url "https://oss.sonatype.org/content/repositories/releases/" }
|
|
|
|
maven{ url 'https://jitpack.io' }
|
2019-04-13 14:57:26 -04:00
|
|
|
jcenter()
|
2017-04-29 21:25:59 -04:00
|
|
|
}
|
2019-06-12 14:03:50 -04:00
|
|
|
|
|
|
|
tasks.withType(Javadoc).all{ enabled = false }
|
2017-04-29 21:25:59 -04:00
|
|
|
}
|
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
project(":desktop"){
|
2017-04-29 21:25:59 -04:00
|
|
|
apply plugin: "java"
|
|
|
|
|
2020-02-07 10:47:58 -05:00
|
|
|
compileJava.options.fork = true
|
|
|
|
compileJava.options.compilerArgs += ["-XDignore.symbol.file"]
|
|
|
|
|
2019-07-25 11:45:49 -04:00
|
|
|
dependencies{
|
|
|
|
compile project(":core")
|
|
|
|
|
|
|
|
if(debugged()) compile project(":debug")
|
|
|
|
|
|
|
|
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
|
|
|
|
compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
|
|
|
|
|
2019-10-30 16:29:01 -04:00
|
|
|
compile "com.github.Anuken:steamworks4j:$steamworksVersion"
|
2019-08-18 15:26:06 -04:00
|
|
|
|
2019-07-25 11:45:49 -04:00
|
|
|
compile arcModule("backends:backend-sdl")
|
2019-10-11 23:54:48 -05:00
|
|
|
compile 'com.github.MinnDevelopment:java-discord-rpc:v2.0.1'
|
2019-07-25 11:45:49 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
project(":ios"){
|
2018-04-27 16:01:37 -04:00
|
|
|
apply plugin: "java"
|
|
|
|
apply plugin: "robovm"
|
|
|
|
|
2018-11-20 19:28:26 -05:00
|
|
|
task incrementConfig{
|
|
|
|
def vfile = file('robovm.properties')
|
|
|
|
def props = new Properties()
|
2018-11-21 11:00:50 -05:00
|
|
|
if(vfile.exists()){
|
|
|
|
props.load(new FileInputStream(vfile))
|
2019-10-20 17:08:54 -04:00
|
|
|
}else{
|
|
|
|
props['app.id'] = 'io.anuke.mindustry'
|
2019-10-24 18:52:42 -04:00
|
|
|
props['app.version'] = '5.0'
|
2019-12-25 12:06:19 -05:00
|
|
|
props['app.mainclass'] = 'mindustry.IOSLauncher'
|
2019-10-20 17:08:54 -04:00
|
|
|
props['app.executable'] = 'IOSLauncher'
|
|
|
|
props['app.name'] = 'Mindustry'
|
2018-11-21 11:00:50 -05:00
|
|
|
}
|
2019-10-20 17:08:54 -04:00
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
props['app.build'] = (!props.containsKey("app.build") ? 40 : props['app.build'].toInteger() + 1) + ""
|
2018-11-20 19:28:26 -05:00
|
|
|
props.store(vfile.newWriter(), null)
|
|
|
|
}
|
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
dependencies{
|
2018-04-27 16:01:37 -04:00
|
|
|
compile project(":core")
|
2019-03-23 18:33:33 -04:00
|
|
|
compileOnly project(":annotations")
|
2019-04-08 09:03:18 -04:00
|
|
|
|
2018-12-29 11:59:43 -05:00
|
|
|
compile arcModule("backends:backend-robovm")
|
2019-04-08 09:03:18 -04:00
|
|
|
|
2018-04-27 16:01:37 -04:00
|
|
|
compile "com.mobidevelop.robovm:robovm-rt:$roboVMVersion"
|
|
|
|
compile "com.mobidevelop.robovm:robovm-cocoatouch:$roboVMVersion"
|
|
|
|
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios"
|
2018-11-06 12:55:13 -05:00
|
|
|
compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-ios"
|
2018-04-27 16:01:37 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
project(":core"){
|
2017-04-29 21:25:59 -04:00
|
|
|
apply plugin: "java"
|
|
|
|
|
2019-06-23 10:52:03 -04:00
|
|
|
task preGen{
|
2019-10-20 17:05:23 -04:00
|
|
|
outputs.upToDateWhen{ false }
|
2018-07-21 00:44:13 -04:00
|
|
|
generateLocales()
|
2019-08-25 22:02:00 -04:00
|
|
|
writeVersion()
|
2020-01-24 18:31:54 -05:00
|
|
|
writeProcessors()
|
2018-07-21 00:44:13 -04:00
|
|
|
}
|
|
|
|
|
2019-11-19 19:08:41 -05:00
|
|
|
task copyChangelog{
|
|
|
|
doLast{
|
|
|
|
def props = loadVersionProps()
|
|
|
|
def androidVersion = props['androidBuildCode'].toInteger() - 2
|
|
|
|
def buildVersion = props["build"]
|
|
|
|
def loglines = file("../changelog").text.split("\n")
|
|
|
|
def maxLength = 460
|
|
|
|
|
|
|
|
def androidLogList = loglines.findAll{ line -> !line.endsWith("]") || line.endsWith("[Mobile]") || line.endsWith("[Android]")}
|
|
|
|
def result = ""
|
|
|
|
androidLogList.forEach({line ->
|
|
|
|
if(result.length() + line.length() + 1 < maxLength){
|
|
|
|
result += line + "\n"
|
|
|
|
}
|
|
|
|
})
|
|
|
|
def changelogs = file("../fastlane/metadata/android/en-US/changelogs/")
|
|
|
|
new File(changelogs, buildVersion + ".txt").text = (result)
|
|
|
|
new File(changelogs, androidVersion + ".txt").text = (result)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
dependencies{
|
2019-06-23 10:52:03 -04:00
|
|
|
compileJava.dependsOn(preGen)
|
2019-05-05 11:36:38 -04:00
|
|
|
|
2019-08-22 22:49:22 -04:00
|
|
|
compile "org.lz4:lz4-java:1.4.1"
|
2018-12-29 11:59:43 -05:00
|
|
|
compile arcModule("arc-core")
|
|
|
|
compile arcModule("extensions:freetype")
|
2019-12-24 21:45:53 -05:00
|
|
|
compile arcModule("extensions:g3d")
|
2020-03-08 21:53:19 -04:00
|
|
|
compile arcModule("extensions:fx")
|
2019-04-17 21:59:26 -04:00
|
|
|
compile arcModule("extensions:arcnet")
|
2020-02-18 19:34:07 -05:00
|
|
|
compile "org.mozilla:rhino-runtime:1.7.12"
|
2019-02-07 23:06:43 -05:00
|
|
|
if(localArc() && debugged()) compile arcModule("extensions:recorder")
|
2018-05-12 07:30:23 -07:00
|
|
|
|
2018-10-28 18:34:18 -04:00
|
|
|
compileOnly project(":annotations")
|
2018-10-28 14:26:58 -04:00
|
|
|
annotationProcessor project(":annotations")
|
2017-04-29 21:25:59 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
project(":server"){
|
2018-01-27 23:42:42 -05:00
|
|
|
apply plugin: "java"
|
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
dependencies{
|
2018-01-27 23:42:42 -05:00
|
|
|
compile project(":core")
|
2018-12-29 11:59:43 -05:00
|
|
|
compile arcModule("backends:backend-headless")
|
2018-01-27 23:42:42 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-10-03 20:58:35 -04:00
|
|
|
project(":tests"){
|
|
|
|
apply plugin: "java"
|
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
dependencies{
|
2018-10-03 20:58:35 -04:00
|
|
|
testImplementation project(":core")
|
2018-11-22 23:30:49 +01:00
|
|
|
testImplementation "org.junit.jupiter:junit-jupiter-params:5.3.1"
|
|
|
|
testImplementation "org.junit.jupiter:junit-jupiter-api:5.3.1"
|
|
|
|
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.3.1"
|
2018-12-29 11:59:43 -05:00
|
|
|
compile arcModule("backends:backend-headless")
|
2018-10-03 20:58:35 -04:00
|
|
|
}
|
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
test{
|
2018-10-03 20:58:35 -04:00
|
|
|
useJUnitPlatform()
|
|
|
|
workingDir = new File("../core/assets")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
project(":tools"){
|
2018-06-15 18:06:05 -04:00
|
|
|
apply plugin: "java"
|
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
dependencies{
|
2018-06-15 18:06:05 -04:00
|
|
|
compile project(":core")
|
2019-06-20 16:27:57 -04:00
|
|
|
|
|
|
|
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
|
|
|
|
compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
|
2020-01-24 10:23:48 -05:00
|
|
|
compile "org.reflections:reflections:0.9.12"
|
2019-06-20 16:27:57 -04:00
|
|
|
|
2020-02-14 20:08:07 -05:00
|
|
|
compile arcModule("backends:backend-headless")
|
2018-06-15 18:06:05 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
project(":annotations"){
|
2018-05-12 07:30:23 -07:00
|
|
|
apply plugin: "java"
|
|
|
|
|
2018-12-13 18:01:51 -05:00
|
|
|
dependencies{
|
2020-01-24 10:23:48 -05:00
|
|
|
compile 'com.squareup:javapoet:1.12.1'
|
|
|
|
compile "com.github.Anuken.Arc:arc-core:$arcHash"
|
2019-05-05 11:36:38 -04:00
|
|
|
compile files("${System.getProperty('java.home')}/../lib/tools.jar")
|
2018-05-13 16:41:50 -07:00
|
|
|
}
|
2018-05-12 07:30:23 -07:00
|
|
|
}
|
|
|
|
|
2019-08-21 14:46:36 -04:00
|
|
|
task deployAll{
|
|
|
|
task cleanDeployOutput{
|
|
|
|
doFirst{
|
2019-08-21 15:34:01 -04:00
|
|
|
if("${getBuildVersion()}" == "custom build" || "${getBuildVersion()}" == "") throw new IllegalArgumentException("----\n\nSET A BUILD NUMBER FIRST!\n\n----")
|
2019-08-21 14:46:36 -04:00
|
|
|
if(!project.hasProperty("release")) throw new IllegalArgumentException("----\n\nSET THE RELEASE PROJECT PROPERTY FIRST!\n\n----")
|
|
|
|
|
|
|
|
delete{
|
|
|
|
delete "deploy/"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
dependsOn cleanDeployOutput
|
2019-08-21 15:41:38 -04:00
|
|
|
dependsOn "desktop:packrLinux64"
|
|
|
|
dependsOn "desktop:packrWindows64"
|
|
|
|
dependsOn "desktop:packrWindows32"
|
|
|
|
dependsOn "desktop:packrMacOS"
|
2019-08-21 14:46:36 -04:00
|
|
|
dependsOn "server:deploy"
|
|
|
|
dependsOn "android:deploy"
|
2019-09-02 12:40:52 -04:00
|
|
|
}
|