<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- Package Description information to be picked up by www.eclipse.org/packages -->
  <!-- PackageName is the title of your package 
       maintainer is the project or persons that are maintaining the package
       iconurl is the fully qualified URL to the icon you wish to use on the site (48x48)
       bugzillaComponentID is used to gather bugzilla information about your package.  This should be given to you after provisioning of the package is finished
       testPlan is the fully qualified URL to the test plan for this package
   -->
  <packageMetaData
   packageName="Eclipse IDE for C/C++ Developers"
   maintainer="Eclipse Packaging Project"
   iconurl="http://www.eclipse.org/downloads/images/c.jpg"
   bugzillaComponentId="cpp-package"
   testPlan="http://www.eclipse.org/epp/testplan.php" >
    <!-- Description is wrapped in CDATA tags to allow you to insert HTML code if necessary -->
     <description><![CDATA[An IDE for C/C++ developers with Mylyn integration.]]></description>
    <!-- packageTesters is a list of the people that are testing the package -->
     <packageTesters>
      <tester>Doug Schaefer</tester>
      <tester>Markus Knauer</tester>
    </packageTesters>
  </packageMetaData>
  <MoreInfo>
  <NewAndNoteworthy
    url="http://wiki.eclipse.org/CDT/User/NewIn50"
    project="Eclipse CDT" />
  <NewAndNoteworthy
    url="http://download.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/eclipse-news-part1.html"
    project="Eclipse Platform" />
  <NewAndNoteworthy
    url="http://www.eclipse.org/mylyn/new/"
    project="Eclipse Mylyn" />
  </MoreInfo>
  

	<!-- version, the RCP version to build. This is used to determine the file 
    name of the root file archives -->
	<rcp version="M20090211-1700" />

	<!-- name, the name of the product, used in naming the created files. -->
	<product
    name="eclipse-cpp-ganymede-SR2-RC3" 
	  eclipseProductId="org.eclipse.platform.ide"
	  initialPerspectiveId="org.eclipse.cdt.ui.CPerspective" />

	<!-- url, pointing to an update site. -->
  <updateSites>
    <!-- local mirrors -->
    <updateSite url="file:///home/data/httpd/download.eclipse.org/eclipse/updates/3.4.x/" />
    <updateSite url="file:///home/data/httpd/download.eclipse.org/eclipse/updates/3.4/" />
    <updateSite url="file:///home/data/httpd/download.eclipse.org/eclipse/updates/3.4milestones/" />
    <updateSite url="file:///home/data/httpd/download.eclipse.org/releases/ganymede/staging/" />
    <updateSite url="file:///home/data/httpd/download.eclipse.org/technology/epp/updates/1.0milestones/" />

    <!-- eclipse.org update sites -->
    <!-- 
    <updateSite url="file:///home/mknauer/mirror/eclipse/updates/3.4milestones/" />
      <updateSite url="http://download.eclipse.org/eclipse/updates/3.4/" />
      <updateSite url="http://download.eclipse.org/eclipse/updates/3.4milestones/" />
      <updateSite url="http://download.eclipse.org/releases/ganymede/" />
      <updateSite url="http://download.eclipse.org/releases/ganymede/staging/" />
    -->
  </updateSites>

	<!-- id, a feature id. -->
	<!-- version, the feature version. -->
	<requiredFeatures>
    <feature
      id="org.eclipse.platform"
      version="latest">
    </feature>

    <feature
      id="org.eclipse.cdt.platform"
      version="latest">
    </feature>
    <feature
      id="org.eclipse.cdt"
      version="latest">
    </feature>

    <feature
      id="org.eclipse.cvs"
      version="latest">
    </feature>

    <feature
      id="org.eclipse.mylyn_feature"
      version="latest">
    </feature>
    <feature
      id="org.eclipse.mylyn.context_feature"
      version="latest">
    </feature>
    <feature
      id="org.eclipse.mylyn.team_feature"
      version="latest">
    </feature>
    <feature
      id="org.eclipse.mylyn.ide_feature"
      version="latest">
    </feature>
    <feature
      id="org.eclipse.mylyn.bugzilla_feature"
      version="latest">
    </feature>
    <feature
      id="org.eclipse.cdt.mylyn"
      version="latest">
    </feature>

    <feature
      id="org.eclipse.epp.usagedata.feature"
      version="latest">
    </feature>

	</requiredFeatures>

	<!-- folder, pointing to a folder containing the zipped root files for each of 
		the target platforms. -->
  <rootFileFolder folder="/home/data/httpd/download.eclipse.org/eclipse/downloads/drops/M20090211-1700" />

  <!-- relativeFolder, names the subfolder of the base folder where the update site will be created. 
    This is configurable so that working areas, especially root files, are reusable. -->
  <extensionSite
    relativeFolder="extension_site">
  </extensionSite>

  <!-- Create archives for win32, linux, macosx platforms, antZip is default format -->
	<targetPlatforms>
		<platform os="win32" ws="win32" arch="x86">
			<archiveFormat format="antZip"></archiveFormat>
			<eclipseIniFileContent path="/eclipse/">-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256M
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx256m</eclipseIniFileContent>
		</platform>
		<platform os="linux" ws="gtk" arch="x86">
			<archiveFormat format="tar" />
			<eclipseIniFileContent path="/eclipse/">-showsplash
org.eclipse.platform
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx256m
-XX:MaxPermSize=256m</eclipseIniFileContent>
		</platform>
    <platform os="linux" ws="gtk" arch="x86_64">
      <archiveFormat format="tar" />
      <eclipseIniFileContent path="/eclipse/">-showsplash
org.eclipse.platform
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx256m
-XX:MaxPermSize=256m</eclipseIniFileContent>
    </platform>
		<platform os="macosx" ws="carbon" arch="ppc">
			<archiveFormat format="tar" />
      <eclipseIniFileContent path="/eclipse/Eclipse.app/Contents/MacOS/">-showsplash
org.eclipse.platform
-startup
../../../plugins/org.eclipse.equinox.launcher_1.0.101.R34x_v20081125.jar
--launcher.library
../../../plugins/org.eclipse.equinox.launcher.carbon.macosx_1.0.101.R34x_v20080731
-vmargs
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Xms40m
-Xmx256m
-XX:MaxPermSize=256m
-Dosgi.requiredJavaVersion=1.5
-Dorg.eclipse.swt.internal.carbon.smallFonts</eclipseIniFileContent>
		</platform>
	</targetPlatforms>
</configuration>
