#============================================================================== # Makefile for UnZip, UnZipSFX and fUnZip: Unix and MS-DOS ("real" makes only) # Version: 5.5 16 February 2002 #============================================================================== # INSTRUCTIONS (such as they are): # # "make sunos" -- makes UnZip in current directory on a generic SunOS 4.x Sun # "make list" -- lists all supported systems (targets) # "make help" -- provides pointers on what targets to try if problems occur # "make wombat" -- chokes and dies if you haven't added the specifics for your # Wombat 68000 (or whatever) to the systems list # # CF are flags for the C compiler. LF are flags for the loader. LF2 are more # flags for the loader, if they need to be at the end of the line instead of at # the beginning (for example, some libraries). FL and FL2 are the corre- # sponding flags for fUnZip. LOCAL_UNZIP is an environment variable that can # be used to add default C flags to your compile without editing the Makefile # (e.g., -DDEBUG_STRUC, or -FPi87 on PCs using Microsoft C). # # Some versions of make do not define the macro "$(MAKE)"; this is rare, but # if things don't work, try using "make" instead of "$(MAKE)" in your system's # makerule. Or try adding the following line to your .login file: # setenv MAKE "make" # (That never works--makes that are too stupid to define MAKE are also too # stupid to look in the environment--but try it anyway for kicks. :-) ) # # Memcpy and memset are provided for those systems that don't have them; they # are in fileio.c and will be used if -DZMEM is included in CF. These days # almost all systems have them. # # Be sure to test your new UnZip (and UnZipSFX and fUnZip); successful compila- # tion does not always imply a working program. ##################### # MACRO DEFINITIONS # ##################### # Defaults most systems use (use LOCAL_UNZIP in environment to add flags, # such as -DDOSWILD). # UnZip flags CC = cc# try using "gcc" target rather than changing this (CC and LD LD = $(CC)# must match, else "unresolved symbol: ___main" is possible) AS = as LOC = $(LOCAL_UNZIP) AF = $(LOC) CF = -O -I. $(LOC) LF = -o unzip LF2 = -s # UnZipSFX flags SL = -o unzipsfx SL2 = $(LF2) # fUnZip flags FL = -o funzip FL2 = $(LF2) # general-purpose stuff #CP = cp CP = ln LN = ln RM = rm -f CHMOD = chmod BINPERMS = 755 MANPERMS = 644 STRIP = strip E = O = .o M = unix SHELL = /bin/sh # Version info for unix/unix.c HOST_VERSINFO=-DIZ_CC_NAME='\"\$$(CC) \"' -DIZ_OS_NAME='\"`uname -a`\"' # defaults for crc32 stuff and system dependent headers CRC32 = crc32 OSDEP_H = # object files OBJS1 = unzip$O $(CRC32)$O crctab$O crypt$O envargs$O explode$O OBJS2 = extract$O fileio$O globals$O inflate$O list$O match$O OBJS3 = process$O ttyio$O unreduce$O unshrink$O zipinfo$O OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $M$O LOBJS = $(OBJS) OBJSDLL = $(OBJS:.o=.pic.o) api.pic.o OBJX = unzipsfx$O $(CRC32)$O crctab_$O crypt_$O extract_$O fileio_$O \ globals_$O inflate_$O match_$O process_$O ttyio_$O $M_$O LOBJX = $(OBJX) OBJF = funzip$O $(CRC32)$O cryptf$O globalsf$O inflatef$O ttyiof$O #OBJS_OS2 = $(OBJS1:.o=.obj) $(OBJS2:.o=.obj) os2.obj #OBJF_OS2 = $(OBJF:.o=.obj) UNZIP_H = unzip.h unzpriv.h globals.h $(OSDEP_H) # installation # (probably can change next two to `install' and `install -d' if you have it) INSTALL = cp INSTALL_PROGRAM = $(INSTALL) INSTALL_D = mkdir -p # on some systems, manext=l and MANDIR=/usr/man/man$(manext) may be appropriate manext = 1 prefix = /usr/local BINDIR = $(prefix)/bin# where to install executables MANDIR = $(prefix)/man/man$(manext)# where to install man pages INSTALLEDBIN = $(BINDIR)/funzip$E $(BINDIR)/unzip$E $(BINDIR)/unzipsfx$E \ $(BINDIR)/zipgrep$E $(BINDIR)/zipinfo$E INSTALLEDMAN = $(MANDIR)/funzip.$(manext) $(MANDIR)/unzip.$(manext) \ $(MANDIR)/unzipsfx.$(manext) $(MANDIR)/zipgrep.$(manext) \ $(MANDIR)/zipinfo.$(manext) # Solaris 2.x stuff: PKGDIR = IZunzip VERSION = Version 5.5 UNZIPS = unzip$E funzip$E unzipsfx$E # this is a little ugly...well, OK, it's a lot ugly: MANS = man/funzip.1 man/unzip.1 man/unzipsfx.1 man/zipgrep.1 man/zipinfo.1 DOCS = funzip.txt unzip.txt unzipsfx.txt zipgrep.txt zipinfo.txt # list of supported systems/targets in this version SYSTEMSG = generic generic2 generic3 generic_zlib generic_shlib SYSTEMS1 = 386i 3Bx 7300 7300_gcc aix aix_rt amdahl amdahl_eft apollo aviion SYSTEMS2 = bsd bsdi bsdi_noasm bull coherent convex cray cray_opt cyber_sgi SYSTEMS3 = dec dnix encore eta freebsd gcc gould hk68 hp hpux isc isc_gcc SYSTEMS4 = isi linux linux_dos linux_noasm linux_shlib linux_shlibz lynx SYSTEMS5 = maxosx macosx_gcc minix mips mpeix next next10 next2x next3x SYSTEMS6 = nextfat osf1 pixel ptx pyramid qnxnto realix regulus rs6000 sco SYSTEMS7 = sco_dos sco_sl sco_x286 sequent sgi solaris solaris_pkg stardent SYSTEMS8 = stellar sunos3 sunos4 sysv sysv_gcc sysv6300 tahoe ti_sysv ultrix SYSTEMS9 = vax v7 wombat xenix xos #################### # DEFAULT HANDLING # #################### # By default, print help on which makefile targets to try. (The SYSTEM # variable is no longer supported; use "make " instead.) help: @echo "" @echo\ " If you're not sure about the characteristics of your system, try typing" @echo\ ' "make generic". If the compiler barfs and says something unpleasant about' @echo\ ' "timezone redefined," try typing "make clean" followed by "make generic2".' @echo\ ' If, on the other hand, it complains about an undefined symbol _ftime, try' @echo\ ' typing "make clean" followed by "make generic3". One of these actions' @echo\ ' should produce a working copy of unzip on most Unix systems. If you know' @echo\ ' a bit more about the machine on which you work, you might try "make list"' @echo\ ' for a list of the specific systems supported herein. (Many of them do' @echo\ " exactly the same thing, so don't agonize too much over which to pick if" @echo\ ' two or more sound equally likely.) Also check out the INSTALL file for' @echo\ ' notes on compiling various targets. As a last resort, feel free to read' @echo\ ' the numerous comments within the Makefile itself.' @echo\ ' Have a mostly pretty good day.' @echo "" list: @echo "" @echo\ 'Type "make ", where is one of the following:' @echo "" @echo " $(SYSTEMSG)" @echo "" @echo " $(SYSTEMS1)" @echo " $(SYSTEMS2)" @echo " $(SYSTEMS3)" @echo " $(SYSTEMS4)" @echo " $(SYSTEMS5)" @echo " $(SYSTEMS6)" @echo " $(SYSTEMS7)" @echo " $(SYSTEMS8)" @echo " $(SYSTEMS9)" # @echo "" # @echo\ # 'Targets for related utilities (ZipInfo and fUnZip) include:' # @echo "" # @echo " $(SYS_UTIL1)" # @echo " $(SYS_UTIL2)" @echo "" @echo\ 'For further (very useful) information, please read the comments in Makefile.' @echo "" generic_msg: @echo "" @echo\ ' Attempting "make generic" now. If this fails for some reason, type' @echo\ ' "make help" and/or "make list" for suggestions.' @echo "" ############################################### # BASIC COMPILE INSTRUCTIONS AND DEPENDENCIES # ############################################### # this is for GNU make; comment out and notify zip-bugs if it causes errors .SUFFIXES: .c .o .obj .pic.o # yes, we should be able to use the $O macro to combine these two, but it # fails on some brain-damaged makes (e.g., AIX's)...no big deal .c.o: $(CC) -c $(CF) $*.c .c.obj: $(CC) -c $(CF) $*.c .c.pic.o: $(CC) -c $(CF) -o $@ $*.c # this doesn't work...directories are always a pain with implicit rules #.1.txt: man/$< # nroff -Tman -man $< | col -b | uniq | \ # sed 's/Sun Release ..../Info-ZIP /' > $@ # these rules may be specific to Linux (or at least the GNU groff package) # and are really intended only for the authors' use in creating non-Unix # documentation files (which are provided with both source and binary # distributions). We should probably add a ".1.txt" rule for more generic # systems... funzip.txt: man/funzip.1 nroff -Tascii -man man/funzip.1 | col -b | uniq | expand > $@ unzip.txt: man/unzip.1 nroff -Tascii -man man/unzip.1 | col -b | uniq | expand > $@ unzipsfx.txt: man/unzipsfx.1 nroff -Tascii -man man/unzipsfx.1 | col -b | uniq | expand > $@ zipgrep.txt: man/zipgrep.1 nroff -Tascii -man man/zipgrep.1 | col -b | uniq | expand > $@ zipinfo.txt: man/zipinfo.1 nroff -Tascii -man man/zipinfo.1 | col -b | uniq | expand > $@ all: generic_msg generic unzips: $(UNZIPS) objs: $(OBJS) objsdll: $(OBJSDLL) docs: $(DOCS) unzipsman: unzips docs unzipsdocs: unzips docs # EDIT HERE FOR PARALLEL MAKES on Sequent (and others?)--screws up MS-DOS # make utilities if default: change "unzip$E:" to "unzip$E:&" unzip$E: $(OBJS) # add `&' for parallel makes $(LD) $(LF) $(LOBJS) $(LF2) unzipsfx$E: $(OBJX) # add `&' for parallel makes $(LD) $(SL) $(LOBJX) $(SL2) funzip$E: $(OBJF) # add `&' for parallel makes $(LD) $(FL) $(OBJF) $(FL2) zipinfo$E: unzip$E # `&' is pointless here... @echo\ ' This is a Unix-specific target. ZipInfo is not enabled in some MS-DOS' @echo\ ' versions of UnZip; if it is in yours, copy unzip.exe to zipinfo.exe' @echo\ ' or else invoke as "unzip -Z" (in a batch file, for example).' $(LN) unzip$E zipinfo$E crc32$O: crc32.c $(UNZIP_H) zip.h crctab$O: crctab.c $(UNZIP_H) zip.h crypt$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h envargs$O: envargs.c $(UNZIP_H) explode$O: explode.c $(UNZIP_H) extract$O: extract.c $(UNZIP_H) crypt.h fileio$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h funzip$O: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h globals$O: globals.c $(UNZIP_H) inflate$O: inflate.c inflate.h $(UNZIP_H) list$O: list.c $(UNZIP_H) match$O: match.c $(UNZIP_H) process$O: process.c $(UNZIP_H) ttyio$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h unreduce$O: unreduce.c $(UNZIP_H) unshrink$O: unshrink.c $(UNZIP_H) unzip$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h zipinfo$O: zipinfo.c $(UNZIP_H) unzipsfx$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h # unzipsfx only -$(CP) unzip.c unzipsfx.c $(CC) -c $(CF) -DSFX unzipsfx.c $(RM) unzipsfx.c crctab_$O: crctab.c $(UNZIP_H) zip.h -$(CP) crctab.c crctab_.c $(CC) -c $(CF) -DSFX crctab_.c $(RM) crctab_.c crypt_$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only -$(CP) crypt.c crypt_.c $(CC) -c $(CF) -DSFX crypt_.c $(RM) crypt_.c extract_$O: extract.c $(UNZIP_H) crypt.h # unzipsfx only -$(CP) extract.c extract_.c $(CC) -c $(CF) -DSFX extract_.c $(RM) extract_.c fileio_$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h -$(CP) fileio.c fileio_.c $(CC) -c $(CF) -DSFX fileio_.c $(RM) fileio_.c globals_$O: globals.c $(UNZIP_H) # unzipsfx only -$(CP) globals.c globals_.c $(CC) -c $(CF) -DSFX globals_.c $(RM) globals_.c inflate_$O: inflate.c inflate.h $(UNZIP_H) crypt.h # unzipsfx only -$(CP) inflate.c inflate_.c $(CC) -c $(CF) -DSFX inflate_.c $(RM) inflate_.c match_$O: match.c $(UNZIP_H) # unzipsfx only -$(CP) match.c match_.c $(CC) -c $(CF) -DSFX match_.c $(RM) match_.c process_$O: process.c $(UNZIP_H) # unzipsfx only -$(CP) process.c process_.c $(CC) -c $(CF) -DSFX process_.c $(RM) process_.c ttyio_$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only -$(CP) ttyio.c ttyio_.c $(CC) -c $(CF) -DSFX ttyio_.c $(RM) ttyio_.c cryptf$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only -$(CP) crypt.c cryptf.c $(CC) -c $(CF) -DFUNZIP cryptf.c $(RM) cryptf.c globalsf$O: globals.c $(UNZIP_H) # funzip only -$(CP) globals.c globalsf.c $(CC) -c $(CF) -DFUNZIP globalsf.c $(RM) globalsf.c inflatef$O: inflate.c inflate.h $(UNZIP_H) crypt.h # funzip only -$(CP) inflate.c inflatef.c $(CC) -c $(CF) -DFUNZIP inflatef.c $(RM) inflatef.c ttyiof$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only -$(CP) ttyio.c ttyiof.c $(CC) -c $(CF) -DFUNZIP ttyiof.c $(RM) ttyiof.c # optional assembler replacements crc_i86$O: msdos/crc_i86.asm # 16bit only $(AS) $(AF) msdos/crc_i86.asm $(ASEOL) crc_gcc$O: crc_i386.S # 32bit, GNU AS $(AS) $(AF) -x assembler-with-cpp -c -o $@ crc_i386.S crc_gcc.pic.o: crc_i386.S # 32bit, GNU AS $(AS) $(AF) -x assembler-with-cpp -c -o $@ crc_i386.S crc_sysv$O: crc_i386.S # 32bit, SysV AS $(CC) -E $(AF) crc_i386.S >crc_i386.s $(AS) -o $@ crc_i386.s $(RM) crc_i386.s msdos$O: msdos/msdos.c $(UNZIP_H) unzvers.h # DOS only $(CC) -c $(CF) msdos/msdos.c msdos_$O: msdos/msdos.c $(UNZIP_H) # DOS unzipsfx -$(CP) msdos/msdos.c msdos_.c > nul $(CC) -c $(CF) -DSFX msdos_.c $(RM) msdos_.c #os2$O: os2/os2.c $(UNZIP_H) # OS/2 only # $(CC) -c $(CF) os2/os2.c unix$O: unix/unix.c $(UNZIP_H) unzvers.h # Unix only $(CC) -c $(CF) unix/unix.c unix_$O: unix/unix.c $(UNZIP_H) # Unix unzipsfx -$(CP) unix/unix.c unix_.c $(CC) -c $(CF) -DSFX unix_.c $(RM) unix_.c unix.pic.o: unix/unix.c $(UNZIP_H) unzvers.h # Unix shlib $(CC) -c $(CF) -o $@ unix/unix.c unix_make: # @echo\ # '(Ignore any errors from `make'"' due to the following command; it's harmless.)" -@2>&1 $(LN) unix/Makefile . > /dev/null || echo > /dev/null # this really only works for Unix targets, unless E and O specified on cmd line clean: @echo "" @echo ' This is a Unix-specific target. (Just so you know.)' @echo "" rm -f $(UNZIPS) $(OBJS) $(OBJF) $(OBJX) api$O apihelp$O crc_gcc$O \ crc_sysv$O unzipstb$O crypt_.c extract_.c globals_.c inflate_.c \ ttyio_.c crc_i386.s msdos_.c process_.c unix_.c unzipsfx.c rm -rf ./$(PKGDIR) # Package generation interface (by J.Bush). Originally tested under Sun # Solaris 2.x. Other SVr4s may be very similar and could possibly use this. # Note: expects version info to be stored in VERSION macro variable. # See "README" under ./unix/Packaging # svr4package: unzips @echo "Creating SVR4 package for Unix ..." -@rm -rf ./$(PKGDIR) ./$(PKGDIR)_`uname -p`.pkg -@sed -e "s/.VERSION./$(VERSION)/g" \ -e "s/.PSTAMP./$(LOGNAME)_`date | tr ' ' '_'`/g" \ -e "s/.ARCH./Solaris_`uname -rp | tr ' ' ','`/g" \ ./unix/Packaging/pkginfo.in > ./unix/Packaging/pkginfo -@sed -e "s/.ARCH./`uname -p`/g" \ ./unix/Packaging/preinstall.in > ./unix/Packaging/preinstall /usr/bin/pkgmk -d . -b . -r . -f ./unix/Packaging/prototype $(PKGDIR) /usr/bin/pkgtrans -o -s . $(PKGDIR)_`uname -p`.pkg $(PKGDIR) @echo " " @echo "To install, copy $(PKGDIR)_`uname -p`.pkg to the target system, and" @echo "issue the command (as root): pkgadd -d $(PKGDIR)_`uname -p`.pkg" @echo " " install: $(MANS) -$(INSTALL_D) $(BINDIR) $(INSTALL_PROGRAM) $(UNZIPS) $(BINDIR) $(INSTALL) unix/zipgrep $(BINDIR) $(RM) $(BINDIR)/zipinfo$E $(LN) $(BINDIR)/unzip$E $(BINDIR)/zipinfo$E -$(INSTALL_D) $(MANDIR) $(INSTALL) man/funzip.1 $(MANDIR)/funzip.$(manext) $(INSTALL) man/unzip.1 $(MANDIR)/unzip.$(manext) $(INSTALL) man/unzipsfx.1 $(MANDIR)/unzipsfx.$(manext) $(INSTALL) man/zipgrep.1 $(MANDIR)/zipgrep.$(manext) $(INSTALL) man/zipinfo.1 $(MANDIR)/zipinfo.$(manext) $(CHMOD) $(BINPERMS) $(INSTALLEDBIN) $(CHMOD) $(MANPERMS) $(INSTALLEDMAN) uninstall: $(RM) $(INSTALLEDBIN) $(INSTALLEDMAN) # the test zipfile TESTZIP = testmake.zip # test some basic features of the build test: check check: @echo '##### This is a Unix-specific target. (Just so you know.)' @echo '##### Make sure unzip, funzip and unzipsfx are compiled and' @echo '##### in this directory.' @if test ! -f ./unzip; then \ echo "##### ERROR: can't find ./unzip"; exit 1; fi @if test ! -f ./funzip; then \ echo "##### ERROR: can't find ./funzip"; exit 1; fi @if test ! -f ./unzipsfx; then \ echo "##### ERROR: can't find ./unzipsfx"; exit 1; fi # @if test ! -f $(TESTZIP); then \ echo "##### ERROR: can't find test file $(TESTZIP)"; exit 1; fi # @echo "##### testing extraction" @./unzip -bo $(TESTZIP) testmake.zipinfo @if test ! -f testmake.zipinfo ; then \ echo "##### ERROR: file extraction from $(TESTZIP) failed"; \ exit 1; fi # @echo '##### testing zipinfo (unzip -Z)' @./unzip -Z $(TESTZIP) > testmake.unzip-Z @if diff testmake.unzip-Z testmake.zipinfo; then echo "OK."; else \ echo "##### WARNING: zipinfo output doesn't match stored version"; \ echo '##### (If the only difference is the file times, compare your'; \ echo '##### timezone with the Central European timezone, which is one'; \ echo '##### hour east of Greenwich but effectively 2 hours east'; \ echo '##### during summer Daylight Savings Time. The upper two'; \ echo '##### lines should correspond to your local time when the'; \ echo '##### files were created, on 19 November 1998 at 10:46pm CET.'; \ echo '##### If the times are consistent, please ignore this warning.)'; \ fi @$(RM) testmake.unzip-Z testmake.zipinfo # @echo '##### testing unzip -d exdir option' @./unzip -bo $(TESTZIP) -d testun notes @cat testun/notes # @echo '##### testing unzip -o and funzip (ignore funzip warning)' @./unzip -boq $(TESTZIP) notes -d testun @./funzip < $(TESTZIP) > testun/notes2 @if diff testun/notes testun/notes2; then true; else \ echo '##### ERROR: funzip output disagrees with unzip'; fi # @echo '##### testing unzipsfx (self-extractor)' @cat unzipsfx $(TESTZIP) > testsfx @$(CHMOD) 0700 testsfx @./testsfx -bo notes @if diff notes testun/notes; then true; else \ echo '##### ERROR: unzipsfx file disagrees with unzip'; fi @$(RM) testsfx notes testun/notes testun/notes2 @rmdir testun # @echo '##### testing complete.' ################################ # INDIVIDUAL MACHINE MAKERULES # ################################ #---------------------------------------------------------------------------- # Generic targets (can't assume make utility groks "$(MAKE)") #---------------------------------------------------------------------------- generic: unzips # first try if unknown generic2: unix_make # second try if unknown: hope make is called "make" make -f unix/Makefile unzips CF="$(CF) -DBSD" generic3: unix_make # third try if unknown: hope make is called "make" make -f unix/Makefile unzips CF="$(CF) -DSYSV" # Generic unzip and funzip target using either shared or static zlib for # inflate rather than the original UnZip version. (libz was libgz prior # to 0.94) Need to figure out how to force unzipsfx to use static libz. generic_zlib: unix_make @echo\ "This target assumes zlib (libz.a or libz.so.*) is already installed." $(MAKE) unzip funzip CF="$(CF) -DUSE_ZLIB" LF2="-lz $(LF2)" # Generic GNU C shared library. This is an example of how to compile UnZip as # a shared library. (Doing so as a static library would be similar.) See also # the linux_shlib target. generic_shlib: unix_make @echo\ 'This target requires GNU C. When done, do "setenv LD_LIBRARY_PATH `pwd`"' @echo\ 'or similar in order to test the shared library in place (with ./unzip_shlib ,' @echo\ 'which is UnZip linked with the DLL). This target is an example only.' @echo "" $(MAKE) objsdll CC=gcc CF="-O3 -Wall -I. -fPIC -DDLL $(LOC)" gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.4 $(OBJSDLL) $(RM) libunzip.so.0 libunzip.so $(LN) -s libunzip.so.0.4 libunzip.so.0 $(LN) -s libunzip.so.0 libunzip.so gcc -c -O unzipstb.c gcc -o unzip_shlib unzipstb.o -L. -lunzip #---------------------------------------------------------------------------- # "Normal" group (BSD vs. SysV may be set in unzip.h via predefined macros): #---------------------------------------------------------------------------- 386i: unzips # sun386i, SunOS 4.0.2 #3Bx: unzips # AT&T 3B2/1000-80; should work on any WE32XXX machine #aix_rt: unzips # IBM RT 6150 under AIX 2.2.1 bull: unzips # Bull DPX/2, BOS 2.00.45 (doesn't require -Xk switch) convex: unzips # Convex C-120 and C-210 (-O is enough; -ext is default) cray: unzips # Cray-2 and Y-MP, using default (possibly old) compiler dec: unzips # DEC 5820 (MIPS RISC), test version of Ultrix v4.0 encore: unzips # Multimax eta: unzips # ETA-10P*, hybrid SysV with BSD 4.3 enhancements gould: unzips # Gould PN9000 running UTX/32 2.1Bu01 hp: unzips # HP 9000 series (68020), 4.3BSD or HP-UX A.B3.10 Ver D hpux: unzips # (to match zip's makefile entry) mips: unzips # MIPS M120-5(?), SysV.3 [error in sys/param.h file?] next10: unzips # NeXT (generic; use next2x or next3x for better opt.) osf1: unzips # DECstation, including Alpha-based; DEC OSF/1 v1.x pyr_: unzips # [failsafe target for pyramid target below] pyr_ucb: unzips # Pyramids running BSD universe by default (see below) realix: unzips # Modcomp Real/IX (SysV.3); note "gcc" = GLS C, not GNU sco: unzips # Xenix/386 (tested on 2.3.1); SCO Unix 3.2.0. sgi: unzips # Silicon Graphics; Irix 3.3.2, 4.0.x, 5.2, etc. stellar: unzips # gs-2000 sun: unzips # old target; no good with solaris...use "sunos" now sunos: unzips # no good with SunOS 3.x...use "sunos3" or "sunos4" now sunos4: unzips # Sun 3, 4; SunOS 4.x (SOME SYSTEMS ARE SYSTEM V!) tahoe: unzips # tahoe (CCI Power6/32), 4.3BSD ultrix: unzips # VAXen, DEC 58x0 (MIPS guts), DECstation 2100; v4.x vax: unzips # general-purpose VAX target (not counting VMS) #---------------------------------------------------------------------------- # BSD group (for timezone structs [struct timeb]): #---------------------------------------------------------------------------- bsd: _bsd # generic BSD (BSD 4.2 & Ultrix handled in unzip.h) _bsd: unix_make $(MAKE) unzips CF="$(CF) -DBSD" #---------------------------------------------------------------------------- # SysV group (for extern long timezone and ioctl.h instead of sgtty.h): #---------------------------------------------------------------------------- aix_rt: _sysv # IBM RT 6150 under AIX 2.2.1 aviion: _sysv # Data General AViiONs, DG/UX 4.3x pyr_att: _sysv # Pyramids running AT&T (SysV) universe by default solaris: _sysv # Sun SPARC & x86, Solaris 2.x solaris_pkg: _sysvp # Sun SPARC & x86, Solaris 2.x; make package when done stardent: _sysv # Stardent ... sysv: _sysv # generic System V Unix (Xenix handled in unzip.h) xos: _sysv # Olivetti LSX-3005..3045, X/OS 2.3 and 2.4 _sysv: unix_make $(MAKE) unzips CF="$(CF) -DSYSV" # extension to perform SVR4 package-creation after compilation _sysvp: _sysv svr4package #---------------------------------------------------------------------------- # Version 7 group (old/obsolescent): #---------------------------------------------------------------------------- pixel: _v7 # Pixel 80, 100 (68000-based, V7/mostly BSD4.1 compat.) v7: _v7 # generic Unix Version 7 box (prob. only Pixel...) _v7: make -f unix/Makefile unzips \ CF="$(CF) -DV7 -DNO_PARAM_H -DSHORT_NAMES -DBSD -DZMEM" #---------------------------------------------------------------------------- # "Unique" group (require non-standard options): #---------------------------------------------------------------------------- # AT&T 3B2/1000-80; should work on any WE32XXX machine 3Bx: unix_make $(MAKE) unzips CF="$(CF) -DCBREAK=2" # AT&T 7300 (M68000/SysV.3) (add -DSYSV? -DNO_LIMITS?) 7300: unix_make $(MAKE) unzips CF="$(CF) -DNO_DIR -DNO_MKDIR -DNO_STRNICMP -DNO_UID_GID -DCBREAK=2" 7300_gcc: unix_make $(MAKE) unzips CC=gcc LD=gcc LF2="" \ CF="-O2 -I. -DNO_DIR -DNO_MKDIR -DNO_STDLIB_H -DNO_STRNICMP -DNO_UID_GID -DCBREAK=2 $(LOC)" $(STRIP) $(UNZIPS) # IBM AIX 3.x on an RS/6000: see rs6000 target below aix: rs6000 # Amdahl (IBMish) mainframe, UTS (SysV) 1.2.4, 2.0.1, 3.x amdahl: unix_make $(MAKE) unzips CF="$(CF) -DSYSV -DNO_UID_GID" # Amdahl UTS 2.1.4 with "extended file types" filesystem (aarrrggghhhh...) amdahl_eft: unix_make $(MAKE) unzips CF="$(CF) -eft -DSYSV -DNO_UID_GID" # Apollo Domain/OS machines (added -D...SOURCE options) [Gordon Fox, 960810] apollo: unix_make $(MAKE) unzips CF="$(CF) -D_INCLUDE_BSD_SOURCE -D_INCLUDE_XOPEN_SOURCE" # BSDI BSD/OS on 386 platform, using the assembler replacement for crc32.c bsdi: unix_make @echo 'NOTE: use bsdi_noasm target for non-Intel BSD/OS compiles.' $(MAKE) unzips CC=gcc2 LD=shlicc2 AS=gcc2\ CF="-O3 -Wall -I. -DASM_CRC -DBSD $(LOC)" CRC32=crc_gcc # BSDI BSD/OS bsdi_noasm: unix_make # @echo 'NOTE: use bsd target for non-Intel BSD/OS compiles.' $(MAKE) unzips CC=gcc2 LD=shlicc2 AS=gcc2\ CF="-O3 -Wall -I. -DBSD $(LOC)" # Coherent 3.x/4.x, Mark Williams C. ``For Coherent's CC, it needs either # -T0 or -T150000 (or bigger) added to the CFLAGS, otherwise the compiler # runs out of memory and dies in zipinfo.c.'' [Fred "Fredex" Smith, 940719] coherent: unix_make $(MAKE) unzips CF="$(CF) -T0" # Cray-2, Y-MP or C90, running Unicos 5.x to 8.x (SysV + BSD enhancements) # and Standard (ANSI) C compiler 3.0 or later. cray_opt: unix_make $(MAKE) unzips CF="$(CF) -h scalar3 -h vector3" # The unzip41 build on a Cyber 910/SGI running Irix v3.3.3 was successful # with the following change to Makefile: cyber_sgi: unix_make $(MAKE) unzips CF="$(CF) -I/usr/include/bsd"\ LF="-lbsd $(LF)" SL="-lbsd $(SL)" # 680x0, DIAB dnix 5.2/5.3 (a Swedish System V clone) # # Options for the dnix cc: # -X7 = cc is strict ANSI C # -X9 = warnings if a function is used without a declaration # dnix: unix_make $(MAKE) unzips CF="$(CF) -X7 -X9 -DDNIX" # FreeBSD on Intel: freebsd: unix_make @echo 'NOTE: use bsd target for non-Intel FreeBSD compiles (if any).' $(MAKE) unzips CC=gcc LD=gcc AS=gcc\ CF="-O3 -Wall -I. -DASM_CRC -DBSD $(LOC)"\ AF="-Di386 $(AF)" CRC32=crc_gcc # Generic BSDish Unix gcc. ``The -O3 only works with later versions of gcc; # you may have to use -O2 or -O for earlier versions. I have no idea why # -s causes this bug in gcc.'' [Bug: "nm: unzip: no name list", "collect: # /usr/bin/nm returned 1 exit status".] If you don't have strip, don't # worry about it (it just makes the executable smaller and can be replaced # with "echo" instead). # gcc: unix_make $(MAKE) unzips CC=gcc LD=gcc CF="-O3 -I. $(LOC)" LF2="" $(STRIP) $(UNZIPS) # Heurikon HK68 (68010), UniPlus+ System V 5.0, Green Hills C-68000 hk68: unix_make $(MAKE) unzips CC="gcc" LD="gcc"\ LF="-n $(LF)" SL="-n $(SL)" FL="-n $(FL)"\ CF="-ga -X138 -I. $(LOC) -Dlocaltime=localti -Dtimezone=timezon" # ISC Unix on 386 platform isc: unix_make $(MAKE) unzips LF2="-lc_s $(LF2)" CRC32=crc_sysv \ CF="-O -I. -DASM_CRC -DSYSV -DNO_UID_GID -DNEED_PTEM $(LOC)" \ AF="-DNO_UNDERLINE -Djecxz=jcxz -DALIGNMENT='.align 16' $(AF)" isc_gcc: unix_make $(MAKE) unzips AS=gcc CC=gcc LD=gcc CRC32=crc_gcc LF="-shlib $(LF)" \ SL="-shlib $(SL)" FL="-shlib $(FL)" \ LF2="" CF="-O3 -I. -DSYSV -DASM_CRC -DNO_UID_GID -DNEED_PTEM $(LOC)" \ AF="-DNO_UNDERLINE -Djecxz=jcxz -DALIGNMENT='.align 16' $(AF)" $(STRIP) $(UNZIPS) # "ISI machine (68025 CPU)" (based on e-mail from Rob White ; # no further information). May also need DIRENT defined. isi: unix_make $(MAKE) unzips CF="$(CF) -DDECLARE_ERRNO" # Linux on 386 platform, using the assembler replacement for crc32.c. (-O4 and # -fno-strength-reduce have virtually no effect beyond -O3. Add "-m486 # -malign-functions=2 -malign-jumps=2 -malign-loops=2" for Pentium [Pro] # systems.) linux: unix_make @echo 'NOTE: use linux_noasm target for non-Intel Linux compiles.' $(MAKE) unzips CC=gcc LD=gcc AS=gcc\ CF="-O3 -Wall -I. -DASM_CRC $(LOC)"\ AF="-Di386 $(AF)" CRC32=crc_gcc # GRR: this echo is pointless; if user gets this far, no difference to install # @echo 'Be sure to use the install_asm target rather than the install target' linux_asm: linux # Linux (Posix, approximately SysV): virtually any version since before 0.96, # for any platform. Change "-O" to "-O3" or whatever, as desired... linux_noasm: unix_make $(MAKE) unzips CC=gcc LD=gcc CF="-O -Wall -I. $(LOC)" # Linux with lcc compiler: __inline__ (stat.h) not recognized, and must edit # /usr/include/gnu/types.h to get rid of "long long" if __LCC__ defined. -O3 # (or -O2 or -O) is ignored. [GRR 960828: test target only] # linux_lcc: unix_make $(MAKE) unzips CC=lcc LD=lcc CF="-O3 -Wall -I. -D__inline__= $(LOC)" # Linux host with go32 (djgpp) cross-compiler (go32crs.tgz) for 32-bit DOS. linux_dos: unix_make $(MAKE) unzips CC=go32gcc LD=go32gcc M=msdos CF="-O2 -Wall -I. $(LOC)" # go32-strip unzip # Due to limitations of the cross-compiling package, this has to be # done manually: @echo Copy $(UNZIPS) to your DOS partition and use coff2exe. # Linux ELF shared library (ooo, it's so easy). This is a test target for # now, and it only makes the UnZip/ZipInfo stuff (not fUnZip or UnZipSFX). # The version number may eventually change to match the UnZip version. Or # not. Whatever. Also do "setenv LD_LIBRARY_PATH `pwd`" or similar to test # the DLL in place (with unzip_shlib, which is UnZip linked with the shared # library). # linux_shlib: unix_make # $(MAKE) objsdll CC=gcc CF="-O3 -Wall -I. -fPIC -DDLL $(LOC)" $(MAKE) objsdll CC=gcc CF="-O3 -Wall -I. -fPIC -DDLL -DASM_CRC $(LOC)"\ AS=gcc AF="-fPIC -Di386 $(AF)" CRC32=crc_gcc ln -sf crc_gcc.pic.o crc32.pic.o gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.4 $(OBJSDLL) ln -sf libunzip.so.0.4 libunzip.so.0 ln -sf libunzip.so.0 libunzip.so gcc -c -O unzipstb.c gcc -o unzip_shlib unzipstb.o -L. -lunzip # Linux ELF shared library, as above, but using inflate() from zlib (libz.so) # instead of the original UnZip version. (libz was libgz prior to 0.94) linux_shlibz: unix_make # $(MAKE) objsdll CC=gcc CF="-O3 -Wall -I. -fPIC -DDLL -DUSE_ZLIB $(LOC)" $(MAKE) objsdll CC=gcc AS=gcc AF="-fPIC -Di386 $(AF)" CRC32=crc_gcc\ CF="-O3 -Wall -I. -fPIC -DDLL -DUSE_ZLIB -DASM_CRC $(LOC)" ln -sf crc_gcc.pic.o crc32.pic.o gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.4 $(OBJSDLL) ln -sf libunzip.so.0.4 libunzip.so.0 gcc -c -O unzipstb.c gcc -o unzip unzipstb.o -L. -lunzip -lz # LynxOS-x86 2.3.0 and newer, a real-time BSD-like OS; uses gcc. lynx: unix_make $(MAKE) unzips CC=gcc CF="$(CF) -DLynx -DLYNX -DBSD -DUNIX" # Macintosh MacOS X (Unix-compatible enviroment), using standard compiler macosx: unix_make $(MAKE) unzips CF="-O3 -Wall -I. -DBSD -DUNIX $(LOC)" LF2="" $(STRIP) $(UNZIPS) # Macintosh MacOS X (Unix-compatible enviroment), using gcc macosx_gcc: unix_make $(MAKE) unzips CC=gcc CF="-O3 -Wall -I. -DBSD -DUNIX $(LOC)" LF2="" $(STRIP) $(UNZIPS) # Minix 1.5 PC for the 386. Invoke as is to use default cc, or as "make # minix CC=gcc" to use gcc. Try "make linux" if you have a working termios.h. minix: unix_make $(MAKE) unzips CF="$(CF) -DMINIX -DSHORT_NAMES" CC=$(CC) LD=$(CC) # MPE/iX, the Unix variant for HP 3000 systems. mpeix: unix_make $(MAKE) unzips CC=c89\ CF="$(CF) -DUNIX -D_POSIX_SOURCE -DHAVE_TERMIOS_H -DPASSWD_FROM_STDIN -DNO_PARAM_H"\ LF2=-lbsd CP=cp LN="ln -s" # NeXT info. next: @echo @echo\ ' Please pick a specific NeXT target: "make next10" will create a generic' @echo\ ' NeXT executable; "make next2x" will create a smaller executable (for' @echo\ ' NeXTstep 2.0 and higher); "make next3x" will create a small executable' @echo\ ' with significantly better optimization (NeXTstep 3.0 and higher only);' @echo\ ' "make nextfat" will create a fat, multi-architecture (NeXT plus Intel)' @echo\ ' executable (NeXTstep 3.1 and higher only).' @echo # 68030 BSD 4.3+Mach. NeXT 2.x: make the executable smaller. next2x: unix_make $(MAKE) unzips LF2="-object -s" # NeXT 3.x: as above, plus better optimization. next3x: unix_make $(MAKE) unzips CF="-O2 -I. $(LOC)" LF2="-object -s" # NeXT 3.1+: make the executable fat (multi-architecture binary [MAB], # for "black" [NeXT] and "white" [x86] hardware, so far). nextfat: unix_make $(MAKE) unzips CF="-O2 -I. $(LOC) -arch i386 -arch m68k" \ LF2="-arch i386 -arch m68k -object -s" # IBM OS/390 (formerly MVS) compiled under "OpenEdition" shell os390: unix_make set -x; \ $(MAKE) -f unix/Makefile unzips \ CC=c89 LD="\$$(CC) -Wl,EDIT=NO" \ CF="$(CF) -DSYSV -DUNIX -DOS390 -DEBCDIC -DNO_PARAM_H \ -D_ALL_SOURCE $(HOST_VERSINFO)" LF2="" # Sequent Symmetry running Dynix/ptx (sort of SysV.3): needs to link # with libseq to get symlink(). ptx: unix_make $(MAKE) unzips CF="$(CF) -DSYSV -DTERMIO -DPTX" LF2="$(LF2) -lseq" # Pyramid 90X (probably all) under >= OSx4.1, either universe. (This is an # experimental target! If it fails, use either pyr_ucb or pyr_att instead.) # The make in the BSD half is too stupid to understand $(MAKE), sigh... pyramid: unix_make -make -f unix/Makefile pyr_`universe` # QNX/Neutrino is "special" because you don't have any native development # tools yet. Set ARCH to "x86", "ppcbe", "ppcle", "mipsbe", or "mipsle" # to produce x86, PowerPC (big- or little-endian) and MIPS (big- # or little-endian) using gcc. [cjh] qnxnto: unix_make @if [ "$(ARCH)" = "" ] ; then \ echo "You didn't set ARCH; I'll assume you meant ARCH=x86..." ; \ echo "" ; \ $(MAKE) -f unix/Makefile CC="qcc -Vgcc_ntox86" unzips ; \ else \ echo "Making unzip for $(ARCH)..." ; \ echo "" ; \ $(MAKE) -f unix/Makefile CC="qcc -Vgcc_nto$(ARCH)" unzips ; \ fi # REGULUS: 68040-based, "real-time" SysV.3 mutant; uses gcc, with "REGULUS" # predefined. regulus: unix_make $(MAKE) unzips CF="$(CF) -traditional -DSYSV -DNO_MKDIR" # IBM RS/6000 under AIX 3.2 rs6000: unix_make $(MAKE) unzips CF="$(CF) -DBSD -D_BSD -DUNIX" LF2="-lbsd" # SCO cross compile from Unix to DOS. Tested with Xenix/386 and OpenDeskTop. # Should work with Xenix/286 as well. (davidsen) Note that you *must* remove # the Unix objects and executable before doing this! (Piet Plomp: gcc won't # recognize the -M0 flag that forces 8086 code.) (GRR: may need to reduce # stack to 0c00h if using 286/small-model code...?) sco_dos: unix_make $(MAKE) unzips CF="-O -I. $(LOC) -dos -M0" M=msdos \ LF="-dos -F 2000" LF2="-o unzip.exe" \ FL="-dos" FL2="-o funzip.exe" SL="-dos" SL2="-o unzipsfx.exe" # SCO UNIX with shared libraries and no international support. If you are # not using a USA-style keyboard and display, you may want to remove -nointl # to get support. It adds quite a bit to the size of the executable. sco_sl: unix_make $(MAKE) unzips LF="$(LF) -nointl" LF2="$(LF2) -lc_s"\ SL="$(SL) -nointl" FL="$(FL) -nointl" # SCO Xenix/286 2.2.3 or later with development system 2.2.1 or later sco_x286: unix_make $(MAKE) unzips CF="$(CF) -Mel2 -LARGE -DNO_MKDIR" \ LF="$(LF) -Mel2 -LARGE -lx" SL="$(SL) -Mel2 -LARGE" \ FL="$(FL) -Mel2 -LARGE" # Sequent Symmetry with Dynix. (386, but needs -DZMEM) # This should also work on Balance but I can't test it just yet. sequent: unix_make $(MAKE) unzips CF="$(CF) -DBSD -DZMEM" # Sun 2, 3, 4 running SunOS 3.x sunos3: unix_make $(MAKE) unzips CF="$(CF) -DNO_UID_GID -DUID_USHORT" # Generic System V + GNU C sysv_gcc: unix_make $(MAKE) unzips CC=gcc LD=gcc CF="-O2 -I. -DSYSV $(LOC)" LF2="" $(STRIP) $(UNZIPS) # AT&T 6300+, System V.2 Unix: run-time out-of-memory error if don't use -Ml; # also compile-time error if work arrays dimensioned at HSIZE+2 (>32K) sysv6300: unix_make $(MAKE) unzips CF="$(CF) -Ml -DSYSV" LF="$(LF) -Ml"\ SL="$(SL) -Ml" FL="$(FL) -Ml" # Texas Instruments System V.3 (running on HP 9000-1500) ti_sysv: unix_make $(MAKE) unzips CF="$(CF) -DSYSV -DNO_UID_GID -DUID_USHORT" # SCO Xenix (Joe Foster 950508: "unzip needs to be linked with -lx [for the # opendir(), readdir(), telldir(), rewinddir(), and closedir() calls]") xenix: unix_make $(MAKE) unzips LF2="$(LF2) -lx" # Wombat 68000 (or whatever). # I didn't do this. I swear. No, really. wombat: unix_make @echo @echo ' Ha ha! Just kidding.' @echo