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