<!--
 Copyright (c) 2010 Stephan Herrmann and others.
This program and the accompanying materials
are made available under the terms of the Eclipse Public License 2.0
which accompanies this distribution, and is available at
https://www.eclipse.org/legal/epl-2.0/

SPDX-License-Identifier: EPL-2.0
 Contributors:
     Stephan Herrmann - initial API and implementation
-->
<project default="main">
	
	<!--
		Expected args:
		
		component.short:what's building? Defined by where build.properties and customTargets.xml are found
		
		OTScriptDir:	where most build scripts are found (build)
		
		build.root.dir:	(testrun/build-root)
		bootLocation:	from where eclipse is running (testrun/build-root/eclipse)
		baseLocation:	the target eclipse pde will build against (testrun/test-root/eclipse)
		run.eclipseScriptDir: relative location of pde.build's scripts
		buildDirectory:	where sources shall be built (testrun/build-root/src)
			
		configs:		what to build
		baseos, basews, basearch: what platform we're on
		
		fetchCacheLocation
		
	-->
	<loadproperties srcfile="${OTScriptDir}/buildVersions.properties" />
	<loadproperties srcfile="${builder}/build.properties" />

    <target name="main">
            <!--Default values for required properties-->
            <property name="buildDirectory" value="${build.root.dir}/src" />
            <echo message="BUILDDIR: ${buildDirectory}" />
            <delete failonerror="true" dir="${buildDirectory}" />
            <antcall target="create.label.properties" />
            <property file="${buildDirectory}/label.properties" />

            <!--fetch the HEAD stream of all projects if build type specified as N-->
            <condition property="fetchTag" value="HEAD">
                    <equals arg1="${buildType}" arg2="N" />
            </condition>
            <property name="fetchTag" value="" />

            <!--set the compiler and compiler arguments-->
            <!--the default compiler is set to the one used by eclipse rel. eng. -->
    		<property name="fetchCacheLocation" value="${fetchCacheLocation}" />
            <loadproperties srcfile="${OTScriptDir}/compiler.${component.short}.properties" />
            <echo message="javacSource=${javacSource}" />

            <!--this property required as of Eclipse 3.0 stream builds > 20031126 -->
            <property name="buildingOSGi" value="true" />

   			<!--let ecotj be generated into a "safe" location: -->
    		<property name="postingDirectory" value="${build.root.dir}/../ecj" />

            <!--run the pde-build for the specified ${builder} (OT-Compiler or OTDT-Build) -->
            <ant antfile="build.xml" dir="${bootLocation}/${run.eclipseScriptDir}" />

    </target>
	

    <target name="create.label.properties" unless="label.properties.exists">
			<mkdir dir="${buildDirectory}" />
			<tstamp/>
			<property name="date" value="${DSTAMP}" />
			<property name="time" value="${TSTAMP}" />
			<property name="timestamp" value="${date}${time}" />
			<property name="buildId" value="${buildType}${date}" />

			<!--this naming convention used by php scripts on download server-->
			<property name="buildLabel" value="${buildType}-${buildId}-${timestamp}" />

			<!--store the build label information in a file-->
			<echo file="${buildDirectory}/label.properties" append="true" >
			buildType=${buildType}
			</echo>
			<echo file="${buildDirectory}/label.properties" append="true" >
			buildId=${buildId}
			</echo>
			<echo file="${buildDirectory}/label.properties" append="true" >
			timestamp=${timestamp}
			</echo>
			<echo file="${buildDirectory}/label.properties" append="true" >
			buildLabel=${buildLabel}
			</echo>

			<available file="${buildDirectory}/label.properties" property="label.properties.exists" />
		</target>

</project>
