diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2008-11-28 09:50:29 +0000 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2008-11-28 09:50:29 +0000 |
commit | 52fb7d36642ef08401ecc423372f45f3b2cd61b1 (patch) | |
tree | 7c649e94ce20ec9dc8cddbeeb3a6a00c4b3f52cc /org.rtems.cdt.toolchain2 | |
parent | Added build macro and environment suppliers. (diff) | |
download | rtems-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.java | 38 | ||||
-rw-r--r-- | org.rtems.cdt.toolchain2/org/rtems/cdt/build/RunScannerInfoProvider.java | 44 |
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; } |