unzip/tandem/commacs

95 lines
2.2 KiB
Plaintext

?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