mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-24 01:15:29 +02:00
Large commit. Two components. The first is to switch all the managed build components over to the new plugin loading scheme. The second is to remove the dependency between the indexer and the build system for dependency calculation. Currently, to make this work, there is a flag that is only available on the 3.x GCC compilers, but I will be addressing that shortly.
This commit is contained in:
parent
5b75216401
commit
d03b0f48a0
25 changed files with 1939 additions and 1485 deletions
|
@ -6,12 +6,11 @@
|
|||
version="1.0.0">
|
||||
|
||||
<requires>
|
||||
<import plugin="org.eclipse.core.runtime.compatibility"/>
|
||||
<import plugin="org.eclipse.core.runtime"/>
|
||||
<import plugin="org.junit"/>
|
||||
<import plugin="org.eclipse.cdt.managedbuilder.core"/>
|
||||
<import plugin="org.eclipse.cdt.core"/>
|
||||
<import plugin="org.eclipse.cdt.make.core"/>
|
||||
<import plugin="org.eclipse.cdt.core.tests"/>
|
||||
<import plugin="org.eclipse.core.resources"/>
|
||||
</requires>
|
||||
|
||||
|
|
|
@ -46,7 +46,6 @@ import org.eclipse.cdt.managedbuilder.core.IToolReference;
|
|||
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
||||
import org.eclipse.cdt.managedbuilder.core.ManagedCProjectNature;
|
||||
import org.eclipse.cdt.managedbuilder.internal.core.OptionReference;
|
||||
import org.eclipse.cdt.testplugin.FileManager;
|
||||
import org.eclipse.core.resources.IFile;
|
||||
import org.eclipse.core.resources.IFolder;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
|
@ -1435,8 +1434,6 @@ public class ManagedBuildCoreTests extends TestCase {
|
|||
public void testBug43450 () throws Exception{
|
||||
IProject project = createProject( projectName );
|
||||
|
||||
FileManager fileManager = new FileManager();
|
||||
|
||||
IFolder folder = project.getProject().getFolder( "includes" );
|
||||
if( !folder.exists() ){
|
||||
folder.create( false, true, null );
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<requires>
|
||||
<import plugin="org.eclipse.cdt.core"/>
|
||||
<import plugin="org.eclipse.core.resources"/>
|
||||
<import plugin="org.eclipse.core.runtime.compatibility"/>
|
||||
<import plugin="org.eclipse.core.runtime"/>
|
||||
<import plugin="org.eclipse.cdt.make.core"/>
|
||||
</requires>
|
||||
|
||||
|
|
|
@ -109,7 +109,7 @@
|
|||
This is an optional field that specifies the class that provides the dependency calculation for a given tool. This field is unused in CDT 1.2.
|
||||
</documentation>
|
||||
<appInfo>
|
||||
<meta.attribute kind="java" basedOn="org.eclipse.cdt.internal.core.sourcedependency.ISourceDependency"/>
|
||||
<meta.attribute kind="java" basedOn="org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderDependencyCalculator"/>
|
||||
</appInfo>
|
||||
</annotation>
|
||||
</attribute>
|
||||
|
@ -239,6 +239,16 @@ Additional special types exist to flag options of special relevance to the build
|
|||
</restriction>
|
||||
</simpleType>
|
||||
</attribute>
|
||||
<attribute name="helpSupplier" type="string">
|
||||
<annotation>
|
||||
<documentation>
|
||||
|
||||
</documentation>
|
||||
<appInfo>
|
||||
<meta.attribute kind="java"/>
|
||||
</appInfo>
|
||||
</annotation>
|
||||
</attribute>
|
||||
</complexType>
|
||||
</element>
|
||||
|
||||
|
@ -393,7 +403,7 @@ Additional special types exist to flag options of special relevance to the build
|
|||
<element name="target">
|
||||
<annotation>
|
||||
<documentation>
|
||||
Represents a type of resource that is the target of the build process, for example, a Linux Library. A target contains a sequence of tool definitions and configurations. Targets are arranged in an inheritance hierarchy where a target inherits the list of tools from it's parent and can add to or override tools in this list.
|
||||
Represents a type of resource that is the target of the build process, for example, a Linux static library. A target contains a sequence of tool definitions and configurations. Targets are arranged in an inheritance hierarchy where a target inherits the list of tools from it's parent and can add to or override tools in this list.
|
||||
</documentation>
|
||||
</annotation>
|
||||
<complexType>
|
||||
|
@ -510,6 +520,16 @@ Additional special types exist to flag options of special relevance to the build
|
|||
</appInfo>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="makefileGenerator" type="string">
|
||||
<annotation>
|
||||
<documentation>
|
||||
|
||||
</documentation>
|
||||
<appInfo>
|
||||
<meta.attribute kind="java" basedOn="org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator"/>
|
||||
</appInfo>
|
||||
</annotation>
|
||||
</attribute>
|
||||
</complexType>
|
||||
</element>
|
||||
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
**********************************************************************/
|
||||
package org.eclipse.cdt.managedbuilder.core;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
@ -41,6 +43,14 @@ public interface ITool extends IBuildObject {
|
|||
*/
|
||||
public boolean buildsFileType(String extension);
|
||||
|
||||
/**
|
||||
* Answers the list of valid source extensions the receiver know how to build.
|
||||
* The list may be empty but will never be <code>null</code>.
|
||||
*
|
||||
* @return List
|
||||
*/
|
||||
public List getInputExtensions();
|
||||
|
||||
/**
|
||||
* Answers a constant corresponding to the project nature the tool should be used
|
||||
* for. Possible answers are:
|
||||
|
|
|
@ -41,8 +41,11 @@ import org.eclipse.cdt.core.parser.IScannerInfoProvider;
|
|||
import org.eclipse.cdt.managedbuilder.internal.core.Configuration;
|
||||
import org.eclipse.cdt.managedbuilder.internal.core.DefaultManagedConfigElement;
|
||||
import org.eclipse.cdt.managedbuilder.internal.core.ManagedBuildInfo;
|
||||
import org.eclipse.cdt.managedbuilder.internal.core.ManagedMakeMessages;
|
||||
import org.eclipse.cdt.managedbuilder.internal.core.Target;
|
||||
import org.eclipse.cdt.managedbuilder.internal.core.Tool;
|
||||
import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator;
|
||||
import org.eclipse.cdt.managedbuilder.scannerconfig.IManagedScannerInfoCollector;
|
||||
import org.eclipse.core.resources.IFile;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
|
@ -50,7 +53,8 @@ import org.eclipse.core.runtime.CoreException;
|
|||
import org.eclipse.core.runtime.IConfigurationElement;
|
||||
import org.eclipse.core.runtime.IExtension;
|
||||
import org.eclipse.core.runtime.IExtensionPoint;
|
||||
import org.eclipse.core.runtime.IPluginDescriptor;
|
||||
import org.eclipse.core.runtime.IExtensionRegistry;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.core.runtime.PluginVersionIdentifier;
|
||||
import org.eclipse.core.runtime.QualifiedName;
|
||||
import org.w3c.dom.Document;
|
||||
|
@ -69,8 +73,8 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI
|
|||
private static final String ROOT_NODE_NAME = "ManagedProjectBuildInfo"; //$NON-NLS-1$
|
||||
public static final String SETTINGS_FILE_NAME = ".cdtbuild"; //$NON-NLS-1$
|
||||
private static final ITarget[] emptyTargets = new ITarget[0];
|
||||
public static final String INTERFACE_IDENTITY = ManagedBuilderCorePlugin.getUniqueIdentifier() + "." + "ManagedBuildManager"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
public static final String EXTENSION_POINT_ID = "ManagedBuildInfo"; //$NON-NLS-1$
|
||||
public static final String INTERFACE_IDENTITY = ManagedBuilderCorePlugin.getUniqueIdentifier() + ".ManagedBuildManager"; //$NON-NLS-1$
|
||||
public static final String EXTENSION_POINT_ID = ManagedBuilderCorePlugin.getUniqueIdentifier() + ".ManagedBuildInfo"; //$NON-NLS-1$
|
||||
private static final String REVISION_ELEMENT_NAME = "managedBuildRevision"; //$NON-NLS-1$
|
||||
private static final String VERSION_ELEMENT_NAME = "fileVersion"; //$NON-NLS-1$
|
||||
private static final String MANIFEST_VERSION_ERROR ="ManagedBuildManager.error.manifest.version.error"; //$NON-NLS-1$
|
||||
|
@ -236,7 +240,73 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI
|
|||
info.setSelectedTarget(target);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static IManagedBuilderMakefileGenerator getMakefileGenerator(String targetId) {
|
||||
try {
|
||||
IExtensionRegistry registry = Platform.getExtensionRegistry();
|
||||
IExtensionPoint extension = registry.getExtensionPoint(EXTENSION_POINT_ID);
|
||||
if (extension != null) {
|
||||
// There could be many of these
|
||||
IExtension[] extensions = extension.getExtensions();
|
||||
for (int i = 0; i < extensions.length; i++) {
|
||||
IConfigurationElement[] configElements = extensions[i].getConfigurationElements();
|
||||
for (int j = 0; j < configElements.length; j++) {
|
||||
IConfigurationElement element = configElements[j];
|
||||
if (element.getName().equals(ITarget.TARGET_ELEMENT_NAME)) {
|
||||
if (element.getAttribute(ITarget.ID).equals(targetId)) {
|
||||
if (element.getAttribute(ManagedBuilderCorePlugin.MAKEGEN_ID) != null) {
|
||||
return (IManagedBuilderMakefileGenerator) element.createExecutableExtension(ManagedBuilderCorePlugin.MAKEGEN_ID);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (CoreException e) {
|
||||
// Probably not defined
|
||||
ManagedBuilderCorePlugin.log(e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Targets may have a scanner collector defined that knows how to discover
|
||||
* built-in compiler defines and includes search paths. Find the scanner
|
||||
* collector implentation for the target specified.
|
||||
*
|
||||
* @param string the unique id of the target to search for
|
||||
* @return an implementation of <code>IManagedScannerInfoCollector</code>
|
||||
*/
|
||||
public static IManagedScannerInfoCollector getScannerInfoCollector(String targetId) {
|
||||
try {
|
||||
IExtensionRegistry registry = Platform.getExtensionRegistry();
|
||||
IExtensionPoint extension = registry.getExtensionPoint(EXTENSION_POINT_ID);
|
||||
if (extension != null) {
|
||||
// There could be many of these
|
||||
IExtension[] extensions = extension.getExtensions();
|
||||
for (int i = 0; i < extensions.length; i++) {
|
||||
IConfigurationElement[] configElements = extensions[i].getConfigurationElements();
|
||||
for (int j = 0; j < configElements.length; j++) {
|
||||
IConfigurationElement element = configElements[j];
|
||||
if (element.getName().equals(ITarget.TARGET_ELEMENT_NAME)) {
|
||||
if (element.getAttribute(ITarget.ID).equals(targetId)) {
|
||||
if (element.getAttribute(ManagedBuilderCorePlugin.SCANNER_INFO_ID) != null) {
|
||||
return (IManagedScannerInfoCollector) element.createExecutableExtension(ManagedBuilderCorePlugin.SCANNER_INFO_ID);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (CoreException e) {
|
||||
// Probably not defined
|
||||
ManagedBuilderCorePlugin.log(e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the currently selected target. This is used while the project
|
||||
* property pages are displayed
|
||||
|
@ -352,6 +422,7 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Saves the build information associated with a project and all resources
|
||||
* in the project to the build info file.
|
||||
|
@ -501,13 +572,13 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI
|
|||
if (resource instanceof IProject) {
|
||||
// Must be an extension target (why?)
|
||||
if (owner != null)
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("ManagedBuildManager.error.owner_not_null")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("ManagedBuildManager.error.owner_not_null")); //$NON-NLS-1$
|
||||
} else {
|
||||
// Owner must be owned by the project containing this resource
|
||||
if (owner == null)
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("ManagedBuildManager.error.null_owner")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("ManagedBuildManager.error.null_owner")); //$NON-NLS-1$
|
||||
if (!owner.equals(resource.getProject()))
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("ManagedBuildManager.error.owner_not_project")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("ManagedBuildManager.error.owner_not_project")); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
// Passed validation so create the target.
|
||||
|
@ -566,7 +637,7 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI
|
|||
fileVersion = rootElement.getNodeValue();
|
||||
PluginVersionIdentifier version = new PluginVersionIdentifier(fileVersion);
|
||||
if (!buildInfoVersion.isCompatibleWith(version)) {
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString(PROJECT_VERSION_ERROR));
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString(PROJECT_VERSION_ERROR));
|
||||
}
|
||||
if (buildInfoVersion.isGreaterThan(version)) {
|
||||
// TODO Upgrade the project
|
||||
|
@ -599,8 +670,7 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI
|
|||
return;
|
||||
|
||||
// Get those extensions
|
||||
IPluginDescriptor descriptor = ManagedBuilderCorePlugin.getDefault().getDescriptor();
|
||||
IExtensionPoint extensionPoint = descriptor.getExtensionPoint(EXTENSION_POINT_ID);
|
||||
IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(EXTENSION_POINT_ID);
|
||||
IExtension[] extensions = extensionPoint.getExtensions();
|
||||
|
||||
// First call the constructors
|
||||
|
@ -609,7 +679,7 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI
|
|||
// Can we read this manifest
|
||||
if (!isVersionCompatible(extension)) {
|
||||
//The version of the Plug-in is greater than what the manager thinks it understands
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString(MANIFEST_VERSION_ERROR));
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString(MANIFEST_VERSION_ERROR));
|
||||
}
|
||||
IConfigurationElement[] elements = extension.getConfigurationElements();
|
||||
loadConfigElements(DefaultManagedConfigElement.convertArray(elements));
|
||||
|
|
|
@ -11,38 +11,44 @@ package org.eclipse.cdt.managedbuilder.core;
|
|||
* IBM Rational Software - Initial API and implementation
|
||||
* **********************************************************************/
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.MissingResourceException;
|
||||
import java.util.ResourceBundle;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
import org.eclipse.cdt.managedbuilder.scannerconfig.IManagedScannerInfoCollector;
|
||||
import org.eclipse.core.resources.ResourcesPlugin;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IConfigurationElement;
|
||||
import org.eclipse.core.runtime.IExtension;
|
||||
import org.eclipse.core.runtime.IExtensionPoint;
|
||||
import org.eclipse.core.runtime.IPluginDescriptor;
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.core.runtime.Plugin;
|
||||
import org.eclipse.core.runtime.Status;
|
||||
|
||||
|
||||
public class ManagedBuilderCorePlugin extends Plugin {
|
||||
private static final String PLUGIN_ID = "org.eclipse.cdt.managedbuilder.core"; //$NON-NLS-1$
|
||||
// The attribute name for the dependency calculator
|
||||
public static final String DEP_CALC_ID ="dependencyCalculator"; //$NON-NLS-1$
|
||||
//The shared instance.
|
||||
private static ManagedBuilderCorePlugin plugin;
|
||||
//Resource bundle.
|
||||
private static ResourceBundle resourceBundle;
|
||||
|
||||
// The attribute name for the scanner info collector
|
||||
public static final String SCANNER_INFO_ID = "scannerInfoCollector"; //$NON-NLS-1$
|
||||
// The attribute name for the makefile generator
|
||||
public static final String MAKEGEN_ID ="makefileGenerator"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* @param descriptor
|
||||
*/
|
||||
public ManagedBuilderCorePlugin(IPluginDescriptor descriptor) {
|
||||
super(descriptor);
|
||||
public ManagedBuilderCorePlugin() {
|
||||
super();
|
||||
plugin = this;
|
||||
try {
|
||||
resourceBundle = ResourceBundle.getBundle("org.eclipse.cdt.managedbuilder.internal.core.PluginResources"); //$NON-NLS-1$
|
||||
} catch (MissingResourceException x) {
|
||||
resourceBundle = null;
|
||||
}
|
||||
}
|
||||
|
||||
public static String getUniqueIdentifier() {
|
||||
if (getDefault() == null) {
|
||||
// If the default instance is not yet initialized,
|
||||
// return a static identifier. This identifier must
|
||||
// match the plugin id defined in plugin.xml
|
||||
return PLUGIN_ID;
|
||||
}
|
||||
return getDefault().getBundle().getSymbolicName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the shared instance.
|
||||
*/
|
||||
|
@ -50,69 +56,19 @@ public class ManagedBuilderCorePlugin extends Plugin {
|
|||
return plugin;
|
||||
}
|
||||
|
||||
|
||||
public static String getResourceString(String key) {
|
||||
try {
|
||||
return resourceBundle.getString(key);
|
||||
} catch (MissingResourceException e) {
|
||||
return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
} catch (NullPointerException e) {
|
||||
return "#" + key + "#"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
}
|
||||
public static void log(Throwable e) {
|
||||
if (e instanceof InvocationTargetException)
|
||||
e = ((InvocationTargetException) e).getTargetException();
|
||||
IStatus status = null;
|
||||
if (e instanceof CoreException)
|
||||
status = ((CoreException) e).getStatus();
|
||||
else
|
||||
status = new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.OK, e.getMessage(), e);
|
||||
log(status);
|
||||
}
|
||||
|
||||
public static String getFormattedString(String key, String arg) {
|
||||
return MessageFormat.format(getResourceString(key), new String[] { arg });
|
||||
}
|
||||
|
||||
public static String getFormattedString(String key, String[] args) {
|
||||
return MessageFormat.format(getResourceString(key), args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method which returns the unique identifier of this plugin.
|
||||
*/
|
||||
public static String getUniqueIdentifier() {
|
||||
if (getDefault() == null) {
|
||||
// If the default instance is not yet initialized,
|
||||
// return a static identifier. This identifier must
|
||||
// match the plugin id defined in plugin.xml
|
||||
return "org.eclipse.cdt.managedbuilder.core"; //$NON-NLS-1$
|
||||
}
|
||||
return getDefault().getDescriptor().getUniqueIdentifier();
|
||||
}
|
||||
|
||||
/**
|
||||
* Targets may have a scanner collector defined that knows how to discover
|
||||
* built-in compiler defines and includes search paths. Find the scanner
|
||||
* collector implentation for the target specified.
|
||||
*
|
||||
* @param string the unique id of the target to search for
|
||||
* @return an implementation of <code>IManagedScannerInfoCollector</code>
|
||||
*/
|
||||
public IManagedScannerInfoCollector getScannerInfoCollector(String targetId) {
|
||||
try {
|
||||
IExtensionPoint extension = getDescriptor().getExtensionPoint(ManagedBuildManager.EXTENSION_POINT_ID);
|
||||
if (extension != null) {
|
||||
// There could be many of these
|
||||
IExtension[] extensions = extension.getExtensions();
|
||||
for (int i = 0; i < extensions.length; i++) {
|
||||
IConfigurationElement[] configElements = extensions[i].getConfigurationElements();
|
||||
for (int j = 0; j < configElements.length; j++) {
|
||||
IConfigurationElement element = configElements[j];
|
||||
if (element.getName().equals("target")) { //$NON-NLS-1$
|
||||
if (element.getAttribute(ITarget.ID).equals(targetId)) {
|
||||
return (IManagedScannerInfoCollector) element.createExecutableExtension("scannerInfoCollector"); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (CoreException e) {
|
||||
// Probably not defined
|
||||
}
|
||||
return null;
|
||||
public static void log(IStatus status) {
|
||||
ResourcesPlugin.getPlugin().getLog().log(status);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -21,8 +21,8 @@ import org.eclipse.core.resources.IProject;
|
|||
import org.eclipse.core.resources.IProjectDescription;
|
||||
import org.eclipse.core.resources.IProjectNature;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IPluginDescriptor;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.core.runtime.Plugin;
|
||||
|
||||
public class ManagedCProjectNature implements IProjectNature {
|
||||
|
@ -110,9 +110,8 @@ public class ManagedCProjectNature implements IProjectNature {
|
|||
*/
|
||||
public static String getBuilderID() {
|
||||
Plugin plugin = (Plugin)ManagedBuilderCorePlugin.getDefault();
|
||||
IPluginDescriptor descriptor = plugin.getDescriptor();
|
||||
if (descriptor.getExtension(BUILDER_NAME) != null) {
|
||||
return descriptor.getUniqueIdentifier() + "." + BUILDER_NAME; //$NON-NLS-1$
|
||||
if (Platform.getExtensionRegistry().getExtension(BUILDER_NAME) != null) {
|
||||
return ManagedBuilderCorePlugin.getUniqueIdentifier() + "." + BUILDER_NAME; //$NON-NLS-1$
|
||||
}
|
||||
return BUILDER_ID;
|
||||
}
|
||||
|
|
|
@ -28,8 +28,11 @@ import org.eclipse.cdt.core.model.ICModelMarker;
|
|||
import org.eclipse.cdt.core.resources.ACBuilder;
|
||||
import org.eclipse.cdt.core.resources.IConsole;
|
||||
import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
|
||||
import org.eclipse.cdt.managedbuilder.core.ITool;
|
||||
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
||||
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
|
||||
import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderDependencyCalculator;
|
||||
import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator;
|
||||
import org.eclipse.core.resources.IMarker;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
|
@ -39,11 +42,15 @@ import org.eclipse.core.resources.IWorkspace;
|
|||
import org.eclipse.core.resources.IWorkspaceRoot;
|
||||
import org.eclipse.core.resources.IncrementalProjectBuilder;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IConfigurationElement;
|
||||
import org.eclipse.core.runtime.IExtension;
|
||||
import org.eclipse.core.runtime.IExtensionPoint;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.core.runtime.OperationCanceledException;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.core.runtime.SubProgressMonitor;
|
||||
|
||||
public class GeneratedMakefileBuilder extends ACBuilder {
|
||||
|
@ -65,7 +72,7 @@ public class GeneratedMakefileBuilder extends ACBuilder {
|
|||
// Local variables
|
||||
protected List resourcesToBuild;
|
||||
protected List ruleList;
|
||||
|
||||
protected IManagedBuilderMakefileGenerator generator;
|
||||
|
||||
public class ResourceDeltaVisitor implements IResourceDeltaVisitor {
|
||||
private boolean buildNeeded = false;
|
||||
|
@ -96,7 +103,7 @@ public class GeneratedMakefileBuilder extends ACBuilder {
|
|||
* @see org.eclipse.core.internal.events.InternalBuilder#build(int, java.util.Map, org.eclipse.core.runtime.IProgressMonitor)
|
||||
*/
|
||||
protected IProject[] build(int kind, Map args, IProgressMonitor monitor) throws CoreException {
|
||||
String statusMsg = ManagedBuilderCorePlugin.getFormattedString(START, getProject().getName());
|
||||
String statusMsg = ManagedMakeMessages.getFormattedString(START, getProject().getName());
|
||||
IProject[] deps = getProject().getReferencedProjects();
|
||||
if (statusMsg != null) {
|
||||
monitor.subTask(statusMsg);
|
||||
|
@ -171,7 +178,9 @@ public class GeneratedMakefileBuilder extends ACBuilder {
|
|||
IProject depProject = deps[i];
|
||||
if (ManagedBuildManager.manages(depProject)) {
|
||||
IManagedBuildInfo depInfo = ManagedBuildManager.getBuildInfo(depProject);
|
||||
MakefileGenerator generator = new MakefileGenerator(depProject, depInfo, monitor);
|
||||
String targetID = depInfo.getDefaultTarget().getParent().getId();
|
||||
IManagedBuilderMakefileGenerator generator = ManagedBuildManager.getMakefileGenerator(targetID);
|
||||
generator.initialize(depProject, depInfo, monitor);
|
||||
try {
|
||||
generator.regenerateMakefiles();
|
||||
} catch (CoreException e) {
|
||||
|
@ -182,11 +191,13 @@ public class GeneratedMakefileBuilder extends ACBuilder {
|
|||
}
|
||||
|
||||
// Need to report status to the user
|
||||
String statusMsg = ManagedBuilderCorePlugin.getFormattedString(REBUILD, getProject().getName());
|
||||
String statusMsg = ManagedMakeMessages.getFormattedString(REBUILD, getProject().getName());
|
||||
monitor.subTask(statusMsg);
|
||||
|
||||
// Regenerate the makefiles for this project
|
||||
MakefileGenerator generator = new MakefileGenerator(getProject(), info, monitor);
|
||||
String targetID = info.getDefaultTarget().getParent().getId();
|
||||
generator = ManagedBuildManager.getMakefileGenerator(targetID);
|
||||
generator.initialize(getProject(), info, monitor);
|
||||
try {
|
||||
generator.regenerateMakefiles();
|
||||
} catch (CoreException e) {
|
||||
|
@ -195,14 +206,53 @@ public class GeneratedMakefileBuilder extends ACBuilder {
|
|||
}
|
||||
|
||||
// Now call make
|
||||
IPath topBuildDir = generator.getTopBuildDir();
|
||||
IPath topBuildDir = generator.getBuildWorkingDir();
|
||||
if (topBuildDir != null) {
|
||||
invokeMake(true, topBuildDir.removeFirstSegments(1), info, monitor);
|
||||
invokeMake(true, topBuildDir, info, monitor);
|
||||
} else {
|
||||
monitor.done();
|
||||
}
|
||||
|
||||
// Now regenerate the dependencies
|
||||
try {
|
||||
generator.regenerateDependencies(false);
|
||||
} catch (CoreException e) {
|
||||
// Throw the exception back to the builder
|
||||
throw e;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param toolId
|
||||
* @return
|
||||
*/
|
||||
public IManagedBuilderDependencyCalculator getDependencyCalculator(String toolId) {
|
||||
try {
|
||||
IExtensionPoint extension = Platform.getExtensionRegistry().getExtensionPoint(ManagedBuilderCorePlugin.getUniqueIdentifier(), ManagedBuilderCorePlugin.DEP_CALC_ID);
|
||||
if (extension != null) {
|
||||
// There could be many of these
|
||||
IExtension[] extensions = extension.getExtensions();
|
||||
for (int i = 0; i < extensions.length; i++) {
|
||||
IConfigurationElement[] configElements = extensions[i].getConfigurationElements();
|
||||
for (int j = 0; j < configElements.length; j++) {
|
||||
IConfigurationElement element = configElements[j];
|
||||
if (element.getName().equals(ITool.TOOL_ELEMENT_NAME)) {
|
||||
if (element.getAttribute(ITool.ID).equals(toolId)) {
|
||||
if (element.getAttribute(ManagedBuilderCorePlugin.DEP_CALC_ID) != null) {
|
||||
return (IManagedBuilderDependencyCalculator) element.createExecutableExtension(ManagedBuilderCorePlugin.DEP_CALC_ID);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (CoreException e) {
|
||||
// Probably not defined
|
||||
}
|
||||
return null;
|
||||
}
|
||||
/* (non-javadoc)
|
||||
* Answers an array of strings with the proper make targets
|
||||
*
|
||||
|
@ -262,7 +312,7 @@ public class GeneratedMakefileBuilder extends ACBuilder {
|
|||
if (monitor == null) {
|
||||
monitor = new NullProgressMonitor();
|
||||
}
|
||||
statusMsg = ManagedBuilderCorePlugin.getFormattedString(INCREMENTAL, getProject().getName());
|
||||
statusMsg = ManagedMakeMessages.getFormattedString(INCREMENTAL, getProject().getName());
|
||||
monitor.subTask(statusMsg);
|
||||
|
||||
// Regenerate the makefiles for any managed projects this project depends on
|
||||
|
@ -271,7 +321,9 @@ public class GeneratedMakefileBuilder extends ACBuilder {
|
|||
IProject depProject = deps[i];
|
||||
if (ManagedBuildManager.manages(depProject)) {
|
||||
IManagedBuildInfo depInfo = ManagedBuildManager.getBuildInfo(depProject);
|
||||
MakefileGenerator generator = new MakefileGenerator(depProject, depInfo, monitor);
|
||||
String targetID = depInfo.getDefaultTarget().getParent().getId();
|
||||
IManagedBuilderMakefileGenerator generator = ManagedBuildManager.getMakefileGenerator(targetID);
|
||||
generator.initialize(depProject, depInfo, monitor);
|
||||
try {
|
||||
generator.regenerateMakefiles();
|
||||
} catch (CoreException e) {
|
||||
|
@ -282,7 +334,9 @@ public class GeneratedMakefileBuilder extends ACBuilder {
|
|||
}
|
||||
|
||||
// Ask the makefile generator to generate any makefiles needed to build delta
|
||||
MakefileGenerator generator = new MakefileGenerator(getProject(), info, monitor);
|
||||
String targetID = info.getDefaultTarget().getParent().getId();
|
||||
generator = ManagedBuildManager.getMakefileGenerator(targetID);
|
||||
generator.initialize(getProject(), info, monitor);
|
||||
try {
|
||||
generator.generateMakefiles(delta);
|
||||
} catch (CoreException e) {
|
||||
|
@ -319,7 +373,7 @@ public class GeneratedMakefileBuilder extends ACBuilder {
|
|||
if (root == null) {
|
||||
return;
|
||||
}
|
||||
IPath makefile = workingDirectory.addTrailingSeparator().append(MakefileGenerator.MAKEFILE_NAME);
|
||||
IPath makefile = workingDirectory.addTrailingSeparator().append(generator.getMakefileName());
|
||||
if (root.getFileForLocation(makefile) == null) {
|
||||
return;
|
||||
}
|
||||
|
@ -330,7 +384,7 @@ public class GeneratedMakefileBuilder extends ACBuilder {
|
|||
String[] msgs = new String[2];
|
||||
msgs[0] = makeCommand.toString();
|
||||
msgs[1] = currentProject.getName();
|
||||
monitor.beginTask(ManagedBuilderCorePlugin.getFormattedString(MAKE, msgs), IProgressMonitor.UNKNOWN);
|
||||
monitor.beginTask(ManagedMakeMessages.getFormattedString(MAKE, msgs), IProgressMonitor.UNKNOWN);
|
||||
|
||||
// Get a build console for the project
|
||||
StringBuffer buf = new StringBuffer();
|
||||
|
@ -339,14 +393,14 @@ public class GeneratedMakefileBuilder extends ACBuilder {
|
|||
ConsoleOutputStream consoleOutStream = console.getOutputStream();
|
||||
String[] consoleHeader = new String[3];
|
||||
consoleHeader[0] = fullBuild ?
|
||||
ManagedBuilderCorePlugin.getResourceString(TYPE_FULL) :
|
||||
ManagedBuilderCorePlugin.getResourceString(TYPE_INC);
|
||||
ManagedMakeMessages.getResourceString(TYPE_FULL) :
|
||||
ManagedMakeMessages.getResourceString(TYPE_INC);
|
||||
consoleHeader[1] = info.getConfigurationName();
|
||||
consoleHeader[2] = currentProject.getName();
|
||||
buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$
|
||||
buf.append(ManagedBuilderCorePlugin.getFormattedString(CONSOLE_HEADER, consoleHeader));
|
||||
buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$
|
||||
buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$
|
||||
buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
buf.append(ManagedMakeMessages.getFormattedString(CONSOLE_HEADER, consoleHeader));
|
||||
buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
consoleOutStream.write(buf.toString().getBytes());
|
||||
consoleOutStream.flush();
|
||||
|
||||
|
@ -392,7 +446,7 @@ public class GeneratedMakefileBuilder extends ACBuilder {
|
|||
|
||||
// Hook up an error parser manager
|
||||
String[] errorParsers = info.getDefaultTarget().getErrorParserList();
|
||||
ErrorParserManager epm = new ErrorParserManager(getProject(), this, errorParsers);
|
||||
ErrorParserManager epm = new ErrorParserManager(getProject(), workingDirectory, this, errorParsers);
|
||||
epm.setOutputStream(consoleOutStream);
|
||||
OutputStream stdout = epm.getOutputStream();
|
||||
OutputStream stderr = epm.getOutputStream();
|
||||
|
@ -413,7 +467,7 @@ public class GeneratedMakefileBuilder extends ACBuilder {
|
|||
// Force a resync of the projects without allowing the user to cancel.
|
||||
// This is probably unkind, but short of this there is no way to insure
|
||||
// the UI is up-to-date with the build results
|
||||
monitor.subTask(ManagedBuilderCorePlugin.getResourceString(REFRESH));
|
||||
monitor.subTask(ManagedMakeMessages.getResourceString(REFRESH));
|
||||
try {
|
||||
currentProject.refreshLocal(IResource.DEPTH_INFINITE, null);
|
||||
for (int j = 0; j < deps.length; ++j) {
|
||||
|
@ -421,7 +475,7 @@ public class GeneratedMakefileBuilder extends ACBuilder {
|
|||
project.refreshLocal(IResource.DEPTH_INFINITE, null);
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
monitor.subTask(ManagedBuilderCorePlugin.getResourceString(REFRESH_ERROR));
|
||||
monitor.subTask(ManagedMakeMessages.getResourceString(REFRESH_ERROR));
|
||||
}
|
||||
} else {
|
||||
errMsg = launcher.getErrorMessage();
|
||||
|
@ -430,13 +484,13 @@ public class GeneratedMakefileBuilder extends ACBuilder {
|
|||
// Report either the success or failure of our mission
|
||||
buf = new StringBuffer();
|
||||
if (errMsg != null && errMsg.length() > 0) {
|
||||
String errorDesc = ManagedBuilderCorePlugin.getResourceString(BUILD_ERROR);
|
||||
String errorDesc = ManagedMakeMessages.getResourceString(BUILD_ERROR);
|
||||
buf.append(errorDesc);
|
||||
buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$//$NON-NLS-2$
|
||||
buf.append("(").append(errMsg).append(")"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
} else {
|
||||
// Report a successful build
|
||||
String successMsg = ManagedBuilderCorePlugin.getFormattedString(BUILD_FINISHED, currentProject.getName());
|
||||
String successMsg = ManagedMakeMessages.getFormattedString(BUILD_FINISHED, currentProject.getName());
|
||||
buf.append(successMsg);
|
||||
buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$//$NON-NLS-2$
|
||||
}
|
||||
|
@ -447,7 +501,7 @@ public class GeneratedMakefileBuilder extends ACBuilder {
|
|||
stdout.close();
|
||||
stderr.close();
|
||||
|
||||
monitor.subTask(ManagedBuilderCorePlugin.getResourceString(MARKERS));
|
||||
monitor.subTask(ManagedMakeMessages.getResourceString(MARKERS));
|
||||
epm.reportProblems();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -17,6 +17,7 @@ import java.util.HashMap;
|
|||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Vector;
|
||||
|
||||
import org.eclipse.cdt.core.CCProjectNature;
|
||||
import org.eclipse.cdt.core.CProjectNature;
|
||||
|
@ -41,9 +42,12 @@ import org.eclipse.core.resources.IProject;
|
|||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.core.runtime.QualifiedName;
|
||||
import org.eclipse.core.runtime.jobs.Job;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.NodeList;
|
||||
|
@ -92,10 +96,26 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
|
|||
cModelElement = CoreModel.getDefault().create(owner.getProject());
|
||||
|
||||
try {
|
||||
CoreModel.getDefault().setRawPathEntries(cModelElement, new IPathEntry[]{containerEntry}, new NullProgressMonitor());
|
||||
} catch (CModelException e1) {
|
||||
// TODO Auto-generated catch block
|
||||
e1.printStackTrace();
|
||||
IPathEntry[] entries = cModelElement.getRawPathEntries();
|
||||
if (entries.length > 0 && entries[0].equals(containerEntry)) {
|
||||
|
||||
} else {
|
||||
Job initJob = new Job("Initializing path container") {
|
||||
protected IStatus run(IProgressMonitor monitor) {
|
||||
try {
|
||||
// Set the raw path entries
|
||||
cModelElement.setRawPathEntries(new IPathEntry[]{containerEntry}, new NullProgressMonitor());
|
||||
} catch (CModelException e) {
|
||||
ManagedBuilderCorePlugin.log(e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
};
|
||||
initJob.schedule();
|
||||
}
|
||||
} catch (CModelException e) {
|
||||
ManagedBuilderCorePlugin.log(e);
|
||||
}
|
||||
|
||||
isDirty = false;
|
||||
|
@ -161,27 +181,11 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
|
|||
|
||||
// Check to see if there is a rule to build a file with this extension
|
||||
IConfiguration config = getDefaultConfiguration(getDefaultTarget());
|
||||
ITool[] tools = config.getTools();
|
||||
ITool[] tools = config.getFilteredTools(project);
|
||||
for (int index = 0; index < tools.length; index++) {
|
||||
ITool tool = tools[index];
|
||||
try {
|
||||
// Make sure the tool is right for the project
|
||||
switch (tool.getNatureFilter()) {
|
||||
case ITool.FILTER_C:
|
||||
if (project.hasNature(CProjectNature.C_NATURE_ID) && !project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
return tool.buildsFileType(srcExt);
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_CC:
|
||||
if (project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
return tool.buildsFileType(srcExt);
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_BOTH:
|
||||
return tool.buildsFileType(srcExt);
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
continue;
|
||||
if (tool != null && tool.buildsFileType(srcExt)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
@ -365,31 +369,14 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
|
|||
|
||||
// Get all the tools for the current config
|
||||
IConfiguration config = getDefaultConfiguration(getDefaultTarget());
|
||||
ITool[] tools = config.getTools();
|
||||
ITool[] tools = config.getFilteredTools(project);
|
||||
for (int index = 0; index < tools.length; index++) {
|
||||
ITool tool = tools[index];
|
||||
if (tool.buildsFileType(extension)) {
|
||||
if (tool != null && tool.buildsFileType(extension)) {
|
||||
try {
|
||||
// Make sure the tool is right for the project
|
||||
switch (tool.getNatureFilter()) {
|
||||
case ITool.FILTER_C:
|
||||
if (project.hasNature(CProjectNature.C_NATURE_ID) && !project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
return tool.getToolFlags();
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_CC:
|
||||
if (project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
return tool.getToolFlags();
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_BOTH:
|
||||
return tool.getToolFlags();
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
continue;
|
||||
return tool.getToolFlags();
|
||||
} catch (BuildException e) {
|
||||
// Give it your best shot with the next tool
|
||||
continue;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -406,31 +393,14 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
|
|||
|
||||
// Get all the tools for the current config
|
||||
IConfiguration config = getDefaultConfiguration(getDefaultTarget());
|
||||
ITool[] tools = config.getTools();
|
||||
ITool[] tools = config.getFilteredTools(project);
|
||||
for (int index = 0; index < tools.length; index++) {
|
||||
ITool tool = tools[index];
|
||||
if (tool.producesFileType(ext)) {
|
||||
try {
|
||||
// Make sure the tool is right for the project
|
||||
switch (tool.getNatureFilter()) {
|
||||
case ITool.FILTER_C:
|
||||
if (project.hasNature(CProjectNature.C_NATURE_ID) && !project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
return tool.getToolFlags();
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_CC:
|
||||
if (project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
return tool.getToolFlags();
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_BOTH:
|
||||
return tool.getToolFlags();
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
continue;
|
||||
return tool.getToolFlags();
|
||||
} catch (BuildException e) {
|
||||
// Give it your best shot with the next tool
|
||||
continue;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -534,32 +504,12 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
|
|||
public String[] getLibsForTarget(String extension) {
|
||||
IProject project = (IProject)owner;
|
||||
|
||||
ArrayList libs = new ArrayList();
|
||||
Vector libs = new Vector();
|
||||
// Get all the tools for the current config
|
||||
IConfiguration config = getDefaultConfiguration(getDefaultTarget());
|
||||
ITool[] tools = config.getTools();
|
||||
ITool[] tools = config.getFilteredTools(project);
|
||||
for (int index = 0; index < tools.length; index++) {
|
||||
ITool tool = tools[index];
|
||||
try {
|
||||
// Make sure the tool is right for the project
|
||||
switch (tool.getNatureFilter()) {
|
||||
case ITool.FILTER_C:
|
||||
if (!project.hasNature(CProjectNature.C_NATURE_ID) || project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_CC:
|
||||
if (!project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_BOTH:
|
||||
break;
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
continue;
|
||||
}
|
||||
// The tool is OK for this project nature
|
||||
if (tool.producesFileType(extension)) {
|
||||
IOption[] opts = tool.getOptions();
|
||||
// Look for the lib option type
|
||||
|
@ -580,7 +530,6 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
|
|||
}
|
||||
}
|
||||
}
|
||||
libs.trimToSize();
|
||||
return (String[])libs.toArray(new String[libs.size()]);
|
||||
}
|
||||
|
||||
|
@ -603,29 +552,16 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
|
|||
*/
|
||||
public String getOutputExtension(String resourceExtension) {
|
||||
IProject project = (IProject)owner;
|
||||
String outputExtension = null;
|
||||
|
||||
// Get all the tools for the current config
|
||||
IConfiguration config = getDefaultConfiguration(getDefaultTarget());
|
||||
ITool[] tools = config.getTools();
|
||||
ITool[] tools = config.getFilteredTools(project);
|
||||
for (int index = 0; index < tools.length; index++) {
|
||||
ITool tool = tools[index];
|
||||
try {
|
||||
// Make sure the tool is right for the project
|
||||
switch (tool.getNatureFilter()) {
|
||||
case ITool.FILTER_C:
|
||||
if (project.hasNature(CProjectNature.C_NATURE_ID) && !project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
return tool.getOutputExtension(resourceExtension);
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_CC:
|
||||
if (project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
return tool.getOutputExtension(resourceExtension);
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_BOTH:
|
||||
return tool.getOutputExtension(resourceExtension);
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
continue;
|
||||
outputExtension = tool.getOutputExtension(resourceExtension);
|
||||
if (outputExtension != null) {
|
||||
return outputExtension;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
@ -642,28 +578,9 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
|
|||
// Get all the tools for the current config
|
||||
String flags = new String();
|
||||
IConfiguration config = getDefaultConfiguration(getDefaultTarget());
|
||||
ITool[] tools = config.getTools();
|
||||
ITool[] tools = config.getFilteredTools(project);
|
||||
for (int index = 0; index < tools.length; index++) {
|
||||
ITool tool = tools[index];
|
||||
try {
|
||||
// Make sure the tool is right for the project
|
||||
switch (tool.getNatureFilter()) {
|
||||
case ITool.FILTER_C:
|
||||
if (!project.hasNature(CProjectNature.C_NATURE_ID) || project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_CC:
|
||||
if (!project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_BOTH:
|
||||
break;
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
continue;
|
||||
}
|
||||
// It's OK
|
||||
if (tool.producesFileType(ext)) {
|
||||
flags = tool.getOutputFlag();
|
||||
|
@ -683,28 +600,9 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
|
|||
// Get all the tools for the current config
|
||||
String flags = new String();
|
||||
IConfiguration config = getDefaultConfiguration(getDefaultTarget());
|
||||
ITool[] tools = config.getTools();
|
||||
ITool[] tools = config.getFilteredTools(project);
|
||||
for (int index = 0; index < tools.length; index++) {
|
||||
ITool tool = tools[index];
|
||||
try {
|
||||
// Make sure the tool is right for the project
|
||||
switch (tool.getNatureFilter()) {
|
||||
case ITool.FILTER_C:
|
||||
if (!project.hasNature(CProjectNature.C_NATURE_ID) || project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_CC:
|
||||
if (!project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_BOTH:
|
||||
break;
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
continue;
|
||||
}
|
||||
if (tool.producesFileType(ext)) {
|
||||
flags = tool.getOutputPrefix();
|
||||
}
|
||||
|
@ -756,29 +654,11 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
|
|||
|
||||
// Get all the tools for the current config
|
||||
IConfiguration config = getDefaultConfiguration(getDefaultTarget());
|
||||
ITool[] tools = config.getTools();
|
||||
ITool[] tools = config.getFilteredTools(project);
|
||||
for (int index = 0; index < tools.length; index++) {
|
||||
ITool tool = tools[index];
|
||||
if (tool.buildsFileType(extension)) {
|
||||
try {
|
||||
// Make sure the tool is right for the project
|
||||
switch (tool.getNatureFilter()) {
|
||||
case ITool.FILTER_C:
|
||||
if (project.hasNature(CProjectNature.C_NATURE_ID) && !project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
return tool.getToolCommand();
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_CC:
|
||||
if (project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
return tool.getToolCommand();
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_BOTH:
|
||||
return tool.getToolCommand();
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
continue;
|
||||
}
|
||||
return tool.getToolCommand();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
@ -794,29 +674,11 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
|
|||
String ext = extension == null ? new String() : extension;
|
||||
// Get all the tools for the current config
|
||||
IConfiguration config = getDefaultConfiguration(getDefaultTarget());
|
||||
ITool[] tools = config.getTools();
|
||||
ITool[] tools = config.getFilteredTools(project);
|
||||
for (int index = 0; index < tools.length; index++) {
|
||||
ITool tool = tools[index];
|
||||
if (tool.producesFileType(ext)) {
|
||||
try {
|
||||
// Make sure the tool is right for the project
|
||||
switch (tool.getNatureFilter()) {
|
||||
case ITool.FILTER_C:
|
||||
if (project.hasNature(CProjectNature.C_NATURE_ID) && !project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
return tool.getToolCommand();
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_CC:
|
||||
if (project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
return tool.getToolCommand();
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_BOTH:
|
||||
return tool.getToolCommand();
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
continue;
|
||||
}
|
||||
return tool.getToolCommand();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
@ -827,31 +689,12 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
|
|||
*/
|
||||
public String[] getUserObjectsForTarget(String extension) {
|
||||
IProject project = (IProject)owner;
|
||||
ArrayList objs = new ArrayList();
|
||||
Vector objs = new Vector();
|
||||
// Get all the tools for the current config
|
||||
IConfiguration config = getDefaultConfiguration(getDefaultTarget());
|
||||
ITool[] tools = config.getTools();
|
||||
ITool[] tools = config.getFilteredTools(project);
|
||||
for (int index = 0; index < tools.length; index++) {
|
||||
ITool tool = tools[index];
|
||||
try {
|
||||
// Make sure the tool is right for the project
|
||||
switch (tool.getNatureFilter()) {
|
||||
case ITool.FILTER_C:
|
||||
if (!project.hasNature(CProjectNature.C_NATURE_ID) || project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_CC:
|
||||
if (!project.hasNature(CCProjectNature.CC_NATURE_ID)) {
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case ITool.FILTER_BOTH:
|
||||
break;
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
continue;
|
||||
}
|
||||
// The tool is OK for this project nature
|
||||
if (tool.producesFileType(extension)) {
|
||||
IOption[] opts = tool.getOptions();
|
||||
|
@ -868,7 +711,6 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
|
|||
}
|
||||
}
|
||||
}
|
||||
objs.trimToSize();
|
||||
return (String[])objs.toArray(new String[objs.size()]);
|
||||
}
|
||||
|
||||
|
@ -985,8 +827,7 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
|
|||
IPathEntryContainer container = new ManagedBuildCPathEntryContainer(this);
|
||||
CoreModel.getDefault().setPathEntryContainer(new ICProject[]{cModelElement}, container, new NullProgressMonitor());
|
||||
} catch (CModelException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
ManagedBuilderCorePlugin.log(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1122,7 +963,7 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
|
|||
// And finally update the cModelElement
|
||||
cModelElement = CoreModel.getDefault().create(owner.getProject());
|
||||
try {
|
||||
CoreModel.getDefault().setRawPathEntries(cModelElement, new IPathEntry[]{containerEntry}, new NullProgressMonitor());
|
||||
CoreModel.setRawPathEntries(cModelElement, new IPathEntry[]{containerEntry}, new NullProgressMonitor());
|
||||
} catch (CModelException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2004 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM - Initial API and implementation
|
||||
**********************************************************************/
|
||||
package org.eclipse.cdt.managedbuilder.internal.core;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.MissingResourceException;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
/**
|
||||
* @since 2.0
|
||||
*/
|
||||
public class ManagedMakeMessages {
|
||||
// Bundle ID
|
||||
private static final String BUNDLE_ID = "org.eclipse.cdt.managedbuilder.internal.core.PluginResources"; //$NON-NLS-1$
|
||||
//Resource bundle.
|
||||
private static ResourceBundle resourceBundle;
|
||||
|
||||
static {
|
||||
try {
|
||||
resourceBundle = ResourceBundle.getBundle(BUNDLE_ID);
|
||||
} catch (MissingResourceException x) {
|
||||
resourceBundle = null;
|
||||
}
|
||||
}
|
||||
|
||||
public static String getResourceString(String key) {
|
||||
try {
|
||||
return resourceBundle.getString(key);
|
||||
} catch (MissingResourceException e) {
|
||||
return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
} catch (NullPointerException e) {
|
||||
return "#" + key + "#"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
}
|
||||
}
|
||||
|
||||
public static String getFormattedString(String key, String arg) {
|
||||
return MessageFormat.format(getResourceString(key), new String[] { arg });
|
||||
}
|
||||
|
||||
public static String getFormattedString(String key, String[] args) {
|
||||
return MessageFormat.format(getResourceString(key), args);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private ManagedMakeMessages() {
|
||||
// No constructor
|
||||
}
|
||||
}
|
|
@ -25,7 +25,6 @@ import org.eclipse.cdt.managedbuilder.core.IOption;
|
|||
import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
|
||||
import org.eclipse.cdt.managedbuilder.core.ITool;
|
||||
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
||||
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
|
||||
|
||||
public class Option extends BuildObject implements IOption {
|
||||
// Static default return values
|
||||
|
@ -230,7 +229,7 @@ public class Option extends BuildObject implements IOption {
|
|||
*/
|
||||
public String[] getDefinedSymbols() throws BuildException {
|
||||
if (valueType != PREPROCESSOR_SYMBOLS) {
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
ArrayList v = (ArrayList)value;
|
||||
if (v == null) {
|
||||
|
@ -315,7 +314,7 @@ public class Option extends BuildObject implements IOption {
|
|||
*/
|
||||
public String[] getIncludePaths() throws BuildException {
|
||||
if (valueType != INCLUDE_PATH) {
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
ArrayList v = (ArrayList)value;
|
||||
if (v == null) {
|
||||
|
@ -331,7 +330,7 @@ public class Option extends BuildObject implements IOption {
|
|||
*/
|
||||
public String[] getLibraries() throws BuildException {
|
||||
if (valueType != LIBRARIES) {
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
ArrayList v = (ArrayList)value;
|
||||
if (v == null) {
|
||||
|
@ -347,7 +346,7 @@ public class Option extends BuildObject implements IOption {
|
|||
*/
|
||||
public String getSelectedEnum() throws BuildException {
|
||||
if (valueType != ENUMERATED) {
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
return defaultEnumId == null ? EMPTY_STRING : defaultEnumId;
|
||||
}
|
||||
|
@ -357,7 +356,7 @@ public class Option extends BuildObject implements IOption {
|
|||
*/
|
||||
public String[] getStringListValue() throws BuildException {
|
||||
if (valueType != STRING_LIST) {
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
ArrayList v = (ArrayList)value;
|
||||
if (v == null) {
|
||||
|
@ -373,7 +372,7 @@ public class Option extends BuildObject implements IOption {
|
|||
*/
|
||||
public String getStringValue() throws BuildException {
|
||||
if (valueType != STRING) {
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
return value == null ? EMPTY_STRING : (String)value;
|
||||
}
|
||||
|
@ -390,7 +389,7 @@ public class Option extends BuildObject implements IOption {
|
|||
*/
|
||||
public String[] getUserObjects() throws BuildException {
|
||||
if (valueType != OBJECTS) {
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
// This is the right puppy, so return its list value
|
||||
ArrayList v = (ArrayList)value;
|
||||
|
@ -424,7 +423,7 @@ public class Option extends BuildObject implements IOption {
|
|||
{
|
||||
if (valueType != IOption.STRING
|
||||
|| valueType != ENUMERATED)
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
|
||||
if (config == null) {
|
||||
this.value = value;
|
||||
|
@ -446,7 +445,7 @@ public class Option extends BuildObject implements IOption {
|
|||
|| valueType != PREPROCESSOR_SYMBOLS
|
||||
|| valueType != LIBRARIES
|
||||
|| valueType != OBJECTS)
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
|
||||
if (config == null) {
|
||||
this.value = value;
|
||||
|
|
|
@ -21,7 +21,6 @@ import org.eclipse.cdt.managedbuilder.core.IOption;
|
|||
import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
|
||||
import org.eclipse.cdt.managedbuilder.core.ITool;
|
||||
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
||||
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.Node;
|
||||
|
@ -281,7 +280,7 @@ public class OptionReference implements IOption {
|
|||
return (String[]) list.toArray(new String[list.size()]);
|
||||
}
|
||||
else
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -332,7 +331,7 @@ public class OptionReference implements IOption {
|
|||
return (String[]) list.toArray(new String[list.size()]);
|
||||
}
|
||||
else
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -346,7 +345,7 @@ public class OptionReference implements IOption {
|
|||
return (String[]) list.toArray(new String[list.size()]);
|
||||
}
|
||||
else
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -368,7 +367,7 @@ public class OptionReference implements IOption {
|
|||
Boolean bool = (Boolean) value;
|
||||
return bool.booleanValue();
|
||||
} else {
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -430,7 +429,7 @@ public class OptionReference implements IOption {
|
|||
// This is a valid ID
|
||||
return (String) value;
|
||||
} else {
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -445,7 +444,7 @@ public class OptionReference implements IOption {
|
|||
return (String[]) list.toArray(new String[list.size()]);
|
||||
}
|
||||
else
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -457,7 +456,7 @@ public class OptionReference implements IOption {
|
|||
else if (getValueType() == STRING)
|
||||
return (String)value;
|
||||
else
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -487,7 +486,7 @@ public class OptionReference implements IOption {
|
|||
return (String[]) list.toArray(new String[list.size()]);
|
||||
}
|
||||
else
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -529,7 +528,7 @@ public class OptionReference implements IOption {
|
|||
if (getValueType() == BOOLEAN)
|
||||
this.value = new Boolean(value);
|
||||
else
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -541,7 +540,7 @@ public class OptionReference implements IOption {
|
|||
if (getValueType() == STRING || getValueType() == ENUMERATED) {
|
||||
this.value = value;
|
||||
} else {
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -561,7 +560,7 @@ public class OptionReference implements IOption {
|
|||
this.value = new ArrayList(Arrays.asList(value));
|
||||
}
|
||||
else
|
||||
throw new BuildException(ManagedBuilderCorePlugin.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
throw new BuildException(ManagedMakeMessages.getResourceString("Option.error.bad_value_type")); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
|
|
@ -20,13 +20,6 @@ ManagedMakeBuilder.message.console.header = **** {0} of configuration {1} for pr
|
|||
ManagedMakeBuilder.message.error = Build error
|
||||
ManagedMakeBuilder.message.error.refresh = Error refreshing project
|
||||
ManagedMakeBuilder.message.finished = Build complete for project {0}
|
||||
ManagedMakeBuilder.comment.module.list = Every subdirectory with source files must be described here
|
||||
ManagedMakeBuilder.comment.source.list = Each subdirectory must contribute its source files here
|
||||
ManagedMakeBuilder.comment.build.rule = Each subdirectory must supply rules for building sources it contributes
|
||||
ManagedMakeBuilder.comment.module.make.includes = Include the makefiles for each source subdirectory
|
||||
ManagedMakeBuilder.comment.module.dep.includes = Include automatically-generated dependency list:
|
||||
ManagedMakeBuilder.comment.autodeps = Automatically-generated dependency list:
|
||||
ManagedMakeBuilder.comment.header = Automatically-generated file. Do not edit!
|
||||
ManagedMakeBuilder.type.full = Full rebuild
|
||||
ManagedMakeBuider.type.incremental = Incremental build
|
||||
|
||||
|
@ -39,3 +32,16 @@ ManagedBuildManager.error.null_owner=addTarget: null owner
|
|||
ManagedBuildManager.error.owner_not_project=addTarget: owner not project
|
||||
ManagedBuildManager.error.manifest.version.error=The version of plugin file is higher than version of the build system
|
||||
ManagedBuildManager.error.project.version.error=The version of the project is higher than the build system
|
||||
|
||||
# Makefile Generator Messages
|
||||
MakefileGenerator.message.start.file=Building file:
|
||||
MakefileGenerator.message.finish.file=Finished building:
|
||||
MakefileGenerator.message.start.build=Building target:
|
||||
MakefileGenerator.message.finish.build=Finished building target:
|
||||
MakefileGenerator.comment.module.list = Every subdirectory with source files must be described here
|
||||
MakefileGenerator.comment.source.list = All of the sources participating in the build are defined here
|
||||
MakefileGenerator.comment.build.rule = Each subdirectory must supply rules for building sources it contributes
|
||||
MakefileGenerator.comment.module.make.includes = Include the makefiles for each source subdirectory
|
||||
MakefileGenerator.comment.module.dep.includes = Include automatically-generated dependency list:
|
||||
MakefileGenerator.comment.autodeps = Automatically-generated dependency list:
|
||||
MakefileGenerator.comment.header = Automatically-generated file. Do not edit!
|
||||
|
|
|
@ -330,7 +330,10 @@ public class Target extends BuildObject implements ITarget {
|
|||
|
||||
if (makeCommand != null) {
|
||||
element.setAttribute(MAKE_COMMAND, makeCommand);
|
||||
} else {
|
||||
// Make sure we use the default
|
||||
}
|
||||
|
||||
if (makeArguments != null) {
|
||||
element.setAttribute(MAKE_ARGS, makeArguments);
|
||||
}
|
||||
|
@ -420,7 +423,7 @@ public class Target extends BuildObject implements ITarget {
|
|||
if (parent != null) {
|
||||
return parent.getMakeCommand();
|
||||
} else {
|
||||
// The user has forgotten to specify a command in the plugin manifets.
|
||||
// The user has forgotten to specify a command in the plugin manifest
|
||||
return new String("make"); //$NON-NLS-1$
|
||||
}
|
||||
} else {
|
||||
|
@ -721,7 +724,7 @@ public class Target extends BuildObject implements ITarget {
|
|||
return defaultExtension;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.managedbuilder.core.ITarget#getBinaryParserId()
|
||||
*/
|
||||
|
|
|
@ -180,12 +180,9 @@ public class Tool extends BuildObject implements ITool, IOptionCategory {
|
|||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* Safe accessor method to retrieve the list of valid source extensions
|
||||
* the receiver know how to build.
|
||||
*
|
||||
* @return List
|
||||
* @see org.eclipse.cdt.managedbuilder.core.ITool#getInputExtensions()
|
||||
*/
|
||||
private List getInputExtensions() {
|
||||
public List getInputExtensions() {
|
||||
if (inputExtensions == null) {
|
||||
inputExtensions = new ArrayList();
|
||||
}
|
||||
|
|
|
@ -273,8 +273,15 @@ public class ToolReference implements IToolReference {
|
|||
public String getId() {
|
||||
return parent.getId();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.managedbuilder.core.ITool#getInputExtensions()
|
||||
*/
|
||||
public List getInputExtensions() {
|
||||
return getTool().getInputExtensions();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.managedbuilder.core.IBuildObject#getName()
|
||||
*/
|
||||
public String getName() {
|
||||
|
|
|
@ -16,7 +16,6 @@ import java.util.HashMap;
|
|||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.Vector;
|
||||
|
||||
import org.eclipse.cdt.core.model.CoreModel;
|
||||
|
@ -32,7 +31,7 @@ import org.eclipse.cdt.managedbuilder.core.IConfiguration;
|
|||
import org.eclipse.cdt.managedbuilder.core.IOption;
|
||||
import org.eclipse.cdt.managedbuilder.core.ITarget;
|
||||
import org.eclipse.cdt.managedbuilder.core.ITool;
|
||||
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
|
||||
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
||||
import org.eclipse.cdt.managedbuilder.internal.core.ManagedBuildInfo;
|
||||
import org.eclipse.cdt.managedbuilder.scannerconfig.IManagedScannerInfoCollector;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
|
@ -73,8 +72,7 @@ public class ManagedBuildCPathEntryContainer implements IPathEntryContainer {
|
|||
|
||||
protected void addDefinedSymbols(Map definedSymbols) {
|
||||
// Add a new macro entry for each defined symbol
|
||||
Set macros = definedSymbols.keySet();
|
||||
Iterator keyIter = macros.iterator();
|
||||
Iterator keyIter = definedSymbols.keySet().iterator();
|
||||
while (keyIter.hasNext()) {
|
||||
boolean add = true;
|
||||
String macro = (String) keyIter.next();
|
||||
|
@ -191,7 +189,7 @@ public class ManagedBuildCPathEntryContainer implements IPathEntryContainer {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.model.IPathEntryContainer#getPathEntries()
|
||||
*/
|
||||
public synchronized IPathEntry[] getPathEntries() {
|
||||
public IPathEntry[] getPathEntries() {
|
||||
// TODO figure out when I can skip this step
|
||||
if (entries.isEmpty()) {
|
||||
// Load the toolchain-spec'd collector
|
||||
|
@ -207,7 +205,7 @@ public class ManagedBuildCPathEntryContainer implements IPathEntryContainer {
|
|||
}
|
||||
// See if we can load a dynamic resolver
|
||||
String baseTargetId = parent.getId();
|
||||
IManagedScannerInfoCollector collector = ManagedBuilderCorePlugin.getDefault().getScannerInfoCollector(baseTargetId);
|
||||
IManagedScannerInfoCollector collector = ManagedBuildManager.getScannerInfoCollector(baseTargetId);
|
||||
if (collector != null) {
|
||||
collector.setProject(info.getOwner().getProject());
|
||||
calculateEntriesDynamically((IProject)info.getOwner(), collector);
|
||||
|
@ -239,4 +237,5 @@ public class ManagedBuildCPathEntryContainer implements IPathEntryContainer {
|
|||
public IPath getPath() {
|
||||
return new Path("org.eclipse.cdt.managedbuilder.MANAGED_CONTAINER"); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2004 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM - Initial API and implementation
|
||||
**********************************************************************/
|
||||
package org.eclipse.cdt.managedbuilder.makegen;
|
||||
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
|
||||
/**
|
||||
* @since 2.0
|
||||
*/
|
||||
public interface IManagedBuilderDependencyCalculator {
|
||||
public int TYPE_NODEPS = 0;
|
||||
public int TYPE_COMMAND = 1;
|
||||
public int TYPE_INDEXER = 2;
|
||||
public int TYPE_EXTERNAL = 3;
|
||||
|
||||
public IResource[] findDependencies(IResource resource, IProject project);
|
||||
public int getCalculatorType();
|
||||
public String getDependencyCommand();
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2004 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM - Initial API and implementation
|
||||
**********************************************************************/
|
||||
package org.eclipse.cdt.managedbuilder.makegen;
|
||||
|
||||
import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.resources.IResourceDelta;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
|
||||
/**
|
||||
* @since 2.0
|
||||
*/
|
||||
public interface IManagedBuilderMakefileGenerator {
|
||||
/**
|
||||
* @throws CoreException
|
||||
*/
|
||||
public void generateDependencies() throws CoreException;
|
||||
|
||||
/**
|
||||
* Clients call this method when an incremental rebuild is required. The argument
|
||||
* contains a set of resource deltas that will be used to determine which
|
||||
* subdirectories need a new makefile and dependency list (if any).
|
||||
*
|
||||
* @param delta
|
||||
* @throws CoreException
|
||||
*/
|
||||
public void generateMakefiles(IResourceDelta delta) throws CoreException ;
|
||||
|
||||
/**
|
||||
* Answers the path of the top directory generated for the build
|
||||
* output, or <code>null</code> if none has been generated.
|
||||
*
|
||||
* @return <code>IPath</code> to the working directory of the build
|
||||
*/
|
||||
public IPath getBuildWorkingDir();
|
||||
|
||||
/**
|
||||
* Answers the name of the top-level makefile generated by the receiver.
|
||||
*
|
||||
* @return name of the makefile.
|
||||
*/
|
||||
public String getMakefileName();
|
||||
|
||||
/**
|
||||
* @param project
|
||||
* @param info
|
||||
* @param monitor
|
||||
*/
|
||||
public void initialize(IProject project, IManagedBuildInfo info, IProgressMonitor monitor);
|
||||
|
||||
/**
|
||||
* @param force
|
||||
* @throws CoreException
|
||||
*/
|
||||
public void regenerateDependencies(boolean force) throws CoreException;
|
||||
|
||||
/**
|
||||
* @throws CoreException
|
||||
*/
|
||||
public void regenerateMakefiles() throws CoreException;
|
||||
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2004 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM - Initial API and implementation
|
||||
**********************************************************************/
|
||||
package org.eclipse.cdt.managedbuilder.makegen.gnu;
|
||||
|
||||
import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderDependencyCalculator;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
|
||||
/**
|
||||
* @since 2.0
|
||||
*/
|
||||
public class DefaultGCCDependencyCalculator implements IManagedBuilderDependencyCalculator {
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderDependencyCalculator#findDependencies(org.eclipse.core.resources.IResource)
|
||||
*/
|
||||
public IResource[] findDependencies(IResource resource, IProject project) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderDependencyCalculator#getCalculatorType()
|
||||
*/
|
||||
public int getCalculatorType() {
|
||||
return TYPE_COMMAND;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderDependencyCalculator#getDependencyCommand()
|
||||
*/
|
||||
public String getDependencyCommand() {
|
||||
// TODO Auto-generated method stub
|
||||
return "$(CC) -M $(CC_FLAGS) $< > makefile.dep"; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,86 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2004 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM - Initial API and implementation
|
||||
**********************************************************************/
|
||||
package org.eclipse.cdt.managedbuilder.makegen.gnu;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.core.CCorePlugin;
|
||||
import org.eclipse.cdt.core.search.ICSearchConstants;
|
||||
import org.eclipse.cdt.core.search.ICSearchScope;
|
||||
import org.eclipse.cdt.core.search.SearchEngine;
|
||||
import org.eclipse.cdt.internal.core.search.PathCollector;
|
||||
import org.eclipse.cdt.internal.core.search.PatternSearchJob;
|
||||
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
|
||||
import org.eclipse.cdt.internal.core.search.matching.CSearchPattern;
|
||||
import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderDependencyCalculator;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.core.resources.IWorkspaceRoot;
|
||||
|
||||
/**
|
||||
* @since 2.0
|
||||
*/
|
||||
public class DefaultIndexerDependencyCalculator implements IManagedBuilderDependencyCalculator {
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderDependencyCalculator#findDependencies(org.eclipse.core.resources.IResource)
|
||||
*/
|
||||
public IResource[] findDependencies(IResource resource, IProject project) {
|
||||
PathCollector pathCollector = new PathCollector();
|
||||
ICSearchScope scope = SearchEngine.createWorkspaceScope();
|
||||
CSearchPattern pattern = CSearchPattern.createPattern(resource.getLocation().toOSString(), ICSearchConstants.INCLUDE, ICSearchConstants.REFERENCES, ICSearchConstants.EXACT_MATCH, true);
|
||||
IndexManager indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
|
||||
indexManager.performConcurrentJob(
|
||||
new PatternSearchJob(
|
||||
(CSearchPattern) pattern,
|
||||
scope,
|
||||
pathCollector,
|
||||
indexManager),
|
||||
ICSearchConstants.WAIT_UNTIL_READY_TO_SEARCH,
|
||||
null, null);
|
||||
|
||||
// We will get back an array of resource names relative to the workspace
|
||||
String[] deps = pathCollector.getPaths();
|
||||
|
||||
// Convert them to something useful
|
||||
List depList = new ArrayList();
|
||||
IResource res = null;
|
||||
IWorkspaceRoot root = null;
|
||||
if (project != null) {
|
||||
root = project.getWorkspace().getRoot();
|
||||
}
|
||||
for (int index = 0; index < deps.length; ++index) {
|
||||
res = root.findMember(deps[index]);
|
||||
if (res != null) {
|
||||
depList.add(res);
|
||||
}
|
||||
}
|
||||
|
||||
return (IResource[]) depList.toArray(new IResource[depList.size()]);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderDependencyCalculator#getCalculatorType()
|
||||
*/
|
||||
public int getCalculatorType() {
|
||||
// Tell the
|
||||
return TYPE_INDEXER;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderDependencyCalculator#getDependencyCommand()
|
||||
*/
|
||||
public String getDependencyCommand() {
|
||||
// There is no command
|
||||
return null;
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load diff
|
@ -848,13 +848,14 @@
|
|||
</tool>
|
||||
</target>
|
||||
<target
|
||||
isTest="false"
|
||||
isAbstract="false"
|
||||
osList="solaris,linux,hpux,aix,macosx,qnx"
|
||||
scannerInfoCollector="org.eclipse.cdt.managedbuilder.internal.scannerconfig.DefaultGCCScannerInfoCollector"
|
||||
isTest="false"
|
||||
makefileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
|
||||
name="%TargetName.gnu.exe"
|
||||
parent="cdt.managedbuild.target.gnu"
|
||||
isAbstract="false"
|
||||
id="cdt.managedbuild.target.gnu.exe">
|
||||
id="cdt.managedbuild.target.gnu.exe"
|
||||
parent="cdt.managedbuild.target.gnu">
|
||||
<configuration
|
||||
name="%ConfigName.Dbg"
|
||||
id="cdt.managedbuild.config.gnu.exe.debug">
|
||||
|
@ -918,6 +919,7 @@
|
|||
isTest="false"
|
||||
osList="solaris,linux,hpux,aix,macosx,qnx"
|
||||
scannerInfoCollector="org.eclipse.cdt.managedbuilder.internal.scannerconfig.DefaultGCCScannerInfoCollector"
|
||||
makefileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
|
||||
name="%TargetName.gnu.so"
|
||||
parent="cdt.managedbuild.target.gnu"
|
||||
defaultExtension="so"
|
||||
|
@ -990,6 +992,7 @@
|
|||
isTest="false"
|
||||
osList="solaris,linux,hpux,aix,macosx,qnx"
|
||||
scannerInfoCollector="org.eclipse.cdt.managedbuilder.internal.scannerconfig.DefaultGCCScannerInfoCollector"
|
||||
makefileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
|
||||
name="%TargetName.gnu.lib"
|
||||
parent="cdt.managedbuild.target.gnu"
|
||||
defaultExtension="a"
|
||||
|
@ -1059,6 +1062,7 @@
|
|||
isTest="false"
|
||||
defaultExtension="exe"
|
||||
scannerInfoCollector="org.eclipse.cdt.managedbuilder.internal.scannerconfig.DefaultCygwinScannerInfoCollector"
|
||||
makefileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
|
||||
isAbstract="false"
|
||||
binaryParser="org.eclipse.cdt.core.PE"
|
||||
parent="cdt.managedbuild.target.gnu"
|
||||
|
@ -1130,6 +1134,7 @@
|
|||
isTest="false"
|
||||
defaultExtension="a.dll"
|
||||
scannerInfoCollector="org.eclipse.cdt.managedbuilder.internal.scannerconfig.DefaultCygwinScannerInfoCollector"
|
||||
makefileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
|
||||
isAbstract="false"
|
||||
binaryParser="org.eclipse.cdt.core.PE"
|
||||
parent="cdt.managedbuild.target.gnu"
|
||||
|
@ -1199,6 +1204,7 @@
|
|||
name="%TargetName.cygw.lib"
|
||||
id="cdt.managedbuild.target.gnu.cygwin.lib"
|
||||
isTest="false"
|
||||
makefileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
|
||||
defaultExtension="a"
|
||||
scannerInfoCollector="org.eclipse.cdt.managedbuilder.internal.scannerconfig.DefaultCygwinScannerInfoCollector"
|
||||
isAbstract="false"
|
||||
|
@ -1269,6 +1275,7 @@
|
|||
osList="win32"
|
||||
makeCommand="mingw32-make"
|
||||
scannerInfoCollector="org.eclipse.cdt.managedbuilder.internal.scannerconfig.DefaultMinGWScannerInfoCollector"
|
||||
makefileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
|
||||
isTest="false"
|
||||
binaryParser="org.eclipse.cdt.core.PE"
|
||||
name="%TargetName.mingw.exe"
|
||||
|
@ -1344,6 +1351,7 @@
|
|||
scannerInfoCollector="org.eclipse.cdt.managedbuilder.internal.scannerconfig.DefaultMinGWScannerInfoCollector"
|
||||
isTest="false"
|
||||
binaryParser="org.eclipse.cdt.core.PE"
|
||||
makefileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
|
||||
name="%TargetName.mingw.so"
|
||||
parent="cdt.managedbuild.target.gnu"
|
||||
id="cdt.managedbuild.target.gnu.mingw.so"
|
||||
|
@ -1414,6 +1422,7 @@
|
|||
defaultExtension="lib"
|
||||
osList="win32"
|
||||
makeCommand="mingw32-make"
|
||||
makefileGenerator="org.eclipse.cdt.managedbuilder.ui.properties.BrowseEntryDialog"
|
||||
scannerInfoCollector="org.eclipse.cdt.managedbuilder.internal.scannerconfig.DefaultMinGWScannerInfoCollector"
|
||||
isTest="false"
|
||||
binaryParser="org.eclipse.cdt.core.PE"
|
||||
|
|
Loading…
Add table
Reference in a new issue