1 2 VMS (OpenVMS): 3 4 Building: 5 6 On VMS, two build methods are provided: a command procedure, and 7 description files for MMS or MMK. Both methods must be run from 8 the main directory, not the [.VMS] subdirectory. 9 10 A simple build using the command procedure looks like this: 11 @ [.VMS]BUILD_ZIP.COM 12 13 A simple build using MMS or MMK looks like this: 14 MMS /DESCRIP = [.VMS]DESCRIP.MMS ! Or, with MMK, ... 15 MMK /DESCRIP = [.VMS]DESCRIP.MMS 16 17 Various options for each build method are explained in comments in 18 the main builder file, either BUILD_ZIP.COM or DESCRIP.MMS. 19 20 Note that on non-VAX systems with VMS V7.2 or later (and with a 21 sufficiently new C compiler), Zip 3.0 can support files (both data 22 files and Zip archives) larger than 2GB. For the greatest 23 compatibility with previous Zip versions, the builders by default 24 create old-style small-file programs. The user must specify the 25 appropriate builder command-line option to create 26 large-file-capable programs. 27 28 Here are some more complex build examples: 29 30 o Build with the large-file option enabled (non-VAX only): 31 32 @ [.VMS]BUILD_ZIP LARGE 33 or: 34 MMS /DESC = [.VMS] /MACRO = LARGE=1 35 36 o Re-link the executables (small-file and large-file): 37 38 @ [.VMS]BUILD_ZIP LINK 39 @ [.VMS]BUILD_ZIP LARGE LINK 40 or 41 MMK /DESC = [.VMS] CLEAN_EXE ! Deletes existing executables. 42 MMK /DESC = [.VMS] ! Builds new executables. 43 MMK /DESC = [.VMS] /MACRO = LARGE=1 CLEAN_EXE 44 MMK /DESC = [.VMS] /MACRO = LARGE=1 45 46 o Build a large-file product from scratch, for debug, getting 47 compiler listings and link maps: 48 49 MMS /DESC = [.VMS] CLEAN 50 MMS /DESC = [.VMS] /MACRO = (DBG=1, LARGE=1. LIST=1) 51 52 On VAX, the builders attempt to cope with the various available C 53 compilers, DEC/Compaq/HP C, VAX C, or GNU C. If DEC/Compaq/HP C is 54 not available or not desired, comments in the relevant builder file 55 explain the command-line options used to select a different 56 compiler. 57 58 By default, Zip uses the "deflate" compression method. To add 59 support for the optional "bzip2" compression method, first obtain 60 and build the bzip2 software (http://www.bzip.org/ or, for a more 61 VMS-friendly kit, http://antinode.info/dec/sw/bzip2.html). Then, 62 define the macro IZ_BZIP2 on the BUILD_ZIP.COM or MMS/MMK command 63 line to specify the directory where the bzip2 files may be found. 64 For example: 65 66 @ [.VMS]BUILD_ZIP LARGE - 67 IZ_BZIP2=SYS$SYSDEVICE:[UTILITY.SOURCE.BZIP2.BZIP2-1_0_3C_VMS] 68 or: 69 MMS /DESC = [.VMS] /MACRO = (LARGE=1, - 70 IZ_BZIP2=SYS$SYSDEVICE:[UTILITY.SOURCE.BZIP2.BZIP2-1_0_3C_VMS]) 71 72 Note that historically, Zip has been built with the default 73 compiler option, /NAMES = UPPERCASE, while bzip2 is normally built 74 with /NAMES = AS_IS, to avoid name collisions. With modern 75 compilers, the "#pragma names" directives in [.VMS]BZLIB.H will 76 handle these differences without user intervention. An old 77 compiler (for example, DEC C V4.0-000) will emit complaints 78 %CC-I-UNKNOWNPRAGMA, and will mishandle the bzip2 library function 79 names, which will cause the link to fail. To solve this problem, 80 either build the bzip2 BZ_NO_STDIO object library with /NAMES = 81 UPPERCASE, or else build Zip with /NAMES = AS_IS. For example: 82 83 @ [.VMS]BUILD_ZIP LARGE "CCOPTS=/NAMES=AS_IS" - 84 IZ_BZIP2=SYS$SYSDEVICE:[UTILITY.SOURCE.BZIP2.BZIP2-1_0_3C_VMS] 85 or: 86 MMS /DESC = [.VMS] /MACRO = (LARGE=1, "CCOPTS=/NAMES=AS_IS", - 87 IZ_BZIP2=SYS$SYSDEVICE:[UTILITY.SOURCE.BZIP2.BZIP2-1_0_3C_VMS]) 88 89 System-architecture-specific files (like objects and executables) 90 are placed in separate directories, such as [.ALPHA], [.IA64], or 91 [.VAX]. Large-file products get their own directories, [.ALPHAL] 92 or [.IA64L]. On VAX, VAX C products are placed in [.VAXV], GNU C 93 products in [.VAXG]. Each product builder announces what the 94 destination directory will be when it is run. 95 96 Common files, such as the help libraries (ZIP.HLP for the default 97 UNIX-like command-line interface, ZIP_CLI.HLP for the VMS-like 98 command-line interface), are placed in the main directory. With a 99 mixed-architecture VMS cluster, the same main directory on a shared 100 disk may be used by all system types. (Using the NOHELP option 101 with BUILD_ZIP.COM can keep it from making the same help files 102 repeatedly.) Building the help files is detailed below. 103 104 Completing installation: 105 106 To complete the installation, the executables may be left in place, 107 or moved (or copied) to a convenient place. While other methods 108 (like DCL$PATH) exist, most users define symbols to make the Zip 109 executables available as foreign commands. These symbol definitions 110 may be placed in a user's SYS$LOGIN:LOGIN.COM, or in a more central 111 location, like SYS$MANAGER:SYLOGIN.COM. Typical symbol definitions 112 might look like these: 113 114 ZIP :== $ dev:[dir]ZIP.EXE ! UNIX-like command line. 115 or: 116 ZIP :== $ dev:[dir]ZIP_CLI.EXE ! VMS-like command line. 117 118 On a non-VAX system, different symbols could be defined for the 119 small-file and large-file programs. For example: 120 121 ZIPS :== $ dev:[dir.ALPHA]ZIP.EXE ! ZIPS = small-file Zip. 122 ZIP*L :== $ dev:[dir.ALPHAL]ZIP.EXE ! ZIP[L] = large-file Zip. 123 124 The builders create help text files, ZIP.HLP and ZIP_CLI.HLP. 125 These may be incorporated into an existing help library, or a separate 126 Zip help library may be created using commands like these, using 127 either ZIP.HLP (as shown) or ZIP_CLI.HLP: 128 129 $ LIBRARY /HELP dev:[dir]existing_library.HLB ZIP.HLP 130 131 $ LIBRARY /CREATE /HELP ZIP.HLB ZIP.HLP 132 133 Zip help may then be accessed from a separate Zip help library 134 using a command like: 135 136 $ HELP /LIBRARY = device:[directory]ZIP.HLB 137 138 For greater ease, the user (or system manager) may define a 139 HLP$LIBRARY logical name to allow the HELP utility to find the Zip 140 help library automatically. See HELP HELP /USERLIBRARY for more 141 details. The command procedure HLP_LIB_NEXT.COM may be used to 142 determine the next available HLP$LIBRARY logical name, and could be 143 adapted to define a HLP$LIBRARY logical name for a Zip help library. 144 145 The builders also create VMS message files, ZIP_MSG.EXE, in the 146 destination directory with the program executables. A user may 147 gain DCL access to the Zip error messages using a command like: 148 149 $ SET MESSAGE device:[directory]ZIP_MSG.EXE 150 151 For system-wide access, the system manager may move or copy this 152 file to SYS$MESSAGE, although this could cause some confusion if 153 multiple versions of Zip are used on the system, and their error 154 message source files differ. 155 156 Some further information may be found in the files 157 [.VMS]00README.TXT and [.VMS]00BINARY.VMS, though much of what's 158 there is now obsolete. 159