1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 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
|