aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/com/jogamp/gluegen/GlueGen.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/java/com/jogamp/gluegen/GlueGen.java')
-rw-r--r--src/java/com/jogamp/gluegen/GlueGen.java32
1 files changed, 26 insertions, 6 deletions
diff --git a/src/java/com/jogamp/gluegen/GlueGen.java b/src/java/com/jogamp/gluegen/GlueGen.java
index aa0fb7e..edfe360 100644
--- a/src/java/com/jogamp/gluegen/GlueGen.java
+++ b/src/java/com/jogamp/gluegen/GlueGen.java
@@ -104,11 +104,16 @@ public class GlueGen implements GlueEmitterControls {
public static final String __GLUEGEN__ = "__GLUEGEN__";
@SuppressWarnings("unchecked")
- public void run(final Reader reader, final String filename, final Class<?> emitterClass, final List<String> includePaths, final List<String> cfgFiles, final String outputRootDir, final boolean copyCPPOutput2Stderr, final boolean preserveGeneratedCPP) {
-
+ public void run(final Reader reader, final String filename, final Class<?> emitterClass, final List<String> includePaths, final List<String> cfgFiles, final String outputRootDir,
+ final boolean copyCPPOutput2Stderr, final boolean enablePragmaOnce, final boolean preserveGeneratedCPP)
+ {
try {
if(debug) {
Logging.getLogger().setLevel(Level.ALL);
+ System.err.println("GlueGen.run: filename: "+filename+", emitter: "+emitterClass.getName()+", outputRootDir "+outputRootDir+
+ ", copyCPPOutput2Stderr "+copyCPPOutput2Stderr+", enablePragmaOnce "+enablePragmaOnce+", preserveGeneratedCPP "+preserveGeneratedCPP);
+ System.err.println("GlueGen.run: includePaths "+includePaths);
+ System.err.println("GlueGen.run: cfgFiles "+cfgFiles);
} else if( null != logLevel ) {
Logging.getLogger().setLevel(logLevel);
}
@@ -131,8 +136,8 @@ public class GlueGen implements GlueEmitterControls {
final File out = File.createTempFile("CPPTemp", ".cpp");
final FileOutputStream outStream = new FileOutputStream(out);
- // preprocessor = new PCPP(includePaths, debug, copyCPPOutput2Stderr);
- preprocessor = new JCPP(includePaths, debug, copyCPPOutput2Stderr);
+ // preprocessor = new PCPP(includePaths, debug, copyCPPOutput2Stderr, enablePragmaOnce);
+ preprocessor = new JCPP(includePaths, debug, copyCPPOutput2Stderr, enablePragmaOnce);
final String cppName = preprocessor.getClass().getSimpleName();
if(debug || preserveGeneratedCPP) {
System.err.println("CPP <"+cppName+"> output at (persistent): " + out.getAbsolutePath());
@@ -167,7 +172,15 @@ public class GlueGen implements GlueEmitterControls {
try {
parser.translationUnit();
} catch (final RecognitionException e) {
- throw new RuntimeException("Fatal IO error", e);
+ throw new RuntimeException(String.format(
+ "Fatal error during translation (Localisation : %s:%s:%s)",
+ e.getFilename(), e.getLine(), e.getColumn()
+ ), e);
+ } catch (final TokenStreamRecognitionException e) {
+ throw new RuntimeException(String.format(
+ "Fatal error during translation (Localisation : %s:%s:%s)",
+ e.recog.getFilename(), e.recog.getLine(), e.recog.getColumn()
+ ), e);
} catch (final TokenStreamException e) {
throw new RuntimeException("Fatal IO error", e);
}
@@ -375,6 +388,7 @@ public class GlueGen implements GlueEmitterControls {
String outputRootDir = null;
final List<String> cfgFiles = new ArrayList<String>();
boolean copyCPPOutput2Stderr = false;
+ boolean enablePragmaOnce = true;
boolean preserveGeneratedCPP = false;
final List<String> includePaths = new ArrayList<String>();
@@ -397,6 +411,10 @@ public class GlueGen implements GlueEmitterControls {
debug=true;
} else if (arg.equals("--dumpCPP")) {
copyCPPOutput2Stderr=true;
+ } else if (arg.equals("--enablePragmaOnce")) {
+ enablePragmaOnce=true;
+ } else if (arg.equals("--disablePragmaOnce")) {
+ enablePragmaOnce=false;
} else if (arg.equals("--preserveGeneratedCPP")) {
preserveGeneratedCPP=true;
} else {
@@ -423,7 +441,7 @@ public class GlueGen implements GlueEmitterControls {
try {
final Class<?> emitterClass = emitterFQN == null ? null : Class.forName(emitterFQN);
- new GlueGen().run(reader, filename, emitterClass, includePaths, cfgFiles, outputRootDir, copyCPPOutput2Stderr, preserveGeneratedCPP);
+ new GlueGen().run(reader, filename, emitterClass, includePaths, cfgFiles, outputRootDir, copyCPPOutput2Stderr, enablePragmaOnce, preserveGeneratedCPP);
} catch (final ClassNotFoundException ex) {
throw new RuntimeException("specified emitter class was not in the classpath", ex);
}
@@ -448,6 +466,8 @@ public class GlueGen implements GlueEmitterControls {
out.println("-Cjava-emitter.cfg.");
out.println(" --debug enables debug mode");
out.println(" --dumpCPP directs CPP to dump all output to stderr as well");
+ out.println(" --enablePragmaOnce allow handle of #pragma once directive during parsing (default)");
+ out.println(" --disablePragmaOnce disable handling of #pragma once directive during parsing");
out.println(" --preserveGeneratedCPP preserve generated CPP file during generation (File it's already preserved by debug mode)");
exit(1);
}