summaryrefslogtreecommitdiff
path: root/dviware/beebe/src/vms/ccom.com
diff options
context:
space:
mode:
Diffstat (limited to 'dviware/beebe/src/vms/ccom.com')
-rw-r--r--dviware/beebe/src/vms/ccom.com79
1 files changed, 79 insertions, 0 deletions
diff --git a/dviware/beebe/src/vms/ccom.com b/dviware/beebe/src/vms/ccom.com
new file mode 100644
index 0000000000..fc3e1950a4
--- /dev/null
+++ b/dviware/beebe/src/vms/ccom.com
@@ -0,0 +1,79 @@
+$ SAVE_VERIFY = F$VERIFY()
+$ SET NOVERIFY
+$ !-----------------------------------------------------------------------
+$ ! Compile C files in connected directory:
+$ !
+$ ! Usage: @CCOM prefix compileoptions
+$ !
+$ ! where prefix is a wild-card specification of the names of .C files
+$ ! to be compiled.
+$ !
+$ ! Examples:
+$ ! Compile everything:
+$ ! @CCOM *
+$ !
+$ ! Compile today's efforts:
+$ ! @CCOM * "" /SINCE
+$ !
+$ ! Compile certain routines changed since yesterday:
+$ ! @CCOM F%%%.C,G*.C,*UPD* /LIST/MACHINE_CODE /SINCE=YESTERDAY
+$ !
+$ ! Note in the last example that the extension .C must be supplied
+$ ! for all but the last file, which gets one automatically. In the
+$ ! second example, the switch /SINCE means the same as /SINCE:TODAY.
+$ ! [27-NOV-86]
+$ !-----------------------------------------------------------------------
+$ !
+$ ON CONTROL_Y THEN $ GOTO DONE
+$ !
+$ IF P1 .EQS. "" THEN INQUIRE P1 "Wild-card name of C files to compile"
+$ !
+$ DIRECTORY /VER=1/COL=1/NODATE/NOSIZE/NOHEAD/NOTRAIL/OUT=DIR.TMP'P3' 'P1'.C
+$ !
+$ IF .NOT. $STATUS THEN GOTO DIRECTORY_ERROR
+$ !
+$ OPEN /READ DIRFILE DIR.TMP
+$ !
+$ NEWLINE:
+$ READ /END=DONE DIRFILE NAME
+$ DEV := 'F$PARSE(NAME,,,"DEVICE")'
+$ DIR := 'F$PARSE(NAME,,,"DIRECTORY")'
+$ NAM := 'F$PARSE(NAME,,,"NAME")'
+$ EXT := 'F$PARSE(NAME,,,"TYPE")'
+$ LEADER := 'DEV''DIR''NAM'
+$ C_STAMP = F$FILE_ATTRIBUTES("''LEADER'.C","RDT")
+$ C_STAMP = F$CVTIME(C_STAMP)
+$ OBJ_STAMP = F$SEARCH("''LEADER'.OBJ")
+$ IF OBJ_STAMP .NES. "" THEN -
+ OBJ_STAMP = F$FILE_ATTRIBUTES("''LEADER'.OBJ","RDT")
+$ IF OBJ_STAMP .NES. "" THEN -
+ OBJ_STAMP = F$CVTIME(OBJ_STAMP)
+$ IF C_STAMP .LES. OBJ_STAMP THEN -
+ IF F$MODE() .EQS. "INTERACTIVE" THEN -
+ WRITE SYS$OUTPUT "''LEADER'.OBJ is up-to-date"
+$ IF C_STAMP .LES. OBJ_STAMP THEN -
+ GOTO NEWLINE
+$ WRITE SYS$OUTPUT "{",NAME,"}"
+$ SET NOON ! Ignore errors
+$ DEFINE/USER SYS SYS$LIBRARY ! so #include <sys/foo.h> works
+$ CC /NOLIST/DEBUG=(SYMBOLS,TRACEBACK) 'P2' 'NAME' /OBJECT='LEADER'.OBJ
+$ SET ON ! Restore error checking
+$ GOTO NEWLINE
+$ !
+$ DONE:
+$ CLOSE DIRFILE/ERROR=NOTOPEN
+$ !
+$ NOTOPEN:
+$ SET FILE /PROTECTION=(W:REWD) DIR.TMP;*
+$ DELETE DIR.TMP;*
+$ !
+$ GOTO EXIT
+$ !
+$ DIRECTORY_ERROR:
+$ WRITE SYS$OUTPUT "Error: ''F$MESSAGE()'"
+$ SET FILE /PROTECTION=(W:REWD) DIR.TMP;*
+$ DELETE DIR.TMP;*
+$ !
+$ EXIT:
+$ IF SAVE_VERIFY THEN SET VERIFY
+$ EXIT