add #else support to #ifdef
[org.ibex.tool.git] / src / java / ibex / tool / Preprocessor.java
index 1639829..c8307da 100644 (file)
@@ -19,6 +19,8 @@ import java.io.*;
  *
  *   //#ifdef FOO                -- includes contents if FOO passed as define to preprocessor
  *       [code]
+ *   //#else
+ *       [code run if !FOO]
  *   //#endif
  *
  *   Replacements are done on a token basis.  Tokens are defined as a
@@ -215,7 +217,8 @@ PROCESS:
                 out.println(trimmed);
                 boolean useCode = defs.contains(expr);
                 for (trimmed = in.readLine().trim(); !trimmed.startsWith("//#endif"); trimmed = in.readLine().trim()) {
-                    if (!useCode) out.print("// ");
+                    if (trimmed.startsWith("//#else")) useCode = !useCode;
+                    else if (!useCode) out.print("// ");
                     out.print(processLine(trimmed, false));
                 }
                 out.println("//#endif "+expr);