1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 14:42:11 +02:00

RESOLVED - bug 193605: need scanner config support for XL compiler toolchains

https://bugs.eclipse.org/bugs/show_bug.cgi?id=193605
This commit is contained in:
Chris Recoskie 2008-01-28 18:27:49 +00:00
parent f497803515
commit 790670050d
10 changed files with 110 additions and 18 deletions

View file

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.make.xlc.core;singleton:=true
Bundle-Version: 4.0.3.qualifier
Bundle-Version: 5.0.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Require-Bundle: org.eclipse.cdt.make.core,

View file

@ -8,7 +8,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.make.xlc.core.scannerconfig.xl;
package org.eclipse.cdt.make.xlc.core.scannerconfig;
import java.util.List;
import java.util.ArrayList;

View file

@ -36,7 +36,7 @@ public class XlCSpecsRunSIProvider extends GCCSpecsRunSIProvider {
if (rc) {
try {
this.fCompileCommand = new Path(BuildMacroProvider.getDefault()
this.fCompileCommand = new Path(ManagedBuildManager.getBuildMacroProvider()
.resolveValue(
this.fCompileCommand.toString(),
EMPTY_STRING,

View file

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.xlc.core;singleton:=true
Bundle-Version: 4.0.3.qualifier
Bundle-Version: 5.0.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Require-Bundle: org.eclipse.cdt.managedbuilder.core,

View file

@ -15,4 +15,5 @@ providerName=Eclipse.org
objectFileName=Object File
profileName=XL C/C++ managed make per project SCD profile
profileName=XL C managed make per project scanner discovery profile
profileNameCPP=XL C++ managed make per project scanner discovery profile

View file

@ -29,7 +29,7 @@
<!-- The output for C or C++ projects will be different as the ScannerInfoProvider substitute the ${specs_file} variable below with a dummy "c" file or "cpp" file -->
<run
arguments="-E -v ${plugin_state_location}/${specs_file}"
command="xlc"
command="${XL_compilerRoot}/xlc"
class="org.eclipse.cdt.make.xlc.core.scannerconfig.XlCSpecsRunSIProvider">
</run>
<!-- Specifies the parser for the output generated by the compiler with the above command line -->
@ -39,5 +39,41 @@
</scannerInfoProvider>
</extension>
<!-- -->
<!-- Xl C ScannerConfigurationDiscoveryProfile definitions -->
<!-- -->
<!-- We have to extend the core of CDT's make so that we can define a new ScannerConfigurationDiscoveryProfile -->
<!-- A ScannerConfigurationDiscoveryProfile is used to discover information about the standard options used by the compiler, e.g. the standard include directories -->
<!-- Xl C Managed Make Per Project Profile -->
<!-- The Profile gathers together information about the standard include directories and standard definitions used by the compiler -->
<extension
id="XLCManagedMakePerProjectProfileCPP"
name="%profileNameCPP"
point="org.eclipse.cdt.make.core.ScannerConfigurationDiscoveryProfile">
<!-- The ScannerInfoCollector manages the information generated by the Profile so that it can be easily accessed afterwards -->
<scannerInfoCollector
class="org.eclipse.cdt.make.xlc.core.scannerconfig.DefaultXlCScannerInfoCollector"
scope="project">
</scannerInfoCollector>
<!-- The ScannerInfoProvider search for the information needed by the profile and send it to the ScannerInfoCollector -->
<scannerInfoProvider providerId="specsFile">
<!-- Specifies the compiler command that returns the information about standard include directories and standard definitions -->
<!-- The compiler command used will be always a C compiler command -->
<!-- The output for C or C++ projects will be different as the ScannerInfoProvider substitute the ${specs_file} variable below with a dummy "c" file or "cpp" file -->
<run
arguments="-E -v ${plugin_state_location}/${specs_file}"
command="${XL_compilerRoot}/xlC"
class="org.eclipse.cdt.make.xlc.core.scannerconfig.XlCSpecsRunSIProvider">
</run>
<!-- Specifies the parser for the output generated by the compiler with the above command line -->
<scannerInfoConsoleParser
class="org.eclipse.cdt.make.xlc.core.scannerconfig.XlCSpecsConsoleParser">
</scannerInfoConsoleParser>
</scannerInfoProvider>
</extension>
</plugin>

View file

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.xlc.ui; singleton := true
Bundle-Version: 4.0.1.qualifier
Bundle-Version: 5.0.0.qualifier
Bundle-Activator: org.eclipse.cdt.managedbuilder.xlc.ui.XLCUIPlugin
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
@ -12,7 +12,8 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.core.resources,
org.eclipse.cdt.managedbuilder.ui,
org.eclipse.cdt.ui,
org.eclipse.ui.ide
org.eclipse.ui.ide,
org.eclipse.core.variables
Eclipse-LazyStart: true
Export-Package: org.eclipse.cdt.managedbuilder.xlc.ui,
org.eclipse.cdt.managedbuilder.xlc.ui.preferences,

View file

@ -11,6 +11,8 @@
pluginName = XL C/C++ Managed Build UI Plugin
providerName = Eclipse.org
variableName = XL C/C++ Compiler Root Location
#Build model names
TargetName.xlc.exe=Executable (XL C/C++)
TargetName.xlc.so=Shared Library (XL C/C++)

View file

@ -229,11 +229,12 @@
outputFlag="-o"
superClass="org.eclipse.cdt.managedbuilder.xlc.ui.tool.abstractCompiler">
<inputType
sourceContentType="org.eclipse.cdt.core.cxxSource"
sources="c,C,cc,cxx,cpp"
dependencyContentType="org.eclipse.cdt.core.cxxHeader"
dependencyExtensions="h,H,hpp"
id="cdt.managedbuild.tool.xlc.cpp.compiler.input">
id="cdt.managedbuild.tool.xlc.cpp.compiler.input"
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.xlc.core.XLCManagedMakePerProjectProfileCPP"
sourceContentType="org.eclipse.cdt.core.cxxSource"
sources="c,C,cc,cxx,cpp">
</inputType>
<option
category="xlc.c.compiler.category.Input"
@ -2847,11 +2848,12 @@
<inputType
sourceContentType="org.eclipse.cdt.core.cSource"
sources="c"
dependencyContentType="org.eclipse.cdt.core.cHeader"
dependencyExtensions="h"
id="cdt.managedbuild.tool.xlc.c.compiler.input">
id="cdt.managedbuild.tool.xlc.c.compiler.input"
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.xlc.core.XLCManagedMakePerProjectProfile"
sourceContentType="org.eclipse.cdt.core.cSource"
sources="c">
</inputType>
<outputType
outputs="o"
@ -3159,6 +3161,15 @@
</projectType>
</wizardPage>
</extension>
<extension
point="org.eclipse.core.variables.dynamicVariables">
<variable
description="%variableDescription"
name="XL_compilerRoot"
resolver="org.eclipse.cdt.managedbuilder.xlc.ui.variables.DynamicVariableResolver"
supportsArgument="false">
</variable>
</extension>
</plugin>

View file

@ -0,0 +1,41 @@
/*******************************************************************************
* Copyright (c) 2008 IBM Corporation 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
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.xlc.ui.variables;
import org.eclipse.cdt.managedbuilder.xlc.ui.XLCUIPlugin;
import org.eclipse.cdt.managedbuilder.xlc.ui.preferences.PreferenceConstants;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.variables.IDynamicVariable;
import org.eclipse.core.variables.IDynamicVariableResolver;
import org.eclipse.jface.preference.IPreferenceStore;
/**
* @author crecoskie
*
*/
public class DynamicVariableResolver implements IDynamicVariableResolver {
/* (non-Javadoc)
* @see org.eclipse.core.variables.IDynamicVariableResolver#resolveValue(org.eclipse.core.variables.IDynamicVariable, java.lang.String)
*/
public String resolveValue(IDynamicVariable variable, String argument)
throws CoreException {
if (variable.getName().equals((PreferenceConstants.P_XL_COMPILER_ROOT))) {
IPreferenceStore prefStore = XLCUIPlugin.getDefault()
.getPreferenceStore();
return prefStore.getString(PreferenceConstants.P_XL_COMPILER_ROOT);
}
return null;
}
}