#============================================================================== # Makefile for UnZip, UnZipSFX and fUnZip: Unix and MS-DOS ("real" makes only) # Version: 5.12 25 August 1994 #============================================================================== # INSTRUCTIONS (such as they are): # # "make vax" -- makes UnZip on a generic Unix VAX in the current directory # "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 which 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 file_io.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 (if you do, LD = $(CC)# you MUST change LD, too--else "unresolved symbol: ___main") LOC = $(LOCAL_UNZIP) 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 LN = ln RM = rm -f CHMOD = chmod STRIP = strip E = O = .o M = unix SHELL = /bin/sh # object files OBJS1 = unzip$O crypt$O envargs$O explode$O extract$O file_io$O OBJS2 = inflate$O match$O unreduce$O unshrink$O zipinfo$O OBJS = $(OBJS1) $(OBJS2) $M$O LOBJS = $(OBJS) OBJX = unzipsfx$O crypt$O extract_$O file_io$O inflate$O match$O $M_$O LOBJX = $(OBJX) OBJF = funzip$O crypt_$O inflate_$O #OBJS_OS2 = $(OBJS1:.o=.obj) $(OBJS2:.o=.obj) os2.obj #OBJF_OS2 = $(OBJF:.o=.obj) # installation INSTALL = cp# probably can change this to 'install' if you have it # 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)/zipinfo$E $(BINDIR)/unzipsfx$E \ $(BINDIR)/unzip$E INSTALLEDMAN = $(MANDIR)/unzip.$(manext) $(MANDIR)/funzip.$(manext) \ $(MANDIR)/unzipsfx.$(manext) $(MANDIR)/zipinfo.$(manext) # UNZIPS = unzip$E funzip$E unzipsfx$E # this is a little ugly...well, no, it's a lot ugly: MANS = unix/unzip.1 unix/unzipsfx.1 unix/zipinfo.1 unix/funzip.1 DOCS = unzip.doc unzipsfx.doc zipinfo.doc funzip.doc # list of supported systems/targets in this version SYSTEMS1 = 386i 3Bx 7300 7300_gcc aix aix_rt amdahl amdahl_eft apollo SYSTEMS2 = aviion bcc_dos bsd bsd386 bull coherent convex cray cray_scc SYSTEMS3 = cray_v3 cyber_sgi dec dnix encore eta gcc gcc_dos generic SYSTEMS4 = generic2 generic3 gould hk68 hp hpux linux minix mips msc_dos SYSTEMS5 = next next10 next2x next3x nextfat osf1 pixel ptx pyramid SYSTEMS6 = regulus rs6000 sco sco_dos sco_sl sco_x286 sequent sgi solaris SYSTEMS7 = stellar sun sysv sysv_gcc sysv6300 tahoe ultrix vax v7 wombat SYSTEMS8 = 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. Note that to compile' @echo\ ' the decryption version of UnZip, you must obtain the full versions of' @echo\ ' crypt.c and crypt.h (see the "Where" file for ftp and mail-server sites).' @echo\ ' Have a mostly pretty good day.' @echo "" list: @echo "" @echo\ 'Type "make ", where is one of the following:' @echo "" @echo " $(SYSTEMS1)" @echo " $(SYSTEMS2)" @echo " $(SYSTEMS3)" @echo " $(SYSTEMS4)" @echo " $(SYSTEMS5)" @echo " $(SYSTEMS6)" @echo " $(SYSTEMS7)" @echo " $(SYSTEMS8)" # @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 .c$O: $(CC) -c $(CF) $*.c # this doesn't work...directories are always a pain with implicit rules #.1.doc: unix/$< # nroff -Tman -man $< | col -b | uniq | \ # sed 's/Sun Release ..../Info-ZIP /' > $@ # these rules are specific to Suns and are really intended only for the # authors' use in creating non-Unix documentation files (which are pro- # vided with both source and binary distributions). We should probably # add a ".1.man" rule for more generic systems... unzip.doc: unix/unzip.1 nroff -Tman -man unix/unzip.1 | col -b | uniq | \ sed 's/Sun Release ..../Info-ZIP /' > $@ unzipsfx.doc: unix/unzipsfx.1 nroff -Tman -man unix/unzipsfx.1 | col -b | uniq | \ sed 's/Sun Release ..../Info-ZIP /' > $@ zipinfo.doc: unix/zipinfo.1 nroff -Tman -man unix/zipinfo.1 | col -b | uniq | \ sed 's/Sun Release ..../Info-ZIP /' > $@ funzip.doc: unix/funzip.1 nroff -Tman -man unix/funzip.1 | col -b | uniq | \ sed 's/Sun Release ..../Info-ZIP /' > $@ all: generic_msg generic unzips: $(UNZIPS) docs: $(DOCS) unzipsman: unzips docs unzipsdocs: unzips docs # this really only works for Unix targets, unless specify E and O on cmd line clean: rm -f $(OBJS) $(OBJF) $(OBJX) $(UNZIPS) install: $(UNZIPS) $(MANS) $(INSTALL) $(UNZIPS) $(BINDIR) $(RM) $(BINDIR)/zipinfo$E $(LN) $(BINDIR)/unzip$E $(BINDIR)/zipinfo$E $(INSTALL) unix/unzip.1 $(MANDIR)/unzip.$(manext) $(INSTALL) unix/unzipsfx.1 $(MANDIR)/unzipsfx.$(manext) $(INSTALL) unix/zipinfo.1 $(MANDIR)/zipinfo.$(manext) $(INSTALL) unix/funzip.1 $(MANDIR)/funzip.$(manext) $(CHMOD) 755 $(INSTALLEDBIN) $(CHMOD) 644 $(INSTALLEDMAN) # alternatively, could use zip method: -cd $(BINDIR); rm -f $(UNZIPS) [etc.] uninstall: rm -f $(INSTALLEDBIN) $(INSTALLEDMAN) # 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 @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 crypt$O: crypt.c unzip.h zip.h crypt.h envargs$O: envargs.c unzip.h explode$O: explode.c unzip.h extract$O: extract.c unzip.h crypt.h file_io$O: file_io.c unzip.h crypt.h tables.h funzip$O: funzip.c unzip.h crypt.h tables.h inflate$O: inflate.c inflate.h unzip.h match$O: match.c unzip.h unreduce$O: unreduce.c unzip.h unshrink$O: unshrink.c unzip.h unzip$O: unzip.c unzip.h crypt.h version.h zipinfo$O: zipinfo.c unzip.h crypt_$O: crypt.c unzip.h zip.h crypt.h # funzip only $(CP) crypt.c crypt_.c $(CC) -c $(CF) -DFUNZIP 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 inflate_$O: inflate.c inflate.h unzip.h crypt.h # funzip only $(CP) inflate.c inflate_.c $(CC) -c $(CF) -DFUNZIP inflate_.c $(RM) inflate_.c msdos$O: msdos/msdos.c unzip.h # MS-DOS only $(CC) -c $(CF) msdos/msdos.c msdos_$O: msdos/msdos.c unzip.h # MS-DOS unzipsfx only $(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 # Unix only $(CC) -c $(CF) unix/unix.c unix_$O: unix/unix.c unzip.h # Unix unzipsfx only $(CP) unix/unix.c unix_.c $(CC) -c $(CF) -DSFX unix_.c $(RM) unix_.c unzipsfx$O: unzip.c unzip.h crypt.h version.h # unzipsfx only $(CP) unzip.c unzipsfx.c $(CC) -c $(CF) -DSFX unzipsfx.c $(RM) unzipsfx.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 ################################ # INDIVIDUAL MACHINE MAKERULES # ################################ ##### TABS ARE REQUIRED FOR MANY VERSIONS OF "MAKE"! ##### #---------------------------------------------------------------------------- # 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 unzips CF="$(CF) -DBSD" generic3: unix_make # third try if unknown: hope make is called "make" make unzips CF="$(CF) -DSYSV" #---------------------------------------------------------------------------- # "Normal" group (both big- and little-endian, structure-padding or not): #---------------------------------------------------------------------------- 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 apollo: unzips # Apollo Domain/OS machines 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) sco: unzips # Xenix/386 (tested on 2.3.1); SCO Unix 3.2.0. stellar: unzips # gs-2000 sun: unzips # old target; no good with solaris...use "sunos" now sunos: 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) xenix: unzips # Xenix/386 (tested on 2.3.1); SCO Unix 3.2.0. #---------------------------------------------------------------------------- # BSD group (for timezone structs [struct timeb]): #---------------------------------------------------------------------------- bsd: _bsd # generic BSD (BSD 4.2 & Ultrix handled in unzip.h) bsd386: _bsd # BSDI BSD/386 version 1.0 _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 amdahl: _sysv # Amdahl (IBM) mainframe, UTS (SysV) 1.2.4 and 2.0.1 aviion: _sysv # Data General AViiONs, DG/UX 4.3x pyr_att: _sysv # Pyramids running AT&T (SysV) universe by default sgi: _sysv # Silicon Graphics Iris 4D, Irix 3.3.2, 4.0.x (5.x?) solaris: _sysv # Sun SPARC & x86, Solaris 2.x 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" #---------------------------------------------------------------------------- # 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 unzips CF="$(CF) -DV7 -DNO_PARAM_H -DSHORT_NAMES -DBSD -DZMEM" #---------------------------------------------------------------------------- # "Unique" group (require non-standard options): #---------------------------------------------------------------------------- # AT&T 7300 (M68000/SysV.3) (add -DSYSV? -DNO_LIMITS?) 7300: unix_make $(MAKE) unzips CF="$(CF) -DNO_DIR -DNO_MKDIR -DNO_STRNICMP" 7300_gcc: unix_make $(MAKE) unzips CC=gcc LD=gcc LF2="" \ CF="-O2 -I. -DNO_DIR -DNO_MKDIR -DNO_STDLIB_H -DNO_STRNICMP $(LOC)" $(STRIP) $(UNZIPS) # IBM AIX 3.x on an RS/6000: see rs6000 target below aix: rs6000 # Amdahl UTS 2.1.4 with "extended file types" filesystem (aarrrggghhhh...) amdahl_eft: unix_make $(MAKE) unzips CF="$(CF) -eft -DSYSV" # MS-DOS: Borland C++ 3.0 (can change UnZip memory model to small for more # speed but no ZipInfo support [-ml -> -ms in _bcc_dos], but may run out of # memory when inflating--should not be true anymore in 5.11) bcc_dos: _bcc_dos fu_bcc sfx_bcc _bcc_dos: bcc_rsp # v-- change to -ml for large model $(MAKE) unzip.exe CF="-w -ms -O2 -I. $(LOC)" CC=bcc LD=bcc E=.exe\ O=.obj M=msdos LOBJS="" LF="@bcc_rsp" LF2="" del bcc_rsp bcc_rsp: echo $(OBJS1:.o=.obj) > bcc_rsp echo msdos.obj $(OBJS2:.o=.obj) >> bcc_rsp fu_bcc: $(MAKE) funzip.exe CF="-w -ms -O2 -I. $(LOC)" CC=bcc LD=bcc E=.exe\ O=.obj FL="" FL2="" CP=copy RM=del sfx_bcc: $(MAKE) unzipsfx.exe CF="-w -ms -O2 -I. $(LOC)" CC=bcc LD=bcc E=.exe\ O=.obj SL="" SL2="" CP=copy RM=del # 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 and Y-MP, running Unicos 5.1 to 6.1 (SysV + BSD enhancements) # and Standard (ANSI) C compiler 1.5, 2.0 or 3.0. cray_scc: unix_make $(MAKE) unzips CC=scc LD=scc # Ditto, for Cray Standard C 3.0 or later. cray_v3: unix_make $(MAKE) unzips CC="scc" LD="scc" 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" # Generic BSDish Unix gcc. ``The -O2 only works with the latest version of # gcc; you may have to use -O only 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="-O2 -I. $(LOC)" LF2="" $(STRIP) $(UNZIPS) # MS-DOS with D.J. Delorie's djgpp 1.12. Note that earlier versions of go32 # (< 1.11) don't support DOS function 0x38 (necessary for "unzip -v foobar"). # Note also that this set of targets has work-arounds for three bugs in the # older version (3.69) of GNU make formerly distributed with djgpp: (1) it # sets the MAKE variable incorrectly for spawning with COMMAND.COM (forward # slashes instead of backslashes--fixed in 3.71 by not spawning COMMAND.COM), # so the usual $(MAKE) has been replaced by "make"; (2) it doesn't handle # makefile continuation lines correctly, most likely because of the MS-DOS # CR-LF line-endings (seems to be fixed in 3.71?), so long lines are used; # and (3) it doesn't handle quotes as in CF="-O2 -Wall etc." correctly, so # these macros have been changed to "CF=-O2 -Wall etc." where necessary. The # newer GNU make (version 3.71) does not handle quotes correctly and has no # known work-around, so don't bother to use it. Likewise, the emx version # of GNU make 3.71 which is maintained by Kai Uwe Rommel has other fatal bugs # involving the shell (necessary for recursive targets like this one). # GRR 940430, 940723, 940814 # gcc_dos: _gcc_dos fu_gcc sfx_gcc # this target may be used with djgpp 1.12m1 or later; replace "_gcc_dos" above # with "_gcc_dos_new": _gcc_dos_new: gcc_rsp make unzip CC=gcc LD=gcc M=msdos "CF=-O2 -Wall -I. $(LOC)" LOBJS="" "LF=-o unzip @gcc_rsp" LF2="" $(STRIP) unzip coff2exe unzip # use this instead if you want to create a stand-alone executable (bigger) # coff2exe -s go32.exe unzip stubedit unzip.exe globbing=no # del gcc_rsp # del unzip coff2exe -g zipinfo stubedit zipinfo.exe runfile=unzip.exe globbing=no _gcc_dos: gcc_rsp make unzip CC=gcc LD=gcc M=msdos "CF=-O2 -Wall -I. $(LOC)" LOBJS="" "LF=-o unzip @gcc_rsp" LF2="" # $(MAKE) unzip CC=gcc LD=gcc M=msdos "CF=-O2 -Wall -I. $(LOC)"\ # LOBJS="" LF="-o unzip @gcc_rsp" LF2="" $(STRIP) unzip coff2exe unzip # use this instead if you want to create a stand-alone executable (bigger) # coff2exe -s go32.exe unzip stubedit unzip.exe globbing=no # del gcc_rsp # del unzip # # @echo Ignore the following bogus error message: # -@copy < nul > zipinfo -@find " " < nul > zipinfo coff2exe zipinfo stubedit zipinfo.exe runfile=unzip.exe globbing=no del zipinfo gcc_rsp: echo $(OBJS1) > gcc_rsp echo $(OBJS2) msdos.o >> gcc_rsp fu_gcc: make funzip CC=gcc LD=gcc "CF=-Wall -O2 -I. $(LOC)" FL2="" CP=copy RM=del # $(MAKE) funzip CC=gcc LD=gcc "CF=-Wall -O2 -I. $(LOC)" FL2=""\ # CP=copy RM=del coff2exe funzip # use this instead if you want to create a stand-alone executable (bigger) # coff2exe -s go32.exe funzip # del funzip sfx_gcc: make unzipsfx CC=gcc LD=gcc M=msdos "CF=-Wall -O2 -I. $(LOC)" SL2="" CP=copy RM=del # $(MAKE) unzipsfx CC=gcc LD=gcc M=msdos "CF=-Wall -O2 -I. $(LOC)"\ # SL2="" CP=copy RM=del $(STRIP) unzipsfx coff2exe unzipsfx # use this instead if you want to create a stand-alone executable (bigger) # coff2exe -s go32.exe unzipsfx stubedit unzipsfx.exe globbing=no # del unzipsfx # 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" # Rules needed to build the unzip program for an SGI Iris Indigo running # Irix Version 4.0.1 #indigo: # $(MAKE) unzips CF="-cckr $(CF) -DSYSV $(LOC)" # Linux pre-0.96 + gcc 2.1; also 0.99.13 + gcc 2.4.5. Linux is Posix # (almost SysV but not quite). [apparently don't need -DSHORT_NAMES] linux: unix_make $(MAKE) unzips CC=gcc LD=gcc # $(MAKE) unzips CF="$(CF) -DLINUX" CC=gcc LD=gcc (linux pre-defined?) # 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) # MS-DOS: Microsoft C 6.0 and NMAKE. "nmake msc_dos" works fine, aside # from an irrelevant message (possibly) about the creation of a temporary # file. Environment variable LOCAL_UNZIP (or CL) should be set via "SET # LOCAL_UNZIP=-FPi87" if you use the 80x87 library; also add -G2 or -G3 if # using a 286/386/486. Note that setting too many things via LOCAL_UNZIP # may make the command line too long for the default COMMAND.COM shell, so # use CL instead in that case. With VC++ Pro, -O2 instead of -Oait seems to # work OK and makes the executables slightly faster. Use at your own risk. # msc_dos: _msc_dos fu_msc sfx_msc # can change UnZip memory model (-AS) to large (-AL) if necessary, but should # no longer be necessary in UnZip 5.11 and later _msc_dos: msc_rsp $(MAKE) unzip.exe CF="-AS -W3 -Oait -Gs -nologo -I. $(LOC)" CC=cl\ LD=link E=.exe O=.obj M=msdos LOBJS="" LF="@msc_rsp" LF2="" del msc_rsp msc_rsp: echo $(OBJS1:.o=.obj) + > msc_rsp echo msdos.obj $(OBJS2:.o=.obj)/noi/e/st:0x0c00; >> msc_rsp fu_msc: set CL=-AS -Oait -Gs -nologo -I. $(MAKE) funzip.exe CF="$(LOC)" CC=cl LD=link E=.exe O=.obj\ FL="/noi/nol/e" FL2=",funzip;" RM=del CP=copy sfx_msc: set CL=-AS -Oait -Gs -nologo -I. $(MAKE) unzipsfx.exe CF="$(LOC)" CC=cl LD=link E=.exe O=.obj M=msdos\ SL="/noi/nol/e" SL2=",unzipsfx;" RM=del CP=copy # $(NOD): intended to be used as SET NOD=-link /nod:slibcep to allow the # use of default library names (slibce.lib) instead of protected-mode # names (slibcep.lib), but it fails: MSC adds its own /nod qualifier, # and there seems to be no way to override this. Typical... # # THIS TARGET RETAINED AS AN EXAMPLE ONLY. USE MAKEFILE.OS2. # #msc_os2: # 16-bit OS/2 (1.x) with MSC 6.00 (use makefile.os2) # $(MAKE) -nologo unzips CC=cl LD=cl E=.exe O=.obj\ # OBJS="$(OBJS_OS2)" OBJZ="$(OBJZ_OS2)"\ # CF="-nologo -AC -Ocegit -G2s -DOS2 -DMSC $(LOC)"\ # LF="-nologo -AC $(LOC) -Lp -F 2000"\ # LF2="unzip.def -o unzip.exe $(NOD)" CP=copy RM=del\ # ZL="-nologo -AC $(LOC) -Lp -Fb" ZL2="zipinfo.def -o zipinfo.exe" # 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" # 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 pyr_`universe` # 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 which 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.3.3 with 2.2.1 development system sco_x286: unix_make $(MAKE) unzips CF="$(CF) -Mel2 -LARGE -DTERMIO" LF="$(LF) -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" # 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" # Wombat 68000 (or whatever). # I didn't do this. I swear. No, really. wombat: unix_make @echo @echo ' Ha ha! Just kidding.' @echo