summaryrefslogtreecommitdiff
path: root/vms/make_zip.com
diff options
context:
space:
mode:
Diffstat (limited to 'vms/make_zip.com')
-rwxr-xr-xvms/make_zip.com287
1 files changed, 287 insertions, 0 deletions
diff --git a/vms/make_zip.com b/vms/make_zip.com
new file mode 100755
index 0000000..cb7358b
--- /dev/null
+++ b/vms/make_zip.com
@@ -0,0 +1,287 @@
+$ ! MAKE_ZIP.COM
+$ !
+$ ! "Makefile" for VMS versions of Zip, ZipCloak, ZipNote,
+$ ! and ZipSplit (stolen from Unzip)
+$ !
+$ ! Command args:
+$ ! - select compiler environment: "VAXC", "DECC", "GNUC"
+$ ! - select installation of CLI interface version of zip:
+$ ! "VMSCLI" or "CLI"
+$ ! - force installation of UNIX interface version of zip
+$ ! (override LOCAL_ZIP environment): "NOVMSCLI" or "NOCLI"
+$ !
+$ ! To define additional options, define the global symbol
+$ ! LOCAL_ZIP prior to executing MAKE_ZIP.COM, e.g.:
+$ !
+$ ! $ LOCAL_ZIP == "VMS_IM_EXTRA,"
+$ ! $ @MAKE_ZIP
+$ !
+$ ! The trailing "," may be omitted. Valid VMS-specific options
+$ ! include VMS_PK_EXTRA and VMS_IM_EXTRA; see the INSTALL file
+$ ! for other options.
+$ ! NOTE: This command procedure does always generate both the
+$ ! "default" Zip containing the UNIX style command interface
+$ ! and the "VMSCLI" Zip containing the CLI compatible command
+$ ! interface. There is no need to add "VMSCLI" to the LOCAL_ZIP
+$ ! symbol. (The only effect of "VMSCLI" is now the selection of the
+$ ! CLI style Zip executable in the foreign command definition.)
+$ !
+$ !
+$ on error then goto error
+$ on control_y then goto error
+$ OLD_VERIFY = f$verify(0)
+$!
+$ edit := edit ! override customized edit commands
+$ say := write sys$output
+$!##################### Read settings from environment ########################
+$!
+$ if f$type(LOCAL_ZIP).eqs.""
+$ then
+$ local_zip = ""
+$ else ! Trim blanks and append comma if missing
+$ local_zip = f$edit(local_zip, "TRIM")
+$ if f$extract(f$length(local_zip)-1, 1, local_zip).nes."," then -
+ local_zip = local_zip + ","
+$ endif
+$! Check for the presence of "VMSCLI" in local_zip. If yes, we will define
+$! the foreign command for "zip" to use the executable containing the
+$! CLI interface.
+$ pos_cli = f$locate("VMSCLI",local_zip)
+$ len_local_zip = f$length(local_zip)
+$ if pos_cli.ne.len_local_zip
+$ then
+$ CLI_IS_DEFAULT = 1
+$ ! Remove "VMSCLI" macro from local_zip. The Zip executable including
+$ ! the CLI interface is now created unconditionally.
+$ local_zip = f$extract(0, pos_cli, local_zip) + -
+$ f$extract(pos_cli+7, len_local_zip-(pos_cli+7), local_zip)
+$ else
+$ CLI_IS_DEFAULT = 0
+$ endif
+$ delete/symbol/local pos_cli
+$ delete/symbol/local len_local_zip
+$!##################### Customizing section #############################
+$!
+$ zipx_unx = "zip"
+$ zipx_cli = "zip_cli"
+$!
+$ MAY_USE_DECC = 1 ! Use DEC C when its presence is detected
+$ MAY_USE_GNUC = 0 ! Do not prefer GNUC over DEC or VAX C
+$!
+$! Process command line parameters requesting optional features:
+$ arg_cnt = 1
+$ argloop:
+$ current_arg_name = "P''arg_cnt'"
+$ curr_arg = f$edit('current_arg_name',"UPCASE")
+$ IF curr_arg .eqs. "" THEN GOTO argloop_out
+$ IF curr_arg .eqs. "VAXC"
+$ THEN MAY_USE_DECC = 0
+$ MAY_USE_GNUC = 0
+$ ENDIF
+$ IF curr_arg .eqs. "DECC"
+$ THEN MAY_USE_DECC = 1
+$ MAY_USE_GNUC = 0
+$ ENDIF
+$ IF curr_arg .eqs. "GNUC"
+$ THEN MAY_USE_DECC = 0
+$ MAY_USE_GNUC = 1
+$ ENDIF
+$ IF (curr_arg .eqs. "VMSCLI") .or. (curr_arg .eqs. "CLI")
+$ THEN
+$ CLI_IS_DEFAULT = 1
+$ ENDIF
+$ IF (curr_arg .eqs. "NOVMSCLI") .or. (curr_arg .eqs. "NOCLI")
+$ THEN
+$ CLI_IS_DEFAULT = 0
+$ ENDIF
+$ arg_cnt = arg_cnt + 1
+$ GOTO argloop
+$ argloop_out:
+$!
+$ if CLI_IS_DEFAULT
+$ then
+$ ZIPEXEC = zipx_cli
+$ else
+$ ZIPEXEC = zipx_unx
+$ endif
+$!
+$!#######################################################################
+$!
+$ ! Find out current disk, directory, compiler and options
+$ !
+$ my_name = f$env("procedure")
+$ workdir = f$env("default")
+$ here = f$parse(workdir,,,"device") + f$parse(workdir,,,"directory")
+$ axp = f$getsyi("HW_MODEL").ge.1024
+$ if axp
+$ then
+$ ! Alpha AXP
+$ ARCH_NAME == "Alpha"
+$ ARCH_PREF = "AXP_"
+$ HAVE_DECC_VAX = 0
+$ USE_DECC_VAX = 0
+$ HAVE_DECC_AXP = (f$search("SYS$SYSTEM:DECC$COMPILER.EXE").nes."")
+$ MAY_HAVE_GNUC = (f$trnlnm("GNU_CC_VERSION").nes."")
+$ IF (.not.HAVE_DECC_AXP .and. MAY_HAVE_GNUC) .or. (MAY_USE_GNUC)
+$ THEN say "Up to now, the GNU C ports available on OpenVMS AXP"
+$ say "contain so many nasty bugs and lack support for a number of"
+$ say "required VMS specific features."
+$ say "These design flaws make it impossible to compile Zip
+$ say "using GCC, sorry."
+$ goto error
+$ ENDIF
+$ ! We use DECC:
+$ USE_DECC_AXP = 1
+$ ARCH_CC_P = ARCH_PREF
+$ cc = "cc/standard=relax/prefix=all/ansi"
+$ defs = "''local_zip'VMS"
+$ opts = ""
+$ say "Compiling on AXP using DEC C"
+$ else
+$ ! VAX
+$ ARCH_NAME == "VAX"
+$ ARCH_PREF = "VAX_"
+$ HAVE_DECC_VAX = (f$search("SYS$SYSTEM:DECC$COMPILER.EXE").nes."")
+$ HAVE_VAXC_VAX = (f$search("SYS$SYSTEM:VAXC.EXE").nes."")
+$ MAY_HAVE_GNUC = (f$trnlnm("GNU_CC").nes."")
+$ IF HAVE_DECC_VAX .AND. MAY_USE_DECC
+$ THEN
+$ ! We use DECC:
+$ USE_DECC_VAX = 1
+$ cc = "cc/decc/standard=vaxc/prefix=all"
+$ ARCH_CC_P = "''ARCH_PREF'DECC_"
+$ defs = "''local_zip'VMS"
+$ opts = ""
+$ say "Compiling on VAX using DEC C"
+$ ELSE
+$ ! We use VAXC (or GNU C):
+$ USE_DECC_VAX = 0
+$ defs = "''local_zip'VMS"
+$ opts = ",SYS$DISK:[.VMS]VAXCSHR.OPT/OPTIONS"
+$ if (.not.HAVE_VAXC_VAX .and. MAY_HAVE_GNUC) .or. (MAY_USE_GNUC)
+$ then
+$ ARCH_CC_P = "''ARCH_PREF'GNUC_"
+$ cc = "gcc"
+$ opts = ",GNU_CC:[000000]GCCLIB.OLB/LIB ''opts'"
+$ say "Compiling on VAX using GNU C"
+$ else
+$ ARCH_CC_P = "''ARCH_PREF'VAXC_"
+$ if HAVE_DECC_VAX
+$ then
+$ cc = "cc/vaxc"
+$ else
+$ cc = "cc"
+$ endif
+$ say "Compiling on VAX using VAX C"
+$ endif
+$ ENDIF
+$ endif
+$ DEF_UNX = "/def=(''DEFS')"
+$ DEF_CLI = "/def=(''DEFS',VMSCLI)"
+$ DEF_UTIL = "/def=(''DEFS',UTIL)"
+$ LFLAGS = "/notrace"
+$ if (opts .nes. "") .and. -
+ (f$locate("VAXCSHR",f$edit(opts,"UPCASE")) .lt. f$length(opts)) .and. -
+ (f$search("[.vms]vaxcshr.opt") .eqs. "")
+$ then create [.vms]vaxcshr.opt
+$ open/append tmp [.vms]vaxcshr.opt
+$ write tmp "SYS$SHARE:VAXCRTL.EXE/SHARE"
+$ close tmp
+$ endif
+$ set verify ! like "echo on", eh?
+$ !
+$ !------------------------------- Zip section --------------------------------
+$ !
+$ runoff/out=zip.hlp [.vms]vms_zip.rnh
+$ !
+$ cc 'DEF_UNX' /obj=zip.'ARCH_CC_P'obj zip.c
+$ cc 'DEF_UNX' /obj=crc32.'ARCH_CC_P'obj crc32.c
+$ cc 'DEF_UNX' /obj=crctab.'ARCH_CC_P'obj crctab.c
+$ cc 'DEF_UNX' /obj=crypt.'ARCH_CC_P'obj crypt.c
+$ cc 'DEF_UNX' /obj=ttyio.'ARCH_CC_P'obj ttyio.c
+$ cc 'DEF_UNX' /obj=zipfile.'ARCH_CC_P'obj zipfile.c
+$ cc 'DEF_UNX' /obj=zipup.'ARCH_CC_P'obj zipup.c
+$ cc 'DEF_UNX' /obj=fileio.'ARCH_CC_P'obj fileio.c
+$ cc 'DEF_UNX' /obj=globals.'ARCH_CC_P'obj globals.c
+$ cc 'DEF_UNX' /obj=util.'ARCH_CC_P'obj util.c
+$ cc 'DEF_UNX' /obj=deflate.'ARCH_CC_P'obj deflate.c
+$ cc 'DEF_UNX' /obj=trees.'ARCH_CC_P'obj trees.c
+$ cc 'DEF_UNX' /obj=vmszip.'ARCH_CC_P'obj/inc=SYS$DISK:[] [.vms]vmszip.c
+$ cc 'DEF_UNX' /obj=vms.'ARCH_CC_P'obj/inc=SYS$DISK:[] [.vms]vms.c
+$ cc 'DEF_UNX' /obj=vmsmunch.'ARCH_CC_P'obj/inc=SYS$DISK:[] [.vms]vmsmunch.c
+$ !
+$ if f$search("zip.''ARCH_CC_P'olb") .eqs. "" then -
+ lib/obj/create zip.'ARCH_CC_P'olb
+$ lib/obj/replace zip.'ARCH_CC_P'olb -
+ zip.'ARCH_CC_P'obj;, -
+ crc32.'ARCH_CC_P'obj;, crctab.'ARCH_CC_P'obj;, -
+ crypt.'ARCH_CC_P'obj;, ttyio.'ARCH_CC_P'obj;, -
+ zipfile.'ARCH_CC_P'obj;, zipup.'ARCH_CC_P'obj;, -
+ fileio.'ARCH_CC_P'obj;, util.'ARCH_CC_P'obj;, globals.'ARCH_CC_P'obj;,-
+ deflate.'ARCH_CC_P'obj;, trees.'ARCH_CC_P'obj;, -
+ vmszip.'ARCH_CC_P'obj;, vms.'ARCH_CC_P'obj;, -
+ vmsmunch.'ARCH_CC_P'obj;
+$ !
+$ link'LFLAGS'/exe='zipx_unx'.'ARCH_CC_P'exe -
+ zip.'ARCH_CC_P'olb;/incl=(zip,globals)/lib 'opts'
+$ !
+$ !------------------------ Zip (CLI interface) section -----------------------
+$ !
+$ set default [.vms]
+$ edit/tpu/nosection/nodisplay/command=cvthelp.tpu zip_cli.help
+$ set default [-]
+$ runoff/out=zip_cli.hlp [.vms]zip_cli.rnh
+$ !
+$ cc 'DEF_CLI' /obj=zipcli.'ARCH_CC_P'obj zip.c
+$ cc 'DEF_CLI'/INCLUDE=SYS$DISK:[] /OBJ=cmdline.'ARCH_CC_P'obj -
+ [.vms]cmdline.c
+$ set command/obj=zip_cli.'ARCH_CC_P'obj [.vms]zip_cli.cld
+$ !
+$ if f$search("zipcli.''ARCH_CC_P'olb") .eqs. "" then -
+ lib/obj/create zipcli.'ARCH_CC_P'olb
+$ lib/obj/replace zipcli.'ARCH_CC_P'olb -
+ zipcli.'ARCH_CC_P'obj;, -
+ cmdline.'ARCH_CC_P'obj;, zip_cli.'ARCH_CC_P'obj;
+$ !
+$ link'LFLAGS'/exe='zipx_cli'.'ARCH_CC_P'exe -
+ zipcli.'ARCH_CC_P'olb;/incl=(zip)/lib, -
+ zip.'ARCH_CC_P'olb;/incl=(globals)/lib 'opts'
+$ !
+$ !-------------------------- Zip utilities section ---------------------------
+$ !
+$ cc 'DEF_UTIL' /obj=zipfile_.'ARCH_CC_P'obj zipfile.c
+$ cc 'DEF_UTIL' /obj=fileio_.'ARCH_CC_P'obj fileio.c
+$ cc 'DEF_UTIL' /obj=util_.'ARCH_CC_P'obj util.c
+$ cc 'DEF_UTIL' /obj=crypt_.'ARCH_CC_P'obj crypt.c
+$ cc 'DEF_UTIL'/incl=SYS$DISK:[] /obj=vms_.'ARCH_CC_P'obj [.vms]vms.c
+$ if f$search("ziputils.''ARCH_CC_P'olb") .eqs. "" then -
+ lib/obj/create ziputils.'ARCH_CC_P'olb
+$ lib/obj/replace ziputils.'ARCH_CC_P'olb -
+ zipfile_.'ARCH_CC_P'obj;, fileio_.'ARCH_CC_P'obj;, -
+ util_.'ARCH_CC_P'obj;, globals.'ARCH_CC_P'obj;, -
+ crctab.'ARCH_CC_P'obj;, crypt_.'ARCH_CC_P'obj;, ttyio.'ARCH_CC_P'obj;,-
+ vms_.'ARCH_CC_P'obj;, vmsmunch.'ARCH_CC_P'obj;
+$ cc 'DEF_UNX' /obj=zipcloak.'ARCH_CC_P'obj zipcloak.c
+$ cc 'DEF_UNX' /obj=zipnote.'ARCH_CC_P'obj zipnote.c
+$ cc 'DEF_UNX' /obj=zipsplit.'ARCH_CC_P'obj zipsplit.c
+$ link'LFLAGS'/exe=zipcloak.'ARCH_CC_P'exe zipcloak.'ARCH_CC_P'obj, -
+ ziputils.'ARCH_CC_P'olb;/incl=(globals)/lib 'opts'
+$ link'LFLAGS'/exe=zipnote.'ARCH_CC_P'exe zipnote.'ARCH_CC_P'obj, -
+ ziputils.'ARCH_CC_P'olb;/incl=(globals)/lib 'opts'
+$ link'LFLAGS'/exe=zipsplit.'ARCH_CC_P'exe zipsplit.'ARCH_CC_P'obj, -
+ ziputils.'ARCH_CC_P'olb;/incl=(globals)/lib 'opts'
+$ !
+$ !----------------------------- Symbols section ------------------------------
+$ !
+$ ! Set up symbols for the various executables. Edit the example below,
+$ ! changing "disk:[directory]" as appropriate.
+$ !
+$ zip == "$''here'''ZIPEXEC'.''ARCH_CC_P'exe"
+$ zipcloak == "$''here'zipcloak.''ARCH_CC_P'exe"
+$ zipnote == "$''here'zipnote.''ARCH_CC_P'exe"
+$ zipsplit == "$''here'zipsplit.''ARCH_CC_P'exe"
+$ !
+$error:
+$ if here .nes. "" then set default 'here'
+$ dummy = f$verify(OLD_VERIFY)
+$ exit