X-Git-Url: http://plrg.eecs.uci.edu/git/?p=cdsspec-compiler.git;a=blobdiff_plain;f=src%2Fedu%2Fuci%2Feecs%2FcodeGenerator%2FCodeGenerator.java;h=ec0d7493cdf4fcb694df72f570656872b7b6bbb8;hp=b515930259a6aafe817e8472a95903f1d00df71b;hb=367c7a286656f200090364d17ac26bd605de6dc3;hpb=10e4c68fe56a0c9c53062ca03000c66ee9fc2212 diff --git a/src/edu/uci/eecs/codeGenerator/CodeGenerator.java b/src/edu/uci/eecs/codeGenerator/CodeGenerator.java index b515930..ec0d749 100644 --- a/src/edu/uci/eecs/codeGenerator/CodeGenerator.java +++ b/src/edu/uci/eecs/codeGenerator/CodeGenerator.java @@ -58,12 +58,22 @@ 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); + files = this.getSrcFiles(this.originalDir); + System.out.println("Original benchmarks directory: " + this.originalDir); + System.out.println("Generated benchmark directory: " + this.generatedDir); + System.out.println("The specific benchmark directory: " + this.dirName); + for (int i = 0; i < files.size(); i++) { + System.out.println(" Processing: " + files.get(i)); + } } catch (FileNotFoundException e) { e.printStackTrace(); } @@ -127,8 +137,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); } } @@ -179,6 +188,17 @@ public class CodeGenerator { 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)); + newCode.addLine(""); + } + try { br = new BufferedReader(new FileReader(file)); lineReader = new LineNumberReader(br); @@ -318,16 +338,24 @@ public class CodeGenerator { } static public void main(String[] args) { -// String[] dirNames = { Environment.REGISTER, Environment.MS_QUEUE, -// Environment.LINUXRWLOCKS, Environment.MCS_LOCK, -// Environment.DEQUE, Environment.TREIBER_STACK }; - String[] dirNames = args; + if (args.length < 3) { + System.out + .println("Usage: CodeGenerator "); + 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 = 5; i < dirNames.length; i++) { + for (int i = 0; i < dirNames.length; i++) { String dirName = dirNames[i]; - System.out.println("/********** Processing " + 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(); } }