// 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();
}
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);
}
}
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);
}
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 <Benchmarks-directory> <Directory-for-generated-files> <specific-benchmark-lists...>");
+ return;
+ }
+
+ // String[] dirNames = args;
+
+ String[] dirNames = new String[args.length - 2];
+ for (int i = 0; i < args.length - 2; i++) {
+ dirNames[i] = args[i + 2];
+ }
+// String[] dirNames = Environment.Benchmarks;
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(Environment.BenchmarksDir, Environment.GeneratedFilesDir, dirName);
+ CodeGenerator generator = new CodeGenerator(args[0], args[1], dirName);
generator.generateCode();
}
}