<?xml version="1.0" ?>
<!-- writen for Ant 1.5.1 -->
<project name="Packaging AJ for AJDT" default="ajdtjars">

	<description>Takes an AJ build and spits out the jars for AJDT</description>

	<property name="pkg.working.dir" value="../aj-build/ajdttemp" />
	<property name="aspectj.lib.dir" value="../aj-build/dist/tools/lib"/>
	<property name="ajdt.output.dir" value="../aj-build/ajdtoutput"/>
	
	
	
	<target name="ajdtjars" depends="ajdejar,weaverjar,runtimejar" 
 	  description="Run in the build folder, it will take the aj-build/ output and create AJDT jars">
	</target>
	

	<target name="ajdejar" description="Construct ajde.jar and ajdesrc.zip for the ajde plugin using an AJ build">
		
		<!-- copy and unpack an aspectjtools.jar -->
		<delete dir="${pkg.working.dir}"/>
		<copy file="${aspectj.lib.dir}/aspectjtools.jar" tofile="aspectjtools.jar" overwrite="true" />
		<mkdir dir="${pkg.working.dir}" />
		<unzip dest="${pkg.working.dir}" src="aspectjtools.jar" />
		<delete file="aspectjtools.jar"/>
		
		<!-- delete everything that isn't in the org.aspectj package -->
		<delete includeemptydirs="true">
			<fileset dir="${pkg.working.dir}">
				<exclude name="org/aspectj/**/*.*" />
			</fileset>
		</delete>
		
		<!-- delete everything which is going to be in aspectjweaver.jar -->
		<echo message="Removing files not required in ajde.jar since they're contained in aspectjweaver.jar"/>
		<delete includeemptydirs="true">
			<fileset dir="${pkg.working.dir}">
				<include name="org/aspectj/asm/**/*.*" />
				<include name="org/aspectj/weaver/**/*.*" />
				<include name="org/aspectj/apache/bcel/**/*.*" />
				<include name="org/aspectj/bridge/**/*.*" />
				<include name="org/aspectj/util/**/*.*" />
			</fileset>
		</delete>
		
		<!-- delete everything which is going to be in aspectjrt.jar -->
		<echo message="Removing files not required in ajde.jar since they're contained in aspectjrt.jar"/>
		<delete includeemptydirs="true">
			<fileset dir="${pkg.working.dir}">
				<!-- bug 118235: currently the commented out classes appear in both ajde.jar and aspectjrt.jar
				uncomment this if decide it should only live in aspectjrt.jar
				<include name="org/aspectj/internal/lang/annotation/**/*.*" />
				<include name="org/aspectj/internal/lang/reflect/**/*.*" /> -->
				<include name="org/aspectj/runtime/**/*.*" />
				<include name="org/aspectj/lang/**/*.*" />
			</fileset>
		</delete>
	
		<!-- construct the ajde.jar -->
		<zip destfile="ajde.jar">
			<fileset dir="${pkg.working.dir}" />
		</zip>
		<delete dir="${pkg.working.dir}" />

		<!-- build a src zip -->
		
		<unzip dest="${pkg.working.dir}" src="${aspectj.lib.dir}/../../ide/eclipse/org.aspectj.ajde.source/src/jdtcore-for-aspectj-src.zip"/>
		<unzip dest="${pkg.working.dir}" src="${aspectj.lib.dir}/../../ide/eclipse/org.aspectj.ajde.source/src/aspectjsrc.zip"/>
		
		<!-- delete everything that isn't in the org.aspectj package -->
		<delete includeemptydirs="true">
           <fileset dir="${pkg.working.dir}">
			  <exclude name="org/aspectj/**/*.*"/>
           	</fileset>
        </delete>
		
		<!-- delete everything which is going to be in aspectjweaversrc.zip -->
		<echo message="Removing files not required in ajdesrc.zip since they're contained in aspectjweaversrc.zip"/>
		<delete includeemptydirs="true">
			<fileset dir="${pkg.working.dir}">
				<include name="org/aspectj/asm/**/*.*" />
				<include name="org/aspectj/weaver/**/*.*" />
				<include name="org/aspectj/apache/bcel/**/*.*" />
				<include name="org/aspectj/bridge/**/*.*" />
				<include name="org/aspectj/util/**/*.*" />
			</fileset>
		</delete>
		
		<!-- delete everything which is going to be in aspectjrtsrc.zip -->
		<echo message="Removing files not required in ajdesrc.zip since they're contained in aspectjrtsrc.zip"/>
		<delete includeemptydirs="true">
			<fileset dir="${pkg.working.dir}">
				<!-- bug 118235: currently the commented out classes appear in both ajde.jar and aspectjrt.jar
				uncomment this if decide it should only live in aspectjrt.jar
				<include name="org/aspectj/internal/lang/annotation/**/*.*" />
				<include name="org/aspectj/internal/lang/reflect/**/*.*" /> -->
				<include name="org/aspectj/runtime/**/*.*" />
				<include name="org/aspectj/lang/**/*.*" />
			</fileset>
		</delete>
		
		<zip destfile="ajdesrc.zip">
		  <fileset dir="${pkg.working.dir}"/>
		</zip>
		<delete dir="${pkg.working.dir}" />
		<copy file="ajde.jar" todir="${ajdt.output.dir}"/>
		<copy file="ajdesrc.zip" todir="${ajdt.output.dir}"/>
		<delete file="ajde.jar"/>
		<delete file="ajdesrc.zip"/>
	</target>
	
	<target name="weaverjar" description="Construct aspectjweaver.jar and aspectjweaversrc.zip for the aspectjweaver plugin using an AJ build">
		<!-- copy and unpack an aspectjweaver.jar into a local build directory -->
		<delete dir="${pkg.working.dir}"/>
		<copy file="${aspectj.lib.dir}/aspectjweaver.jar" tofile="aspectjweaver.jar" overwrite="true" />
		<mkdir dir="${pkg.working.dir}" />
		<unzip dest="${pkg.working.dir}" src="aspectjweaver.jar" />
		<delete file="aspectjweaver.jar"/>
		
		<!-- delete everything which shouldn't be included in the aspectjweaver.jar -->
		<echo message="Removing files not required in aspectjweaver.jar"/>
		<delete includeemptydirs="true">
			<fileset dir="${pkg.working.dir}">
				<exclude name="META-INF/*.*" />
				<exclude name="org/aspectj/apache/bcel/**/*.*" />
				<exclude name="org/aspectj/asm/**/*.*" />
				<exclude name="org/aspectj/bridge/**/*.*" />
				<exclude name="org/aspectj/util/**/*.*" />
				<exclude name="org/aspectj/weaver/**/*.*" />
				<exclude name="org/aspectj/org/objectweb/asm/**/*.*"/>
			</fileset>
		</delete>
	
		<!-- construct the aspectjweaver.jar directly in the org.aspectj.weaver plugin -->
		<zip destfile="aspectjweaver.jar">
			<fileset dir="${pkg.working.dir}" />
		</zip>
		<delete dir="${pkg.working.dir}" />

		<!-- build a src zip -->
		
		<unzip dest="${pkg.working.dir}" src="${aspectj.lib.dir}/../../ide/eclipse/org.aspectj.ajde.source/src/jdtcore-for-aspectj-src.zip"/>
		<unzip dest="${pkg.working.dir}" src="${aspectj.lib.dir}/../../ide/eclipse/org.aspectj.ajde.source/src/aspectjsrc.zip"/>
		<!-- delete everything that isn't in the org.aspectj package -->
		<delete includeemptydirs="true">
           <fileset dir="${pkg.working.dir}">
			  <exclude name="org/aspectj/**/*.*"/>
           	</fileset>
        </delete>
		<!-- delete everything which shouldn't be included in the aspectjweaversrc.zip -->
		<echo message="Removing files not required in aspectjweaversrc.zip"/>
		<delete includeemptydirs="true">
			<fileset dir="${pkg.working.dir}">
				<exclude name="org/aspectj/apache/bcel/**/*.*" />
				<exclude name="org/aspectj/asm/**/*.*" />
				<exclude name="org/aspectj/bridge/**/*.*" />
				<exclude name="org/aspectj/util/**/*.*" />
				<exclude name="org/aspectj/weaver/**/*.*" />
			</fileset>
		</delete>
		
		<zip destfile="aspectjweaversrc.zip">
		  <fileset dir="${pkg.working.dir}"/>
		</zip>
		<delete dir="${pkg.working.dir}" />	

		<copy file="aspectjweaver.jar" todir="${ajdt.output.dir}"/>
		<copy file="aspectjweaversrc.zip" todir="${ajdt.output.dir}"/>
		<delete file="aspectjweaver.jar"/>
		<delete file="aspectjweaversrc.zip"/>
	</target>

	<target name="runtimejar" description="Copy the aspectjrt.jar from an 
		AJ build into the runtime plugin containing 
		the src">
		<copy file="${aspectj.lib.dir}/aspectjrt.jar" 
			tofile="aspectjrt.jar" 
			overwrite="true" />
	
		<delete dir="${pkg.working.dir}" />
		<!-- build a src zip -->
		<unzip dest="${pkg.working.dir}" src="${aspectj.lib.dir}/../../ide/eclipse/org.aspectj.ajde.source/src/jdtcore-for-aspectj-src.zip"/>
		<unzip dest="${pkg.working.dir}" src="${aspectj.lib.dir}/../../ide/eclipse/org.aspectj.ajde.source/src/aspectjsrc.zip"/>
		<!-- delete everything which shouldn't be included in the aspectjrtsrc.zip -->
		<echo message="Removing files not required in aspectjrtsrc.zip"/>
		<delete includeemptydirs="true">
			<fileset dir="${pkg.working.dir}">
				<exclude name="org/aspectj/internal/lang/annotation/**/*.*" />
				<exclude name="org/aspectj/internal/lang/reflect/**/*.*" />
				<exclude name="org/aspectj/runtime/**/*.*" />
				<exclude name="org/aspectj/lang/**/*.*" />
			</fileset>
		</delete>
		
		<zip destfile="aspectjrtsrc.zip">
		  <fileset dir="${pkg.working.dir}"/>
		</zip>
		<delete dir="${pkg.working.dir}" />	

		<copy file="aspectjrt.jar" todir="${ajdt.output.dir}"/>
		<copy file="aspectjrtsrc.zip" todir="${ajdt.output.dir}"/>
		<delete file="aspectjrt.jar"/>
		<delete file="aspectjrtsrc.zip"/>
	</target>

	

	
	<!-- VERSION-STRING -->
	<!-- these property values will be overridden when called from the master build script -->
	<property name="ajde.version" value="9.9.9" />


	<property name="build.dir" value="build" />

	<property file="aspectjlib.properties" />

	<target name="init">
		<mkdir dir="${build.dir}" />
		<mkdir dir="dist" />
	</target>

	<target name="clean" depends="init">
		<delete dir="${build.dir}" />
		<delete dir="dist" />
	</target>

	<!--target name="packaged-plugin" depends="init" description="Create the plugin jar file from the assembled components in the build dir">
		<copy todir="${build.dir}" includeemptydirs="false">
			<fileset dir=".">
				<exclude name="*src.zip" />
				<exclude name="build.*" />
				<exclude name=".*" />
				<exclude name="*/*" />
				<exclude name="META-INF/MANIFEST.MF" />
				<exclude name="aspectjlib.properties" />
				<depth max="0" />
			</fileset>
		</copy>
		 <copy file="META-INF/MANIFEST.MF" tofile="${build.dir}/META-INF/MANIFEST.MF">
		 	<filterset begintoken="9" endtoken="9">
		 		<filter token="2.2.2" value="${ajde.version}"/>
		 	</filterset>
		 </copy>
		<copy todir="${build.dir}/doc">
			<fileset dir="doc" />
		</copy>
		<copy todir="${build.dir}/icons">
			<fileset dir="icons" />
		</copy>
		<zip destfile="dist/org.aspectj.ajde_${ajde.version}.jar">
			<fileset dir="build" />
		</zip>
	</target-->

	<target name="copy doc" description="This copies the aspectj docs into the org.eclipse.ajde 
		plugin. By default, it only copies over any changes from the current version">
		<copy todir="doc" failonerror="false">
			<fileset dir="${aspectj.doc.dir}">
				<exclude name="examples" />
			</fileset>
		</copy>
	</target>
	
	
</project>