mirror of
https://github.com/GTNewHorizons/ThaumicTinkerer.git
synced 2026-10-25 20:32:29 +00:00
306 lines
14 KiB
Plaintext
306 lines
14 KiB
Plaintext
<project name="ThaumicTinkerer" default="install" basedir=".">
|
|
<!-- Buildscript thanks to CoFH -->
|
|
<property environment="env"/>
|
|
<!-- Basic directories -->
|
|
<property name="src.dir" value="src/main/java"/>
|
|
<property name="api.dir" value="src/api/java"/>
|
|
<property name="library.dir" value="libs"/>
|
|
<property name="library.download.dir" value="${library.dir}/downloads"/>
|
|
<property name="resources.dir" value="src/main/resources"/>
|
|
<property name="build.dir" value="build"/>
|
|
<property name="download.dir" value="${build.dir}/downloads"/>
|
|
<!-- Project information -->
|
|
<property name="build.name" value="${ant.project.name}"/>
|
|
<property name="class.pckg" value="thaumic/tinkerer"/>
|
|
<!-- Version file -->
|
|
<property name="verclass.dir" value="${src.dir}/${class.pckg}/common/lib"/>
|
|
<property name="verclass.name" value="LibMisc.java"/>
|
|
<!-- Forge version -->
|
|
<property name="mc.version" value="1.7.10"/>
|
|
<property name="forge.major" value="10"/>
|
|
<property name="forge.minor" value="13"/>
|
|
<property name="forge.patch" value="0"/>
|
|
<property name="forge.build" value="1180"/>
|
|
<!-- Packaging -->
|
|
<property name="dist.dir" value="${build.dir}/dist"/>
|
|
<property name="classes.dir" value="${build.dir}/packaging"/>
|
|
<property name="apiclasses.dir" value="${build.dir}/api-packaging"/>
|
|
<!-- Forge paths -->
|
|
<property name="forge.version" value="${mc.version}-${forge.major}.${forge.minor}.${forge.patch}.${forge.build}"/>
|
|
<property name="forge.dir" value="${build.dir}/forge"/>
|
|
<property name="forgebuild.dir" value="${forge.dir}/build"/>
|
|
<property name="compile.dir" value="${forgebuild.dir}/tmp/compile"/>
|
|
<property name="lib.dir" value="${forgebuild.dir}/libs"/>
|
|
<property name="sources.dir" value="${forgebuild.dir}/sources/minecraft"/>
|
|
<property name="transformers.dir" value="${forge.dir}/src/main/resources/"/>
|
|
<property name="forge.stsh"
|
|
value="${build.dir}/.gradle/caches/minecraft/net/minecraftforge/forge/${forge.version}"/>
|
|
<property name="forge.jar" value="${forge.stsh}/forgeSrc-${forge.version}.jar"/>
|
|
<property name="reobf.cmd" value="${download.dir}/bon.jar"/>
|
|
<property name="forge.url"
|
|
value="http://files.minecraftforge.net/maven/net/minecraftforge/forge/${forge.version}/forge-${forge.version}-src.zip"/>
|
|
<!-- Classpaths -->
|
|
<path id="lib.classpath">
|
|
<pathelement location="${forge.jar}"/>
|
|
<fileset dir="${lib.dir}">
|
|
<include name="*.jar"/>
|
|
<include name="**/*.jar"/>
|
|
<exclude name="${reobf.jar}"/>
|
|
</fileset>
|
|
<fileset dir="libs">
|
|
<include name="*.jar"/>
|
|
<include name="**/*.jar"/>
|
|
</fileset>
|
|
<!--fileset dir="${build.dir}/.gradle/caches">
|
|
<include name="modules*/files*/**/*.jar"/>
|
|
|
|
<exclude name="commons-io-1.4.jar"/>
|
|
<exclude name="commons-lang3-3.1.jar"/>
|
|
<exclude name="modules*/files*/commons-io/commons-io/1.4/**/*.jar"/>
|
|
<exclude name="modules*/files*/com.google.guava/guava/14*/**/*.jar"/>
|
|
<exclude name="modules*/files*/com.google.guava/guava/15*/**/*.jar"/>
|
|
</fileset-->
|
|
</path>
|
|
<path id="gson">
|
|
<!--fileset dir="${build.dir}/.gradle/caches">
|
|
<include name="modules*/files*/com.google.code.gson/**/*.jar"/>
|
|
</fileset-->
|
|
</path>
|
|
<!-- Task skipping -->
|
|
<target name="properties">
|
|
<!-- Enforce some paths -->
|
|
<mkdir dir="${build.dir}"/>
|
|
<mkdir dir="${download.dir}"/>
|
|
<!-- Set properties -->
|
|
<available property="has.api" file="${src.dir}/${class.pckg}/api"/>
|
|
<available property="forge.exists" file="${download.dir}/forge-${forge.version}-src.zip"/>
|
|
<available property="bon.exists" file="${reobf.cmd}"/>
|
|
<condition property="forge.already.installed">
|
|
<available file="${forge.jar}" type="file"/>
|
|
</condition>
|
|
<condition property="have.libs">
|
|
<and>
|
|
<istrue value="${forge.exists}"/>
|
|
</and>
|
|
</condition>
|
|
</target>
|
|
<!-- Dependency downloading -->
|
|
<target name="download-core" depends="properties" unless="forge.exists">
|
|
</target>
|
|
<target name="get-dependencies" depends="get-version" unless="have.libs">
|
|
<delete dir="${library.download.dir}/"/>
|
|
<mkdir dir="${library.download.dir}/"/>
|
|
<echo message="Downloading libs"/>
|
|
|
|
<get src="http://files.minecraftforge.net/maven/codechicken/ForgeMultipart/1.7.2-1.1.0.268/ForgeMultipart-1.7.2-1.1.0.268-dev.jar"
|
|
dest="${library.download.dir}/FMP.jar"/>
|
|
<get src="http://dvs1.progwml6.com/files/maven/tconstruct/TConstruct/1.7.2-1.6.0.jenkins494/TConstruct-1.7.2-1.6.0.jenkins494-deobf.jar"
|
|
dest="${library.download.dir}/TCONSTRUCT.jar"/>
|
|
<get src="http://dvs1.progwml6.com/files/maven/mantle/Mantle/1.7.2-145.3a637c2/Mantle-1.7.2-145.3a637c2-deobf.jar"
|
|
dest="${library.download.dir}/MANTLE.jar"/>
|
|
<!-- Begin hack -->
|
|
<delete dir="${compile.dir}" failonerror="false"/>
|
|
<!-- End hack -->
|
|
</target>
|
|
<!-- Building process -->
|
|
<target name="install" depends="build">
|
|
<!-- Cleanup -->
|
|
<delete dir="${apiclasses.dir}"/>
|
|
<delete dir="${classes.dir}"/>
|
|
<delete>
|
|
<fileset dir="${dist.dir}">
|
|
<exclude name="${build.name}${build.full}${build.number}.jar"/>
|
|
<exclude name="${build.name}${build.full}dev-${build.number}.jar"/>
|
|
<exclude name="${build.name}-API${build.full}${build.number}.zip"/>
|
|
</fileset>
|
|
</delete>
|
|
</target>
|
|
<macrodef name="install-lite">
|
|
<attribute name="build"/>
|
|
<attribute name="classes" default="${compile.dir}"/>
|
|
<sequential>
|
|
<copy todir="${classes.dir}" preservelastmodified="true">
|
|
<fileset dir="@{classes}">
|
|
<include name="**/*.class"/>
|
|
</fileset>
|
|
<fileset dir="${resources.dir}"/>
|
|
</copy>
|
|
<update-languages/>
|
|
<manifest file="${classes.dir}/MANIFEST.MF">
|
|
<attribute name="FMLCorePlugin" value="cofh.asm.LoadingPlugin"/>
|
|
<attribute name="FMLCorePluginContainsFMLMod" value="true"/>
|
|
</manifest>
|
|
<jar destfile="${dist.dir}/${build.name}${build.full}@{build}.jar"
|
|
compress="true" level="9" basedir="${classes.dir}"
|
|
manifest="${classes.dir}/MANIFEST.MF">
|
|
<exclude name="MANIFEST.MF"/>
|
|
</jar>
|
|
</sequential>
|
|
</macrodef>
|
|
<target name="build" depends="get-dependencies,get-build-number,copy-sources">
|
|
<!-- Recompile -->
|
|
<echo message="Compiling..."/>
|
|
<mkdir dir="${compile.dir}"/>
|
|
<depend srcdir="${sources.dir}" destdir="${compile.dir}"
|
|
cache="${forgebuild.dir}/tmp/depcache" closure="true">
|
|
<include name="**/*.java"/>
|
|
</depend>
|
|
|
|
<!--Print out detailed classpath-->
|
|
<pathconvert pathsep="${line.separator}| |-- "
|
|
property="echo.path.compile"
|
|
refid="lib.classpath">
|
|
</pathconvert>
|
|
<echo message="|-- compile classpath"/>
|
|
<echo message="| |"/>
|
|
<echo message="| |-- ${echo.path.compile}"/>
|
|
|
|
<javac srcdir="${sources.dir}" destdir="${compile.dir}" target="1.6" source="1.6"
|
|
classpathref="lib.classpath" debug="true" debuglevel="lines,source" includeAntRuntime="false">
|
|
<include name="**/*.java"/>
|
|
</javac>
|
|
<!-- Dev jar -->
|
|
<echo message="Building jar..."/>
|
|
<local name="build"/>
|
|
<property name="build" value="dev-${build.number}"/>
|
|
<install-lite build="${build}"/>
|
|
<!-- Reobf -->
|
|
<echo message="Reobfuscating..."/>
|
|
<java classpath="${reobf.cmd}" classname="immibis.bon.cui.MCPRemap">
|
|
<arg line="-q -m"/>
|
|
<arg value="-to SRG"/>
|
|
<arg value="-from MCP"/>
|
|
<arg value="-mcp ${forge.stsh}/unpacked"/>
|
|
<arg value="-in ${dist.dir}/${build.name}${build.full}${build}.jar"/>
|
|
<arg value="-out ${dist.dir}/${build.name}${build.full}${build.number}.jar"/>
|
|
<arg value="-ref ${forge.jar}"/>
|
|
<arg value="-jref ${lib.dir}"/>
|
|
</java>
|
|
</target>
|
|
<target name="copy-sources" depends="package-api">
|
|
<!-- Copy source -->
|
|
<mkdir dir="${sources.dir}"/>
|
|
<sync todir="${sources.dir}">
|
|
<fileset dir="${src.dir}"/>
|
|
<fileset dir="${api.dir}"/>
|
|
</sync>
|
|
</target>
|
|
<target name="package-api" depends="get-version" if="has.api">
|
|
<!-- Copy & package API -->
|
|
<copy todir="${apiclasses.dir}/${class.pckg}/api">
|
|
<fileset dir="${src.dir}/${class.pckg}/api"/>
|
|
</copy>
|
|
<zip destfile="${dist.dir}/${build.name}-API${build.full}${build.number}.zip" basedir="${apiclasses.dir}"/>
|
|
</target>
|
|
<target name="setup-forge" depends="download-forge" unless="forge.already.installed">
|
|
<delete dir="${forge.dir}" failonerror="false"/>
|
|
<mkdir dir="${forge.dir}"/>
|
|
<unzip dest="${forge.dir}">
|
|
<fileset dir="${download.dir}">
|
|
<include name="forge-${forge.version}-src.zip"/>
|
|
</fileset>
|
|
</unzip>
|
|
<!-- Cleanup -->
|
|
<delete>
|
|
<fileset dir="${forge.dir}">
|
|
<include name="*.txt"/>
|
|
<include name="src/**/*.info"/>
|
|
</fileset>
|
|
</delete>
|
|
<delete dir="${forge.dir}/eclipse" failonerror="false"/>
|
|
<delete dir="${forge.dir}/src/main/java" failonerror="false"/>
|
|
<delete dir="${build.dir}/.gradle/caches/minecraft/net/minecraftforge/forge/${forge.version}/srgs"
|
|
failonerror="false"/>
|
|
<!-- Change executables' permissions -->
|
|
<chmod file="${forge.dir}/gradlew" perm="+x"/>
|
|
<copy file="${resources.dir}/ThaumicTinkerer_at.cfg" tofile="${transformers.dir}/ThaumicTinkerer_at.cfg"/>
|
|
<!-- Install forge -->
|
|
<exec executable="./gradlew" failonerror="true" dir="${forge.dir}/" vmlauncher="false">
|
|
<arg line="-g ../.gradle"/>
|
|
<arg line="extractMinecraftSrc"/>
|
|
<arg line="eclipseClasspath"/>
|
|
</exec>
|
|
<mkdir dir="${compile.dir}"/>
|
|
<mkdir dir="${lib.dir}"/>
|
|
<javac srcdir="${forgebuild.dir}/tmp/recompSrc" destdir="${compile.dir}" target="1.6" source="1.6"
|
|
classpathref="lib.classpath" debug="true" debuglevel="lines,source" includeAntRuntime="false"/>
|
|
<jar destfile="${forge.jar}" compress="true" level="9" basedir="${compile.dir}"/>
|
|
<copy file="${forge.jar}" todir="${forgebuild.dir}/dirtyArtifacts/"/>
|
|
<delete dir="${compile.dir}"/>
|
|
</target>
|
|
<target name="download-forge" depends="setup-bon,download-core" unless="forge.exists">
|
|
<echo message="Downloading forge... "/>
|
|
<get src="${forge.url}" dest="${download.dir}/forge-${forge.version}-src.zip"/>
|
|
</target>
|
|
<target name="setup-bon" depends="properties" unless="bon.exists">
|
|
<echo message="Downloading BON..."/>
|
|
<get src="https://github.com/skyboy/bearded-octo-nemesis/releases/download/1.1/BON.jar" dest="${reobf.cmd}"/>
|
|
</target>
|
|
<macrodef name="update-languages">
|
|
<sequential>
|
|
<script language="javascript"><![CDATA[
|
|
importPackage(java.io);
|
|
var path = "/assets/cofh/language/";
|
|
var languages = new File(project.getProperty("resources.dir") + path);
|
|
if (languages.exists() && languages.isDirectory()) {
|
|
var out = "";
|
|
for each(var i in languages.list()) {
|
|
if (i != null && i.length() > 5 && i.indexOf(".lang") == i.length() - 5) {
|
|
out += i.substring(0, i.length() - 5) + ", ";
|
|
}
|
|
}
|
|
if (out.length > 0) {
|
|
var os = new PrintWriter(project.getProperty("classes.dir") + path + ".languages");
|
|
os.write("["+out.substring(0, out.length - 2)+"]");
|
|
os.flush();
|
|
os.close();
|
|
}
|
|
}
|
|
]]></script>
|
|
</sequential>
|
|
</macrodef>
|
|
<target name="verify-version">
|
|
<script language="javascript"><![CDATA[
|
|
var name = project.getProperty("build.full");
|
|
if (name == null || name == "") {
|
|
name = project.getProperty("verclass.name");
|
|
if (name == null || name == "") {
|
|
project.setProperty("build.full", "-");
|
|
}
|
|
}
|
|
]]></script>
|
|
</target>
|
|
<target name="get-version" depends="verify-version,setup-forge" unless="build.full">
|
|
<local name="grep.out"/>
|
|
<local name="mfrv"/>
|
|
<local name="mcv"/>
|
|
<!-- Read version out of file -->
|
|
<property name="version" value="2.4"/>
|
|
<!-- Split mod&mc version, update mcmod -->
|
|
<property name="build.full" value="-[${mcv}]${mfrv}-"/>
|
|
</target>
|
|
<target name="get-build-number" depends="build-number-there" unless="build.number">
|
|
<echo message="!! No build number set !!"/>
|
|
<property name="build.number" value="CUSTOM_BUILD"/>
|
|
</target>
|
|
<target name="build-number-there" depends="get-version" if="env.BUILD_NUMBER" unless="build.number">
|
|
<echo message="Using build number ${env.BUILD_NUMBER}..."/>
|
|
<property name="build.number" value="${env.BUILD_NUMBER}"/>
|
|
</target>
|
|
<target name="clean">
|
|
<delete dir="${build.dir}"/>
|
|
</target>
|
|
<target name="rebuild">
|
|
<delete file="${forge.jar}" failonerror="false"/>
|
|
<delete dir="${forge.dir}"/>
|
|
<delete dir="${download.dir}"/>
|
|
<antcall target="install"/>
|
|
</target>
|
|
<target name="refresh-deps">
|
|
<delete dir="${lib.dir}"/>
|
|
<delete dir="${download.dir}"/>
|
|
<antcall target="install"/>
|
|
</target>
|
|
<target name="jar" depends="install"/>
|
|
</project>
|