<project name="allElements Delegator">
	<property name="defaultAssemblyEnabled" value="true" />
	
 	<!-- ===================================================================== 	-->
 	<!-- Run a given ${target} on all elements being built						-->
 	<!-- By default ${topLevelElementType} and ${topLevelElementId} should be	--> 
 	<!-- defined in the builder's build.properties file.  You can customize by	--> 
 	<!-- setting the type/id values directly here.								-->
	<!-- You can add additional calls to ${genericTargets} to build more top 	-->
	<!-- level elements.									   					-->
	<!--																		-->
	<!-- The top level must exist in the ${buildDirectory}, ${baseLocation} or	-->
	<!-- ${pluginPath} locations.												-->
 	<!-- ===================================================================== 	-->
 	<target name="allElementsDelegator">
 		<!-- orig:
 		<ant antfile="${genericTargets}" target="${target}">
	 		<property name="type" value="${topLevelElementType}" />
	 		<property name="id" value="${topLevelElementId}" />
 		</ant>
 		-->
 		<!-- custom: -->
		<!-- org.eclipse.objectteams.otdt.core.patch is included from otdt -->

		<ant antfile="${genericTargets}" target="${target}" >
			<property name="type" value="feature" />
			<property name="id" value="org.eclipse.objectteams.otequinox" />
		</ant>

		<ant antfile="${genericTargets}" target="${target}" >
			<property name="type" value="feature" />
			<property name="id" value="org.eclipse.objectteams.otequinox.otre" />
		</ant>

 		<ant antfile="${genericTargets}" target="${target}" >
			<property name="type" value="feature" />
			<property name="id" value="org.eclipse.objectteams.otequinox.turbo" />
		</ant>

		<ant antfile="${genericTargets}" target="${target}" >
			<property name="type" value="feature" />
			<property name="id" value="org.eclipse.objectteams.otdt" />
		</ant>

		<ant antfile="${genericTargets}" target="${target}" >
			<property name="type" value="feature" />
			<property name="id" value="org.eclipse.objectteams.otdt.source.feature" />
		</ant>
		
	  	<condition property="really.run.tests">
			<istrue value="${do.run.tests}"/> 
		</condition>
        
		<antcall target="testElements" />
 		<!-- :motsuc -->
 	</target>
 
    <target name="testElements">
        <ant antfile="${genericTargets}" target="${target}" >
            <property name="type" value="feature" />
            <property name="id" value="org.eclipse.objectteams.otdt-tests" />
        </ant>
    </target>
 
	<!-- ====================================================================== -->
	<!--  The default assemble target, this will be called to assemble each		-->	 
	<!--  config if a custom assemble target is not defined.					-->
	<!-- The following properties will be defined:								-->
	<!-- 		config : The configuration being assembled eg "win32.win32.x86"	-->
	<!-- 		element: The element being assembled eg "org.eclipse.sdk"		-->
	<!-- 		assembleScriptName: The assemble script to be called			-->
	<!-- ====================================================================== -->
	<target name="defaultAssemble">
		<ant antfile="${assembleScriptName}" dir="${buildDirectory}" />
	</target>	
	
 	<!-- =====================================================================	-->
 	<!-- Custom targets to assemble the built elements for particular 			-->
 	<!-- configurations.  These generally call the generated assemble scripts 	-->
 	<!-- (named in  ${assembleScriptName}) but may also add pre and post		--> 
 	<!-- processing      														-->
 	<!-- Add one target for each root element and each configuration for which	--> 
 	<!-- custom processing is desired. Replace element.id with the id of the 	-->
 	<!-- top level element being built.  A property with a matching name must 	-->
 	<!-- be defined for this custom target to be called instead of the 			-->
 	<!-- defaultAssemble target above.											-->
	<!--	Example:  name="assemble.org.eclipse.sdk"							-->
	<!--	Example:  name="assemble.org.eclipse.sdk.win32.win32.x86"			-->
 	<!-- ====================================================================== -->

	<!-- org.eclipse.objectteams.otdt.core.patch is included from otdt -->

	<!-- different features are gathered into two different locations:
		OTDT	-> ${otdtUpdatesDir}
		tests	-> ${testsUpdatesDirBase}/otdt 
	-->
	<!-- set output repository for otequinox.feature: -->
	<property name="assemble.org.eclipse.objectteams.otequinox.p2" value="true" />
 	<target   name="assemble.org.eclipse.objectteams.otequinox.p2">
        <ant antfile="${assembleScriptName}" dir="${buildDirectory}">
			<property name="p2.build.repo" value="file://${otdtUpdatesDir}"/>
		</ant>
 	</target>

	<!-- set output repository for otequinox.otre.feature: -->
	<property name="assemble.org.eclipse.objectteams.otequinox.otre.p2" value="true" />
 	<target   name="assemble.org.eclipse.objectteams.otequinox.otre.p2">
        <ant antfile="${assembleScriptName}" dir="${buildDirectory}">
			<property name="p2.build.repo" value="file://${otdtUpdatesDir}"/>
		</ant>
 	</target>

	<!-- set output repository for otequinox.turbo.feature: -->
	<property name="assemble.org.eclipse.objectteams.otequinox.turbo.p2" value="true" />
 	<target   name="assemble.org.eclipse.objectteams.otequinox.turbo.p2">
        <ant antfile="${assembleScriptName}" dir="${buildDirectory}">
			<property name="p2.build.repo" value="file://${otdtUpdatesDir}"/>
		</ant>
 	</target>
	
	<!-- set output repository for otdt.feature: -->
	<property name="assemble.org.eclipse.objectteams.otdt.p2" value="true" />
    <target   name="assemble.org.eclipse.objectteams.otdt.p2">
        <ant antfile="${assembleScriptName}" dir="${buildDirectory}">
			<property name="p2.build.repo" value="file://${otdtUpdatesDir}"/>
		</ant>
	</target>
	
	<!-- set output repository for otdt.source.feature: -->
	<property name="assemble.org.eclipse.objectteams.otdt.source.feature.p2" value="true" />
    <target   name="assemble.org.eclipse.objectteams.otdt.source.feature.p2">
        <ant antfile="${assembleScriptName}" dir="${buildDirectory}">
			<property name="p2.build.repo" value="file://${otdtUpdatesDir}"/>
		</ant>
	</target>

	<!-- set output repository for otdt-tests.feature: -->
	<property name="assemble.org.eclipse.objectteams.otdt-tests.p2" value="true" />
	<target   name="assemble.org.eclipse.objectteams.otdt-tests.p2">
        <ant antfile="${assembleScriptName}" dir="${buildDirectory}">
			<property name="p2.build.repo" value="file://${testsUpdatesDirBase}/otdt"/>
		</ant>
	</target>
	
	<!-- Regarding the config "linux.gtk.*" see comment in build.properties -->
	<!-- are more targets called and create unnecessary work? -->
</project>
