summaryrefslogtreecommitdiffstats
path: root/org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java
diff options
context:
space:
mode:
Diffstat (limited to 'org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java')
-rw-r--r--org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java45
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
}