2006-10-23 17:40:50 +02:00
|
|
|
$ !
|
|
|
|
$ ! BUILD.COM
|
|
|
|
$ !
|
2006-11-17 17:40:16 +01:00
|
|
|
$ ! $Id: //poco/1.3/build/vms/build.com#1 $
|
2006-10-23 17:40:50 +02:00
|
|
|
$ !
|
|
|
|
$ ! OpenVMS build procedure
|
|
|
|
$ !
|
|
|
|
$ ! Requires the logical POCO_BASE to be set accordingly.
|
|
|
|
$ !
|
|
|
|
$ ! Usage: build [-32|-64] [-DEBUG|-RELEASE] [-CLEAN] [-VERBOSE]
|
|
|
|
$ !
|
|
|
|
$
|
|
|
|
$ clean == 0
|
|
|
|
$ verbose == 0
|
|
|
|
$ buildMode == "DEBUG"
|
|
|
|
$ pointerSize == 32
|
|
|
|
$ buildfile == F$SEARCH("*.VMSBUILD")
|
|
|
|
$ projectDefines == ""
|
|
|
|
$ lib = ""
|
|
|
|
$ exe = ""
|
|
|
|
$ shr = ""
|
|
|
|
$
|
|
|
|
$ DEFINE/PROC/NOLOG CppUnit POCO_BASE:[CPPUNIT.INCLUDE.CPPUNIT]
|
|
|
|
$ DEFINE/PROC/NOLOG Foundation POCO_BASE:[FOUNDATION.INCLUDE.FOUNDATION]
|
|
|
|
$ DEFINE/PROC/NOLOG XML POCO_BASE:[XML.INCLUDE.XML]
|
|
|
|
$ DEFINE/PROC/NOLOG SAX POCO_BASE:[XML.INCLUDE.SAX]
|
|
|
|
$ DEFINE/PROC/NOLOG DOM POCO_BASE:[XML.INCLUDE.DOM]
|
|
|
|
$
|
|
|
|
$ CALL handleArgs "''P1'"
|
|
|
|
$ CALL handleArgs "''P2'"
|
|
|
|
$ CALL handleArgs "''P3'"
|
|
|
|
$ CALL handleArgs "''P4'"
|
|
|
|
$ CALL handleArgs "''P5'"
|
|
|
|
$
|
|
|
|
$ IF buildfile .EQS. ""
|
|
|
|
$ THEN
|
|
|
|
$ WRITE SYS$OUTPUT "Cannot find build file."
|
|
|
|
$ EXIT 1
|
|
|
|
$ ENDIF
|
|
|
|
$
|
|
|
|
$ IF pointerSize .EQ. 32
|
|
|
|
$ THEN
|
|
|
|
$ objdir = "OBJ32"
|
|
|
|
$ ELSE
|
|
|
|
$ objdir = "OBJ64"
|
|
|
|
$ ENDIF
|
|
|
|
$
|
|
|
|
$ IF buildMode .EQS. "DEBUG"
|
|
|
|
$ THEN
|
|
|
|
$ objdir = objdir + "D"
|
|
|
|
$ ELSE
|
|
|
|
$ objdir = objdir + "R"
|
|
|
|
$ ENDIF
|
|
|
|
$
|
|
|
|
$ objpath = "[.''objdir']"
|
|
|
|
$ exists = F$SEARCH("''objdir'.DIR")
|
|
|
|
$ IF exists .EQS. ""
|
|
|
|
$ THEN
|
|
|
|
$ CREATE/DIR/NOLOG 'objpath'
|
|
|
|
$ SET FILE/PROT=(O:RWED) 'objdir'.DIR;*
|
|
|
|
$ ENDIF
|
|
|
|
$
|
|
|
|
$ IF clean .EQ. 1
|
|
|
|
$ THEN
|
|
|
|
$ DELETE/NOLOG 'objpath'*.*;*
|
|
|
|
$ ENDIF
|
|
|
|
$
|
|
|
|
$ PCXX :== @POCO_BASE:[BUILD.VMS]POCOCXX.COM
|
|
|
|
$ PCC :== @POCO_BASE:[BUILD.VMS]POCOCC.COM
|
|
|
|
$ PLIB :== @POCO_BASE:[BUILD.VMS]POCOLIB.COM
|
|
|
|
$ PLNK :== @POCO_BASE:[BUILD.VMS]POCOLNK.COM
|
|
|
|
$
|
|
|
|
$ OPEN fileList 'buildfile'
|
|
|
|
$ ON ERROR THEN GOTO EOF
|
|
|
|
$ ON CONTROL_Y THEN GOTO EOF
|
|
|
|
$ ReadLoop:
|
|
|
|
$ READ/END_OF_FILE=EOF fileList file
|
|
|
|
$ file = F$EDIT(file, "TRIM")
|
|
|
|
$ IF F$EXTRACT(0, 4, file) .EQS. "DEF="
|
|
|
|
$ THEN
|
|
|
|
$ projectDefines = F$EXTRACT(4, 64, file)
|
|
|
|
$ projectDefines = "," + F$EDIT(projectDefines, "TRIM")
|
|
|
|
$ GOTO ReadLoop
|
|
|
|
$ ENDIF
|
|
|
|
$ IF F$EXTRACT(0, 4, file) .EQS. "LIB="
|
|
|
|
$ THEN
|
|
|
|
$ lib = F$EXTRACT(4, 64, file)
|
|
|
|
$ lib = F$EDIT(lib, "TRIM")
|
|
|
|
$ GOTO ReadLoop
|
|
|
|
$ ENDIF
|
|
|
|
$ IF F$EXTRACT(0, 4, file) .EQS. "EXE="
|
|
|
|
$ THEN
|
|
|
|
$ exe = F$EXTRACT(4, 64, file)
|
|
|
|
$ exe = F$EDIT(exe, "TRIM")
|
|
|
|
$ GOTO ReadLoop
|
|
|
|
$ ENDIF
|
|
|
|
$ IF F$EXTRACT(0, 4, file) .EQS. "SHR="
|
|
|
|
$ THEN
|
|
|
|
$ shr = F$EXTRACT(4, 64, file)
|
|
|
|
$ shr = F$EDIT(shr, "TRIM")
|
|
|
|
$ GOTO ReadLoop
|
|
|
|
$ ENDIF
|
|
|
|
$ IF F$EXTRACT(0, 1, file) .NES. "#"
|
|
|
|
$ THEN
|
|
|
|
$ cfile = F$SEARCH(F$PARSE(file, "[.SRC]", ".C"))
|
|
|
|
$ cppfile = F$SEARCH(F$PARSE(file, "[.SRC]", ".CPP"))
|
|
|
|
$ IF cppfile .NES. ""
|
|
|
|
$ THEN
|
|
|
|
$ srcfile = "[.SRC]''file'.CPP"
|
|
|
|
$ ELSE
|
|
|
|
$ srcfile = "[.SRC]''file'.C"
|
|
|
|
$ ENDIF
|
|
|
|
$ srctime = F$CVTIME(F$FILE_ATTRIBUTES(srcfile, "RDT"), "COMPARISON")
|
|
|
|
$ objfile = F$SEARCH(F$PARSE(file, objpath, ".OBJ"))
|
|
|
|
$ IF objfile .NES. ""
|
|
|
|
$ THEN
|
|
|
|
$ objtime = F$CVTIME(F$FILE_ATTRIBUTES(objfile, "RDT"), "COMPARISON")
|
|
|
|
$ ELSE
|
|
|
|
$ objtime = F$CVTIME("01-JAN-1970 00:00:00.00", "COMPARISON")
|
|
|
|
$ ENDIF
|
|
|
|
$ IF srctime .GTS. objtime
|
|
|
|
$ THEN
|
|
|
|
$ WRITE SYS$OUTPUT "** Compiling ",file
|
|
|
|
$ IF cppfile .NES. ""
|
|
|
|
$ THEN
|
|
|
|
$ PCXX 'srcfile'
|
|
|
|
$ ELSE
|
|
|
|
$ PCC 'srcfile'
|
|
|
|
$ ENDIF
|
|
|
|
$ ELSE
|
|
|
|
$ WRITE SYS$OUTPUT "** Skipping ",file," (up-to-date)"
|
|
|
|
$ ENDIF
|
|
|
|
$ ENDIF
|
|
|
|
$ GOTO ReadLoop
|
|
|
|
$ EOF:
|
|
|
|
$ CLOSE fileList
|
|
|
|
$
|
|
|
|
$ IF lib .NES. ""
|
|
|
|
$ THEN
|
|
|
|
$ WRITE SYS$OUTPUT "** Creating Library ",lib
|
|
|
|
$ PLIB 'lib'
|
|
|
|
$ ELSE
|
|
|
|
$ IF exe .NES. ""
|
|
|
|
$ THEN
|
|
|
|
$ WRITE SYS$OUTPUT "** Creating Executable ",exe
|
|
|
|
$ PLNK 'exe'
|
|
|
|
$ ELSE
|
|
|
|
$ IF shr .NES. ""
|
|
|
|
$ THEN
|
|
|
|
$ WRITE SYS$OUTPUT "** Creating Shareable ",shr
|
|
|
|
$ PLNK 'shr' "SHAREABLE"
|
|
|
|
$ ENDIF
|
|
|
|
$ ENDIF
|
|
|
|
$ ENDIF
|
|
|
|
$
|
|
|
|
$ handleArgs: SUBROUTINE
|
|
|
|
$ arg = F$EDIT("''P1'", "UPCASE")
|
|
|
|
$ IF arg .NES. ""
|
|
|
|
$ THEN
|
|
|
|
$ IF arg .EQS. "-CLEAN" THEN clean == 1
|
|
|
|
$ IF arg .EQS. "-32" THEN pointerSize == 32
|
|
|
|
$ IF arg .EQS. "-64" THEN pointerSize == 64
|
|
|
|
$ IF arg .EQS. "-DEBUG" THEN buildMode == "DEBUG"
|
|
|
|
$ IF arg .EQS. "-RELEASE" THEN buildMode == "RELEASE"
|
|
|
|
$ IF arg .EQS. "-VERBOSE" THEN verbose == 1
|
|
|
|
$ IF F$EXTRACT(0, 1, arg) .NES. "-" THEN buildfile == F$SEARCH("''arg'.VMSBUILD")
|
|
|
|
$ ENDIF
|
|
|
|
$ ENDSUBROUTINE
|