fixed command line
[cdsspec-compiler.git] / src / edu / uci / eecs / codeGenerator / CodeGenerator.java
index a77855add8c9abbf0fde3a794c0f0e53c8f7075c..2d335eb0a3561770ad54cee9c85bca259b5716de 100644 (file)
@@ -58,10 +58,14 @@ public class CodeGenerator {
        // The specification annotation extractor
        private SpecExtractor extractor;
 
-       public CodeGenerator(String dirName) {
+       public CodeGenerator(String originalDir, String generatedDir, String dirName) {
                this.dirName = dirName;
-               originalDir = Environment.BenchmarksDir + dirName + "/";
-               generatedDir = Environment.GeneratedFilesDir + dirName + "/";
+               this.originalDir = originalDir + "/" + dirName + "/";
+               this.generatedDir = generatedDir + "/" + dirName + "/";
+               
+               //this.originalDir = Environment.BenchmarksDir + dirName + "/";
+               //this.generatedDir = Environment.GeneratedFilesDir + dirName + "/";
+               
                try {
                        files = this.getSrcFiles(originalDir);
                } catch (FileNotFoundException e) {
@@ -127,8 +131,7 @@ public class CodeGenerator {
                        if (defineList != null) {
                                for (DefineConstruct con : defineList) {
                                        code = CodeGeneratorUtils.Generate4Define(con);
-                                       addition = new CodeAddition(con.endLineNum,
-                                                       code);
+                                       addition = new CodeAddition(con.endLineNum, code);
                                        additions.addCodeAddition(addition);
                                }
                        }
@@ -178,12 +181,15 @@ public class CodeGenerator {
                        additionIdx = 0;
                        curAddition = additions.codeAdditions.get(0);
                }
-               
+
                // Include the header for C/C++ files (.c/.cc/.cpp)
                String name = file.getName();
-               if (name.endsWith(".c") || name.endsWith(".cc") || name.endsWith(".cpp")) {
-                       newCode.addLine(CodeGeneratorUtils.Comment("Add the" + SpecNaming.CDSSpecGeneratedHeader + " header file"));
-                       newCode.addLine(CodeGeneratorUtils.IncludeHeader(SpecNaming.CDSSpecGeneratedHeader));
+               if (name.endsWith(".c") || name.endsWith(".cc")
+                               || name.endsWith(".cpp")) {
+                       newCode.addLine(CodeGeneratorUtils.Comment("Add the"
+                                       + SpecNaming.CDSSpecGeneratedHeader + " header file"));
+                       newCode.addLine(CodeGeneratorUtils
+                                       .IncludeHeader(SpecNaming.CDSSpecGeneratedHeader));
                        newCode.addLine("");
                }
 
@@ -326,15 +332,24 @@ public class CodeGenerator {
        }
 
        static public void main(String[] args) {
-       
-//             String[] dirNames = args;
-               String[] dirNames = Environment.Benchmarks;
+               if (args.length < 3) {
+                       System.out
+                                       .println("Usage: CodeGenerator <Benchmarks-directory> <Directory-for-generated-files> <specific-benchmark-lists...>");
+                       return;
+               }
+               
+               // String[] dirNames = a        rgs;
+               // String[] dirNames = Environment.Benchmarks;
+               String[] dirNames = new String[args.length - 2];
+               for (int i = 0; i < args.length - 2; i++) {
+                       dirNames[i] = args[i + 2];
+               }
 
                for (int i = 0; i < dirNames.length; i++) {
                        String dirName = dirNames[i];
-                       System.out.println("/**********   Generating CDSSpec files for " + dirName
-                                       + "    **********/");
-                       CodeGenerator generator = new CodeGenerator(dirName);
+                       System.out.println("/**********   Generating CDSSpec files for "
+                                       + dirName + "    **********/");
+                       CodeGenerator generator = new CodeGenerator(args[0], args[1], dirName);
                        generator.generateCode();
                }
        }