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