OSDN Git Service

2013.10.24
[uclinux-h8/uClinux-dist.git] / user / unzip / Makefile
1 #==============================================================================
2 # Makefile for UnZip, UnZipSFX and fUnZip:  Unix and MS-DOS ("real" makes only)
3 # Version:  5.52                                                    04 Feb 2005
4 #==============================================================================
5
6
7 # INSTRUCTIONS (such as they are):
8 #
9 # "make sunos"  -- makes UnZip in current directory on a generic SunOS 4.x Sun
10 # "make list"   -- lists all supported systems (targets)
11 # "make help"   -- provides pointers on what targets to try if problems occur
12 # "make wombat" -- chokes and dies if you haven't added the specifics for your
13 #                   Wombat 68000 (or whatever) to the systems list
14 #
15 # CF are flags for the C compiler.  LF are flags for the loader.  LF2 are more
16 # flags for the loader, if they need to be at the end of the line instead of at
17 # the beginning (for example, some libraries).  FL and FL2 are the corre-
18 # sponding flags for fUnZip.  LOCAL_UNZIP is an environment variable that can
19 # be used to add default C flags to your compile without editing the Makefile
20 # (e.g., -DDEBUG_STRUC, or -FPi87 on PCs using Microsoft C).
21 #
22 # Some versions of make do not define the macro "$(MAKE)"; this is rare, but
23 # if things don't work, try using "make" instead of "$(MAKE)" in your system's
24 # makerule.  Or try adding the following line to your .login file:
25 #       setenv MAKE "make"
26 # (That never works--makes that are too stupid to define MAKE are also too
27 # stupid to look in the environment--but try it anyway for kicks. :-) )
28 #
29 # Memcpy and memset are provided for those systems that don't have them; they
30 # are in fileio.c and will be used if -DZMEM is included in CF.  These days
31 # almost all systems have them.
32 #
33 # Be sure to test your new UnZip (and UnZipSFX and fUnZip); successful compila-
34 # tion does not always imply a working program.
35
36
37 #####################
38 # MACRO DEFINITIONS #
39 #####################
40
41 # Defaults most systems use (use LOCAL_UNZIP in environment to add flags,
42 # such as -DDOSWILD).
43
44 # UnZip flags
45 #CC = cc#       try using "gcc" target rather than changing this (CC and LD
46 #LD = $(CC)#    must match, else "unresolved symbol:  ___main" is possible)
47 #AS = as
48 LOC = $(LOCAL_UNZIP)
49 AF = $(LOC)
50 CF = -O -I. -DUNIX $(LOC)
51 LF = -o unzip
52 LF2 = -s
53
54 # UnZipSFX flags
55 SL = -o unzipsfx
56 SL2 = $(LF2)
57
58 # fUnZip flags
59 FL = -o funzip
60 FL2 = $(LF2)
61
62 # general-purpose stuff
63 #CP = cp
64 CP = ln
65 LN = ln
66 RM = rm -f
67 CHMOD = chmod
68 BINPERMS = 755
69 MANPERMS = 644
70 STRIP = strip
71 E =
72 O = .o
73 M = unix
74 SHELL = /bin/sh
75
76 # Version info for unix/unix.c
77 HOST_VERSINFO=-DIZ_CC_NAME='\"\$$(CC) \"' -DIZ_OS_NAME='\"`uname -a`\"'
78
79 # defaults for crc32 stuff and system dependent headers
80 CRC32 = crc32
81 OSDEP_H =
82
83 # object files
84 OBJS1 = unzip$O $(CRC32)$O crctab$O crypt$O envargs$O explode$O
85 OBJS2 = extract$O fileio$O globals$O inflate$O list$O match$O
86 OBJS3 = process$O ttyio$O unreduce$O unshrink$O zipinfo$O
87 OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $M$O
88 LOBJS = $(OBJS)
89 OBJSDLL = $(OBJS:.o=.pic.o) api.pic.o
90 OBJX = unzipsfx$O $(CRC32)$O crctab_$O crypt_$O extract_$O fileio_$O \
91         globals_$O inflate_$O match_$O process_$O ttyio_$O $M_$O
92 LOBJX = $(OBJX)
93 OBJF = funzip$O $(CRC32)$O cryptf$O globalsf$O inflatef$O ttyiof$O
94 #OBJS_OS2 = $(OBJS1:.o=.obj) $(OBJS2:.o=.obj) os2.obj
95 #OBJF_OS2 = $(OBJF:.o=.obj)
96 UNZIP_H = unzip.h unzpriv.h globals.h $(OSDEP_H)
97
98 # installation
99 # (probably can change next two to `install' and `install -d' if you have it)
100 INSTALL = cp
101 INSTALL_PROGRAM = $(INSTALL)
102 INSTALL_D = mkdir -p
103 # on some systems, manext=l and MANDIR=/usr/man/man$(manext) may be appropriate
104 manext = 1
105 prefix = /usr/local
106 BINDIR = $(prefix)/bin#                 where to install executables
107 MANDIR = $(prefix)/man/man$(manext)#    where to install man pages
108 INSTALLEDBIN = $(BINDIR)/funzip$E $(BINDIR)/unzip$E $(BINDIR)/unzipsfx$E \
109         $(BINDIR)/zipgrep$E $(BINDIR)/zipinfo$E
110 INSTALLEDMAN = $(MANDIR)/funzip.$(manext) $(MANDIR)/unzip.$(manext) \
111         $(MANDIR)/unzipsfx.$(manext) $(MANDIR)/zipgrep.$(manext) \
112         $(MANDIR)/zipinfo.$(manext)
113
114 # Solaris 2.x stuff:
115 PKGDIR = IZunzip
116 VERSION = Version 5.52
117
118 UNZIPS = unzip$E funzip$E unzipsfx$E
119 # this is a little ugly...well, OK, it's a lot ugly:
120 MANS = man/funzip.1 man/unzip.1 man/unzipsfx.1 man/zipgrep.1 man/zipinfo.1
121 DOCS = funzip.txt unzip.txt unzipsfx.txt zipgrep.txt zipinfo.txt
122
123 # list of supported systems/targets in this version
124 SYSTEMSG = generic generic2 generic3 generic_zlib generic_shlib
125 SYSTEMS1 = 386i 3Bx 7300 7300_gcc aix aix_rt amdahl amdahl_eft apollo aviion
126 SYSTEMS2 = bsd bsdi bsdi_noasm bull coherent convex cray cray_opt cyber_sgi
127 SYSTEMS3 = cygwin dec dnix encore eta freebsd gcc gould hk68 hp hpux
128 SYSTEMS4 = isc isc_gcc isi linux linux_dos linux_noasm linux_shlib linux_shlibz
129 SYSTEMS5 = lynx macosx macosx_gcc minix mips mpeix next next10 next2x next3x
130 SYSTEMS6 = nextfat osf1 pixel ptx pyramid qnxnto realix regulus rs6000 sco
131 SYSTEMS7 = sco_dos sco_sl sco_x286 sequent sgi solaris solaris_pkg stardent
132 SYSTEMS8 = stellar sunos3 sunos4 sysv sysv_gcc sysv6300 tahoe ti_sysv ultrix
133 SYSTEMS9 = vax v7 wombat xenix xos
134
135
136 ####################
137 # DEFAULT HANDLING #
138 ####################
139
140 all: generic
141
142 # By default, print help on which makefile targets to try.  (The SYSTEM
143 # variable is no longer supported; use "make <target>" instead.)
144
145 help:
146         @echo ""
147         @echo\
148  "  If you're not sure about the characteristics of your system, try typing"
149         @echo\
150  '  "make generic".  If the compiler barfs and says something unpleasant about'
151         @echo\
152  '  "timezone redefined," try typing "make clean" followed by "make generic2".'
153         @echo\
154  '  If, on the other hand, it complains about an undefined symbol _ftime, try'
155         @echo\
156  '  typing "make clean" followed by "make generic3".  One of these actions'
157         @echo\
158  '  should produce a working copy of unzip on most Unix systems.  If you know'
159         @echo\
160  '  a bit more about the machine on which you work, you might try "make list"'
161         @echo\
162  '  for a list of the specific systems supported herein.  (Many of them do'
163         @echo\
164  "  exactly the same thing, so don't agonize too much over which to pick if"
165         @echo\
166  '  two or more sound equally likely.)  Also check out the INSTALL file for'
167         @echo\
168  '  notes on compiling various targets.  As a last resort, feel free to read'
169         @echo\
170  '  the numerous comments within the Makefile itself.'
171         @echo\
172  '  Have a mostly pretty good day.'
173         @echo ""
174
175 list:
176         @echo ""
177         @echo\
178  'Type "make <system>", where <system> is one of the following:'
179         @echo ""
180         @echo  "        $(SYSTEMSG)"
181         @echo ""
182         @echo  "        $(SYSTEMS1)"
183         @echo  "        $(SYSTEMS2)"
184         @echo  "        $(SYSTEMS3)"
185         @echo  "        $(SYSTEMS4)"
186         @echo  "        $(SYSTEMS5)"
187         @echo  "        $(SYSTEMS6)"
188         @echo  "        $(SYSTEMS7)"
189         @echo  "        $(SYSTEMS8)"
190         @echo  "        $(SYSTEMS9)"
191 #       @echo ""
192 #       @echo\
193 # 'Targets for related utilities (ZipInfo and fUnZip) include:'
194 #       @echo ""
195 #       @echo  "        $(SYS_UTIL1)"
196 #       @echo  "        $(SYS_UTIL2)"
197         @echo ""
198         @echo\
199  'For further (very useful) information, please read the comments in Makefile.'
200         @echo ""
201
202 generic_msg:
203         @echo ""
204         @echo\
205  '  Attempting "make generic" now.  If this fails for some reason, type'
206         @echo\
207  '  "make help" and/or "make list" for suggestions.'
208         @echo ""
209
210
211 ###############################################
212 # BASIC COMPILE INSTRUCTIONS AND DEPENDENCIES #
213 ###############################################
214
215 # this is for GNU make; comment out and notify zip-bugs if it causes errors
216 .SUFFIXES:      .c .o .obj .pic.o
217
218 # yes, we should be able to use the $O macro to combine these two, but it
219 # fails on some brain-damaged makes (e.g., AIX's)...no big deal
220 .c.o:
221         $(CC) -c $(CF) $*.c
222
223 .c.obj:
224         $(CC) -c $(CF) $*.c
225
226 .c.pic.o:
227         $(CC) -c $(CF) -o $@ $*.c
228
229 # this doesn't work...directories are always a pain with implicit rules
230 #.1.txt:                man/$<
231 #       nroff -Tman -man $< | col -b | uniq | \
232 #        sed 's/Sun Release ..../Info-ZIP        /' > $@
233
234
235 # these rules may be specific to Linux (or at least the GNU groff package)
236 # and are really intended only for the authors' use in creating non-Unix
237 # documentation files (which are provided with both source and binary
238 # distributions).  We should probably add a ".1.txt" rule for more generic
239 # systems...
240
241 funzip.txt:     man/funzip.1
242         nroff -Tascii -man man/funzip.1 | col -b | uniq | expand > $@
243
244 unzip.txt:      man/unzip.1
245         nroff -Tascii -man man/unzip.1 | col -b | uniq | expand > $@
246
247 unzipsfx.txt:   man/unzipsfx.1
248         nroff -Tascii -man man/unzipsfx.1 | col -b | uniq | expand > $@
249
250 zipgrep.txt:    man/zipgrep.1
251         nroff -Tascii -man man/zipgrep.1 | col -b | uniq | expand > $@
252
253 zipinfo.txt:    man/zipinfo.1
254         nroff -Tascii -man man/zipinfo.1 | col -b | uniq | expand > $@
255
256
257 #all:           generic_msg generic
258 unzips:         $(UNZIPS)
259 objs:           $(OBJS)
260 objsdll:        $(OBJSDLL)
261 docs:           $(DOCS)
262 unzipsman:      unzips docs
263 unzipsdocs:     unzips docs
264
265
266 # EDIT HERE FOR PARALLEL MAKES on Sequent (and others?)--screws up MS-DOS
267 # make utilities if default:  change "unzip$E:" to "unzip$E:&"
268
269 unzip$E:        $(OBJS)                 # add `&' for parallel makes
270         $(CC) $(LDFLAGS) $(LF) $(LOBJS) $(LF2) $(LDLIBS$(LDLIBS_$@))
271
272 unzipsfx$E:     $(OBJX)                 # add `&' for parallel makes
273         $(CC) $(LDFLAGS) $(SL) $(LOBJX) $(SL2) $(LDLIBS$(LDLIBS_$@))
274
275 funzip$E:       $(OBJF)                 # add `&' for parallel makes
276         $(CC) $(LDFLAGS) $(FL) $(OBJF) $(FL2) $(LDLIBS$(LDLIBS_$@))
277
278 zipinfo$E:      unzip$E                 # `&' is pointless here...
279         @echo\
280  '  This is a Unix-specific target.  ZipInfo is not enabled in some MS-DOS'
281         @echo\
282  '  versions of UnZip; if it is in yours, copy unzip.exe to zipinfo.exe'
283         @echo\
284  '  or else invoke as "unzip -Z" (in a batch file, for example).'
285         $(LN) unzip$E zipinfo$E
286
287
288 crc32$O:        crc32.c $(UNZIP_H) zip.h
289 crctab$O:       crctab.c $(UNZIP_H) zip.h
290 crypt$O:        crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h
291 envargs$O:      envargs.c $(UNZIP_H)
292 explode$O:      explode.c $(UNZIP_H)
293 extract$O:      extract.c $(UNZIP_H) crypt.h
294 fileio$O:       fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h
295 funzip$O:       funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h
296 globals$O:      globals.c $(UNZIP_H)
297 inflate$O:      inflate.c inflate.h $(UNZIP_H)
298 list$O:         list.c $(UNZIP_H)
299 match$O:        match.c $(UNZIP_H)
300 process$O:      process.c $(UNZIP_H)
301 ttyio$O:        ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h
302 unreduce$O:     unreduce.c $(UNZIP_H)
303 unshrink$O:     unshrink.c $(UNZIP_H)
304 unzip$O:        unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h
305 zipinfo$O:      zipinfo.c $(UNZIP_H)
306
307 unzipsfx$O:     unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h   # unzipsfx only
308         -$(CP) unzip.c unzipsfx.c
309         $(CC) -c $(CF) -DSFX unzipsfx.c
310         $(RM) unzipsfx.c
311
312 crctab_$O:      crctab.c $(UNZIP_H) zip.h
313         -$(CP) crctab.c crctab_.c
314         $(CC) -c $(CF) -DSFX crctab_.c
315         $(RM) crctab_.c
316
317 crypt_$O:       crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h        # unzipsfx only
318         -$(CP) crypt.c crypt_.c
319         $(CC) -c $(CF) -DSFX crypt_.c
320         $(RM) crypt_.c
321
322 extract_$O:     extract.c $(UNZIP_H) crypt.h                    # unzipsfx only
323         -$(CP) extract.c extract_.c
324         $(CC) -c $(CF) -DSFX extract_.c
325         $(RM) extract_.c
326
327 fileio_$O:      fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h
328         -$(CP) fileio.c fileio_.c
329         $(CC) -c $(CF) -DSFX fileio_.c
330         $(RM) fileio_.c
331
332 globals_$O:     globals.c $(UNZIP_H)                            # unzipsfx only
333         -$(CP) globals.c globals_.c
334         $(CC) -c $(CF) -DSFX globals_.c
335         $(RM) globals_.c
336
337 inflate_$O:     inflate.c inflate.h $(UNZIP_H) crypt.h          # unzipsfx only
338         -$(CP) inflate.c inflate_.c
339         $(CC) -c $(CF) -DSFX inflate_.c
340         $(RM) inflate_.c
341
342 match_$O:       match.c $(UNZIP_H)                              # unzipsfx only
343         -$(CP) match.c match_.c
344         $(CC) -c $(CF) -DSFX match_.c
345         $(RM) match_.c
346
347 process_$O:     process.c $(UNZIP_H)                            # unzipsfx only
348         -$(CP) process.c process_.c
349         $(CC) -c $(CF) -DSFX process_.c
350         $(RM) process_.c
351
352 ttyio_$O:       ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h        # unzipsfx only
353         -$(CP) ttyio.c ttyio_.c
354         $(CC) -c $(CF) -DSFX ttyio_.c
355         $(RM) ttyio_.c
356
357
358 cryptf$O:       crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h        # funzip only
359         -$(CP) crypt.c cryptf.c
360         $(CC) -c $(CF) -DFUNZIP cryptf.c
361         $(RM) cryptf.c
362
363 globalsf$O:     globals.c $(UNZIP_H)                            # funzip only
364         -$(CP) globals.c globalsf.c
365         $(CC) -c $(CF) -DFUNZIP globalsf.c
366         $(RM) globalsf.c
367
368 inflatef$O:     inflate.c inflate.h $(UNZIP_H) crypt.h          # funzip only
369         -$(CP) inflate.c inflatef.c
370         $(CC) -c $(CF) -DFUNZIP inflatef.c
371         $(RM) inflatef.c
372
373 ttyiof$O:       ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h        # funzip only
374         -$(CP) ttyio.c ttyiof.c
375         $(CC) -c $(CF) -DFUNZIP ttyiof.c
376         $(RM) ttyiof.c
377
378
379 # optional assembler replacements
380 crc_i86$O:      msdos/crc_i86.asm                               # 16bit only
381         $(AS) $(AF) msdos/crc_i86.asm $(ASEOL)
382
383 crc_gcc$O:      crc_i386.S                                      # 32bit, GNU AS
384         $(AS) $(AF) -x assembler-with-cpp -c -o $@ crc_i386.S
385
386 crc_gcc.pic.o:  crc_i386.S                                      # 32bit, GNU AS
387         $(AS) $(AF) -x assembler-with-cpp -c -o $@ crc_i386.S
388
389 crc_sysv$O:     crc_i386.S                                      # 32bit, SysV AS
390         $(CC) -E $(AF) crc_i386.S > crc_i386s.s
391         $(AS) -o $@ crc_i386s.s
392         $(RM) crc_i386s.s
393
394 msdos$O:        msdos/msdos.c $(UNZIP_H) unzvers.h              # DOS only
395         $(CC) -c $(CF) msdos/msdos.c
396
397 msdos_$O:       msdos/msdos.c $(UNZIP_H)                        # DOS unzipsfx
398         -$(CP) msdos/msdos.c msdos_.c > nul
399         $(CC) -c $(CF) -DSFX msdos_.c
400         $(RM) msdos_.c
401
402 #os2$O:         os2/os2.c $(UNZIP_H)                            # OS/2 only
403 #       $(CC) -c $(CF) os2/os2.c
404
405 unix$O:         unix/unix.c $(UNZIP_H) unzvers.h                # Unix only
406         $(CC) -c $(CF) unix/unix.c
407
408 unix_$O:        unix/unix.c $(UNZIP_H)                          # Unix unzipsfx
409         -$(CP) unix/unix.c unix_.c
410         $(CC) -c $(CF) -DSFX unix_.c
411         $(RM) unix_.c
412
413 unix.pic.o:     unix/unix.c $(UNZIP_H) unzvers.h                # Unix shlib
414         $(CC) -c $(CF) -o $@ unix/unix.c
415
416
417 unix_make:
418 #       @echo\
419 # '(Ignore any errors from `make'"' due to the following command; it's harmless.)"
420         -@2>&1 $(LN) unix/Makefile . > /dev/null || echo > /dev/null
421
422 # this really only works for Unix targets, unless E and O specified on cmd line
423 clean:
424         @echo ""
425         @echo '         This is a Unix-specific target.  (Just so you know.)'
426         @echo ""
427         rm -f $(UNZIPS) $(OBJS) $(OBJF) $(OBJX) api$O apihelp$O crc_gcc$O \
428           crc_sysv$O unzipstb$O crypt_.c extract_.c globals_.c inflate_.c \
429           ttyio_.c crc_i386s.s msdos_.c process_.c unix_.c unzipsfx.c
430         rm -rf ./$(PKGDIR)
431
432 # Package generation interface (by J.Bush).  Originally tested under Sun
433 # Solaris 2.x.  Other SVr4s may be very similar and could possibly use this.
434 # Note:  expects version info to be stored in VERSION macro variable.
435 # See "README" under ./unix/Packaging
436 #
437 svr4package:    unzips
438         @echo "Creating SVR4 package for Unix ..."
439         -@rm -rf ./$(PKGDIR) ./$(PKGDIR)_`uname -p`.pkg
440         -@sed -e "s/.VERSION./$(VERSION)/g" \
441               -e "s/.PSTAMP./$(LOGNAME)_`date | tr  ' ' '_'`/g" \
442               -e "s/.ARCH./Solaris_`uname -rp | tr ' ' ','`/g" \
443               ./unix/Packaging/pkginfo.in > ./unix/Packaging/pkginfo
444         -@sed -e "s/.ARCH./`uname -p`/g" \
445               ./unix/Packaging/preinstall.in > ./unix/Packaging/preinstall
446         /usr/bin/pkgmk -d . -b . -r . -f ./unix/Packaging/prototype $(PKGDIR)
447         /usr/bin/pkgtrans -o -s . $(PKGDIR)_`uname -p`.pkg $(PKGDIR)
448         @echo " "
449         @echo "To install, copy $(PKGDIR)_`uname -p`.pkg to the target system, and"
450         @echo "issue the command (as root):  pkgadd -d $(PKGDIR)_`uname -p`.pkg"
451         @echo " "
452
453 install:        $(MANS)
454         -$(INSTALL_D) $(BINDIR)
455         $(INSTALL_PROGRAM) $(UNZIPS) $(BINDIR)
456         $(INSTALL) unix/zipgrep $(BINDIR)
457         $(RM) $(BINDIR)/zipinfo$E
458         $(LN) $(BINDIR)/unzip$E $(BINDIR)/zipinfo$E
459         -$(INSTALL_D) $(MANDIR)
460         $(INSTALL) man/funzip.1 $(MANDIR)/funzip.$(manext)
461         $(INSTALL) man/unzip.1 $(MANDIR)/unzip.$(manext)
462         $(INSTALL) man/unzipsfx.1 $(MANDIR)/unzipsfx.$(manext)
463         $(INSTALL) man/zipgrep.1 $(MANDIR)/zipgrep.$(manext)
464         $(INSTALL) man/zipinfo.1 $(MANDIR)/zipinfo.$(manext)
465         $(CHMOD) $(BINPERMS) $(INSTALLEDBIN)
466         $(CHMOD) $(MANPERMS) $(INSTALLEDMAN)
467
468 uninstall:
469         $(RM) $(INSTALLEDBIN) $(INSTALLEDMAN)
470
471
472 # the test zipfile
473 TESTZIP = testmake.zip
474
475 # test some basic features of the build
476 test:           check
477
478 check:
479         @echo '#####  This is a Unix-specific target.  (Just so you know.)'
480         @echo '#####     Make sure unzip, funzip and unzipsfx are compiled and'
481         @echo '#####     in this directory.'
482         @if test ! -f ./unzip; then \
483             echo "#####  ERROR:  can't find ./unzip"; exit 1; fi
484         @if test ! -f ./funzip; then \
485             echo "#####  ERROR:  can't find ./funzip"; exit 1; fi
486         @if test ! -f ./unzipsfx; then \
487             echo "#####  ERROR:  can't find ./unzipsfx"; exit 1; fi
488 #
489         @if test ! -f $(TESTZIP); then \
490             echo "#####  ERROR:  can't find test file $(TESTZIP)"; exit 1; fi
491 #
492         @echo "#####  testing extraction"
493         @./unzip -bo $(TESTZIP) testmake.zipinfo
494         @if test ! -f testmake.zipinfo ; then \
495             echo "#####  ERROR:  file extraction from $(TESTZIP) failed"; \
496             exit 1; fi
497 #
498         @echo '#####  testing zipinfo (unzip -Z)'
499         @./unzip -Z $(TESTZIP) > testmake.unzip-Z
500         @if diff testmake.unzip-Z testmake.zipinfo; then echo "OK."; else \
501             echo "#####  WARNING:  zipinfo output doesn't match stored version"; \
502             echo '#####     (If the only difference is the file times, compare your'; \
503             echo '#####      timezone with the Central European timezone, which is one'; \
504             echo '#####      hour east of Greenwich but effectively 2 hours east'; \
505             echo '#####      during summer Daylight Savings Time.  The upper two'; \
506             echo '#####      lines should correspond to your local time when the'; \
507             echo '#####      files were created, on 19 November 1998 at 10:46pm CET.'; \
508             echo '#####      If the times are consistent, please ignore this warning.)'; \
509             fi
510         @$(RM) testmake.unzip-Z testmake.zipinfo
511 #
512         @echo '#####  testing unzip -d exdir option'
513         @./unzip -bo $(TESTZIP) -d testun notes
514         @cat testun/notes
515 #
516         @echo '#####  testing unzip -o and funzip (ignore funzip warning)'
517         @./unzip -boq $(TESTZIP) notes -d testun
518         @./funzip < $(TESTZIP) > testun/notes2
519         @if diff testun/notes testun/notes2; then true; else \
520             echo '#####  ERROR:  funzip output disagrees with unzip'; fi
521 #
522         @echo '#####  testing unzipsfx (self-extractor)'
523         @cat unzipsfx $(TESTZIP) > testsfx
524         @$(CHMOD) 0700 testsfx
525         @./testsfx -bo notes
526         @if diff notes testun/notes; then true; else \
527             echo '#####  ERROR:  unzipsfx file disagrees with unzip'; fi
528         @$(RM) testsfx notes testun/notes testun/notes2
529         @rmdir testun
530 #
531         @echo '#####  testing complete.'
532
533
534 ################################
535 # INDIVIDUAL MACHINE MAKERULES #
536 ################################
537
538 #----------------------------------------------------------------------------
539 #  Generic targets (can't assume make utility groks "$(MAKE)")
540 #----------------------------------------------------------------------------
541
542 generic:        unzips     # first try if unknown
543
544 generic2:       unix_make  # second try if unknown:  hope make is called "make"
545         make -f unix/Makefile unzips CF="$(CF) -DBSD"
546
547 generic3:       unix_make  # third try if unknown:  hope make is called "make"
548         make -f unix/Makefile unzips CF="$(CF) -DSYSV"
549
550 # Generic unzip and funzip target using either shared or static zlib for
551 # inflate rather than the original UnZip version.  (libz was libgz prior
552 # to 0.94)  Need to figure out how to force unzipsfx to use static libz.
553
554 generic_zlib:   unix_make
555         @echo\
556  "This target assumes zlib (libz.a or libz.so.*) is already installed."
557         $(MAKE) unzip funzip CF="$(CF) -DUSE_ZLIB" LF2="-lz $(LF2)"
558
559 # Generic GNU C shared library.  This is an example of how to compile UnZip as
560 # a shared library.  (Doing so as a static library would be similar.)  See also
561 # the linux_shlib target.
562
563 generic_shlib:  unix_make
564         @echo\
565  'This target requires GNU C.  When done, do "setenv LD_LIBRARY_PATH `pwd`"'
566         @echo\
567  'or similar in order to test the shared library in place (with ./unzip_shlib ,'
568         @echo\
569  'which is UnZip linked with the DLL).  This target is an example only.'
570         @echo ""
571         $(MAKE) objsdll CC=gcc CF="-O3 -Wall -I. -fPIC -DDLL -DUNIX $(LOC)"
572         gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.4 $(OBJSDLL)
573         $(RM) libunzip.so.0 libunzip.so
574         $(LN) -s libunzip.so.0.4 libunzip.so.0
575         $(LN) -s libunzip.so.0 libunzip.so
576         gcc -c -O unzipstb.c
577         gcc -o unzip_shlib unzipstb.o -L. -lunzip
578
579 #----------------------------------------------------------------------------
580 #  "Normal" group (BSD vs. SysV may be set in unzip.h via predefined macros):
581 #----------------------------------------------------------------------------
582
583 386i:           unzips  # sun386i, SunOS 4.0.2
584 #3Bx:           unzips  # AT&T 3B2/1000-80; should work on any WE32XXX machine
585 #aix_rt:                unzips  # IBM RT 6150 under AIX 2.2.1
586 bull:           unzips  # Bull DPX/2, BOS 2.00.45 (doesn't require -Xk switch)
587 convex:         unzips  # Convex C-120 and C-210 (-O is enough; -ext is default)
588 cray:           unzips  # Cray-2 and Y-MP, using default (possibly old) compiler
589 dec:            unzips  # DEC 5820 (MIPS RISC), test version of Ultrix v4.0
590 encore:         unzips  # Multimax
591 eta:            unzips  # ETA-10P*, hybrid SysV with BSD 4.3 enhancements
592 gould:          unzips  # Gould PN9000 running UTX/32 2.1Bu01
593 hp:             unzips  # HP 9000 series (68020), 4.3BSD or HP-UX A.B3.10 Ver D
594 hpux:           unzips  # (to match zip's makefile entry)
595 mips:           unzips  # MIPS M120-5(?), SysV.3 [error in sys/param.h file?]
596 next10:         unzips  # NeXT (generic; use next2x or next3x for better opt.)
597 osf1:           unzips  # DECstation, including Alpha-based; DEC OSF/1 v1.x
598 pyr_:           unzips  # [failsafe target for pyramid target below]
599 pyr_ucb:        unzips  # Pyramids running BSD universe by default (see below)
600 realix:         unzips  # Modcomp Real/IX (SysV.3); note "gcc" = GLS C, not GNU
601 sco:            unzips  # Xenix/386 (tested on 2.3.1); SCO Unix 3.2.0.
602 sgi:            unzips  # Silicon Graphics; Irix 3.3.2, 4.0.x, 5.2, etc.
603 stellar:        unzips  # gs-2000
604 sun:            unzips  # old target; no good with solaris...use "sunos" now
605 sunos:          unzips  # no good with SunOS 3.x...use "sunos3" or "sunos4" now
606 sunos4:         unzips  # Sun 3, 4; SunOS 4.x (SOME SYSTEMS ARE SYSTEM V!)
607 tahoe:          unzips  # tahoe (CCI Power6/32), 4.3BSD
608 ultrix:         unzips  # VAXen, DEC 58x0 (MIPS guts), DECstation 2100; v4.x
609 vax:            unzips  # general-purpose VAX target (not counting VMS)
610
611 #----------------------------------------------------------------------------
612 #  BSD group (for timezone structs [struct timeb]):
613 #----------------------------------------------------------------------------
614
615 bsd:            _bsd    # generic BSD (BSD 4.2 & Ultrix handled in unzip.h)
616
617 _bsd:           unix_make
618         $(MAKE) unzips CF="$(CF) -DBSD"
619
620 #----------------------------------------------------------------------------
621 #  SysV group (for extern long timezone and ioctl.h instead of sgtty.h):
622 #----------------------------------------------------------------------------
623
624 aix_rt:         _sysv   # IBM RT 6150 under AIX 2.2.1
625 aviion:         _sysv   # Data General AViiONs, DG/UX 4.3x
626 pyr_att:        _sysv   # Pyramids running AT&T (SysV) universe by default
627 solaris:        _sysv   # Sun SPARC & x86, Solaris 2.x
628 solaris_pkg:    _sysvp  # Sun SPARC & x86, Solaris 2.x; make package when done
629 stardent:       _sysv   # Stardent ...
630 sysv:           _sysv   # generic System V Unix (Xenix handled in unzip.h)
631 xos:            _sysv   # Olivetti LSX-3005..3045, X/OS 2.3 and 2.4
632
633 _sysv:          unix_make
634         $(MAKE) unzips CF="$(CF) -DSYSV"
635
636 # extension to perform SVR4 package-creation after compilation
637 _sysvp:         _sysv svr4package
638
639 #----------------------------------------------------------------------------
640 #  Version 7 group (old/obsolescent):
641 #----------------------------------------------------------------------------
642
643 pixel:          _v7     # Pixel 80, 100 (68000-based, V7/mostly BSD4.1 compat.)
644 v7:             _v7     # generic Unix Version 7 box (prob. only Pixel...)
645
646 _v7:
647         make -f unix/Makefile unzips \
648          CF="$(CF) -DV7 -DNO_PARAM_H -DSHORT_NAMES -DBSD -DZMEM"
649
650 #----------------------------------------------------------------------------
651 #  "Unique" group (require non-standard options):
652 #----------------------------------------------------------------------------
653
654 # AT&T 3B2/1000-80; should work on any WE32XXX machine
655 3Bx:            unix_make
656         $(MAKE) unzips CF="$(CF) -DCBREAK=2"
657
658 # AT&T 7300 (M68000/SysV.3) (add -DSYSV? -DNO_LIMITS?)
659 7300:           unix_make
660         $(MAKE) unzips CF="$(CF) -DNO_DIR -DNO_MKDIR -DNO_STRNICMP -DNO_UID_GID -DCBREAK=2"
661
662 7300_gcc:       unix_make
663         $(MAKE) unzips CC=gcc LD=gcc LF2="" \
664          CF="-O2 -I. -DNO_DIR -DNO_MKDIR -DNO_STDLIB_H -DNO_STRNICMP -DNO_UID_GID -DCBREAK=2 $(LOC)"
665         $(STRIP) $(UNZIPS)
666
667 # IBM AIX 3.x on an RS/6000:  see rs6000 target below
668 aix:            rs6000
669
670 # Amdahl (IBMish) mainframe, UTS (SysV) 1.2.4, 2.0.1, 3.x
671 amdahl:         unix_make
672         $(MAKE) unzips CF="$(CF) -DSYSV -DNO_UID_GID"
673
674 # Amdahl UTS 2.1.4 with "extended file types" filesystem (aarrrggghhhh...)
675 amdahl_eft:     unix_make
676         $(MAKE) unzips CF="$(CF) -eft -DSYSV -DNO_UID_GID"
677
678 # Apollo Domain/OS machines (added -D...SOURCE options) [Gordon Fox, 960810]
679 apollo:         unix_make
680         $(MAKE) unzips CF="$(CF) -D_INCLUDE_BSD_SOURCE -D_INCLUDE_XOPEN_SOURCE"
681
682 # BSDI BSD/OS on 386 platform, using the assembler replacement for crc32.c
683 bsdi:           unix_make
684         @echo 'NOTE:  use bsdi_noasm target for non-Intel BSD/OS compiles.'
685         $(MAKE) unzips CC=gcc2 LD=shlicc2 AS=gcc2\
686          CF="-O3 -Wall -I. -DASM_CRC -DUNIX -DBSD $(LOC)" CRC32=crc_gcc
687
688 # BSDI BSD/OS
689 bsdi_noasm:     unix_make
690 #       @echo 'NOTE:  use bsd target for non-Intel BSD/OS compiles.'
691         $(MAKE) unzips CC=gcc2 LD=shlicc2 AS=gcc2\
692          CF="-O3 -Wall -I. -DUNIX -DBSD $(LOC)"
693
694 # Coherent 3.x/4.x, Mark Williams C.  ``For Coherent's CC, it needs either
695 # -T0 or -T150000 (or bigger) added to the CFLAGS, otherwise the compiler
696 # runs out of memory and dies in zipinfo.c.'' [Fred "Fredex" Smith, 940719]
697 coherent:       unix_make
698         $(MAKE) unzips CF="$(CF) -T0"
699
700 # Cray-2, Y-MP or C90, running Unicos 5.x to 8.x (SysV + BSD enhancements)
701 # and Standard (ANSI) C compiler 3.0 or later.
702 cray_opt:       unix_make
703         $(MAKE) unzips CF="$(CF) -h scalar3 -h vector3"
704
705 # The unzip41 build on a Cyber 910/SGI running Irix v3.3.3 was successful
706 # with the following change to Makefile:
707 cyber_sgi:      unix_make
708         $(MAKE) unzips CF="$(CF) -I/usr/include/bsd"\
709          LF="-lbsd $(LF)" SL="-lbsd $(SL)"
710
711 # The Cygwin environment on a Win32 system, treated as an UNIX emulator.
712 # This port does not offer full access to the Windows file system.
713 # Info-ZIP recommends using "win32/Makefile.gcc" instead.
714 cygwin:         unix_make
715         $(MAKE) unzips CC=gcc LD=gcc AS=gcc\
716          CF="-O3 -I. -DUNIX -DASM_CRC $(LOC)"\
717          AF="-Di386 $(AF)" CRC32=crc_gcc\
718          E=".exe" CP="cp" LN="ln -s"
719
720 # 680x0, DIAB dnix 5.2/5.3 (a Swedish System V clone)
721 #
722 # Options for the dnix cc:
723 #  -X7 = cc is strict ANSI C
724 #  -X9 = warnings if a function is used without a declaration
725 #
726 dnix:           unix_make
727         $(MAKE) unzips CF="$(CF) -X7 -X9 -DDNIX"
728
729 # FreeBSD on Intel:
730 freebsd:                unix_make
731         @echo 'NOTE:  use bsd target for non-Intel FreeBSD compiles (if any).'
732         $(MAKE) unzips CC=gcc LD=gcc AS=gcc\
733          CF="-O3 -Wall -I. -DASM_CRC -DUNIX -DBSD $(LOC)"\
734          AF="-Di386 $(AF)" CRC32=crc_gcc
735
736 # Generic BSDish Unix gcc.  ``The -O3 only works with later versions of gcc;
737 # you may have to use -O2 or -O for earlier versions.  I have no idea why
738 # -s causes this bug in gcc.''  [Bug:  "nm: unzip: no name list", "collect:
739 # /usr/bin/nm returned 1 exit status".]  If you don't have strip, don't
740 # worry about it (it just makes the executable smaller and can be replaced
741 # with "echo" instead).
742 #
743 gcc:            unix_make
744         $(MAKE) unzips CC=gcc LD=gcc CF="-O3 -I. $(LOC)" LF2=""
745         $(STRIP) $(UNZIPS)
746
747 # Heurikon HK68 (68010), UniPlus+ System V 5.0, Green Hills C-68000
748 hk68:           unix_make
749         $(MAKE) unzips CC="gcc" LD="gcc"\
750          LF="-n $(LF)" SL="-n $(SL)" FL="-n $(FL)"\
751          CF="-ga -X138 -I. $(LOC) -Dlocaltime=localti -Dtimezone=timezon"
752
753 # ISC Unix on 386 platform
754 isc:            unix_make
755         $(MAKE) unzips LF2="-lc_s $(LF2)" CRC32=crc_sysv \
756          CF="-O -I. -DASM_CRC -DSYSV -DNO_UID_GID -DNEED_PTEM $(LOC)" \
757          AF="-DNO_UNDERLINE -Djecxz=jcxz -DALIGNMENT='.align 16' $(AF)"
758
759 isc_gcc:        unix_make
760         $(MAKE) unzips AS=gcc CC=gcc LD=gcc CRC32=crc_gcc LF="-shlib $(LF)" \
761          SL="-shlib $(SL)" FL="-shlib $(FL)" \
762          LF2="" CF="-O3 -I. -DSYSV -DASM_CRC -DNO_UID_GID -DNEED_PTEM $(LOC)" \
763          AF="-DNO_UNDERLINE -Djecxz=jcxz -DALIGNMENT='.align 16' $(AF)"
764         $(STRIP) $(UNZIPS)
765
766 # "ISI machine (68025 CPU)" (based on e-mail from Rob White <rsw@tfs.com>;
767 # no further information).  May also need DIRENT defined.
768 isi:            unix_make
769         $(MAKE) unzips CF="$(CF) -DDECLARE_ERRNO"
770
771 # Linux on 386 platform, using the assembler replacement for crc32.c. (-O4 and
772 # -fno-strength-reduce have virtually no effect beyond -O3.  Add "-m486
773 # -malign-functions=2 -malign-jumps=2 -malign-loops=2" for Pentium [Pro]
774 # systems.)
775 linux:          unix_make
776         @echo 'NOTE:  use linux_noasm target for non-Intel Linux compiles.'
777         $(MAKE) unzips CC=gcc LD=gcc AS=gcc\
778          CF="-O3 -Wall -I. -DASM_CRC $(LOC)"\
779          AF="-Di386 $(AF)" CRC32=crc_gcc
780 # GRR:  this echo is pointless; if user gets this far, no difference to install
781 #       @echo 'Be sure to use the install_asm target rather than the install target'
782
783 linux_asm:      linux
784
785 # Linux (Posix, approximately SysV):  virtually any version since before 0.96,
786 # for any platform.  Change "-O" to "-O3" or whatever, as desired...
787 linux_noasm:    unix_make
788         $(MAKE) unzips CC=gcc LD=gcc CF="-O -Wall -I. $(LOC)"
789
790 # Linux with lcc compiler:  __inline__ (stat.h) not recognized, and must edit
791 # /usr/include/gnu/types.h to get rid of "long long" if __LCC__ defined.  -O3
792 # (or -O2 or -O) is ignored.  [GRR 960828: test target only]
793 #
794 linux_lcc:      unix_make
795         $(MAKE) unzips CC=lcc LD=lcc CF="-O3 -Wall -I. -D__inline__= $(LOC)"
796
797 # Linux host with go32 (djgpp) cross-compiler (go32crs.tgz) for 32-bit DOS.
798 linux_dos:      unix_make
799         $(MAKE) unzips CC=go32gcc LD=go32gcc M=msdos CF="-O2 -Wall -I. $(LOC)"
800 #       go32-strip unzip
801 #       Due to limitations of the cross-compiling package, this has to be
802 #       done manually:
803         @echo Copy $(UNZIPS) to your DOS partition and use coff2exe.
804
805 # Linux ELF shared library (ooo, it's so easy).  This is a test target for
806 # now, and it only makes the UnZip/ZipInfo stuff (not fUnZip or UnZipSFX).
807 # The version number may eventually change to match the UnZip version.  Or
808 # not.  Whatever.  Also do "setenv LD_LIBRARY_PATH `pwd`" or similar to test
809 # the DLL in place (with unzip_shlib, which is UnZip linked with the shared
810 # library).
811 #
812 linux_shlib:    unix_make
813 #       $(MAKE) objsdll CC=gcc CF="-O3 -Wall -I. -fPIC -DDLL $(LOC)"
814         $(MAKE) objsdll CC=gcc CF="-O3 -Wall -I. -fPIC -DDLL -DASM_CRC $(LOC)"\
815          AS=gcc AF="-fPIC -Di386 $(AF)" CRC32=crc_gcc
816         ln -sf crc_gcc.pic.o crc32.pic.o
817         gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.4 $(OBJSDLL)
818         ln -sf libunzip.so.0.4 libunzip.so.0
819         ln -sf libunzip.so.0 libunzip.so
820         gcc -c -O unzipstb.c
821         gcc -o unzip_shlib unzipstb.o -L. -lunzip
822
823 # Linux ELF shared library, as above, but using inflate() from zlib (libz.so)
824 # instead of the original UnZip version.  (libz was libgz prior to 0.94)
825 linux_shlibz:   unix_make
826 #       $(MAKE) objsdll CC=gcc CF="-O3 -Wall -I. -fPIC -DDLL -DUSE_ZLIB $(LOC)"
827         $(MAKE) objsdll CC=gcc AS=gcc AF="-fPIC -Di386 $(AF)" CRC32=crc_gcc\
828          CF="-O3 -Wall -I. -fPIC -DDLL -DUSE_ZLIB -DASM_CRC $(LOC)"
829         ln -sf crc_gcc.pic.o crc32.pic.o
830         gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.4 $(OBJSDLL)
831         ln -sf libunzip.so.0.4 libunzip.so.0
832         gcc -c -O unzipstb.c
833         gcc -o unzip unzipstb.o -L. -lunzip -lz
834
835 # LynxOS-x86 2.3.0 and newer, a real-time BSD-like OS; uses gcc.
836 lynx:           unix_make
837         $(MAKE) unzips CC=gcc CF="$(CF) -DLynx -DLYNX -DBSD -DUNIX"
838
839 # Macintosh MacOS X (Unix-compatible enviroment), using standard compiler
840 macosx: unix_make
841         $(MAKE) unzips CF="-O3 -Wall -I. -DBSD -DUNIX $(LOC)" LF2=""
842         $(STRIP) $(UNZIPS)
843
844 # Macintosh MacOS X (Unix-compatible enviroment), using gcc
845 macosx_gcc:     unix_make
846         $(MAKE) unzips CC=gcc CF="-O3 -Wall -I. -DBSD -DUNIX $(LOC)" LF2=""
847         $(STRIP) $(UNZIPS)
848
849 # Minix 1.5 PC for the 386.  Invoke as is to use default cc, or as "make
850 # minix CC=gcc" to use gcc.  Try "make linux" if you have a working termios.h.
851 minix:          unix_make
852         $(MAKE) unzips CF="$(CF) -DMINIX -DSHORT_NAMES" CC=$(CC) LD=$(CC)
853
854 # MPE/iX, the Unix variant for HP 3000 systems.
855 mpeix:          unix_make
856         $(MAKE) unzips CC=c89\
857          CF="$(CF) -DUNIX -D_POSIX_SOURCE -DHAVE_TERMIOS_H -DPASSWD_FROM_STDIN -DNO_PARAM_H"\
858          LF2=-lbsd CP=cp LN="ln -s"
859
860 # NeXT info.
861 next:
862         @echo
863         @echo\
864  '  Please pick a specific NeXT target:  "make next10" will create a generic'
865         @echo\
866  '  NeXT executable; "make next2x" will create a smaller executable (for'
867         @echo\
868  '  NeXTstep 2.0 and higher); "make next3x" will create a small executable'
869         @echo\
870  '  with significantly better optimization (NeXTstep 3.0 and higher only);'
871         @echo\
872  '  "make nextfat" will create a fat, multi-architecture (NeXT plus Intel)'
873         @echo\
874  '  executable (NeXTstep 3.1 and higher only).'
875         @echo
876
877 # 68030 BSD 4.3+Mach.  NeXT 2.x: make the executable smaller.
878 next2x:         unix_make
879         $(MAKE) unzips LF2="-object -s"
880
881 # NeXT 3.x: as above, plus better optimization.
882 next3x:         unix_make
883         $(MAKE) unzips CF="-O2 -I. $(LOC)" LF2="-object -s"
884
885 # NeXT 3.1+: make the executable fat (multi-architecture binary [MAB],
886 # for "black" [NeXT] and "white" [x86] hardware, so far).
887 nextfat:        unix_make
888         $(MAKE) unzips CF="-O2 -I. $(LOC) -arch i386 -arch m68k" \
889          LF2="-arch i386 -arch m68k -object -s"
890
891 # IBM OS/390 (formerly MVS) compiled under "OpenEdition" shell
892 os390:          unix_make
893         set -x; \
894         $(MAKE) -f unix/Makefile unzips \
895          CC=c89 LD="\$$(CC) -Wl,EDIT=NO" \
896          CF="$(CF) -DSYSV -DUNIX -DOS390 -DEBCDIC -DNO_PARAM_H \
897          -D_ALL_SOURCE $(HOST_VERSINFO)" LF2=""
898
899 # Sequent Symmetry running Dynix/ptx (sort of SysV.3):  needs to link
900 # with libseq to get symlink().
901 ptx:            unix_make
902         $(MAKE) unzips CF="$(CF) -DSYSV -DTERMIO -DPTX" LF2="$(LF2) -lseq"
903
904 # Pyramid 90X (probably all) under >= OSx4.1, either universe.  (This is an
905 # experimental target!  If it fails, use either pyr_ucb or pyr_att instead.)
906 # The make in the BSD half is too stupid to understand $(MAKE), sigh...
907 pyramid:        unix_make
908         -make -f unix/Makefile pyr_`universe`
909
910 # QNX/Neutrino is "special" because you don't have any native development
911 # tools yet.  Set ARCH to "x86", "ppcbe", "ppcle", "mipsbe", or "mipsle"
912 # to produce x86, PowerPC (big- or little-endian) and MIPS (big-
913 # or little-endian) using gcc. [cjh]
914 qnxnto:         unix_make
915         @if [ "$(ARCH)" = "" ] ; then \
916                 echo "You didn't set ARCH; I'll assume you meant ARCH=x86..." ; \
917                 echo "" ; \
918                 $(MAKE) -f unix/Makefile CC="qcc -Vgcc_ntox86" unzips ; \
919         else \
920                 echo "Making unzip for $(ARCH)..." ; \
921                 echo "" ; \
922                 $(MAKE) -f unix/Makefile CC="qcc -Vgcc_nto$(ARCH)" unzips ; \
923         fi
924
925 # REGULUS:  68040-based, "real-time" SysV.3 mutant; uses gcc, with "REGULUS"
926 # predefined.
927 regulus:        unix_make
928         $(MAKE) unzips CF="$(CF) -traditional -DSYSV -DNO_MKDIR"
929
930 # IBM RS/6000 under AIX 3.2
931 rs6000:         unix_make
932         $(MAKE) unzips CF="$(CF) -DBSD -D_BSD -DUNIX" LF2="-lbsd"
933
934 # SCO cross compile from Unix to DOS. Tested with Xenix/386 and OpenDeskTop.
935 # Should work with Xenix/286 as well. (davidsen)  Note that you *must* remove
936 # the Unix objects and executable before doing this!  (Piet Plomp:  gcc won't
937 # recognize the -M0 flag that forces 8086 code.)  (GRR:  may need to reduce
938 # stack to 0c00h if using 286/small-model code...?)
939 sco_dos:        unix_make
940         $(MAKE) unzips CF="-O -I. $(LOC) -dos -M0" M=msdos \
941          LF="-dos -F 2000" LF2="-o unzip.exe" \
942          FL="-dos" FL2="-o funzip.exe" SL="-dos" SL2="-o unzipsfx.exe"
943
944 # SCO UNIX with shared libraries and no international support.  If you are
945 # not using a USA-style keyboard and display, you may want to remove -nointl
946 # to get support.  It adds quite a bit to the size of the executable.
947 sco_sl:         unix_make
948         $(MAKE) unzips LF="$(LF) -nointl" LF2="$(LF2) -lc_s"\
949          SL="$(SL) -nointl" FL="$(FL) -nointl"
950
951 # SCO Xenix/286 2.2.3 or later with development system 2.2.1 or later
952 sco_x286:       unix_make
953         $(MAKE) unzips CF="$(CF) -Mel2 -LARGE -DNO_MKDIR" \
954          LF="$(LF) -Mel2 -LARGE -lx" SL="$(SL) -Mel2 -LARGE" \
955          FL="$(FL) -Mel2 -LARGE"
956
957 # Sequent Symmetry with Dynix.  (386, but needs -DZMEM)
958 # This should also work on Balance but I can't test it just yet.
959 sequent:        unix_make
960         $(MAKE) unzips CF="$(CF) -DBSD -DZMEM"
961
962 # Sun 2, 3, 4 running SunOS 3.x
963 sunos3:         unix_make
964         $(MAKE) unzips CF="$(CF) -DNO_UID_GID -DUID_USHORT"
965
966 # Generic System V + GNU C
967 sysv_gcc:       unix_make
968         $(MAKE) unzips CC=gcc LD=gcc CF="-O2 -I. -DUNIX -DSYSV $(LOC)" LF2=""
969         $(STRIP) $(UNZIPS)
970
971 # AT&T 6300+, System V.2 Unix:  run-time out-of-memory error if don't use -Ml;
972 # also compile-time error if work arrays dimensioned at HSIZE+2 (>32K)
973 sysv6300:       unix_make
974         $(MAKE) unzips CF="$(CF) -Ml -DSYSV" LF="$(LF) -Ml"\
975          SL="$(SL) -Ml" FL="$(FL) -Ml"
976
977 # Texas Instruments System V.3 (running on HP 9000-1500)
978 ti_sysv:        unix_make
979         $(MAKE) unzips CF="$(CF) -DSYSV -DNO_UID_GID -DUID_USHORT"
980
981 # SCO Xenix (Joe Foster 950508:  "unzip needs to be linked with -lx [for the
982 # opendir(), readdir(), telldir(), rewinddir(), and closedir() calls]")
983 xenix:           unix_make
984         $(MAKE) unzips LF2="$(LF2) -lx"
985
986 # Wombat 68000 (or whatever).
987 # I didn't do this.  I swear.  No, really.
988 wombat:         unix_make
989         @echo
990         @echo  '        Ha ha!  Just kidding.'
991         @echo
992
993 romfs:
994         $(ROMFSINST) /bin/unzip
995         $(ROMFSINST) -e CONFIG_USER_UNZIP_FUNZIP /bin/funzip