| $! make libpng under VMS | 
 | $! | 
 | $! | 
 | $! Check for MMK/MMS | 
 | $! | 
 | $! This procedure accepts one parameter (contrib), which causes it to build | 
 | $! the programs from the contrib directory instead of libpng. | 
 | $! | 
 | $ p1 = f$edit(p1,"UPCASE") | 
 | $ if p1 .eqs. "CONTRIB" | 
 | $ then | 
 | $   set def [.contrib.gregbook] | 
 | $   @makevms | 
 | $   set def [-.pngminus] | 
 | $   @makevms | 
 | $   set def [--] | 
 | $   exit | 
 | $ endif | 
 | $ Make = "" | 
 | $ If F$Search ("Sys$System:MMS.EXE") .nes. "" Then Make = "MMS" | 
 | $ If F$Type (MMK) .eqs. "STRING" Then Make = "MMK" | 
 | $! | 
 | $! Look for the compiler used | 
 | $! | 
 | $ zlibsrc = "[-.zlib]" | 
 | $ ccopt="/include=''zlibsrc'" | 
 | $ if f$getsyi("HW_MODEL").ge.1024 | 
 | $ then | 
 | $  ccopt = "/prefix=all"+ccopt | 
 | $  comp  = "__decc__=1" | 
 | $  if f$trnlnm("SYS").eqs."" then define sys sys$library: | 
 | $ else | 
 | $  if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").eqs."" | 
 | $   then | 
 | $    if f$trnlnm("SYS").eqs."" then define sys sys$library: | 
 | $    if f$search("SYS$SYSTEM:VAXC.EXE").eqs."" | 
 | $     then | 
 | $      comp  = "__gcc__=1" | 
 | $      CC :== GCC | 
 | $     else | 
 | $      comp = "__vaxc__=1" | 
 | $     endif | 
 | $   else | 
 | $    if f$trnlnm("SYS").eqs."" then define sys decc$library_include: | 
 | $    ccopt = "/decc/prefix=all"+ccopt | 
 | $    comp  = "__decc__=1" | 
 | $  endif | 
 | $ endif | 
 | $! | 
 | $! Build the thing plain or with mms/mmk | 
 | $! | 
 | $ write sys$output "Compiling Libpng sources ..." | 
 | $ if make.eqs."" | 
 | $  then | 
 | $   dele pngtest.obj;* | 
 | $   CALL MAKE png.OBJ "cc ''CCOPT' png" - | 
 | 	png.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h pngchunk.h  | 
 | $   CALL MAKE pngset.OBJ "cc ''CCOPT' pngset" - | 
 | 	pngset.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h pngchunk.h  | 
 | $   CALL MAKE pngget.OBJ "cc ''CCOPT' pngget" - | 
 | 	pngget.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h pngchunk.h  | 
 | $   CALL MAKE pngread.OBJ "cc ''CCOPT' pngread" - | 
 | 	pngread.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h pngchunk.h  | 
 | $   CALL MAKE pngpread.OBJ "cc ''CCOPT' pngpread" - | 
 | 	pngpread.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h pngchunk.h  | 
 | $   CALL MAKE pngrtran.OBJ "cc ''CCOPT' pngrtran" - | 
 | 	pngrtran.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h pngchunk.h  | 
 | $   CALL MAKE pngrutil.OBJ "cc ''CCOPT' pngrutil" - | 
 | 	pngrutil.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h pngchunk.h  | 
 | $   CALL MAKE pngerror.OBJ "cc ''CCOPT' pngerror" - | 
 | 	pngerror.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h pngchunk.h  | 
 | $   CALL MAKE pngmem.OBJ "cc ''CCOPT' pngmem" - | 
 | 	pngmem.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h pngchunk.h  | 
 | $   CALL MAKE pngrio.OBJ "cc ''CCOPT' pngrio" - | 
 | 	pngrio.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h pngchunk.h  | 
 | $   CALL MAKE pngwio.OBJ "cc ''CCOPT' pngwio" - | 
 | 	pngwio.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h pngchunk.h  | 
 | $   CALL MAKE pngtrans.OBJ "cc ''CCOPT' pngtrans" - | 
 | 	pngtrans.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h pngchunk.h  | 
 | $   CALL MAKE pngwrite.OBJ "cc ''CCOPT' pngwrite" - | 
 | 	pngwrite.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h pngchunk.h  | 
 | $   CALL MAKE pngwtran.OBJ "cc ''CCOPT' pngwtran" - | 
 | 	pngwtran.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h pngchunk.h  | 
 | $   CALL MAKE pngwutil.OBJ "cc ''CCOPT' pngwutil" - | 
 | 	pngwutil.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h pngchunk.h  | 
 | $   write sys$output "Building Libpng ..." | 
 | $   CALL MAKE libpng.OLB "lib/crea libpng.olb *.obj" *.OBJ | 
 | $   write sys$output "Building pngtest..." | 
 | $   CALL MAKE pngtest.OBJ "cc ''CCOPT' pngtest" - | 
 | 	pngtest.c png.h pngconf.h pnglibconf.h | 
 | $   call make pngtest.exe - | 
 | 	"LINK pngtest,libpng.olb/lib,''zlibsrc'libz.olb/lib" - | 
 | 	pngtest.obj libpng.olb | 
 | $   write sys$output "Testing Libpng..." | 
 | $   run pngtest | 
 | $  else | 
 | $   if f$search("DESCRIP.MMS") .eqs. "" then copy/nolog [.SCRIPTS]DESCRIP.MMS [] | 
 | $   'make'/macro=('comp',zlibsrc='zlibsrc') | 
 | $  endif | 
 | $ write sys$output "Libpng build completed" | 
 | $ exit | 
 | $! | 
 | $! | 
 | $MAKE: SUBROUTINE   !SUBROUTINE TO CHECK DEPENDENCIES | 
 | $ V = 'F$Verify(0) | 
 | $! P1 = What we are trying to make | 
 | $! P2 = Command to make it | 
 | $! P3 - P8  What it depends on | 
 | $ | 
 | $ If F$Search(P1) .Eqs. "" Then Goto Makeit | 
 | $ Time = F$CvTime(F$File(P1,"RDT")) | 
 | $arg=3 | 
 | $Loop: | 
 | $       Argument = P'arg | 
 | $       If Argument .Eqs. "" Then Goto Exit | 
 | $       El=0 | 
 | $Loop2: | 
 | $       File = F$Element(El," ",Argument) | 
 | $       If File .Eqs. " " Then Goto Endl | 
 | $       AFile = "" | 
 | $Loop3: | 
 | $       OFile = AFile | 
 | $       AFile = F$Search(File) | 
 | $       If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl | 
 | $       If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit | 
 | $       Goto Loop3 | 
 | $NextEL: | 
 | $       El = El + 1 | 
 | $       Goto Loop2 | 
 | $EndL: | 
 | $ arg=arg+1 | 
 | $ If arg .Le. 8 Then Goto Loop | 
 | $ Goto Exit | 
 | $ | 
 | $Makeit: | 
 | $ VV=F$VERIFY(0) | 
 | $ write sys$output P2 | 
 | $ 'P2 | 
 | $ VV='F$Verify(VV) | 
 | $Exit: | 
 | $ If V Then Set Verify | 
 | $ENDSUBROUTINE |