<!--
   Copyright (c) 2010 BSI Business Systems Integration AG.
   All rights reserved. This program and the accompanying materials
   are made available under the terms of the Eclipse Public License v1.0
   which accompanies this distribution, and is available at
   http://www.eclipse.org/legal/epl-v10.html

   Contributors:
       BSI Business Systems Integration AG - initial API and implementation
 -->
<!--
	All jar files getting repacked using pack200. This step is needed to ensure the signature stays the
	same to create pack200 archives later (step200).

	The output folder (${buildDataDir}/step050/output) is used by step060.
-->

<project name="step050.pack200Normalize" default="build">
	<property file="build.properties" />
	<taskdef name="repack" classname="org.eclipse.scout.releng.ant.pack200.Repack" />

	<target name="clean">
		<delete dir="${buildDataDir}/step050" />
	</target>

	<target name="build">
		<available file="${buildDataDir}/step050/output/pack200Repack.created" property="skipStep050" />
		<antcall target="pack200Normalize" />
		<delete dir="${buildDataDir}/step050/input" failonerror="false" />
	</target>

	<target name="pack200Normalize" unless="skipStep050">
		<antcall target="clean" />
		<property name="inputFolder" location="${buildDataDir}/step050/input" />
		<property name="outputFolder" location="${buildDataDir}/step050/output" />
		<mkdir dir="${inputFolder}" />
		<copy todir="${inputFolder}">
			<fileset dir="${buildDataDir}/step030/output">
				<include name="**/*" />
				<exclude name="*.created"/>
			</fileset>
		</copy>
		<fileset id="jars2pack" dir="${inputFolder}">
			<include name="**/*.jar" />
		</fileset>

		<!--
    	<p200ant repack="true" >
			<fileset refid="jars2pack" />
		</p200ant>
		-->
		<repack outputDir="${outputFolder}">
			<fileset refid="jars2pack" />
		</repack>
		<touch file="${outputFolder}/pack200Repack.created" />

	</target>


</project>