summaryrefslogtreecommitdiffstats
path: root/org.rtems.cdt.toolchain2
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2008-11-28 09:50:29 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2008-11-28 09:50:29 +0000
commit52fb7d36642ef08401ecc423372f45f3b2cd61b1 (patch)
tree7c649e94ce20ec9dc8cddbeeb3a6a00c4b3f52cc /org.rtems.cdt.toolchain2
parentAdded build macro and environment suppliers. (diff)
downloadrtems-eclipse-plug-in-52fb7d36642ef08401ecc423372f45f3b2cd61b1.tar.bz2
Added PATH environment variable to provider.
Uses now an absolute path for the compiler in the scanner information provider.
Diffstat (limited to 'org.rtems.cdt.toolchain2')
-rw-r--r--org.rtems.cdt.toolchain2/org/rtems/cdt/build/EnvironmentSupplier.java38
-rw-r--r--org.rtems.cdt.toolchain2/org/rtems/cdt/build/RunScannerInfoProvider.java44
2 files changed, 51 insertions, 31 deletions
diff --git a/org.rtems.cdt.toolchain2/org/rtems/cdt/build/EnvironmentSupplier.java b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/EnvironmentSupplier.java
index dd7e4bd..8eaf7a6 100644
--- a/org.rtems.cdt.toolchain2/org/rtems/cdt/build/EnvironmentSupplier.java
+++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/EnvironmentSupplier.java
@@ -13,6 +13,8 @@
package org.rtems.cdt.build;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
import org.eclipse.cdt.managedbuilder.core.IManagedProject;
import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable;
import org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider;
@@ -22,41 +24,35 @@ import org.rtems.cdt.Constants;
import org.rtems.cdt.Storage;
public class EnvironmentSupplier implements IProjectEnvironmentVariableSupplier {
- private static final int VERSION_INDEX = 0;
+ private static final int PATH_INDEX = 0;
- private static final int TARGET_INDEX = 1;
+ private static final int VARIABLE_COUNT = 1;
- private static final int MACRO_COUNT = 2;
+ private static final String PATH_SEPERATOR = System.getProperty( "path.separator");
public EnvironmentSupplier() {
// Do nothing
}
- public IBuildEnvironmentVariable getVariable( String macroName, IManagedProject project, IEnvironmentVariableProvider provider) {
- String value = null;
-
- if (macroName.equals( Constants.VERSION_MACRO_NAME)) {
- value = Storage.getProperty( (IProject) project.getOwner(), Constants.VERSION_KEY);
- } else if (macroName.equals( Constants.TARGET_MACRO_NAME)) {
- value = Storage.getProperty( (IProject) project.getOwner(), Constants.TARGET_KEY);
+ public IBuildEnvironmentVariable getVariable( String name, IManagedProject project, IEnvironmentVariableProvider provider) {
+ if (name.equals( "PATH")) {
+ IPath path = new Path(
+ Storage.getProperty( (IProject) project.getOwner(), Constants.BASE_PATH_KEY)
+ );
+ path = path.append( "bin");
+
+ return new BuildEnvVar( name, path.toOSString(), IBuildEnvironmentVariable.ENVVAR_PREPEND, PATH_SEPERATOR);
}
-
- if (value != null) {
- // System.out.println( Constants.getCounter() + ": getVariable: " + macroName + ": " + value);
- return new BuildEnvVar( macroName, value);
- } else {
- return null;
- }
+
+ return null;
}
public IBuildEnvironmentVariable [] getVariables( IManagedProject project, IEnvironmentVariableProvider provider) {
- IBuildEnvironmentVariable variables [] = new IBuildEnvironmentVariable [MACRO_COUNT];
+ IBuildEnvironmentVariable variables [] = new IBuildEnvironmentVariable [VARIABLE_COUNT];
// System.out.println( Constants.getCounter() + ": getVariables");
- variables [VERSION_INDEX] = getVariable( Constants.VERSION_MACRO_NAME, project, provider);
-
- variables [TARGET_INDEX] = getVariable( Constants.TARGET_MACRO_NAME, project, provider);
+ variables [PATH_INDEX] = getVariable( "PATH", project, provider);
return variables;
}
diff --git a/org.rtems.cdt.toolchain2/org/rtems/cdt/build/RunScannerInfoProvider.java b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/RunScannerInfoProvider.java
index 4926c13..44adf9d 100644
--- a/org.rtems.cdt.toolchain2/org/rtems/cdt/build/RunScannerInfoProvider.java
+++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/RunScannerInfoProvider.java
@@ -14,6 +14,7 @@ package org.rtems.cdt.build;
import org.eclipse.cdt.make.internal.core.scannerconfig2.GCCSpecsRunSIProvider;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
import org.rtems.cdt.Constants;
import org.rtems.cdt.Storage;
@@ -21,17 +22,40 @@ import org.rtems.cdt.Storage;
public class RunScannerInfoProvider extends GCCSpecsRunSIProvider {
protected boolean initialize() {
if (!super.initialize()) {
- return false;
- }
+ return false;
+ }
- IProject project = resource.getProject();
-
- fCompileCommand = new Path(
- Storage.getProperty( project, Constants.TARGET_KEY)
- + "-rtems"
- + Storage.getProperty( project, Constants.VERSION_KEY)
- + "-gcc"
- );
+ IProject project = resource.getProject();
+
+ /*
+ * FIXME: This is a hack to avoid to early discovery of internal
+ * compiler include paths and symbols. The discovery is suppressed for
+ * empty projects which contain only the '.project' and '.cproject'
+ * files.
+ */
+ try {
+ if (project.members().length < 3) {
+ return false;
+ }
+ } catch (CoreException e) {
+ e.printStackTrace();
+ return false;
+ }
+
+ /*
+ * FIXME: Added absolute path since it seams that the build
+ * environment is ignored.
+ */
+ fCompileCommand = new Path(
+ Storage.getProperty( project, Constants.BASE_PATH_KEY)
+ );
+ fCompileCommand = fCompileCommand.append( "bin");
+ fCompileCommand = fCompileCommand.append(
+ Storage.getProperty( project, Constants.TARGET_KEY)
+ + "-rtems"
+ + Storage.getProperty( project, Constants.VERSION_KEY)
+ + "-gcc"
+ );
return true;
}