1$ save_verify='f$verify(0) 2$! set ver 3$! 4$! Compile and link for xrubik 5$! 6$! USAGE: 7$! @make [debug clobber clean] 8$! debug : compile with degugger switch 9$! clean : clean all except executable 10$! clobber : clean all 11$! 12$! If you have 13$! XVMSUTILS library (VMS6.2 or lower) <NOT TESTED> 14$! insert the correct directory instead of X11: 15$ xvmsutilsf="X11:XVMSUTILS.OLB" 16$! 17$! Already assumes DEC C on Alpha. 18$! Assume VAX C on VAX. 19$ decc=0 20$! Assume DEC C on VAX. 21$! decc=1 22$! 23$ QUOTE = """"""""" 24$ QUOTE = QUOTE + QUOTE + QUOTE 25$ score = "SCOREFILE=" + QUOTE + "[]rubik.scores" + QUOTE 26$ data = "DATAFILE=" + QUOTE + "[]rubik.data" + QUOTE 27$ defscore==''score' 28$ defdata==''data' 29$! 30$! NOTHING SHOULD BE MODIFIED BELOW 31$! 32$ if p1 .eqs. "CLEAN" then goto Clean 33$ if p1 .eqs. "CLOBBER" then goto Clobber 34$! 35$ axp=f$getsyi("HW_MODEL") .ge. 1024 36$ sys_ver=f$edit(f$getsyi("version"),"compress") 37$ if f$extract(0,1,sys_ver) .nes. "V" 38$ then 39$ type sys$input 40This script will assume that the operating system version is at least V7.0. 41$! 42$ sys_ver="V7.0" 43$ endif 44$ sys_maj=0+f$extract(1,1,sys_ver) 45$ if sys_maj .lt. 7 46$ then 47$ xvmsutils=f$search("''xvmsutilsf'") .nes. "" 48$ endif 49$! 50$! 51$! Create .opt file 52$ close/nolog optf 53$ open/write optf xrubik.opt 54$! 55$ defs=="VMS" 56$ if sys_maj .lt. 7 57$ then 58$ if xvmsutils then defs=="''defs',USE_XVMSUTILS" 59$ else 60$ defs=="''defs',SRAND=srand48,LRAND=lrand48,MAXRAND=2147483648.0" 61$ endif 62$ defs=="''defscore',''defdata',''defs'" 63$! 64$! 65$! Establish the Compiling Environment 66$! 67$! Set compiler command 68$ if axp 69$ then 70$ cc=="cc/standar=vaxc/define=(''defs')" 71$ else 72$ if decc 73$ then 74$ cc=="cc/decc/standard=vaxc/define=(''defs')" 75$ else ! VAX C 76$ cc=="cc/define=(''defs')" 77$ endif 78$ endif 79$ if p1 .eqs. "DEBUG" .or. p2 .eqs. "DEBUG" .or. p3 .eqs. "DEBUG" 80$ then 81$ if axp 82$ then 83$ cc=="cc/deb/noopt/standar=vaxc/define=(''defs')/list" 84$ else 85$ if decc 86$ then 87$ cc=="cc/deb/noopt/decc/standar=vaxc/define=(''defs')/list" 88$ else ! VAX C 89$ cc=="cc/deb/noopt/define=(''defs')/list" 90$ endif 91$ endif 92$ link=="link/deb" 93$ endif 94$! 95$ if axp .or. .not. decc 96$ then 97$ define/nolog sys sys$library 98$ endif 99$! 100$ write sys$output "Compiling XRubik with ''defs'" 101$ call make Rubik.obj "cc Rubik.c" Rubik.c RubikP.h Rubik.h 102$ call make Rubik2d.obj "cc Rubik2d.c" Rubik2d.c RubikP.h Rubik.h Rubik2dP.h Rubik2d.h 103$ call make Rubik3d.obj "cc Rubik3d.c" Rubik3d.c RubikP.h Rubik.h Rubik3dP.h Rubik3d.h 104$ call make RubikS.obj "cc RubikS.c" RubikS.c RubikP.h Rubik.h 105$ call make RubikU.obj "cc RubikU.c" RubikU.c RubikP.h Rubik.h 106$ call make rngs.obj "cc rngs.c" rngs.c 107$ call make xrubik.obj "cc xrubik.c" xrubik.c Rubik.h 108$! 109$! Get libraries 110$ if sys_maj .lt. 7 111$ then 112$ if xvmsutils then write optf "''xvmsutilsf'/lib" 113$ endif 114$! if .not. axp then write optf "sys$library:vaxcrtl/lib" 115$ write optf "sys$library:vaxcrtl/lib" 116$ if axp then write optf "sys$library:ucx$ipc_shr/share" 117$ if axp then write optf "sys$share:decw$xextlibshr/share" 118$ if axp then write optf "sys$share:decw$xtlibshrr5/share" 119$ if .not. axp then write optf "sys$library:ucx$ipc/lib" 120$! write optf "sys$share:decw$dxmlibshr/share" 121$ write optf "sys$share:decw$xmlibshr12/share" 122$ write optf "sys$share:decw$xlibshr/share" 123$ close optf 124$! 125$! LINK 126$ write sys$output "Linking XRubik" 127$ link/map xrubik/opt 128$! 129$! Create .opt file 130$ open/write optf xmrubik.opt 131$ write sys$output "Compiling XmRubik with ''defs'" 132$ call make Rubik.obj "cc Rubik.c" Rubik.c RubikP.h Rubik.h 133$ call make Rubik2d.obj "cc Rubik2d.c" Rubik2d.c RubikP.h Rubik.h Rubik2dP.h Rubik2d.h 134$ call make Rubik3d.obj "cc Rubik3d.c" Rubik3d.c RubikP.h Rubik.h Rubik3dP.h Rubik3d.h 135$ call make RubikS.obj "cc RubikS.c" RubikS.c RubikP.h Rubik.h 136$ call make RubikU.obj "cc RubikU.c" RubikU.c RubikP.h Rubik.h 137$ call make rngs.obj "cc rngs.c" rngs.c 138$ call make xmrubik.obj "cc xmrubik.c" xmrubik.c Rubik.h 139$! Get libraries 140$! if .not. axp then write optf "sys$library:vaxcrtl/lib" 141$ write optf "sys$library:vaxcrtl/lib" 142$ if axp then write optf "sys$library:ucx$ipc_shr/share" 143$ if axp then write optf "sys$share:decw$xextlibshr/share" 144$ if axp then write optf "sys$share:decw$xtlibshrr5/share" 145$ if .not. axp then write optf "sys$library:ucx$ipc/lib" 146$! write optf "sys$share:decw$dxmlibshr/share" 147$ write optf "sys$share:decw$xmlibshr12/share" 148$ write optf "sys$share:decw$xlibshr/share" 149$ close optf 150$! 151$! LINK 152$ write sys$output "Linking XmRubik" 153$ link/map xmrubik/opt 154$! 155$ set noverify 156$ exit 157$! 158$Clobber: ! Delete executables, Purge directory and clean up object files 159$! and listings 160$ delete/noconfirm/log xrubik.exe;* 161$ delete/noconfirm/log xmrubik.exe;* 162$! 163$Clean: ! Purge directory, clean up object files and listings 164$ close/nolog optf 165$ purge 166$ delete/noconfirm/log *.lis;* 167$ delete/noconfirm/log *.obj;* 168$ delete/noconfirm/log *.opt;* 169$ delete/noconfirm/log *.map;* 170$! 171$ exit 172$! 173! SUBROUTINE TO CHECK DEPENDENCIES 174$ make: subroutine 175$ v='f$verify(0) 176$! p1 What we are trying to make 177$! p2 Command to make it 178$! p3 - p8 What it depends on 179$ 180$ if (f$extract(0,3,p2) .eqs. "cc ") then write optf "''p1'" 181$ if (f$extract(0,3,p2) .eqs. "CC ") then write optf "''p1'" 182$ 183$ if f$search(p1) .eqs. "" then goto MakeIt 184$ time=f$cvtime(f$file(p1,"RDT")) 185$ arg=3 186$Loop: 187$ argument=p'arg 188$ if argument .eqs. "" then goto Exit 189$ el=0 190$Loop2: 191$ file=f$element(el," ",argument) 192$ if file .eqs. " " then goto Endl 193$ afile="" 194$Loop3: 195$ ofile=afile 196$ afile=f$search(file) 197$ if afile .eqs. "" .or. afile .eqs. ofile then goto NextEl 198$ if f$cvtime(f$file(afile,"RDT")) .gts. time then goto MakeIt 199$ goto Loop3 200$NextEL: 201$ el=el+1 202$ goto Loop2 203$EndL: 204$ arg=arg+1 205$ if arg .le. 8 then goto Loop 206$ goto Exit 207$ 208$MakeIt: 209$ set verify 210$ 'p2 211$ vv='f$verify(0) 212$Exit: 213$ if v then set verify 214$ endsubroutine 215