summaryrefslogtreecommitdiff
path: root/tandem/commacs
diff options
context:
space:
mode:
Diffstat (limited to 'tandem/commacs')
-rw-r--r--tandem/commacs94
1 files changed, 94 insertions, 0 deletions
diff --git a/tandem/commacs b/tandem/commacs
new file mode 100644
index 0000000..31e91a1
--- /dev/null
+++ b/tandem/commacs
@@ -0,0 +1,94 @@
+?section CC ROUTINE
+#FRAME
+[#PUSH file stem src obj htime file prev time stime otime
+ comp out options sup buf col locn group
+]
+
+[#IF [#ARGUMENT /VALUE file/ WORD /SPACE/ END]]
+[#IF [#EMPTYV file] |THEN|
+ #OUTPUT Syntax: CC <file> <collector> <comp-options>
+ #RESET FRAMES
+ #RETURN
+]
+
+[#IF NOT [#FILEINFO /EXISTENCE/ [file]]
+|THEN|
+ #OUTPUT [file] does not exist !
+ #RESET FRAMES
+ #RETURN
+]
+
+#PUSH #DEFAULTS vol subvol
+#SETMANY vol subvol src, [#FILEINFO /VOLUME, SUBVOL, FILE/ [file]]
+VOLUME [vol].[subvol]
+
+#SETV stem file
+#CHARDEL stem [#CHARCOUNT stem]
+#SET obj [stem]O
+#SETV stem src
+#CHARDEL stem [#CHARCOUNT stem]
+
+[#IF [#ARGUMENT /VALUE out/ DEVICE END]]
+[#IF [#EMPTYV out] |THEN| #SET out $T.#C]
+
+#SETMANY col group, [#FILEINFO /VOLUME, SUBVOL/ [out]]
+#SET locn [group].[stem]
+#SET sup [#LOOKUPPROCESS /ANCESTOR/ [col]]
+
+#SET options [#REST]
+
+== Find newest Header file
+#SET htime 0
+#SET file [#FILENAMES /MAXIMUM 1/ *H]
+[#LOOP |WHILE| NOT [#EMPTYV file]
+|DO|
+ #SET time [#FILEINFO /MODIFICATION/ [file]]
+ [#IF time > htime |THEN| #SETV htime time]
+
+ #SETV prev file
+ #SET file [#FILENAMES /MAXIMUM 1, PREVIOUS [prev]/ *H]
+]
+
+#SET stime [#FILEINFO /MODIFICATION/ [src]]
+#SET otime [#FILEINFO /MODIFICATION/ [obj]]
+
+#SET comp 0
+
+[#IF otime < htime
+|THEN|
+ #OUTPUT Header file(s) changed since object [obj] compiled
+ #SET comp -1
+]
+
+[#IF otime < stime
+|THEN|
+ #OUTPUT Source file [src] changed since object [obj] compiled
+ #SET comp -1
+]
+
+[#IF comp
+|THEN|
+ SPOOLCOM /OUTV buf/ OPEN [sup];JOB (OWNER, LOC [locn]),STATUS,DELETE !
+ #SET buf
+ #OUTPUT Compiling [src]... [options]
+ C /IN [src], OUT [out].[stem]/[obj];SYMBOLS,HIGHPIN [options]
+ [#CASE [tacl^completioncode]
+ | 0 |
+ #OUTPUT Compiled OK: [src]
+ SPOOLCOM /OUTV buf/ OPEN [sup];JOB (OWNER, LOC [locn]),STATUS,DELETE !
+ #SET _completion:completioncode 0
+ | 1 |
+ #OUTPUT [src]: Compile Warnings
+ SPOOLCOM /OUTV buf/ OPEN [sup];JOB (OWNER, LOC [locn]),STATUS
+ #OUTPUTV buf
+ |OTHERWISE|
+ #OUTPUT [src]: Compile FAILED !
+ SPOOLCOM /OUTV buf/ OPEN [sup];JOB (OWNER, LOC [locn]),STATUS
+ #OUTPUTV buf
+ ]
+|ELSE|
+ #OUTPUT Object file [obj] is up to date
+ #SET _completion:completioncode 0
+]
+
+#UNFRAME