Files
TinkersConstruct/build.xml
T

270 lines
8.7 KiB
XML

<!-- Originally built on BuildCraft build.xml -->
<project name="TConstruct" default="main">
<property environment="env"/>
<!-- Properties -->
<property name="build.dir" value="build"/>
<property name="src.dir" value="src"/>
<property name="resources.dir" value="resources"/>
<property name="download.dir" value="download"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir" value="bin"/>
<property name="forge.dir" value="${build.dir}/forge"/>
<property name="mcp.dir" value="${forge.dir}/mcp"/>
<property name="mcpsrc.dir" value="${mcp.dir}/src"/>
<property name="mc.version" value="1.6.4"/>
<property name="forge.version" value="9.11.0.880"/>
<!-- FMP stuff - copied from projectred w/ CB's permission -->
<property name="build.dependencies.file" value="${build.dir}/dependencies.properties" />
<property name="ccl.version" value="1.0.0.36" />
<property name="fmp.version" value="1.0.0.182" />
<property name="ccl.name" value="CodeChickenLib-dev-${mc.version}-${ccl.version}.jar" />
<property name="fmp.name" value="ForgeMultipart-dev-${mc.version}-${fmp.version}.jar" />
<available property="fmp-downloaded" file="${download.dir}/${fmp.name}" />
<available property="ccl-downloaded" file="${download.dir}/${ccl.name}" />
<condition property="ccl-installed">
<and>
<isset property="forge-installed" />
<equals arg1="${build.dependencies.ccl}" arg2="${ccl.version}" />
</and>
</condition>
<condition property="fmp-installed">
<and>
<isset property="forge-installed" />
<equals arg1="${build.dependencies.fmp}" arg2="${fmp.version}" />
</and>
</condition>
<property name="version.major" value="0"/>
<property name="version.minor" value="0"/>
<property name="forge.name" value="minecraftforge-src-${mc.version}-${forge.version}.zip"/>
<available property="forge-exists" file="${download.dir}/${forge.name}"/>
<available file=".git" type="dir" property="git.present"/>
<condition property="out-of-date">
<not>
<and>
<available file="${download.dir}/${forge.name}"/>
<available file="${mcpsrc.dir}"/>
</and>
</not>
</condition>
<mkdir dir="${download.dir}"/>
<!-- Targets -->
<!-- Targets FMP stuff from ProjectRed w/ CB's Permission -->
<target name="download-ccl" unless="ccl-downloaded">
<get src="http://files.minecraftforge.net/CodeChickenLib/${ccl.name}" dest="${download.dir}" usetimestamp="true" />
</target>
<target name="install-ccl" depends="setup,download-ccl" unless="ccl-installed">
<echo message="Deleting old CodeChickenLib" />
<delete file="${mcp.dir}/lib/${build.dependencies.ccl.name}" />
<echo message="Installing CodeChickenLib" />
<copy file="${download.dir}/${ccl.name}" todir="${mcp.dir}/lib" />
<echo message="Updating build.dependencies" />
<propertyfile file="${build.dependencies.file}">
<entry key="ccl" value="${ccl.version}" />
<entry key="ccl.name" value="${ccl.name}" />
</propertyfile>
</target>
<target name="install-fmp" depends="setup,download-fmp" unless="fmp-installed">
<echo message="Deleting old ForgeMultipart" />
<delete file="${mcp.dir}/lib/${build.dependencies.fmp.name}" />
<echo message="Installing ForgeMultipart" />
<copy file="${download.dir}/${fmp.name}" todir="${mcp.dir}/lib" />
<echo message="Updating build.dependencies" />
<propertyfile file="${build.dependencies.file}">
<entry key="fmp" value="${fmp.version}" />
<entry key="fmp.name" value="${fmp.name}" />
</propertyfile>
</target>
<target name="install-deps" depends="install-ccl,install-fmp" />
<target name="download-fmp" unless="fmp-downloaded">
<get src="http://files.minecraftforge.net/ForgeMultipart/${fmp.name}" dest="${download.dir}" usetimestamp="true" />
</target>
<!-- Clear build directory -->
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<!-- Set full version -->
<target name="initialize-version" depends="version-provided,version-not-provided,git-revision">
<property name="project.version.full" value="${build.number}.${git.revision}"/>
</target>
<!-- Set unknown build number -->
<target name="version-not-provided" unless="env.BUILD_NUMBER">
<property name="build.number" value="DEV"/>
</target>
<!-- Set build number from environment -->
<target name="version-provided" if="env.BUILD_NUMBER">
<property name="build.number" value="${env.BUILD_NUMBER}"/>
</target>
<target name="git-revision" if="git.present">
<exec executable="git" dir="." outputproperty="git.revision" failifexecutionfails="false" errorproperty="">
<arg value="rev-parse"/>
<arg value="--short"/>
<arg value="HEAD"/>
</exec>
<echo message="Git revision: ${git.revision}"/>
</target>
<!-- Download necessary files -->
<target name="download-files" depends="download-forge"/>
<!-- Download forge (if it doesn't exist) -->
<target name="download-forge" unless="forge-exists">
<get src="http://files.minecraftforge.net/${forge.name}" dest="${download.dir}" usetimestamp="True"/>
</target>
<!-- Setup mcp and forge -->
<target name="setup" depends="download-files" if="out-of-date">
<delete dir="${forge.dir}" failonerror="false"/>
<unzip dest="${forge.dir}/.." src="${download.dir}/${forge.name}"/>
<!-- Fix executable permissions -->
<chmod dir="${forge.dir}" perm="ugo+rx" includes="**.sh"/>
<!-- Copy AT -->
<mkdir dir="${forge.dir}/accesstransformers"/>
<copy todir="${forge.dir}/accesstransformers" file="TConstruct_AT.cfg"/>
<!-- Install forge -->
<exec dir="${forge.dir}" executable="${forge.dir}/fml/python/python_fml" osfamily="windows">
<arg line="install.py --no-assets"/>
</exec>
<exec dir="${forge.dir}" executable="python" osfamily="unix">
<arg line="install.py --no-assets"/>
</exec>
</target>
<target name="copy-src">
<!-- Copy sources -->
<copy todir="${mcpsrc.dir}/minecraft">
<fileset dir="${src.dir}"/>
<filterset>
<filter token="VERSION" value="${project.version.full}" />
</filterset>
</copy>
</target>
<target name="compile" depends="initialize-version,install-deps,setup,copy-src">
<delete dir="${classes.dir}"/>
<mkdir dir="${classes.dir}"/>
<!-- Recompile -->
<exec dir="${mcp.dir}" executable="cmd" osfamily="windows">
<arg line="/c recompile.bat"/>
</exec>
<exec dir="${mcp.dir}" executable="sh" osfamily="unix">
<arg value="recompile.sh"/>
</exec>
<!-- Check for failure -->
<fail message="MCP failed to build">
<condition>
<resourcecontains resource="${mcp.dir}/logs/client_compile.log" substring="error:"/>
</condition>
</fail>
</target>
<target name="reobf" depends="compile">
<!-- Reobfuscate -->
<exec dir="${mcp.dir}" executable="cmd" osfamily="windows">
<arg line="/c reobfuscate_srg.bat"/>
</exec>
<exec dir="${mcp.dir}" executable="sh" osfamily="unix">
<arg value="reobfuscate_srg.sh"/>
</exec>
<!-- Copy classes -->
<mkdir dir="${classes.dir}/tconstruct"/>
<copy todir="${classes.dir}/tconstruct">
<fileset dir="${mcp.dir}/reobf/minecraft/tconstruct"/>
</copy>
<!-- Copy resources -->
<copy todir="${classes.dir}" outputencoding="UTF-8">
<fileset dir="${classes.dir}">
<include name="assets/tinker/lang/*"/>
</fileset>
</copy>
<copy file="${resources.dir}/mcmod.info" todir="${classes.dir}" outputencoding="UTF-8">
<filterset>
<filter token="VERSION" value="${project.version.full}" />
<filter token="MCVERSION" value="${mc.version}" />
</filterset>
</copy>
<copy todir="${classes.dir}">
<fileset dir="${resources.dir}">
<exclude name="mcmod.info"/>
<exclude name="PreloaderManifest.mf"/>
</fileset>
</copy>
<!-- Reset src dir to post-forge-install state -->
<delete dir="${mcpsrc.dir}/minecraft/tconstruct"/>
<delete dir="${mcpsrc.dir}/minecraft/mods/battlegear2"/>
<delete dir="${mcpsrc.dir}/minecraft/sparrow"/>
<delete dir="${mcpsrc.dir}/minecraft/powercrystals"/>
<delete dir="${mcpsrc.dir}/minecraft/ic2"/>
<delete dir="${mcpsrc.dir}/minecraft/codechicken"/>
<delete dir="${mcpsrc.dir}/minecraft/mcp/mobius"/>
</target>
<!-- Package the compiled files -->
<target name="package" depends="reobf">
<delete dir="${jar.dir}"/>
<mkdir dir="${jar.dir}"/>
<jar destfile="${jar.dir}/TConstruct-${mc.version}-${project.version.full}.jar" basedir="${classes.dir}" manifest="${resources.dir}/PreloaderManifest.mf"/>
</target>
<!-- Package API -->
<target name="pack-api" depends="initialize-version">
<mkdir dir="${jar.dir}/api"/>
<zip destfile="${jar.dir}/api/TConstruct-${mc.version}-${project.version.full}-API.jar">
<fileset dir="${src.dir}" includes="tconstruct/library/*"/>
</zip>
</target>
<!-- Default target to run -->
<target name="main" depends="package"/>
</project>