build_liteloader.xml 5.71 KB
<?xml version="1.0" encoding="UTF-8" ?>
<project name="liteloader" basedir="." default="rebuild">

	<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
	
    <!-- Versions !!IMPORTANT -->
	<property name="version" value="1.6.3" />
    <property name="mcversion" value="1.6.3" />
    <property name="author" value="Mumfrey" />
	
    <!-- Project definitions and dependencies -->
	<property name="upstream" value="" />
	<property name="project" value="LiteLoader" />
	<property name="md5set" value="mcp" />
    <property name="outmd5set" value="liteloader" />
	
	<property name="mcp.dir" location="../../.." />
    <property name="build" location="${mcp.dir}/build" />
    <property name="eclipse" location="${mcp.dir}/eclipse" />
    <property name="src" location="${mcp.dir}/src/minecraft" />
    <property name="temp" location="${mcp.dir}/temp" />
    <property name="md5.dir" location="${mcp.dir}/md5" />
    <property name="mc.src" location="${mcp.dir}/src/mcp" />
    <property name="libs" location="${mcp.dir}/lib" />

	<property name="dist.dir" location="${build}/dist" />
	<property name="stage.dir" location="${build}/stage/${ant.project.name}/${version}" />
    <property name="filetype" value="jar" />

	<property name="python" location="${mcp.dir}/runtime/bin/python/python_mcp.exe" />

	<!-- Main target -->
    <target name="rebuild" description="Perform all tasks for a build" depends="init, recompile, reobfuscate, savemd5, stage, zip" />

	<target name="clean">
        <delete dir="${src}" />
        <delete dir="${mcp.dir}/reobf" />
    </target>
	
	<target name="contributesource" description="Contribute an upstream project source code to the source path">
		<echo level="info" message="Contributing project ${lib}" />
        <copy todir="${src}" verbose="false" overwrite="true" failonerror="false">
            <fileset dir="${eclipse}/${lib}/java" />
            <fileset dir="${eclipse}/${lib}/src" />
        </copy>
	</target>
		
    <target name="contributeresources" description="Contribute resources to the staging path">
        <echo level="info" message="Contributing project resources for ${lib}" />
        <copy todir="${stage.dir}" verbose="false" failonerror="false">
            <fileset dir="${eclipse}/${lib}/res" excludes=".svn/**">
                <exclude name="**/Thumbs.db" />            	
            </fileset>
        </copy>
    </target>
    
    <target name="preparemd5" description="Copy patched MD5 to the temp directory" depends="clean">
        <echo level="info" message="Prepare exclusion MD5s, using exclusion set &quot;${md5set}&quot;" />

    	<copy tofile="${temp}/client.md5" file="${md5.dir}/client_${md5set}.md5" failonerror="true" verbose="true" overwrite="true" />
    </target>
        
	<target name="prepare" description="Prepare source for MCP" depends="preparemd5">
        <echo level="info" message="Prepare sources for compile" />

        <copy todir="${libs}" verbose="true" overwrite="true">
            <fileset dir="${eclipse}/LiteLoader/lib" />
        </copy>
		
    	<copy todir="${src}" verbose="false" overwrite="true">
			<fileset dir="${mc.src}" />
		</copy>
		
		<foreach list="${upstream}" param="lib" target="contributesource" />

		<antcall target="contributesource">
			<param name="lib" value="${project}" />
		</antcall>
	</target>

	<target name="init" description="Initialize build environment" depends="prepare">
		<echo level="info" message="Cleaning old stage and dist, MCP reobf directories" />

		<delete dir="${stage.dir}" />

		<echo level="info" message="Creating stage and dist dirs" />
		<mkdir dir="${stage.dir}" />
		<mkdir dir="${dist.dir}" />
		<mkdir dir="${md5.dir}" />
	</target>

	<target name="recompile" description="MCP recompile">
        <echo level="info" message="Compiling projects" />

		<exec executable="${python}" dir="${mcp.dir}">
			<arg value="runtime/recompile.py" />
			<arg value="--client" />
			<arg value="%*" />
		</exec>
	</target>

	<target name="reobfuscate" description="MCP reobfuscate">
        <echo level="info" message="Obfuscating classes" />

		<exec executable="${python}" dir="${mcp.dir}">
			<arg value="runtime/reobfuscate.py" />
            <arg value="--client" />
			<arg value="%*" />
		</exec>
	</target>
	
    <target name="savemd5" description="Put post-obfuscation MD5 to stored md5 set" if="outmd5set">
        <echo level="info" message="Storing obfuscated MD5s" />

		<copy file="${temp}/client_reobf.md5" tofile="${md5.dir}/client_${outmd5set}.md5" overwrite="true" verbose="true" />
	</target>

	<target name="stage" description="Stage resources into staging directory">
        <echo level="info" message="Staging resources" />

		<copy todir="${stage.dir}">
			<fileset dir="${mcp.dir}/reobf/minecraft" excludes=".svn/**, *.txt" />
		</copy>

        <foreach list="${upstream}" param="lib" target="contributeresources" />

        <antcall target="contributeresources">
            <param name="lib" value="${project}" />
        </antcall>
		
	</target>

	<target name="zip" description="Build the output zip file">
        <echo level="info" message="Building final output" />

		<mkdir dir="${dist.dir}" />
		<jar destfile="${dist.dir}/${ant.project.name}-${mcversion}.${filetype}" duplicate="preserve" index="true" manifestencoding="UTF-8">
			<manifest>
				<attribute name="Built-By" value="MCP (http://mcp.ocean-labs.de)" />
				<attribute name="Implementation-Vendor" value="${author}" />
				<attribute name="Implementation-Title" value="${ant.project.name}" />
				<attribute name="Implementation-Version" value="${version}" />
			</manifest>
			<fileset dir="${stage.dir}" />
		</jar>
	</target>

</project>