diff options
Diffstat (limited to 'org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java')
-rw-r--r-- | org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java b/org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java index f4d247b..6fce4fe 100644 --- a/org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java +++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java @@ -12,8 +12,16 @@ package org.rtems.cdt; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.Map; + import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.QualifiedName; import org.rtems.cdt.Activator; @@ -34,8 +42,12 @@ public class Storage { String value = getPristineProperty( project, key); if (value == null) { - value = Activator.getDefault().getPreferenceStore().getString( key); - setProperty( project, key, value); + if (key.startsWith( Constants.TOOL_KEY_PREFIX)) { + reloadBSPInformation( project); + } else { + value = Activator.getDefault().getPreferenceStore().getString( key); + setProperty( project, key, value); + } } return value; @@ -49,6 +61,35 @@ public class Storage { } } + public static void reloadBSPInformation( IProject project) { + // Create make process builder + ProcessBuilder pb = new ProcessBuilder( "make"); + + // Prepend RTEMS base binary path to PATH environment variable + Map<String, String> env = pb.environment(); + IPath binPath = new Path( getProperty( project, Constants.BASE_PATH_KEY)).append( "bin"); + env.put( "PATH", binPath.toOSString() + Constants.PATH_SEPERATOR + env.get( "PATH")); + + // Provide RTEMS_MAKEFILE_PATH environment variable + env.put( "RTEMS_MAKEFILE_PATH", getProperty( project, Constants.BSP_PATH_KEY)); + + // Change working directory to the Makefile location + pb.directory( Activator.getDefault().getMakefileLocation().toFile()); + + // Start make process and parse its output + try { + Process p = pb.start(); + InputStream is = p.getInputStream(); + BufferedReader br = new BufferedReader( new InputStreamReader( is)); + String line; + while ((line = br.readLine()) != null) { + System.out.println(line); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + private Storage() { // Do nothing } |