apply plugin: 'com.android.application'

android {
	ndkVersion "$ndk_version"
	defaultConfig {
		applicationId 'net.minetest.minetest'
		minSdkVersion 21
		compileSdk 34
		targetSdkVersion 34
		versionName "${versionMajor}.${versionMinor}.${versionPatch}"
		versionCode versionMajor * 1000000 + versionMinor * 10000 + versionPatch * 100 + versionBuild
	}

	buildFeatures {
		buildConfig true
	}

	// load properties
	Properties props = new Properties()
	def propfile = file('../local.properties')
	if (propfile.exists())
		props.load(new FileInputStream(propfile))

	if (props.getProperty('keystore') != null) {
		signingConfigs {
			release {
				storeFile file(props['keystore'])
				storePassword props['keystore.password']
				keyAlias props['key']
				keyPassword props['key.password']
			}
		}

		buildTypes {
			release {
				minifyEnabled true
				signingConfig signingConfigs.release
			}
		}
	}

	// for multiple APKs
	splits {
		abi {
			enable true
			reset()
			include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
		}
	}

	compileOptions {
		sourceCompatibility JavaVersion.VERSION_1_8
		targetCompatibility JavaVersion.VERSION_1_8
	}
	namespace 'net.minetest.minetest'
}

task prepareAssets() {
	def assetsFolder = "build/assets"
	def projRoot = rootDir.parent

	// See issue #4638
	def unsupportedLanguages = new File("${projRoot}/src/unsupported_language_list.txt").text.readLines()

	doFirst {
		logger.lifecycle('Preparing assets at {}', assetsFolder)
	}
	doLast {
		copy {
			from "${projRoot}/minetest.conf.example", "${projRoot}/README.md" into assetsFolder
		}
		copy {
			from "${projRoot}/doc/lgpl-2.1.txt" into assetsFolder
		}
		copy {
			from "${projRoot}/builtin" into "${assetsFolder}/builtin"
		}
		copy {
			from "${projRoot}/client/shaders" into "${assetsFolder}/client/shaders"
		}
		copy {
			from "${projRoot}/irr/media/Shaders" into "${assetsFolder}/client/shaders/Irrlicht"
		}
		copy {
			from "${projRoot}/fonts" include "*.ttf" into "${assetsFolder}/fonts"
		}
		copy {
			from "${projRoot}/textures/base/pack" into "${assetsFolder}/textures/base/pack"
		}

		// compile translations
		fileTree("${projRoot}/po").include("**/*.po").grep {
			it.parentFile.name !in unsupportedLanguages
		}.forEach { poFile ->
			def moPath = "${assetsFolder}/locale/${poFile.parentFile.name}/LC_MESSAGES/"
			file(moPath).mkdirs()
			exec {
				commandLine 'msgfmt', '-o', "${moPath}/luanti.mo", poFile
			}
		}

		file("${assetsFolder}/.nomedia").text = ""
	}

	task zipAssets(dependsOn: prepareAssets, type: Zip) {
		archiveFileName = "assets.zip"
		from assetsFolder
		destinationDirectory = file("src/main/assets")
	}
}

preBuild.dependsOn zipAssets
prepareAssets.dependsOn ':native:getDeps'

clean {
	delete new File("src/main/assets", "assets.zip")
}

dependencies {
	implementation project(':native')
	implementation 'androidx.appcompat:appcompat:1.6.1'
}
