1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-21 21:52:10 +02:00

Add Makefile Projects to collection of core build project types.

Reuses the old makeNature. Reuses the StandardBuildConfiguration.
Generates a pretty simple project for now. Also handles the case
where you don't want to generate anything, just create an empty or
on an existing source tree.

Change-Id: I2f3cddc85d55792a2c537e37d4bc236a3073d930
This commit is contained in:
Doug Schaefer 2017-11-08 12:49:00 -05:00
parent 2bc9836f68
commit 4ce1f1ca16
22 changed files with 675 additions and 357 deletions

View file

@ -288,11 +288,11 @@ public class GCCToolChain extends PlatformObject implements IToolChain {
// Change source file to a tmp file (needs to be empty) // Change source file to a tmp file (needs to be empty)
Path tmpFile = null; Path tmpFile = null;
for (int i = 1; i < commandLine.size(); ++i) { for (int i = 1; i < commandLine.size(); ++i) {
if (!commandLine.get(i).startsWith("-")) { //$NON-NLS-1$ String arg = commandLine.get(i);
// TODO optimize by dealing with multi arg options like -o if (!arg.startsWith("-")) { //$NON-NLS-1$
Path filePath; Path filePath;
try { try {
filePath = buildDirectory.resolve(commandLine.get(i)); filePath = buildDirectory.resolve(commandLine.get(i)).normalize();
} catch (InvalidPathException e) { } catch (InvalidPathException e) {
continue; continue;
} }
@ -312,6 +312,10 @@ public class GCCToolChain extends PlatformObject implements IToolChain {
tmpFile = Files.createTempFile(parentPath, ".sc", extension); //$NON-NLS-1$ tmpFile = Files.createTempFile(parentPath, ".sc", extension); //$NON-NLS-1$
commandLine.set(i, tmpFile.toString()); commandLine.set(i, tmpFile.toString());
} }
} else if (arg.equals("-o")) { //$NON-NLS-1$
// skip over the next arg
// TODO handle other args like this
i++;
} }
} }
if (tmpFile == null) { if (tmpFile == null) {
@ -486,7 +490,7 @@ public class GCCToolChain extends PlatformObject implements IToolChain {
if (cCommand.contains("gcc")) { //$NON-NLS-1$ if (cCommand.contains("gcc")) { //$NON-NLS-1$
cppCommand = cCommand.replace("gcc", "g++"); //$NON-NLS-1$ //$NON-NLS-2$ cppCommand = cCommand.replace("gcc", "g++"); //$NON-NLS-1$ //$NON-NLS-2$
// Also recognize c++ as an alias for g++ // Also recognize c++ as an alias for g++
commands = new String[] { cCommand, cppCommand, cCommand.replace("gcc", "c++") }; //$NON-NLS-1$ //$NON-NLS-2$ commands = new String[] { cCommand, cppCommand, cCommand.replace("gcc", "c++"), "cc", "c++" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
} else if (cCommand.contains("clang")) { //$NON-NLS-1$ } else if (cCommand.contains("clang")) { //$NON-NLS-1$
cppCommand = cCommand.replace("clang", "clang++"); //$NON-NLS-1$ //$NON-NLS-2$ cppCommand = cCommand.replace("clang", "clang++"); //$NON-NLS-1$ //$NON-NLS-2$
commands = new String[] { cCommand, cppCommand }; commands = new String[] { cCommand, cppCommand };
@ -529,21 +533,21 @@ public class GCCToolChain extends PlatformObject implements IToolChain {
// ran into an option, we're done. // ran into an option, we're done.
break; break;
} }
Path srcPath = Paths.get(arg); try {
URI uri; Path srcPath = Paths.get(arg);
if (srcPath.isAbsolute()) { URI uri;
uri = srcPath.toUri(); if (srcPath.isAbsolute()) {
} else { uri = srcPath.toUri();
try { } else {
uri = buildDirectoryURI.resolve(arg); uri = Paths.get(buildDirectoryURI).resolve(srcPath).toUri().normalize();
} catch (IllegalArgumentException e) {
// Bad URI
continue;
} }
}
for (IFile resource : root.findFilesForLocationURI(uri)) { for (IFile resource : root.findFilesForLocationURI(uri)) {
resources.add(resource); resources.add(resource);
}
} catch (IllegalArgumentException e) {
// Bad URI
continue;
} }
} }

View file

@ -58,7 +58,9 @@ public class CMakeProjectGenerator extends FMProjectGenerator {
List<IPathEntry> entries = new ArrayList<>(); List<IPathEntry> entries = new ArrayList<>();
IProject project = getProject(); IProject project = getProject();
// Create the source folders // Create the source and output folders
IFolder buildFolder = getProject().getFolder("build"); //$NON-NLS-1$
TemplateManifest manifest = getManifest(); TemplateManifest manifest = getManifest();
if (manifest != null) { if (manifest != null) {
List<SourceRoot> srcRoots = getManifest().getSrcRoots(); List<SourceRoot> srcRoots = getManifest().getSrcRoots();
@ -69,14 +71,15 @@ public class CMakeProjectGenerator extends FMProjectGenerator {
sourceFolder.create(true, true, monitor); sourceFolder.create(true, true, monitor);
} }
entries.add(CoreModel.newSourceEntry(sourceFolder.getFullPath())); entries.add(CoreModel.newSourceEntry(sourceFolder.getFullPath(),
new IPath[] { buildFolder.getFullPath() }));
} }
} else { } else {
entries.add(CoreModel.newSourceEntry(getProject().getFullPath())); entries.add(CoreModel.newSourceEntry(getProject().getFullPath()));
} }
} }
entries.add(CoreModel.newOutputEntry(getProject().getFolder("build").getFullPath(), //$NON-NLS-1$ entries.add(CoreModel.newOutputEntry(buildFolder.getFullPath(), // $NON-NLS-1$
new IPath[] { new Path("**/CMakeFiles/**") })); //$NON-NLS-1$ new IPath[] { new Path("**/CMakeFiles/**") })); //$NON-NLS-1$
CoreModel.getDefault().create(project).setRawPathEntries(entries.toArray(new IPathEntry[entries.size()]), CoreModel.getDefault().create(project).setRawPathEntries(entries.toArray(new IPathEntry[entries.size()]),
monitor); monitor);

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

@ -4,6 +4,7 @@
<extension <extension
point="org.eclipse.tools.templates.ui.templates"> point="org.eclipse.tools.templates.ui.templates">
<template <template
icon="icons/cdt_logo_48.png"
id="org.eclipse.cdt.core.autotools.ui.template1" id="org.eclipse.cdt.core.autotools.ui.template1"
label="%autotoolsTemplate.label" label="%autotoolsTemplate.label"
wizard="org.eclipse.cdt.core.autotools.ui.internal.NewAutotoolsProjectWizard"> wizard="org.eclipse.cdt.core.autotools.ui.internal.NewAutotoolsProjectWizard">

View file

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2 Bundle-ManifestVersion: 2
Bundle-Name: %pluginName Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.make.core; singleton:=true Bundle-SymbolicName: org.eclipse.cdt.make.core; singleton:=true
Bundle-Version: 7.3.0.qualifier Bundle-Version: 7.4.0.qualifier
Bundle-Activator: org.eclipse.cdt.make.core.MakeCorePlugin Bundle-Activator: org.eclipse.cdt.make.core.MakeCorePlugin
Bundle-Vendor: %providerName Bundle-Vendor: %providerName
Bundle-Localization: plugin Bundle-Localization: plugin
@ -23,7 +23,9 @@ Require-Bundle: org.eclipse.cdt.core;bundle-version="[5.0.0,7.0.0)",
org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)", org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
org.eclipse.core.variables;bundle-version="[3.1.100,4.0.0)", org.eclipse.core.variables;bundle-version="[3.1.100,4.0.0)",
org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)", org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
org.eclipse.core.filesystem;bundle-version="1.2.0" org.eclipse.core.filesystem;bundle-version="1.2.0",
org.eclipse.tools.templates.core;bundle-version="1.1.0",
org.eclipse.tools.templates.freemarker;bundle-version="1.0.0"
Bundle-ActivationPolicy: lazy Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: com.ibm.icu.text Import-Package: com.ibm.icu.text

View file

@ -194,5 +194,13 @@
<simple name="buildArguments" external="true" nullable="true"/> <simple name="buildArguments" external="true" nullable="true"/>
</processType> </processType>
</extension> </extension>
<extension
point="org.eclipse.cdt.core.buildConfigProvider">
<provider
class="org.eclipse.cdt.make.internal.core.MakefileBuildConfigurationProvider"
id="org.eclipse.cdt.make.core.provider"
natureId="org.eclipse.cdt.make.core.makeNature">
</provider>
</extension>
</plugin> </plugin>

View file

@ -57,6 +57,7 @@ import org.eclipse.core.runtime.Plugin;
import org.eclipse.core.runtime.Preferences; import org.eclipse.core.runtime.Preferences;
import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.Status;
import org.osgi.framework.BundleContext; import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
/** /**
* The main plugin class to be used in the desktop. * The main plugin class to be used in the desktop.
@ -427,4 +428,14 @@ public class MakeCorePlugin extends Plugin {
} }
} }
} }
/**
* @since 7.4
*/
public static <T> T getService(Class<T> service) {
BundleContext context = plugin.getBundle().getBundleContext();
ServiceReference<T> ref = context.getServiceReference(service);
return ref != null ? context.getService(ref) : null;
}
} }

View file

@ -0,0 +1,89 @@
/*******************************************************************************
* Copyright (c) 2017 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.eclipse.cdt.make.core;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.eclipse.cdt.core.CCProjectNature;
import org.eclipse.cdt.core.CProjectNature;
import org.eclipse.cdt.core.build.CBuilder;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.IPathEntry;
import org.eclipse.core.resources.ICommand;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.tools.templates.freemarker.FMProjectGenerator;
import org.eclipse.tools.templates.freemarker.SourceRoot;
import org.eclipse.tools.templates.freemarker.TemplateManifest;
import org.osgi.framework.Bundle;
/**
* Generator for Makefile projects.
*
* @since 7.4
*/
public class MakefileProjectGenerator extends FMProjectGenerator {
public MakefileProjectGenerator(String manifestPath) {
super(manifestPath);
}
@Override
protected Bundle getSourceBundle() {
return MakeCorePlugin.getDefault().getBundle();
}
@Override
protected void initProjectDescription(IProjectDescription description) throws CoreException {
description.setNatureIds(new String[] { CProjectNature.C_NATURE_ID, CCProjectNature.CC_NATURE_ID,
MakeProjectNature.NATURE_ID });
ICommand command = description.newCommand();
CBuilder.setupBuilder(command);
description.setBuildSpec(new ICommand[] { command });
}
@Override
public void generate(Map<String, Object> model, IProgressMonitor monitor) throws CoreException {
super.generate(model, monitor);
List<IPathEntry> entries = new ArrayList<>();
IProject project = getProject();
// Create the source and output folders
IFolder buildFolder = getProject().getFolder("build"); //$NON-NLS-1$
TemplateManifest manifest = getManifest();
if (manifest != null) {
List<SourceRoot> srcRoots = getManifest().getSrcRoots();
if (srcRoots != null && !srcRoots.isEmpty()) {
for (SourceRoot srcRoot : srcRoots) {
IFolder sourceFolder = project.getFolder(srcRoot.getDir());
if (!sourceFolder.exists()) {
sourceFolder.create(true, true, monitor);
}
entries.add(CoreModel.newSourceEntry(sourceFolder.getFullPath(),
new IPath[] { buildFolder.getFullPath() }));
}
} else {
entries.add(CoreModel.newSourceEntry(getProject().getFullPath()));
}
}
entries.add(CoreModel.newOutputEntry(buildFolder.getFullPath()));
CoreModel.getDefault().create(project)
.setRawPathEntries(entries.toArray(new IPathEntry[entries.size()]), monitor);
}
}

View file

@ -0,0 +1,66 @@
/*******************************************************************************
* Copyright (c) 2017 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.eclipse.cdt.make.internal.core;
import org.eclipse.cdt.core.build.ICBuildConfiguration;
import org.eclipse.cdt.core.build.ICBuildConfigurationManager;
import org.eclipse.cdt.core.build.ICBuildConfigurationProvider;
import org.eclipse.cdt.core.build.IToolChain;
import org.eclipse.cdt.core.build.StandardBuildConfiguration;
import org.eclipse.cdt.make.core.MakeCorePlugin;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
public class MakefileBuildConfigurationProvider implements ICBuildConfigurationProvider {
public static final String ID = "org.eclipse.cdt.make.core.provider"; //$NON-NLS-1$
@Override
public String getId() {
return ID;
}
@Override
public ICBuildConfiguration getCBuildConfiguration(IBuildConfiguration config, String name)
throws CoreException {
return new StandardBuildConfiguration(config, name);
}
@Override
public ICBuildConfiguration createBuildConfiguration(IProject project, IToolChain toolChain,
String launchMode, IProgressMonitor monitor) throws CoreException {
ICBuildConfigurationManager configManager = MakeCorePlugin.getService(ICBuildConfigurationManager.class);
StringBuilder configName = new StringBuilder("make."); //$NON-NLS-1$
configName.append(launchMode);
String os = toolChain.getProperty(IToolChain.ATTR_OS);
if (os != null) {
configName.append('.');
configName.append(os);
}
String arch = toolChain.getProperty(IToolChain.ATTR_ARCH);
if (arch != null && !arch.isEmpty()) {
configName.append('.');
configName.append(arch);
}
String name = configName.toString();
int i = 0;
while (configManager.hasConfiguration(this, project, name)) {
name = configName.toString() + '.' + (++i);
}
IBuildConfiguration config = configManager.createBuildConfiguration(this, project, name, monitor);
StandardBuildConfiguration makeConfig = new StandardBuildConfiguration(config, name, toolChain,
launchMode);
configManager.addBuildConfiguration(config, makeConfig);
return makeConfig;
}
}

View file

@ -0,0 +1,12 @@
OBJS = ${projectName}.o
all: ${projectName}
${projectName}: $(OBJS)
$(CC) -o $@ $^
%.o: ../../%.cpp
$(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
clean:
rm -fr ${projectName} $(OBJS)

View file

@ -0,0 +1,4 @@
int main(int argc, char **argv) {
return 0;
}

View file

@ -0,0 +1,7 @@
<templateManifest>
<file src="/templates/simple/Makefile"
dest="/${projectName}/Makefile"/>
<file src="/templates/simple/main.cpp"
dest="/${projectName}/${projectName}.cpp"
open="true"/>
</templateManifest>

View file

@ -35,7 +35,9 @@ Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)",
org.eclipse.debug.ui;bundle-version="[3.2.0,4.0.0)", org.eclipse.debug.ui;bundle-version="[3.2.0,4.0.0)",
org.eclipse.ui.navigator;bundle-version="[3.2.0,4.0.0)";resolution:=optional, org.eclipse.ui.navigator;bundle-version="[3.2.0,4.0.0)";resolution:=optional,
org.eclipse.compare;bundle-version="[3.3.0,4.0.0)", org.eclipse.compare;bundle-version="[3.3.0,4.0.0)",
org.eclipse.core.filesystem;bundle-version="1.2.0" org.eclipse.core.filesystem;bundle-version="1.2.0",
org.eclipse.tools.templates.ui;bundle-version="1.1.1",
org.eclipse.tools.templates.freemarker;bundle-version="1.0.0"
Bundle-ActivationPolicy: lazy Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: com.ibm.icu.text Import-Package: com.ibm.icu.text

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

@ -629,4 +629,26 @@
</includes> </includes>
</viewerActionBinding> </viewerActionBinding>
</extension> </extension>
<extension
point="org.eclipse.tools.templates.ui.templates">
<template
icon="icons/cdt_logo_48.png"
id="org.eclipse.cdt.make.ui.template"
label="Makefile Project"
wizard="org.eclipse.cdt.make.internal.ui.wizards.NewMakefileProjectWizard">
<description>
Create a new project that builds with the &apos;make&apos; build tool.
</description>
<tagReference
id="org.eclipse.cdt.ui.cdtTag">
</tagReference>
<tagReference
id="org.eclipse.cdt.make.ui.tag">
</tagReference>
</template>
<tag
id="org.eclipse.cdt.make.ui.tag"
label="Make">
</tag>
</extension>
</plugin> </plugin>

View file

@ -0,0 +1,78 @@
/*******************************************************************************
* Copyright (c) 2017 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.eclipse.cdt.make.internal.ui.wizards;
import org.eclipse.cdt.make.core.MakefileProjectGenerator;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.wizard.IWizardContainer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.tools.templates.core.IGenerator;
import org.eclipse.tools.templates.ui.TemplateWizard;
import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
public class NewMakefileProjectWizard extends TemplateWizard {
private WizardNewProjectCreationPage mainPage;
private boolean generateSource = true;
@Override
public void setContainer(IWizardContainer wizardContainer) {
super.setContainer(wizardContainer);
setWindowTitle("New Makefile Project");
}
@Override
public void addPages() {
mainPage = new WizardNewProjectCreationPage("basicNewProjectPage") { //$NON-NLS-1$
@Override
public void createControl(Composite parent) {
super.createControl(parent);
Composite comp = (Composite) getControl();
createWorkingSetGroup(comp, getSelection(),
new String[] { "org.eclipse.ui.resourceWorkingSetPage" }); //$NON-NLS-1$
Composite buttonComp = new Composite(comp, SWT.NONE);
buttonComp.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
buttonComp.setLayout(new GridLayout());
Button genSourceButton = new Button(buttonComp, SWT.CHECK);
genSourceButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
genSourceButton.setText("Generate Source and Makefile");
genSourceButton.setSelection(generateSource);
genSourceButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
generateSource = genSourceButton.getSelection();
}
});
Dialog.applyDialogFont(getControl());
}
};
mainPage.setTitle("New Makefile Project");
mainPage.setDescription("Specify properties of new Makefile project.");
this.addPage(mainPage);
}
@Override
protected IGenerator getGenerator() {
String manifest = generateSource ? "templates/simple/manifest.xml" : null; //$NON-NLS-1$
MakefileProjectGenerator generator = new MakefileProjectGenerator(manifest);
generator.setProjectName(mainPage.getProjectName());
if (!mainPage.useDefaults()) {
generator.setLocationURI(mainPage.getLocationURI());
}
return generator;
}
}

View file

@ -19,6 +19,7 @@ import java.io.PrintStream;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.net.URI; import java.net.URI;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.InvalidPathException;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.ArrayList; import java.util.ArrayList;
@ -413,35 +414,39 @@ public abstract class CBuildConfiguration extends PlatformObject
} }
protected Path findCommand(String command) { protected Path findCommand(String command) {
Path cmdPath = Paths.get(command); try {
if (cmdPath.isAbsolute()) { Path cmdPath = Paths.get(command);
return cmdPath; if (cmdPath.isAbsolute()) {
} return cmdPath;
Map<String, String> env = new HashMap<>(System.getenv());
setBuildEnvironment(env);
String pathStr = env.get("PATH"); //$NON-NLS-1$
if (pathStr == null) {
pathStr = env.get("Path"); // for Windows //$NON-NLS-1$
if (pathStr == null) {
return null; // no idea
} }
}
String[] path = pathStr.split(File.pathSeparator); Map<String, String> env = new HashMap<>(System.getenv());
for (String dir : path) { setBuildEnvironment(env);
Path commandPath = Paths.get(dir, command);
if (Files.exists(commandPath)) { String pathStr = env.get("PATH"); //$NON-NLS-1$
return commandPath; if (pathStr == null) {
} else { pathStr = env.get("Path"); // for Windows //$NON-NLS-1$
if (Platform.getOS().equals(Platform.OS_WIN32) if (pathStr == null) {
&& !(command.endsWith(".exe") || command.endsWith(".bat"))) { //$NON-NLS-1$ //$NON-NLS-2$ return null; // no idea
commandPath = Paths.get(dir, command + ".exe"); //$NON-NLS-1$ }
if (Files.exists(commandPath)) { }
return commandPath; String[] path = pathStr.split(File.pathSeparator);
for (String dir : path) {
Path commandPath = Paths.get(dir, command);
if (Files.exists(commandPath)) {
return commandPath;
} else {
if (Platform.getOS().equals(Platform.OS_WIN32)
&& !(command.endsWith(".exe") || command.endsWith(".bat"))) { //$NON-NLS-1$ //$NON-NLS-2$
commandPath = Paths.get(dir, command + ".exe"); //$NON-NLS-1$
if (Files.exists(commandPath)) {
return commandPath;
}
} }
} }
} }
} catch (InvalidPathException e) {
// ignore
} }
return null; return null;
} }
@ -699,11 +704,13 @@ public abstract class CBuildConfiguration extends PlatformObject
} }
} else { } else {
Path commandPath = findCommand(command.get(0)); Path commandPath = findCommand(command.get(0));
command.set(0, commandPath.toString()); if (commandPath != null) {
IExtendedScannerInfo info = getToolChain().getScannerInfo(getBuildConfiguration(), command.set(0, commandPath.toString());
command, null, resource, getBuildDirectoryURI()); IExtendedScannerInfo info = getToolChain().getScannerInfo(getBuildConfiguration(),
scannerInfoCache.addScannerInfo(commandStrings, info, resource); command, null, resource, getBuildDirectoryURI());
infoChanged = true; scannerInfoCache.addScannerInfo(commandStrings, info, resource);
infoChanged = true;
}
} }
} }
return true; return true;

View file

@ -35,7 +35,7 @@ import org.eclipse.core.runtime.Status;
*/ */
public class StandardBuildConfiguration extends CBuildConfiguration { public class StandardBuildConfiguration extends CBuildConfiguration {
private String[] buildCommand = { "make", "all" }; //$NON-NLS-1$ //$NON-NLS-2$ private String[] buildCommand = { "make", "-j", "-f", "../../Makefile", "all" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
private String[] cleanCommand = { "make", "clean" }; //$NON-NLS-1$ //$NON-NLS-2$ private String[] cleanCommand = { "make", "clean" }; //$NON-NLS-1$ //$NON-NLS-2$
private IContainer buildContainer; private IContainer buildContainer;
@ -62,9 +62,7 @@ public class StandardBuildConfiguration extends CBuildConfiguration {
@Override @Override
public IContainer getBuildContainer() throws CoreException { public IContainer getBuildContainer() throws CoreException {
// If a container isn't set, assume build bits can go anywhere in the return buildContainer != null ? buildContainer : super.getBuildContainer();
// project
return buildContainer != null ? buildContainer : getProject();
} }
@Override @Override
@ -100,6 +98,8 @@ public class StandardBuildConfiguration extends CBuildConfiguration {
project.refreshLocal(IResource.DEPTH_INFINITE, monitor); project.refreshLocal(IResource.DEPTH_INFINITE, monitor);
outStream.write(String.format(Messages.StandardBuildConfiguration_1, buildDir.toString()));
return new IProject[] { project }; return new IProject[] { project };
} catch (IOException e) { } catch (IOException e) {
throw new CoreException( throw new CoreException(

View file

@ -17,6 +17,7 @@ public class Messages extends NLS {
public static String CBuilder_NotConfiguredCorrectly; public static String CBuilder_NotConfiguredCorrectly;
public static String CBuilder_NotConfiguredCorrectly2; public static String CBuilder_NotConfiguredCorrectly2;
public static String StandardBuildConfiguration_0; public static String StandardBuildConfiguration_0;
public static String StandardBuildConfiguration_1;
static { static {
// initialize resource bundle // initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class); NLS.initializeMessages(BUNDLE_NAME, Messages.class);

View file

@ -186,21 +186,19 @@ public class ToolChainManager implements IToolChainManager {
public Collection<IToolChain> getToolChainsMatching(Map<String, String> properties) { public Collection<IToolChain> getToolChainsMatching(Map<String, String> properties) {
init(); init();
List<IToolChain> tcs = new ArrayList<>(); List<IToolChain> tcs = new ArrayList<>();
for (Map<String, IToolChain> type : toolChains.values()) { for (IToolChain toolChain : orderedToolChains) {
for (IToolChain toolChain : type.values()) { boolean matches = true;
boolean matches = true; for (Map.Entry<String, String> property : properties.entrySet()) {
for (Map.Entry<String, String> property : properties.entrySet()) { String tcProperty = toolChain.getProperty(property.getKey());
String tcProperty = toolChain.getProperty(property.getKey()); if (tcProperty != null) {
if (tcProperty != null) { if (!property.getValue().equals(tcProperty)) {
if (!property.getValue().equals(tcProperty)) { matches = false;
matches = false; break;
break;
}
} }
} }
if (matches) { }
tcs.add(toolChain); if (matches) {
} tcs.add(toolChain);
} }
} }

View file

@ -10,4 +10,5 @@ CBuilder_ExceptionWhileBuilding2=Exception while building
CBuilder_NotConfiguredCorrectly=Build not configured correctly\n CBuilder_NotConfiguredCorrectly=Build not configured correctly\n
CBuilder_NotConfiguredCorrectly2=Build not configured correctly\n CBuilder_NotConfiguredCorrectly2=Build not configured correctly\n
StandardBuildConfiguration_0=Building in: %s\n StandardBuildConfiguration_0=Building in: %s\n
StandardBuildConfiguration_1=Build complete: %s\n
CBuildConfiguration_ToolchainMissing=Toolchain is missing for build configuration CBuildConfiguration_ToolchainMissing=Toolchain is missing for build configuration

View file

@ -1,52 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?pde version="3.5"?> <?pde version="3.5"?>
<product name="Stand-alone C/C++ GDB Debugger" uid="org.eclipse.cdt.debug.application.product" id="org.eclipse.cdt.debug.application.product" application="org.eclipse.cdt.debug.application.app" version="9.4.0.qualifier" useFeatures="false" includeLaunchers="true"> <product name="Stand-alone C/C++ GDB Debugger" uid="org.eclipse.cdt.debug.application.product" id="org.eclipse.cdt.debug.application.product" application="org.eclipse.cdt.debug.application.app" version="9.4.0.qualifier" useFeatures="false" includeLaunchers="true">
<aboutInfo> <aboutInfo>
<image path="/org.eclipse.cdt.debug.application/icons/about.png"/> <image path="/org.eclipse.cdt.debug.application/icons/about.png"/>
<text> <text>
%aboutText %aboutText
</text> </text>
</aboutInfo> </aboutInfo>
<configIni use="default"> <configIni use="default">
</configIni> </configIni>
<launcherArgs> <launcherArgs>
<programArgs>--launcher.XXMaxPermSize 256m -data @noDefault <programArgs>--launcher.XXMaxPermSize 256m -data @noDefault
</programArgs> </programArgs>
<programArgsLin>--launcher.GTK_version 2 <programArgsLin>--launcher.GTK_version 2
</programArgsLin> </programArgsLin>
<vmArgsLin>-Xms100m -Xmx512m -Dosgi.requiredJavaVersion=1.8 <vmArgsLin>-Xms100m -Xmx512m -Dosgi.requiredJavaVersion=1.8
</vmArgsLin> </vmArgsLin>
<vmArgsMac>-Xms100m -Xmx512m -XstartOnFirstThread -Dosgi.requiredJavaVersion=1.8 -Dorg.eclipse.swt.internal.carbon.smallFonts <vmArgsMac>-Xms100m -Xmx512m -XstartOnFirstThread -Dosgi.requiredJavaVersion=1.8 -Dorg.eclipse.swt.internal.carbon.smallFonts
</vmArgsMac> </vmArgsMac>
<vmArgsWin>-Xms100m -Xmx512m -Dosgi.requiredJavaVersion=1.8 <vmArgsWin>-Xms100m -Xmx512m -Dosgi.requiredJavaVersion=1.8
</vmArgsWin> </vmArgsWin>
</launcherArgs> </launcherArgs>
<windowImages i16="/org.eclipse.cdt.debug.application/icons/cc16.png" i32="/org.eclipse.cdt.debug.application/icons/cc32.png" i48="/org.eclipse.cdt.debug.application/icons/cc48.png" i64="/org.eclipse.cdt.debug.application/icons/cc64.png" i128="/org.eclipse.cdt.debug.application/icons/cc128.png" i256="/org.eclipse.cdt.debug.application/icons/cc.png"/> <windowImages i16="/org.eclipse.cdt.debug.application/icons/cc16.png" i32="/org.eclipse.cdt.debug.application/icons/cc32.png" i48="/org.eclipse.cdt.debug.application/icons/cc48.png" i64="/org.eclipse.cdt.debug.application/icons/cc64.png" i128="/org.eclipse.cdt.debug.application/icons/cc128.png" i256="/org.eclipse.cdt.debug.application/icons/cc.png"/>
<launcher name="cdtdebug"> <launcher name="cdtdebug">
<linux icon="../org.eclipse.cdt.debug.application/icons/cc.xpm"/> <linux icon="../org.eclipse.cdt.debug.application/icons/cc.xpm"/>
<macosx icon="../org.eclipse.cdt.debug.application/icons/cc.icns"/> <macosx icon="../org.eclipse.cdt.debug.application/icons/cc.icns"/>
<win useIco="true"> <win useIco="true">
<ico path="../org.eclipse.cdt.debug.application/icons/cc.ico"/> <ico path="../org.eclipse.cdt.debug.application/icons/cc.ico"/>
<bmp/> <bmp/>
</win> </win>
</launcher> </launcher>
<vm> <vm>
<linux include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</linux> <linux include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</linux>
<macos include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</macos> <macos include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</macos>
<solaris include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</solaris> <solaris include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</solaris>
<windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</windows> <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</windows>
</vm> </vm>
<license> <license>
<url>http://eclipse.org/legal/epl/notice.php</url> <url>http://eclipse.org/legal/epl/notice.php</url>
<text> <text>
Eclipse Foundation Software User Agreement Eclipse Foundation Software User Agreement
April 9, 2014 April 9, 2014
@ -169,241 +169,243 @@ using any encryption software, please check the country&apos;s laws,
regulations and policies concerning the import, possession, or use, and regulations and policies concerning the import, possession, or use, and
re-export of encryption software, to see if this is permitted. re-export of encryption software, to see if this is permitted.
Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both. Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.
</text> </text>
</license> </license>
<plugins> <plugins>
<plugin id="com.google.gson"/> <plugin id="com.google.gson"/>
<plugin id="com.ibm.icu"/> <plugin id="com.ibm.icu"/>
<plugin id="javax.annotation"/> <plugin id="javax.annotation"/>
<plugin id="javax.el"/> <plugin id="javax.el"/>
<plugin id="javax.inject"/> <plugin id="javax.inject"/>
<plugin id="javax.servlet"/> <plugin id="javax.servlet"/>
<plugin id="javax.servlet.jsp"/> <plugin id="javax.servlet.jsp"/>
<plugin id="javax.xml"/> <plugin id="javax.xml"/>
<plugin id="org.apache.batik.css"/> <plugin id="org.apache.batik.css"/>
<plugin id="org.apache.batik.util"/> <plugin id="org.apache.batik.util"/>
<plugin id="org.apache.batik.util.gui"/> <plugin id="org.apache.batik.util.gui"/>
<plugin id="org.apache.commons.codec"/> <plugin id="org.apache.commons.codec"/>
<plugin id="org.apache.commons.jxpath"/> <plugin id="org.apache.commons.jxpath"/>
<plugin id="org.apache.commons.logging"/> <plugin id="org.apache.commons.logging"/>
<plugin id="org.apache.felix.scr"/> <plugin id="org.apache.felix.scr"/>
<plugin id="org.apache.httpcomponents.httpclient"/> <plugin id="org.apache.httpcomponents.httpclient"/>
<plugin id="org.apache.httpcomponents.httpcore"/> <plugin id="org.apache.httpcomponents.httpcore"/>
<plugin id="org.apache.jasper.glassfish"/> <plugin id="org.apache.jasper.glassfish"/>
<plugin id="org.apache.lucene.analyzers-common"/> <plugin id="org.apache.lucene.analyzers-common"/>
<plugin id="org.apache.lucene.analyzers-smartcn"/> <plugin id="org.apache.lucene.analyzers-smartcn"/>
<plugin id="org.apache.lucene.core"/> <plugin id="org.apache.lucene.core"/>
<plugin id="org.apache.lucene.misc"/> <plugin id="org.apache.lucene.misc"/>
<plugin id="org.eclipse.cdt.core"/> <plugin id="org.eclipse.cdt.core"/>
<plugin id="org.eclipse.cdt.core.linux" fragment="true"/> <plugin id="org.eclipse.cdt.core.linux" fragment="true"/>
<plugin id="org.eclipse.cdt.core.linux.x86" fragment="true"/> <plugin id="org.eclipse.cdt.core.linux.x86" fragment="true"/>
<plugin id="org.eclipse.cdt.core.linux.x86_64" fragment="true"/> <plugin id="org.eclipse.cdt.core.linux.x86_64" fragment="true"/>
<plugin id="org.eclipse.cdt.core.macosx" fragment="true"/> <plugin id="org.eclipse.cdt.core.macosx" fragment="true"/>
<plugin id="org.eclipse.cdt.core.native"/> <plugin id="org.eclipse.cdt.core.native"/>
<plugin id="org.eclipse.cdt.core.win32" fragment="true"/> <plugin id="org.eclipse.cdt.core.win32" fragment="true"/>
<plugin id="org.eclipse.cdt.core.win32.x86" fragment="true"/> <plugin id="org.eclipse.cdt.core.win32.x86" fragment="true"/>
<plugin id="org.eclipse.cdt.core.win32.x86_64" fragment="true"/> <plugin id="org.eclipse.cdt.core.win32.x86_64" fragment="true"/>
<plugin id="org.eclipse.cdt.debug.application"/> <plugin id="org.eclipse.cdt.debug.application"/>
<plugin id="org.eclipse.cdt.debug.application.doc"/> <plugin id="org.eclipse.cdt.debug.application.doc"/>
<plugin id="org.eclipse.cdt.debug.core"/> <plugin id="org.eclipse.cdt.debug.core"/>
<plugin id="org.eclipse.cdt.debug.ui"/> <plugin id="org.eclipse.cdt.debug.ui"/>
<plugin id="org.eclipse.cdt.debug.ui.memory.floatingpoint"/> <plugin id="org.eclipse.cdt.debug.ui.memory.floatingpoint"/>
<plugin id="org.eclipse.cdt.debug.ui.memory.memorybrowser"/> <plugin id="org.eclipse.cdt.debug.ui.memory.memorybrowser"/>
<plugin id="org.eclipse.cdt.debug.ui.memory.search"/> <plugin id="org.eclipse.cdt.debug.ui.memory.search"/>
<plugin id="org.eclipse.cdt.debug.ui.memory.traditional"/> <plugin id="org.eclipse.cdt.debug.ui.memory.traditional"/>
<plugin id="org.eclipse.cdt.debug.ui.memory.transport"/> <plugin id="org.eclipse.cdt.debug.ui.memory.transport"/>
<plugin id="org.eclipse.cdt.dsf"/> <plugin id="org.eclipse.cdt.dsf"/>
<plugin id="org.eclipse.cdt.dsf.gdb"/> <plugin id="org.eclipse.cdt.dsf.gdb"/>
<plugin id="org.eclipse.cdt.dsf.gdb.ui"/> <plugin id="org.eclipse.cdt.dsf.gdb.ui"/>
<plugin id="org.eclipse.cdt.dsf.ui"/> <plugin id="org.eclipse.cdt.dsf.ui"/>
<plugin id="org.eclipse.cdt.gdb"/> <plugin id="org.eclipse.cdt.gdb"/>
<plugin id="org.eclipse.cdt.gdb.ui"/> <plugin id="org.eclipse.cdt.gdb.ui"/>
<plugin id="org.eclipse.cdt.launch"/> <plugin id="org.eclipse.cdt.launch"/>
<plugin id="org.eclipse.cdt.make.core"/> <plugin id="org.eclipse.cdt.make.core"/>
<plugin id="org.eclipse.cdt.managedbuilder.core"/> <plugin id="org.eclipse.cdt.managedbuilder.core"/>
<plugin id="org.eclipse.cdt.managedbuilder.gnu.ui"/> <plugin id="org.eclipse.cdt.managedbuilder.gnu.ui"/>
<plugin id="org.eclipse.cdt.ui"/> <plugin id="org.eclipse.cdt.ui"/>
<plugin id="org.eclipse.compare"/> <plugin id="org.eclipse.compare"/>
<plugin id="org.eclipse.compare.core"/> <plugin id="org.eclipse.compare.core"/>
<plugin id="org.eclipse.core.commands"/> <plugin id="org.eclipse.core.commands"/>
<plugin id="org.eclipse.core.contenttype"/> <plugin id="org.eclipse.core.contenttype"/>
<plugin id="org.eclipse.core.databinding"/> <plugin id="org.eclipse.core.databinding"/>
<plugin id="org.eclipse.core.databinding.observable"/> <plugin id="org.eclipse.core.databinding.observable"/>
<plugin id="org.eclipse.core.databinding.property"/> <plugin id="org.eclipse.core.databinding.property"/>
<plugin id="org.eclipse.core.expressions"/> <plugin id="org.eclipse.core.expressions"/>
<plugin id="org.eclipse.core.filebuffers"/> <plugin id="org.eclipse.core.filebuffers"/>
<plugin id="org.eclipse.core.filesystem"/> <plugin id="org.eclipse.core.filesystem"/>
<plugin id="org.eclipse.core.filesystem.linux.x86" fragment="true"/> <plugin id="org.eclipse.core.filesystem.linux.x86" fragment="true"/>
<plugin id="org.eclipse.core.filesystem.linux.x86_64" fragment="true"/> <plugin id="org.eclipse.core.filesystem.linux.x86_64" fragment="true"/>
<plugin id="org.eclipse.core.filesystem.macosx" fragment="true"/> <plugin id="org.eclipse.core.filesystem.macosx" fragment="true"/>
<plugin id="org.eclipse.core.filesystem.win32.x86" fragment="true"/> <plugin id="org.eclipse.core.filesystem.win32.x86" fragment="true"/>
<plugin id="org.eclipse.core.filesystem.win32.x86_64" fragment="true"/> <plugin id="org.eclipse.core.filesystem.win32.x86_64" fragment="true"/>
<plugin id="org.eclipse.core.jobs"/> <plugin id="org.eclipse.core.jobs"/>
<plugin id="org.eclipse.core.net"/> <plugin id="org.eclipse.core.net"/>
<plugin id="org.eclipse.core.net.linux.x86" fragment="true"/> <plugin id="org.eclipse.core.net.linux.x86" fragment="true"/>
<plugin id="org.eclipse.core.net.linux.x86_64" fragment="true"/> <plugin id="org.eclipse.core.net.linux.x86_64" fragment="true"/>
<plugin id="org.eclipse.core.net.win32.x86" fragment="true"/> <plugin id="org.eclipse.core.net.win32.x86" fragment="true"/>
<plugin id="org.eclipse.core.net.win32.x86_64" fragment="true"/> <plugin id="org.eclipse.core.net.win32.x86_64" fragment="true"/>
<plugin id="org.eclipse.core.resources"/> <plugin id="org.eclipse.core.resources"/>
<plugin id="org.eclipse.core.runtime"/> <plugin id="org.eclipse.core.runtime"/>
<plugin id="org.eclipse.core.variables"/> <plugin id="org.eclipse.core.variables"/>
<plugin id="org.eclipse.debug.core"/> <plugin id="org.eclipse.debug.core"/>
<plugin id="org.eclipse.debug.ui"/> <plugin id="org.eclipse.debug.ui"/>
<plugin id="org.eclipse.e4.core.commands"/> <plugin id="org.eclipse.e4.core.commands"/>
<plugin id="org.eclipse.e4.core.contexts"/> <plugin id="org.eclipse.e4.core.contexts"/>
<plugin id="org.eclipse.e4.core.di"/> <plugin id="org.eclipse.e4.core.di"/>
<plugin id="org.eclipse.e4.core.di.annotations"/> <plugin id="org.eclipse.e4.core.di.annotations"/>
<plugin id="org.eclipse.e4.core.di.extensions"/> <plugin id="org.eclipse.e4.core.di.extensions"/>
<plugin id="org.eclipse.e4.core.di.extensions.supplier"/> <plugin id="org.eclipse.e4.core.di.extensions.supplier"/>
<plugin id="org.eclipse.e4.core.services"/> <plugin id="org.eclipse.e4.core.services"/>
<plugin id="org.eclipse.e4.emf.xpath"/> <plugin id="org.eclipse.e4.emf.xpath"/>
<plugin id="org.eclipse.e4.ui.bindings"/> <plugin id="org.eclipse.e4.ui.bindings"/>
<plugin id="org.eclipse.e4.ui.css.core"/> <plugin id="org.eclipse.e4.ui.css.core"/>
<plugin id="org.eclipse.e4.ui.css.swt"/> <plugin id="org.eclipse.e4.ui.css.swt"/>
<plugin id="org.eclipse.e4.ui.css.swt.theme"/> <plugin id="org.eclipse.e4.ui.css.swt.theme"/>
<plugin id="org.eclipse.e4.ui.di"/> <plugin id="org.eclipse.e4.ui.di"/>
<plugin id="org.eclipse.e4.ui.model.workbench"/> <plugin id="org.eclipse.e4.ui.model.workbench"/>
<plugin id="org.eclipse.e4.ui.services"/> <plugin id="org.eclipse.e4.ui.services"/>
<plugin id="org.eclipse.e4.ui.widgets"/> <plugin id="org.eclipse.e4.ui.widgets"/>
<plugin id="org.eclipse.e4.ui.workbench"/> <plugin id="org.eclipse.e4.ui.workbench"/>
<plugin id="org.eclipse.e4.ui.workbench.addons.swt"/> <plugin id="org.eclipse.e4.ui.workbench.addons.swt"/>
<plugin id="org.eclipse.e4.ui.workbench.renderers.swt"/> <plugin id="org.eclipse.e4.ui.workbench.renderers.swt"/>
<plugin id="org.eclipse.e4.ui.workbench.renderers.swt.cocoa" fragment="true"/> <plugin id="org.eclipse.e4.ui.workbench.renderers.swt.cocoa" fragment="true"/>
<plugin id="org.eclipse.e4.ui.workbench.swt"/> <plugin id="org.eclipse.e4.ui.workbench.swt"/>
<plugin id="org.eclipse.e4.ui.workbench3"/> <plugin id="org.eclipse.e4.ui.workbench3"/>
<plugin id="org.eclipse.ecf"/> <plugin id="org.eclipse.ecf"/>
<plugin id="org.eclipse.ecf.filetransfer"/> <plugin id="org.eclipse.ecf.filetransfer"/>
<plugin id="org.eclipse.ecf.identity"/> <plugin id="org.eclipse.ecf.identity"/>
<plugin id="org.eclipse.ecf.provider.filetransfer"/> <plugin id="org.eclipse.ecf.provider.filetransfer"/>
<plugin id="org.eclipse.ecf.provider.filetransfer.httpclient4"/> <plugin id="org.eclipse.ecf.provider.filetransfer.httpclient4"/>
<plugin id="org.eclipse.ecf.provider.filetransfer.httpclient4.ssl" fragment="true"/> <plugin id="org.eclipse.ecf.provider.filetransfer.httpclient4.ssl" fragment="true"/>
<plugin id="org.eclipse.ecf.provider.filetransfer.ssl" fragment="true"/> <plugin id="org.eclipse.ecf.provider.filetransfer.ssl" fragment="true"/>
<plugin id="org.eclipse.ecf.ssl" fragment="true"/> <plugin id="org.eclipse.ecf.ssl" fragment="true"/>
<plugin id="org.eclipse.emf.common"/> <plugin id="org.eclipse.emf.common"/>
<plugin id="org.eclipse.emf.ecore"/> <plugin id="org.eclipse.emf.ecore"/>
<plugin id="org.eclipse.emf.ecore.change"/> <plugin id="org.eclipse.emf.ecore.change"/>
<plugin id="org.eclipse.emf.ecore.xmi"/> <plugin id="org.eclipse.emf.ecore.xmi"/>
<plugin id="org.eclipse.equinox.app"/> <plugin id="org.eclipse.equinox.app"/>
<plugin id="org.eclipse.equinox.bidi"/> <plugin id="org.eclipse.equinox.bidi"/>
<plugin id="org.eclipse.equinox.common"/> <plugin id="org.eclipse.equinox.common"/>
<plugin id="org.eclipse.equinox.ds"/> <plugin id="org.eclipse.equinox.ds"/>
<plugin id="org.eclipse.equinox.event"/> <plugin id="org.eclipse.equinox.event"/>
<plugin id="org.eclipse.equinox.frameworkadmin"/> <plugin id="org.eclipse.equinox.frameworkadmin"/>
<plugin id="org.eclipse.equinox.frameworkadmin.equinox"/> <plugin id="org.eclipse.equinox.frameworkadmin.equinox"/>
<plugin id="org.eclipse.equinox.http.jetty"/> <plugin id="org.eclipse.equinox.http.jetty"/>
<plugin id="org.eclipse.equinox.http.registry"/> <plugin id="org.eclipse.equinox.http.registry"/>
<plugin id="org.eclipse.equinox.http.servlet"/> <plugin id="org.eclipse.equinox.http.servlet"/>
<plugin id="org.eclipse.equinox.jsp.jasper"/> <plugin id="org.eclipse.equinox.jsp.jasper"/>
<plugin id="org.eclipse.equinox.jsp.jasper.registry"/> <plugin id="org.eclipse.equinox.jsp.jasper.registry"/>
<plugin id="org.eclipse.equinox.launcher"/> <plugin id="org.eclipse.equinox.launcher"/>
<plugin id="org.eclipse.equinox.launcher.cocoa.macosx.x86_64" fragment="true"/> <plugin id="org.eclipse.equinox.launcher.cocoa.macosx.x86_64" fragment="true"/>
<plugin id="org.eclipse.equinox.launcher.gtk.linux.x86" fragment="true"/> <plugin id="org.eclipse.equinox.launcher.gtk.linux.x86" fragment="true"/>
<plugin id="org.eclipse.equinox.launcher.gtk.linux.x86_64" fragment="true"/> <plugin id="org.eclipse.equinox.launcher.gtk.linux.x86_64" fragment="true"/>
<plugin id="org.eclipse.equinox.launcher.win32.win32.x86" fragment="true"/> <plugin id="org.eclipse.equinox.launcher.win32.win32.x86" fragment="true"/>
<plugin id="org.eclipse.equinox.launcher.win32.win32.x86_64" fragment="true"/> <plugin id="org.eclipse.equinox.launcher.win32.win32.x86_64" fragment="true"/>
<plugin id="org.eclipse.equinox.p2.artifact.repository"/> <plugin id="org.eclipse.equinox.p2.artifact.repository"/>
<plugin id="org.eclipse.equinox.p2.core"/> <plugin id="org.eclipse.equinox.p2.core"/>
<plugin id="org.eclipse.equinox.p2.director"/> <plugin id="org.eclipse.equinox.p2.director"/>
<plugin id="org.eclipse.equinox.p2.engine"/> <plugin id="org.eclipse.equinox.p2.engine"/>
<plugin id="org.eclipse.equinox.p2.garbagecollector"/> <plugin id="org.eclipse.equinox.p2.garbagecollector"/>
<plugin id="org.eclipse.equinox.p2.jarprocessor"/> <plugin id="org.eclipse.equinox.p2.jarprocessor"/>
<plugin id="org.eclipse.equinox.p2.metadata"/> <plugin id="org.eclipse.equinox.p2.metadata"/>
<plugin id="org.eclipse.equinox.p2.metadata.repository"/> <plugin id="org.eclipse.equinox.p2.metadata.repository"/>
<plugin id="org.eclipse.equinox.p2.operations"/> <plugin id="org.eclipse.equinox.p2.operations"/>
<plugin id="org.eclipse.equinox.p2.repository"/> <plugin id="org.eclipse.equinox.p2.repository"/>
<plugin id="org.eclipse.equinox.p2.touchpoint.eclipse"/> <plugin id="org.eclipse.equinox.p2.touchpoint.eclipse"/>
<plugin id="org.eclipse.equinox.p2.touchpoint.natives"/> <plugin id="org.eclipse.equinox.p2.touchpoint.natives"/>
<plugin id="org.eclipse.equinox.p2.transport.ecf"/> <plugin id="org.eclipse.equinox.p2.transport.ecf"/>
<plugin id="org.eclipse.equinox.p2.ui"/> <plugin id="org.eclipse.equinox.p2.ui"/>
<plugin id="org.eclipse.equinox.p2.ui.sdk"/> <plugin id="org.eclipse.equinox.p2.ui.sdk"/>
<plugin id="org.eclipse.equinox.preferences"/> <plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/> <plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.equinox.security"/> <plugin id="org.eclipse.equinox.security"/>
<plugin id="org.eclipse.equinox.security.macosx" fragment="true"/> <plugin id="org.eclipse.equinox.security.macosx" fragment="true"/>
<plugin id="org.eclipse.equinox.security.ui"/> <plugin id="org.eclipse.equinox.security.ui"/>
<plugin id="org.eclipse.equinox.simpleconfigurator"/> <plugin id="org.eclipse.equinox.simpleconfigurator"/>
<plugin id="org.eclipse.equinox.simpleconfigurator.manipulator"/> <plugin id="org.eclipse.equinox.simpleconfigurator.manipulator"/>
<plugin id="org.eclipse.equinox.util"/> <plugin id="org.eclipse.equinox.util"/>
<plugin id="org.eclipse.help"/> <plugin id="org.eclipse.help"/>
<plugin id="org.eclipse.help.base"/> <plugin id="org.eclipse.help.base"/>
<plugin id="org.eclipse.help.ui"/> <plugin id="org.eclipse.help.ui"/>
<plugin id="org.eclipse.help.webapp"/> <plugin id="org.eclipse.help.webapp"/>
<plugin id="org.eclipse.jetty.http"/> <plugin id="org.eclipse.jetty.http"/>
<plugin id="org.eclipse.jetty.io"/> <plugin id="org.eclipse.jetty.io"/>
<plugin id="org.eclipse.jetty.security"/> <plugin id="org.eclipse.jetty.security"/>
<plugin id="org.eclipse.jetty.server"/> <plugin id="org.eclipse.jetty.server"/>
<plugin id="org.eclipse.jetty.servlet"/> <plugin id="org.eclipse.jetty.servlet"/>
<plugin id="org.eclipse.jetty.util"/> <plugin id="org.eclipse.jetty.util"/>
<plugin id="org.eclipse.jface"/> <plugin id="org.eclipse.jface"/>
<plugin id="org.eclipse.jface.databinding"/> <plugin id="org.eclipse.jface.databinding"/>
<plugin id="org.eclipse.jface.text"/> <plugin id="org.eclipse.jface.text"/>
<plugin id="org.eclipse.launchbar.core"/> <plugin id="org.eclipse.launchbar.core"/>
<plugin id="org.eclipse.launchbar.ui"/> <plugin id="org.eclipse.launchbar.ui"/>
<plugin id="org.eclipse.ltk.core.refactoring"/> <plugin id="org.eclipse.ltk.core.refactoring"/>
<plugin id="org.eclipse.ltk.ui.refactoring"/> <plugin id="org.eclipse.ltk.ui.refactoring"/>
<plugin id="org.eclipse.osgi"/> <plugin id="org.eclipse.osgi"/>
<plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/> <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
<plugin id="org.eclipse.osgi.services"/> <plugin id="org.eclipse.osgi.services"/>
<plugin id="org.eclipse.osgi.util"/> <plugin id="org.eclipse.osgi.util"/>
<plugin id="org.eclipse.search"/> <plugin id="org.eclipse.search"/>
<plugin id="org.eclipse.swt"/> <plugin id="org.eclipse.swt"/>
<plugin id="org.eclipse.swt.cocoa.macosx.x86_64" fragment="true"/> <plugin id="org.eclipse.swt.cocoa.macosx.x86_64" fragment="true"/>
<plugin id="org.eclipse.swt.gtk.linux.x86" fragment="true"/> <plugin id="org.eclipse.swt.gtk.linux.x86" fragment="true"/>
<plugin id="org.eclipse.swt.gtk.linux.x86_64" fragment="true"/> <plugin id="org.eclipse.swt.gtk.linux.x86_64" fragment="true"/>
<plugin id="org.eclipse.swt.win32.win32.x86" fragment="true"/> <plugin id="org.eclipse.swt.win32.win32.x86" fragment="true"/>
<plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/> <plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/>
<plugin id="org.eclipse.team.core"/> <plugin id="org.eclipse.team.core"/>
<plugin id="org.eclipse.team.ui"/> <plugin id="org.eclipse.team.ui"/>
<plugin id="org.eclipse.text"/> <plugin id="org.eclipse.text"/>
<plugin id="org.eclipse.tm.terminal.control"/> <plugin id="org.eclipse.tm.terminal.control"/>
<plugin id="org.eclipse.tools.templates.core"/> <plugin id="org.eclipse.tools.templates.core"/>
<plugin id="org.eclipse.tools.templates.ui"/> <plugin id="org.eclipse.tools.templates.freemarker"/>
<plugin id="org.eclipse.ui"/> <plugin id="org.eclipse.tools.templates.ui"/>
<plugin id="org.eclipse.ui.cocoa" fragment="true"/> <plugin id="org.eclipse.ui"/>
<plugin id="org.eclipse.ui.console"/> <plugin id="org.eclipse.ui.cocoa" fragment="true"/>
<plugin id="org.eclipse.ui.editors"/> <plugin id="org.eclipse.ui.console"/>
<plugin id="org.eclipse.ui.forms"/> <plugin id="org.eclipse.ui.editors"/>
<plugin id="org.eclipse.ui.ide"/> <plugin id="org.eclipse.ui.forms"/>
<plugin id="org.eclipse.ui.navigator"/> <plugin id="org.eclipse.ui.ide"/>
<plugin id="org.eclipse.ui.navigator.resources"/> <plugin id="org.eclipse.ui.navigator"/>
<plugin id="org.eclipse.ui.net"/> <plugin id="org.eclipse.ui.navigator.resources"/>
<plugin id="org.eclipse.ui.themes"/> <plugin id="org.eclipse.ui.net"/>
<plugin id="org.eclipse.ui.views"/> <plugin id="org.eclipse.ui.themes"/>
<plugin id="org.eclipse.ui.views.log"/> <plugin id="org.eclipse.ui.views"/>
<plugin id="org.eclipse.ui.views.properties.tabbed"/> <plugin id="org.eclipse.ui.views.log"/>
<plugin id="org.eclipse.ui.workbench"/> <plugin id="org.eclipse.ui.views.properties.tabbed"/>
<plugin id="org.eclipse.ui.workbench.texteditor"/> <plugin id="org.eclipse.ui.workbench"/>
<plugin id="org.eclipse.update.configurator"/> <plugin id="org.eclipse.ui.workbench.texteditor"/>
<plugin id="org.sat4j.core"/> <plugin id="org.eclipse.update.configurator"/>
<plugin id="org.sat4j.pb"/> <plugin id="org.freemarker"/>
<plugin id="org.tukaani.xz"/> <plugin id="org.sat4j.core"/>
<plugin id="org.w3c.css.sac"/> <plugin id="org.sat4j.pb"/>
<plugin id="org.w3c.dom.events"/> <plugin id="org.tukaani.xz"/>
<plugin id="org.w3c.dom.smil"/> <plugin id="org.w3c.css.sac"/>
<plugin id="org.w3c.dom.svg"/> <plugin id="org.w3c.dom.events"/>
</plugins> <plugin id="org.w3c.dom.smil"/>
<plugin id="org.w3c.dom.svg"/>
<configurations> </plugins>
<plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="4" />
<plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" /> <configurations>
<plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" /> <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="4" />
<plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" /> <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" /> <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" /> <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.update.configurator" autoStart="true" startLevel="3" /> <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
</configurations> <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
<plugin id="org.eclipse.update.configurator" autoStart="true" startLevel="3" />
<repositories> </configurations>
<repository location="http://download.eclipse.org/tools/cdt/builds/master/nightly/rcp-repository" enabled="true" />
</repositories> <repositories>
<repository location="http://download.eclipse.org/tools/cdt/builds/master/nightly/rcp-repository" enabled="true" />
<preferencesInfo> </repositories>
<targetfile overwrite="false"/>
</preferencesInfo> <preferencesInfo>
<targetfile overwrite="false"/>
<cssInfo> </preferencesInfo>
</cssInfo>
<cssInfo>
</product> </cssInfo>
</product>