<!--****************************************************************************
 * Configuration tool plugin build template
 * This ant pluging-build-template.xml will contain the common targets
 * to build a eclipse plugin
 ****************************************************************************-->
 
<project name="${pluginName}" default="all">
 	<property file="../common.properties"/>
  <property file="../${common.buildproperties}"/>
  <property file="build.properties"/>
  <property file="plugin.properties"/>
  <fileset id="plugin-resources" dir="." includes="${bin.includes}"/>


 <path id="project.class.path">
    <!-- add lib jars to classpath -->
    <fileset dir="${common.plugin-lib}" casesensitive="yes">
      <include name="**/*.jar"/>
    </fileset>
    <!-- add also the generated Configuration Tool jars to classpath -->
    <fileset dir="${common.plugin-dist}" casesensitive="yes">
      <include name="**/*.jar"/>
    </fileset>
  </path>

  <!-- Gets the svnversion with the svnversion command and stores the output to svnrevision. 
       The target is executed only if the svnrevision has not been set. 
       -->
  <target name="get-svnversion" unless="common.svnversion">
    <exec dir="." executable="svnversion" outputproperty="common.svnversion" />
    <echo message="svnversion from svn command = ${common.svnversion}" />
  </target>
  <!-- Sets the buildate property if it has not been set by the common property file -->
  <target name="get-builddate" unless="common.builddate">
    <tstamp prefix="build"/>
    <property name="common.builddate" value="${build.DSTAMP}"/>
  </target>

    <!-- generate a build property file -->
  <target name="update-properties" depends="get-svnversion">
    <tstamp prefix="build"/>
    <echo file="${common.buildproperties}">
    common.svnversion     =${svnrevision}
    </echo>
  <!-- replace the possible : characters because the do not work in filenames-->
    <replace file="${common.buildproperties}" token=":"/>
    <property file="${common.buildproperties}"/>
  </target>


  <!-- All target will clean and then commit all the build steps-->
	<target name="all" depends="clean, build"/> 
	
	<!-- Build target will commit all the build steps and can be used for incremental 
	building, because ant recognized changed files -->
	<target name="build" depends="init, resource, compile, jar"/> 
	
  <target name="clean">
    <delete dir="${common.plugin-target}" quiet="true" />
  </target>

  <target name="info">
    <echoproperties/>
  </target>    

  <target name="init" depends="get-svnversion,get-builddate">
    <mkdir dir="${common.plugin-target}/bin" />
    <mkdir dir="${common.plugin-dist}" />
  </target>
    
  <target name="resource" depends="init">
    <copy todir="${common.plugin-target}/bin/">
      <fileset refid="plugin-resources" /> 
    </copy>
    <manifest file="${common.plugin-target}/bin/META-INF/MANIFEST.MF" mode="update">
    	<attribute name="Bundle-FOO" value="${common.plugin-version}"/>
    	<attribute name="Bundle-Version" value="${common.plugin-version}"/>
    	<attribute name="Bundle-Date" value="${common.builddate}"/>
    	<attribute name="Bundle-RepositoryVersion" value="${common.svnversion}"/>
    </manifest>
    
  </target>

  <target name="compile" depends="init"
    description="compile the source">
    <!-- Compile the java code from ${src} into ${build} -->
    <javac srcdir="${source..}" destdir="${common.plugin-target}/bin">
      <classpath refid="project.class.path"/>
    </javac>
  </target>

  <target name="jar" depends="compile,resource">
  	<jar jarfile="${common.plugin-dist}/${pluginName}_${common.plugin-version}.jar" 
         basedir="${common.plugin-target}/bin"
         manifest="${common.plugin-target}/bin/META-INF/MANIFEST.MF">
    </jar>
  </target>
    
</project>