Changeset 3273


Ignore:
Timestamp:
Jun 5, 2013, 6:52:29 PM (6 years ago)
Author:
shermer
Message:

First pass of simplifying configurations.

Location:
proto/pabloj/trunk/src/application/config
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • proto/pabloj/trunk/src/application/config/ConfigurationFactory.java

    r3249 r3273  
    3434       
    3535        if (configuration.targetLang.equals(Configuration.CLANG)) { // C language
    36                 configuration.templateFileName = cli.getOptionValue("t", "pablo_definitions.template");
    37                 configuration.templateDirectory = FileUtil.ensureEndsWith(cli.getOptionValue("T", Configuration.TEMPLATES_DIRECTORY + Configuration.CLANG), File.separator);
    38                 configuration.outputFileName = cli.getOptionValue("o", FileUtil.replaceFileNameExtension(new File(configuration.templateFileName).getName(), ".h"));
    39                
    40                 //compilerConfig.outputDirectory = cli.getOptionValue("O", CompilerConfig.CLANG);                       
    41                
    42         } else { // C++ language - default
    43                 configuration.templateFileName = cli.getOptionValue("t", "pablo_definitions.template");
    44                 configuration.templateDirectory = FileUtil.ensureEndsWith(cli.getOptionValue("T", Configuration.TEMPLATES_DIRECTORY + Configuration.CPPLANG), File.separator);
    45                 configuration.outputFileName = cli.getOptionValue("o", FileUtil.replaceFileNameExtension(new File(configuration.templateFileName).getName(), ".hpp"));
    46                
    47                 //compilerConfig.outputDirectory = cli.getOptionValue("O", CompilerConfig.CPPLANG);
     36                outputLanguageConfiguration(cli, configuration, "pablo_definitions.template", Configuration.CLANG, ".h");
     37        }
     38        else { // C++ language - default
     39                outputLanguageConfiguration(cli, configuration, "pablo_definitions.template", Configuration.CPPLANG, ".hpp");
    4840        }
    4941       
    5042        // defaults
    51         configuration.addAssertBitBlockAlignStmts = false;
    52         if(cli.hasOption("a")) {
    53                 configuration.addAssertBitBlockAlignStmts = true;
    54         }
    55        
    56         configuration.addDumpStmts = false;
    57         if(cli.hasOption("d")) {
    58                 configuration.addDumpStmts = true;
    59         }
    60        
    61         configuration.errorRoutine = cli.getOptionValue("e", "raise_assert");
    62        
    63         configuration.isExperimentalMode = false;
    64         if(cli.hasOption("p")) {
    65                 configuration.isExperimentalMode = true;
    66         }
    67        
    68                 return configuration;
    69        
     43        configuration.addAssertBitBlockAlignStmts = cli.hasOption("a");
     44        configuration.addDumpStmts = cli.hasOption("d");
     45        configuration.errorRoutine = cli.getOptionValue("e", "raise_assert");           
     46        configuration.isExperimentalMode = cli.hasOption("p");
     47
     48                return configuration;           
    7049    }
     50
     51        private static void outputLanguageConfiguration(CommandLine cli, Configuration configuration,
     52                        String defaultTemplateFileName, String languageIdentifier, String outputFileExtension) {
     53                configuration.templateFileName   = cli.getOptionValue("t", defaultTemplateFileName);
     54                String languageTemplateDirectory = cli.getOptionValue("T", Configuration.TEMPLATES_DIRECTORY + languageIdentifier);
     55                configuration.templateDirectory  = FileUtil.ensureEndsWith(languageTemplateDirectory, File.separator);
     56                configuration.outputFileName     = cli.getOptionValue("o", outputFilename(configuration.templateFileName, outputFileExtension));
     57        }
     58
     59        private static String outputFilename(String templateFileName, String extension) {
     60                String name = new File(templateFileName).getName();
     61                return  FileUtil.replaceFileNameExtension(name, extension);
     62        }
    7163}
  • proto/pabloj/trunk/src/application/config/ConfigurationOptions.java

    r3249 r3273  
    2121
    2222public class ConfigurationOptions {     
     23        public static Options options;
    2324       
    24           public static Options createOptions() {
    25                        
    26                     Options options = new Options();
    27                     Option option;
     25        public static Options createOptions() {
     26                options = new Options();
    2827
    29                     OptionBuilder.hasArg(false);
    30                     OptionBuilder.isRequired(false);
    31                     OptionBuilder.withLongOpt("help");
    32                     OptionBuilder.withDescription("Pablo help.");
    33                         option = OptionBuilder.create("h");
    34                         options.addOption(option);
     28                addNonrequiredOption("h", "help",         false,  "Pablo help.");
    3529
    36                     OptionGroup optionGroup = new OptionGroup();
    37                         optionGroup.isRequired();
    38                                                
    39                     OptionBuilder.hasArg(true);
    40                     OptionBuilder.withLongOpt("pablos");
    41                     OptionBuilder.withDescription("PabloS input file.");
    42                         option = OptionBuilder.create("s");
     30                OptionGroup optionGroup = makeRequiredOptionGroup(
     31                        nonrequiredOption("s", "pablos",     true,  "PabloS input file."),
     32                        nonrequiredOption("b", "pablob",     true,  "PabloB input file.")
     33                );
     34                options.addOptionGroup(optionGroup);
     35
     36                addNonrequiredOption("t", "template",     true,  "Pablo template file.");       
     37                addNonrequiredOption("o", "output",       true,  "Pablo output file.");
     38                addNonrequiredOption("e", "error",        true,  "Name/qualified name of error routine.");     
     39                addNonrequiredOption("a", "align",        false, "Add ASSERT_BITBLOCK_ALIGN statments.");       
     40                addNonrequiredOption("d", "dump",         false, "Add SIMD register dump statements.");                                 
     41                addNonrequiredOption("x", "language",     true,  "Target language. Targets include: 'cpplang', 'clang (not yet supported)'.");
     42                addNonrequiredOption("p", "experimental", false, "Experimental mode.");                                 
     43
     44                return options;
     45        }
     46
     47        private static OptionGroup makeRequiredOptionGroup(Option... options) {
     48                OptionGroup optionGroup = new OptionGroup();
     49                optionGroup.isRequired();
     50                for(Option option: options) {
    4351                    optionGroup.addOption(option);
     52                }
     53                return optionGroup;
     54        }
    4455
    45                     OptionBuilder.hasArg(true);
    46                     OptionBuilder.withLongOpt("pablob");
    47                     OptionBuilder.withDescription("PabloB input file.");
    48                         option = OptionBuilder.create("b");
    49                     optionGroup.addOption(option);
    50                         options.addOptionGroup(optionGroup);
    51                    
    52                     OptionBuilder.hasArg(true);
    53                     OptionBuilder.isRequired(false);
    54                     OptionBuilder.withLongOpt("template");
    55                     OptionBuilder.withDescription("Pablo template file.");
    56                         option = OptionBuilder.create("t");
    57                     options.addOption(option);
    58                                                    
    59                     OptionBuilder.hasArg(true);
    60                     OptionBuilder.isRequired(false);
    61                     OptionBuilder.withLongOpt("output");
    62                     OptionBuilder.withDescription("Pablo output file.");
    63                         option = OptionBuilder.create("o");
    64                         options.addOption(option);
    65                                                
    66                     OptionBuilder.hasArg(true);
    67                     OptionBuilder.isRequired(false);
    68                     OptionBuilder.withLongOpt("error");
    69                     OptionBuilder.withDescription("Name/qualified name of error routine.");
    70                         option = OptionBuilder.create("e");
    71                         options.addOption(option);
     56        private static void addNonrequiredOption(String shortOption, String longOption, boolean hasArg, String description) {
     57                Option option = nonrequiredOption(shortOption, longOption, hasArg, description);
     58                options.addOption(option);     
     59        }
    7260
    73                     OptionBuilder.hasArg(false);
    74                     OptionBuilder.isRequired(false);
    75                     OptionBuilder.withLongOpt("align");
    76                     OptionBuilder.withDescription("Add ASSERT_BITBLOCK_ALIGN statments.");
    77                         option = OptionBuilder.create("a");
    78                         options.addOption(option);                     
    79                        
    80                     OptionBuilder.hasArg(false);
    81                     OptionBuilder.isRequired(false);
    82                     OptionBuilder.withLongOpt("dump");
    83                     OptionBuilder.withDescription("Add SIMD register dump statements.");
    84                         option = OptionBuilder.create("d");
    85                         options.addOption(option);                     
    86 
    87                     OptionBuilder.hasArg(true);
    88                     OptionBuilder.isRequired(false);
    89                     OptionBuilder.withLongOpt("language");
    90                     OptionBuilder.withDescription("Target language. Targets include: 'cpplang', 'clang (not yet supported)'.");
    91                         option = OptionBuilder.create("x");
    92                         options.addOption(option);                             
    93 
    94                     OptionBuilder.hasArg(false);
    95                     OptionBuilder.isRequired(false);
    96                     OptionBuilder.withLongOpt("experimental");
    97                     OptionBuilder.withDescription("Experimental mode.");
    98                         option = OptionBuilder.create("p");
    99                         options.addOption(option);                                             
    100                        
    101                     return options;
    102                   }
    103 
    104           public static void usageMessage(Options options) {
    105                   HelpFormatter h = new HelpFormatter();
    106                   h.printHelp("java " + Configuration.COMPILERNAME + "\n", options);   
    107           }       
     61        private static Option nonrequiredOption(String shortOption, String longOption, boolean hasArg, String description ) {
     62                OptionBuilder.hasArg(hasArg);
     63                OptionBuilder.isRequired(false);
     64                OptionBuilder.withLongOpt(longOption);
     65                OptionBuilder.withDescription(description);
     66                return OptionBuilder.create(shortOption);
     67        }
     68       
     69        public static void usageMessage(Options options) {
     70                HelpFormatter h = new HelpFormatter();
     71                h.printHelp("java " + Configuration.COMPILERNAME + "\n", options);   
     72        }         
    10873}
Note: See TracChangeset for help on using the changeset viewer.