Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlena Laskavaia2009-01-29 21:25:54 +0000
committerAlena Laskavaia2009-01-29 21:25:54 +0000
commitdded7dda1014aeb6ad811e69a56e22e964268850 (patch)
tree0d32d8cd1429a98966400f025e7f48557186b382
parentd2df2e441557dda19abbd6bc4fcd23c7c69e39e6 (diff)
downloadorg.eclipse.cdt-dded7dda1014aeb6ad811e69a56e22e964268850.tar.gz
org.eclipse.cdt-dded7dda1014aeb6ad811e69a56e22e964268850.tar.xz
org.eclipse.cdt-dded7dda1014aeb6ad811e69a56e22e964268850.zip
[261280] - extracted method to be more customizable and previous behavior only supported per project scanner discovery profile
-rw-r--r--build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/SCDMakefileGenerator.java79
1 files changed, 64 insertions, 15 deletions
diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/SCDMakefileGenerator.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/SCDMakefileGenerator.java
index 76e38c4ccf2..aee6dfd21b2 100644
--- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/SCDMakefileGenerator.java
+++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/SCDMakefileGenerator.java
@@ -21,7 +21,11 @@ import java.util.List;
import org.eclipse.cdt.make.core.MakeCorePlugin;
import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector2;
import org.eclipse.cdt.make.core.scannerconfig.ScannerInfoTypes;
+import org.eclipse.cdt.make.internal.core.scannerconfig.ScannerConfigUtil;
+import org.eclipse.cdt.make.internal.core.scannerconfig.gnu.GCCScannerConfigUtil;
import org.eclipse.cdt.make.internal.core.scannerconfig.util.CCommandDSC;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
/**
@@ -32,24 +36,29 @@ import org.eclipse.cdt.make.internal.core.scannerconfig.util.CCommandDSC;
public class SCDMakefileGenerator extends DefaultRunSIProvider {
private static final String ENDL = System.getProperty("line.separator"); //$NON-NLS-1$
private static final String DENDL = ENDL+ENDL;
-
+ private String fMakeCommand = "-f ${project_name}_scd.mk ";
+
/* (non-Javadoc)
* @see org.eclipse.cdt.make.internal.core.scannerconfig2.DefaultRunSIProvider#initialize()
*/
protected boolean initialize() {
- boolean rc = super.initialize();
+ String args = buildInfo.getProviderRunArguments(providerId);
+ if (null == args)
+ args = " -E -P -v -dD ";
+ else {
+ int nPos = args.indexOf('|');
+ if(nPos > 0) {
+ fMakeCommand = args.substring(0, nPos);
+ args = args.substring(nPos + 1);
+ }
+ }
+ fCompileCommand = new Path(buildInfo.getProviderRunCommand(providerId));
+ args = substituteDynamicVariables(args);
+ fCompileArguments = ScannerConfigUtil.tokenizeStringWithQuotes(args, "\"");//$NON-NLS-1$
+ fWorkingDirectory = MakeCorePlugin.getWorkingDirectory();
+ fMakeCommand = substituteDynamicVariables(fMakeCommand);
- if (rc) {
- fWorkingDirectory = MakeCorePlugin.getWorkingDirectory();
- // replace string variables in compile arguments
- // TODO Vmir - use string variable replacement
- for (int i = 0; i < fCompileArguments.length; ++i) {
- fCompileArguments[i] = fCompileArguments[i].replaceAll("\\$\\{project_name\\}", //$NON-NLS-1$
- resource.getProject().getName());
- }
- rc = generateMakefile(resource.getProject().getName());
- }
- return rc;
+ return generateMakefile(resource.getProject().getName());
}
/**
@@ -86,14 +95,18 @@ public class SCDMakefileGenerator extends DefaultRunSIProvider {
buffer.append(ENDL);
buffer.append("\t@echo begin generating scanner info for $@"+ENDL+"\t"); //$NON-NLS-1$ //$NON-NLS-2$
buffer.append(cmd.getSCDRunnableCommand(true, true)); // quote includes and defines
- buffer.append(" -E -P -v -dD "); //$NON-NLS-1$
+ for (String arg : prepareArguments(buildInfo.isUseDefaultProviderCommand(providerId))) {
+ buffer.append(' ');
+ buffer.append(arg);
+ }
+ buffer.append(' ');
buffer.append(cmd.appliesToCPPFileType() ? "specs.cpp" : "specs.c"); //$NON-NLS-1$ //$NON-NLS-2$
buffer.append(ENDL);
buffer.append("\t@echo end generating scanner info for $@"); //$NON-NLS-1$
buffer.append(DENDL);
}
- File makefile = new File(fWorkingDirectory.toFile(), projectName+"_scd.mk"); //$NON-NLS-1$
+ File makefile = new File(fWorkingDirectory.toFile(), getMakeFileName(projectName)); //$NON-NLS-1$
try {
PrintStream ps = new PrintStream(new FileOutputStream(makefile));
ps.println(buffer.toString());
@@ -108,4 +121,40 @@ public class SCDMakefileGenerator extends DefaultRunSIProvider {
return rc;
}
+
+ private String getMakeFileName(String projectName) {
+ String[] makeArgs = ScannerConfigUtil.tokenizeStringWithQuotes(fMakeCommand, "\"");//$NON-NLS-1$
+ boolean found = false;
+ for(String arg : makeArgs) {
+ if(found)
+ return arg;
+ if(arg.equals("-f"))
+ found = true;
+ }
+ return projectName+"_scd.mk";
+ }
+
+
+ protected String substituteDynamicVariables(String in) {
+ String string = in;
+// TODO: replace it with Eclipse Dynamic Variable Resolver
+// string = VariablesPlugin.getDefault().getStringVariableManager().performStringSubstitution(string, false);
+ string = string.replaceAll("\\$\\{project_name\\}", //$NON-NLS-1$
+ resource.getProject().getName());
+ string = string.replaceAll("\\$\\{plugin_state_location\\}", //$NON-NLS-1$
+ MakeCorePlugin.getWorkingDirectory().toString());
+ string = string.replaceAll("\\$\\{specs_file\\}",
+ GCCScannerConfigUtil.C_SPECS_FILE ); //$NON-NLS-1$
+ return string;
+ }
+
+ @Override
+ protected String[] getCommandLineOptions() {
+ return ScannerConfigUtil.tokenizeStringWithQuotes(fMakeCommand, "\"");
+ }
+
+ @Override
+ protected IPath getCommandToLaunch() {
+ return new Path("make");
+ }
}

Back to the top