<?xml version="1.0" encoding="UTF-8"?>
<!--
	Copyright (c) IBM Corporation and others 2009, 2011 This page is made available under license. For full details see the LEGAL in the documentation book 		that contains this page.

	All Platform Debug contexts, those for org.eclipse.debug.ui, are located in this file
	All contexts are grouped by their relation, with all relations grouped alphabetically.
	
	General build file for running the API Ant tasks from the command line.
	
	The tasks that can be run and their task names can be found in the api-tasks.properties file.
	The supported tasks are:
	- 'apiuse' from org.eclipse.pde.api.tools.internal.tasks.ApiUseTask
	- 'apiuse_reportconversion' from org.eclipse.pde.api.tools.internal.tasks.ApiUseReportConversionTask
	- 'apifreeze' from org.eclipse.pde.api.tools.internal.tasks.APIFreezeTask
	- 'apifreeze_reportcoversion' from org.eclipse.pde.api.tools.internal.tasks.APIFreezeReportConversionTask
	- 'apianalysis from org.eclipse.pde.api.tools.internal.tasks.APIToolsAnalysisTask
	- 'apianalysis_reportconversion' from org.eclipse.pde.api.tools.internal.tasks.AnalysisReportConversionTask
	- 'apimigration' from org.eclipse.pde.api.tools.internal.tasks.ApiMigrationTask
	- 'apimigration_reportconversion' org.eclipse.pde.api.tools.internal.tasks.ApiMigrationReportConversionTask
	- 'apifile_generation' from org.eclipse.pde.api.tools.internal.tasks.ApiFileGenerationTask
	- 'comparetask' from org.eclipse.pde.api.tools.internal.tasks.CompareTask
	- 'apiconsumeruse_reportconversion' org.eclipse.pde.api.tools.internal.tasks.ApiConsumerUseReportConversionTask
	- 'apiusescanproblems' org.eclipse.pde.api.tools.internal.tasks.MissingRefProblemsTask
	- 'apiusescanproblem_reportconversion' org.eclipse.pde.api.tools.internal.tasks.MissingRefProblemsReportConversionTask
-->
<project name="apitask" basedir="." default="run">

	<!--
	  The base install directory of a bare bones Eclipse SDK install, used to load dependent jars on the taskdef classpath
	-->
	<property name="eclipse.install.dir" value=""/>
	<!--
	  The directory to extract the apitooling-ant.jar jar file to, so it could be loaded on the taskdef classpath.
	  
	  The apitooling-ant.jar file is located in the org.eclipse.pde.api.tools.jar file found in your base Eclipse
	  install specified above (in the eclipse.install.dir property)
	-->
	<property name="eclipse.lib.dir" value=""/>
	<!--
	  Ant properties file that defines the API tools ant task names
	-->
	<property name="task.props" value=""/>
	
	<!--
	  Initializes the API use task definition
	-->
	<target name="init" depends="extract-apitoolingjar">
		<!--
		  We need to include all the dependencies for the api tooling jar and bundle on the classpath.
		  We do it here to avoid changes to the system-wide ant classpath variable. 
		  
		  This taskdef greedily inlcudes all jars from the eclipse install, in case there are unknown dependencies.
		-->
		<taskdef file="${task.props}">
			<classpath>
				<fileset dir="${eclipse.install.dir}">
					<include name="*.jar"/>
				</fileset>
				<fileset dir="${eclipse.lib.dir}">
					<include name="*.jar"/>
				</fileset>
			</classpath>
		</taskdef>
	</target>

	<!--
	  Task to extract the apitooling-ant.jar file from org.eclipse.pde.api.tools.jar file
	-->
	<target name="extract-apitoolingjar">
		<unjar overwrite="true" dest="${eclipse.lib.dir}">
			<fileset dir="${eclipse.install.dir}">
				<include name="org.eclipse.pde.api.tools_*.jar"/>
			</fileset>
			<patternset>
				<include name="**/*.jar"/>
			</patternset>
		</unjar>
		<move file="${eclipse.lib.dir}/lib/apitooling-ant.jar" overwrite="true" todir="${eclipse.lib.dir}"/>
		<delete dir="${eclipse.lib.dir}/lib/" includeemptydirs="true"/>
	</target>

	<!--
	  Main task
	-->
	<target name="run" depends="init">
	    	
    </target>
</project>

