summaryrefslogtreecommitdiffstats
path: root/genprotsym.txr
diff options
context:
space:
mode:
Diffstat (limited to 'genprotsym.txr')
-rw-r--r--genprotsym.txr21
1 files changed, 16 insertions, 5 deletions
diff --git a/genprotsym.txr b/genprotsym.txr
index 3ba70b3a..b3ac769b 100644
--- a/genprotsym.txr
+++ b/genprotsym.txr
@@ -11,10 +11,12 @@ OBJS-$(@sym) += @file.o
@ (end)
@ (do (set [pp-sym-of-file `@file.c`] ppsym))
@(end)
-@(next :list (glob "*.c"))
+@(next (open-command "git ls-files ':(glob)*.c'"))
@(bind pp-stack nil)
@(collect)
@file
+@ (require (nequal file "protsym.c"))
+@ (set pp-stack nil)
@ (next file)
@ (do (whenlet ((pp [pp-sym-of-file file]))
(set pp-stack (list pp))))
@@ -23,9 +25,20 @@ OBJS-$(@sym) += @file.o
val @(coll)@{sym /[A-Za-z0-9_]+_[sk]/}@/[,;]/@\
@(do (set [pp-syms-of-sym sym] pp-stack))@(end)
@ (or)
+#if @ppsym1 || @ppsym2
+@ (do (push `(@ppsym1 || @ppsym2)` pp-stack))
+@ (or)
#if @ppsym
@ (do (push ppsym pp-stack))
@ (or)
+#elif @ppsym1 || @ppsym2
+@ (do (pop pp-stack)
+ (push `(@ppsym1 || @ppsym2)` pp-stack))
+@ (or)
+#elif @ppsym
+@ (do (pop pp-stack)
+ (push ppsym pp-stack))
+@ (or)
#endif
@ (do (pop pp-stack))
@ (end)
@@ -53,20 +66,18 @@ val @(coll)@{sym /[A-Za-z0-9_]+_[sk]/}@/[,;]/@\
#include "lib.h"
@ (repeat :vars (gpp))
+@ (if gpp `#if @{gpp " && "}`)
@ (repeat)
extern val @(rep)@gsym, @(last)@gsym;@(end)
-@ (first)
-@(if gpp `#if @{gpp " && "}\n`)extern val @(rep)@gsym, @(last)@gsym;@(end)
@ (end)
@ (if gpp "#endif")
@ (end)
val *protected_sym[] = {
@ (repeat :vars (gpp))
+@ (if gpp `#if @{gpp " && "}`)
@ (repeat)
@(rep)&@gsym, @(last)&@gsym,@(end)
-@ (first)
-@(if gpp `#if @{gpp " && "}\n`) @(rep)&@gsym, @(last)&@gsym,@(end)
@ (end)
@ (if gpp "#endif")
@ (end)