Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ?section CC ROUTINE
  2. #FRAME
  3. [#PUSH file stem src obj htime file prev time stime otime
  4.        comp out options sup buf col locn group
  5. ]
  6.  
  7. [#IF [#ARGUMENT /VALUE file/ WORD /SPACE/ END]]
  8. [#IF [#EMPTYV file] |THEN|
  9.   #OUTPUT Syntax: CC <file> <collector> <comp-options>
  10.   #RESET FRAMES
  11.   #RETURN
  12. ]
  13.  
  14. [#IF NOT [#FILEINFO /EXISTENCE/ [file]]
  15. |THEN|
  16.   #OUTPUT [file] does not exist !
  17.   #RESET FRAMES
  18.   #RETURN
  19. ]
  20.  
  21. #PUSH #DEFAULTS vol subvol
  22. #SETMANY vol subvol src, [#FILEINFO /VOLUME, SUBVOL, FILE/ [file]]
  23. VOLUME [vol].[subvol]
  24.  
  25. #SETV stem file
  26. #CHARDEL stem [#CHARCOUNT stem]
  27. #SET obj [stem]O
  28. #SETV stem src
  29. #CHARDEL stem [#CHARCOUNT stem]
  30.  
  31. [#IF [#ARGUMENT /VALUE out/ DEVICE END]]
  32. [#IF [#EMPTYV out] |THEN| #SET out $T.#C]
  33.  
  34. #SETMANY col group, [#FILEINFO /VOLUME, SUBVOL/ [out]]
  35. #SET locn [group].[stem]
  36. #SET sup [#LOOKUPPROCESS /ANCESTOR/ [col]]
  37.  
  38. #SET options [#REST]
  39.  
  40. == Find newest Header file
  41. #SET htime 0
  42. #SET file [#FILENAMES /MAXIMUM 1/ *H]
  43. [#LOOP |WHILE| NOT [#EMPTYV file]
  44. |DO|
  45.   #SET time [#FILEINFO /MODIFICATION/ [file]]
  46.   [#IF time > htime |THEN| #SETV htime time]
  47.  
  48.   #SETV prev file
  49.   #SET file [#FILENAMES /MAXIMUM 1, PREVIOUS [prev]/ *H]
  50. ]
  51.  
  52. #SET stime [#FILEINFO /MODIFICATION/ [src]]
  53. #SET otime [#FILEINFO /MODIFICATION/ [obj]]
  54.  
  55. #SET comp 0
  56.  
  57. [#IF otime < htime
  58. |THEN|
  59.   #OUTPUT Header file(s) changed since object [obj] compiled
  60.   #SET comp -1
  61. ]
  62.  
  63. [#IF otime < stime
  64. |THEN|
  65.   #OUTPUT Source file [src] changed since object [obj] compiled
  66.   #SET comp -1
  67. ]
  68.  
  69. [#IF comp
  70. |THEN|
  71.   SPOOLCOM /OUTV buf/ OPEN [sup];JOB (OWNER, LOC [locn]),STATUS,DELETE !
  72.   #SET buf
  73.   #OUTPUT Compiling [src]... [options]
  74.   C /IN [src], OUT [out].[stem]/[obj];SYMBOLS,HIGHPIN [options]
  75.   [#CASE [tacl^completioncode]
  76.   | 0 |
  77.     #OUTPUT Compiled OK: [src]
  78.     SPOOLCOM /OUTV buf/ OPEN [sup];JOB (OWNER, LOC [locn]),STATUS,DELETE !
  79.     #SET _completion:completioncode 0
  80.   | 1 |
  81.     #OUTPUT [src]: Compile Warnings
  82.     SPOOLCOM /OUTV buf/ OPEN [sup];JOB (OWNER, LOC [locn]),STATUS
  83.     #OUTPUTV buf
  84.   |OTHERWISE|
  85.     #OUTPUT [src]: Compile FAILED !
  86.     SPOOLCOM /OUTV buf/ OPEN [sup];JOB (OWNER, LOC [locn]),STATUS
  87.     #OUTPUTV buf
  88.   ]
  89. |ELSE|
  90.   #OUTPUT Object file [obj] is up to date
  91.   #SET _completion:completioncode 0
  92. ]
  93.  
  94. #UNFRAME
  95.