summaryrefslogtreecommitdiff
path: root/dviware/beebe/src/vms/ccom.com
blob: fc3e1950a40364d5191f00747fcf5119b146b3c8 (plain)
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
$ 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