Changeset 9e420b1 in rtems-eclipse-plug-in


Ignore:
Timestamp:
Nov 28, 2008, 4:15:26 PM (10 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
master
Children:
493763b
Parents:
17ccf39
Message:

Added Makefile to obtain BSP information.
TODO:

o Parse make output and provide tool and tool option properties.
o Use tool and tool option properties in the command line generator.
o Remove obsolete version and target properties and preferences.
o Remove wizard.

Location:
org.rtems.cdt.toolchain2/org/rtems/cdt
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • org.rtems.cdt.toolchain2/org/rtems/cdt/Activator.java

    r17ccf39 r9e420b1  
    1313package org.rtems.cdt;
    1414
     15import java.io.BufferedWriter;
     16import java.io.FileWriter;
     17import java.io.IOException;
     18import org.eclipse.core.runtime.IPath;
    1519import org.eclipse.ui.plugin.AbstractUIPlugin;
    1620import org.osgi.framework.BundleContext;
     21import org.rtems.cdt.Constants;
    1722
    1823public class Activator extends AbstractUIPlugin {
    1924        private static Activator mPlugin;
    20        
    21         public Activator() {
    22                 super();
    23         }
    2425
    2526        public void start( BundleContext context) throws Exception {
    2627                super.start( context);
    2728                mPlugin = this;
     29                createBSPInfoMakefile();
    2830        }
    2931
     
    3638                return mPlugin;
    3739        }
     40       
     41        public IPath getMakefileLocation() {
     42                return getStateLocation();
     43        }
     44       
     45        private void createBSPInfoMakefile() {
     46                IPath makefile = getMakefileLocation().append( "Makefile");
     47                BufferedWriter out = null;
     48                try {
     49                        out = new BufferedWriter( new FileWriter( makefile.toFile()));
     50                        out.write(
     51                                "include $(RTEMS_MAKEFILE_PATH)/Makefile.inc\n"
     52                                        + "include $(RTEMS_CUSTOM)\n"
     53                                        + "include $(PROJECT_ROOT)/make/leaf.cfg\n"
     54                                        + "\n"
     55                                        + "all:\n"
     56                                        + "\t@echo " + Constants.TOOL_ARCHIVER_KEY + "\n"
     57                                        + "\t@for i in $(AR) ; do printf \"\\t%s\\n\" \"$$i\" ; done\n"
     58                                        + "\t@echo " + Constants.TOOL_ASSEMBLER_KEY + "\n"
     59                                        + "\t@for i in $(AS) ; do printf \"\\t%s\\n\" \"$$i\" ; done\n"
     60                                        + "\t@echo " + Constants.TOOL_COMPILER_C_KEY + "\n"
     61                                        + "\t@for i in $(COMPILE.c) ; do printf \"\\t%s\\n\" \"$$i\" ; done\n"
     62                                        + "\t@echo " + Constants.TOOL_COMPILER_CPP_KEY + "\n"
     63                                        + "\t@for i in $(COMPILE.cc) ; do printf \"\\t%s\\n\" \"$$i\" ; done\n"
     64                                        + "\t@echo " + Constants.TOOL_LINKER_C_KEY + "\n"
     65                                        + "\t@for i in $(LINK.c) ; do printf \"\\t%s\\n\" \"$$i\" ; done\n"
     66                                        + "\t@echo " + Constants.TOOL_LINKER_CPP_KEY + "\n"
     67                                        + "\t@for i in $(LINK.cc) ; do printf \"\\t%s\\n\" \"$$i\" ; done\n"
     68                        );
     69                } catch (IOException e) {
     70                        e.printStackTrace();
     71                } finally {
     72                        try {
     73                                if (out != null) {
     74                                        out.close();
     75                                }
     76                        } catch (IOException e) {
     77                                e.printStackTrace();
     78                        }
     79                }
     80        }
    3881}
  • org.rtems.cdt.toolchain2/org/rtems/cdt/Constants.java

    r17ccf39 r9e420b1  
    2727                {"SuperH", "sh"}
    2828        };
     29
     30        public static final String PATH_SEPERATOR = System.getProperty( "path.separator");
    2931       
    3032        public static final String DEFAULT_BASE_PATH = "/opt/rtems-4.9";
     
    3941       
    4042        public static final String DEFAULT_BSP_PATH = "/opt/rtems-4.9/powerpc-rtems4.9/psim";
     43
     44        public static final String KEY_PREFIX = "org.rtems.cdt.key";
    4145       
    42         public static final String BASE_PATH_KEY = "org.rtems.cdt.key.basePath";
     46        public static final String BASE_PATH_KEY = KEY_PREFIX + ".basePath";
    4347       
    44         public static final String VERSION_KEY = "org.rtems.cdt.key.version";
     48        public static final String VERSION_KEY = KEY_PREFIX + ".version";
    4549       
    46         public static final String TARGET_KEY = "org.rtems.cdt.key.target";
     50        public static final String TARGET_KEY = KEY_PREFIX + ".target";
    4751       
    48         public static final String BSP_PATH_KEY = "org.rtems.cdt.key.bspPath";
     52        public static final String BSP_PATH_KEY = KEY_PREFIX + ".bspPath";
     53
     54        public static final String TOOL_KEY_PREFIX = KEY_PREFIX + ".tool";
     55       
     56        public static final String TOOL_ARCHIVER_KEY = TOOL_KEY_PREFIX + ".archiver";
     57       
     58        public static final String TOOL_ASSEMBLER_KEY = TOOL_KEY_PREFIX + ".assembler";
     59       
     60        public static final String TOOL_COMPILER_C_KEY = TOOL_KEY_PREFIX + ".compiler.c";
     61       
     62        public static final String TOOL_COMPILER_CPP_KEY = TOOL_KEY_PREFIX + ".compiler.cpp";
     63       
     64        public static final String TOOL_LINKER_C_KEY = TOOL_KEY_PREFIX + ".linker.c";
     65       
     66        public static final String TOOL_LINKER_CPP_KEY = TOOL_KEY_PREFIX + ".linker.cpp";
     67       
     68        public static final String TOOL_OPTIONS_KEY_POSTFIX = ".options";
     69       
     70        public static final String TOOL_OPTIONS_ARCHIVER_KEY = TOOL_ARCHIVER_KEY + TOOL_OPTIONS_KEY_POSTFIX;
     71       
     72        public static final String TOOL_OPTIONS_ASSEMBLER_KEY = TOOL_ASSEMBLER_KEY + TOOL_OPTIONS_KEY_POSTFIX;
     73       
     74        public static final String TOOL_OPTIONS_COMPILER_C_KEY = TOOL_COMPILER_C_KEY + TOOL_OPTIONS_KEY_POSTFIX;
     75       
     76        public static final String TOOL_OPTIONS_COMPILER_CPP_KEY = TOOL_COMPILER_CPP_KEY + TOOL_OPTIONS_KEY_POSTFIX;
     77       
     78        public static final String TOOL_OPTIONS_LINKER_C_KEY = TOOL_LINKER_C_KEY + TOOL_OPTIONS_KEY_POSTFIX;
     79       
     80        public static final String TOOL_OPTIONS_LINKER_CPP_KEY = TOOL_LINKER_CPP_KEY + TOOL_OPTIONS_KEY_POSTFIX;
    4981       
    5082        private Constants() {
  • org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java

    r17ccf39 r9e420b1  
    1313package org.rtems.cdt;
    1414
     15import java.io.BufferedReader;
     16import java.io.IOException;
     17import java.io.InputStream;
     18import java.io.InputStreamReader;
     19import java.util.Map;
     20
    1521import org.eclipse.core.resources.IProject;
    1622import org.eclipse.core.runtime.CoreException;
     23import org.eclipse.core.runtime.IPath;
     24import org.eclipse.core.runtime.Path;
    1725import org.eclipse.core.runtime.QualifiedName;
    1826import org.rtems.cdt.Activator;
     
    3543               
    3644                if (value == null) {
    37                         value = Activator.getDefault().getPreferenceStore().getString( key);
    38                         setProperty( project, key, value);
     45                        if (key.startsWith( Constants.TOOL_KEY_PREFIX)) {
     46                                reloadBSPInformation( project);
     47                        } else {
     48                                value = Activator.getDefault().getPreferenceStore().getString( key);
     49                                setProperty( project, key, value);
     50                        }
    3951                }
    4052               
     
    5062        }
    5163       
     64        public static void reloadBSPInformation( IProject project) {
     65                // Create make process builder
     66                ProcessBuilder pb = new ProcessBuilder( "make");
     67               
     68                // Prepend RTEMS base binary path to PATH environment variable
     69                Map<String, String> env = pb.environment();
     70                IPath binPath = new Path( getProperty( project, Constants.BASE_PATH_KEY)).append( "bin");
     71                env.put( "PATH", binPath.toOSString() + Constants.PATH_SEPERATOR + env.get( "PATH"));
     72               
     73                // Provide RTEMS_MAKEFILE_PATH environment variable
     74                env.put( "RTEMS_MAKEFILE_PATH", getProperty( project, Constants.BSP_PATH_KEY));
     75               
     76                // Change working directory to the Makefile location
     77                pb.directory( Activator.getDefault().getMakefileLocation().toFile());
     78               
     79                // Start make process and parse its output
     80                try {
     81                        Process p = pb.start();
     82                    InputStream is = p.getInputStream();
     83                    BufferedReader br = new BufferedReader( new InputStreamReader( is));
     84                    String line;
     85                    while ((line = br.readLine()) != null) {
     86                            System.out.println(line);
     87                    }
     88                } catch (IOException e) {
     89                        e.printStackTrace();
     90                }
     91        }
     92       
    5293        private Storage() {
    5394                // Do nothing
  • org.rtems.cdt.toolchain2/org/rtems/cdt/build/EnvironmentSupplier.java

    r17ccf39 r9e420b1  
    2929        private static final int VARIABLE_COUNT = 1;
    3030       
    31         private static final String PATH_SEPERATOR = System.getProperty( "path.separator");
    32        
    3331        public EnvironmentSupplier() {
    3432                // Do nothing
     
    4240                        path = path.append( "bin");
    4341                       
    44                         return new BuildEnvVar( name, path.toOSString(), IBuildEnvironmentVariable.ENVVAR_PREPEND, PATH_SEPERATOR);
     42                        return new BuildEnvVar( name, path.toOSString(), IBuildEnvironmentVariable.ENVVAR_PREPEND, Constants.PATH_SEPERATOR);
    4543                }
    4644
  • org.rtems.cdt.toolchain2/org/rtems/cdt/properties/PropertyPage.java

    r17ccf39 r9e420b1  
    1515import org.eclipse.core.resources.IProject;
    1616import org.eclipse.core.resources.IResource;
    17 import org.eclipse.core.runtime.CoreException;
    1817import org.eclipse.core.runtime.IAdaptable;
    1918import org.eclipse.jface.preference.DirectoryFieldEditor;
     
    2423import org.eclipse.ui.IWorkbenchPropertyPage;
    2524import org.eclipse.cdt.core.model.ICElement;
    26 import org.eclipse.cdt.make.core.MakeCorePlugin;
    27 import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredScannerInfoSerializable;
    28 import org.eclipse.cdt.make.internal.core.scannerconfig.DiscoveredScannerInfoStore;
    2925import org.rtems.cdt.Activator;
    3026import org.rtems.cdt.Constants;
     
    114110                setProperty( Constants.TARGET_KEY);
    115111                setProperty( Constants.BSP_PATH_KEY);
     112               
     113                // Reload BSP information
     114                Storage.reloadBSPInformation( mProject);
    116115
    117116                return true;
Note: See TracChangeset for help on using the changeset viewer.