which included commits to RCS files with non-trunk default branches. git-svn-id: svn://10.65.10.50/trunk@5403 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			874 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			Makefile
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			874 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			Makefile
		
	
	
		
			Executable File
		
	
	
	
	
#==============================================================================
 | 
						|
# Makefile for UnZip, UnZipSFX and fUnZip:  Unix and MS-DOS ("real" makes only)
 | 
						|
# Version:  5.31                                                    17 May 1997
 | 
						|
#==============================================================================
 | 
						|
 | 
						|
 | 
						|
# 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 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 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
 | 
						|
STRIP = strip
 | 
						|
E =
 | 
						|
O = .o
 | 
						|
M = unix
 | 
						|
SHELL = /bin/sh
 | 
						|
 | 
						|
# 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 crypt_$O globals_$O inflate_$O ttyio_$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_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.31
 | 
						|
 | 
						|
UNZIPS = unzip$E funzip$E unzipsfx$E
 | 
						|
# this is a little ugly...well, OK, it's a lot ugly:
 | 
						|
MANS = unix/funzip.1 unix/unzip.1 unix/unzipsfx.1 unix/zipgrep.1 unix/zipinfo.1
 | 
						|
DOCS = funzip.doc unzip.doc unzipsfx.doc zipgrep.doc zipinfo.doc
 | 
						|
 | 
						|
# list of supported systems/targets in this version
 | 
						|
SYSTEMS1 = generic generic2 generic3 generic_zlib
 | 
						|
SYSTEMS2 = 386i 3Bx 7300 7300_gcc aix aix_rt amdahl amdahl_eft apollo aviion
 | 
						|
SYSTEMS3 = bsd bsdi bsdi_noasm bull coherent convex cray cray_opt cyber_sgi
 | 
						|
SYSTEMS4 = dec dnix encore eta freebsd gcc gould hk68 hp hpux isc isc_gcc isi
 | 
						|
SYSTEMS5 = linux linux_dos linux_noasm linux_shlib linux_shlibz minix mips 
 | 
						|
SYSTEMS6 = next next10 next2x next3x nextfat osf1 pixel ptx pyramid realix 
 | 
						|
SYSTEMS7 = regulus rs6000 sco sco_dos sco_sl sco_x286 sequent sgi solaris 
 | 
						|
SYSTEMS8 = solaris_pkg stardent stellar sunos3 sunos4 sysv sysv_gcc sysv6300 
 | 
						|
SYSTEMS9 = tahoe ti_sysv ultrix 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 <target>" 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 <system>", where <system> is one of the following:'
 | 
						|
	@echo ""
 | 
						|
	@echo  "	$(SYSTEMS1)"
 | 
						|
	@echo ""
 | 
						|
	@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.doc:		unix/$<
 | 
						|
#	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.man" rule for more generic
 | 
						|
# systems...
 | 
						|
 | 
						|
funzip.doc:	unix/funzip.1
 | 
						|
#	nroff -Tman -man unix/funzip.1 | col -b | uniq | \
 | 
						|
#	 sed 's/Sun Release ..../Info-ZIP        /' > $@
 | 
						|
	nroff -Tman -man unix/funzip.1 | col -b | uniq | expand > $@
 | 
						|
 | 
						|
unzip.doc:	unix/unzip.1
 | 
						|
#	nroff -Tman -man unix/unzip.1 | col -b | uniq | \
 | 
						|
#	 sed 's/Sun Release ..../Info-ZIP        /' > $@
 | 
						|
	nroff -Tman -man unix/unzip.1 | col -b | uniq | expand > $@
 | 
						|
 | 
						|
unzipsfx.doc:	unix/unzipsfx.1
 | 
						|
#	nroff -Tman -man unix/unzipsfx.1 | col -b | uniq | \
 | 
						|
#	 sed 's/Sun Release ..../Info-ZIP        /' > $@
 | 
						|
	nroff -Tman -man unix/unzipsfx.1 | col -b | uniq | expand > $@
 | 
						|
 | 
						|
zipgrep.doc:	unix/zipgrep.1
 | 
						|
#	nroff -Tman -man unix/zipgrep.1 | col -b | uniq | \
 | 
						|
#	 sed 's/Sun Release ..../Info-ZIP        /' > $@
 | 
						|
	nroff -Tman -man unix/zipgrep.1 | col -b | uniq | expand > $@
 | 
						|
 | 
						|
zipinfo.doc:	unix/zipinfo.1
 | 
						|
#	nroff -Tman -man unix/zipinfo.1 | col -b | uniq | \
 | 
						|
#	 sed 's/Sun Release ..../Info-ZIP        /' > $@
 | 
						|
	nroff -Tman -man unix/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 version.h consts.h
 | 
						|
zipinfo$O:	zipinfo.c $(UNZIP_H)
 | 
						|
 | 
						|
crypt_$O:	crypt.c $(UNZIP_H) zip.h crypt.h ttyio.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
 | 
						|
 | 
						|
globals_$O:	globals.c $(UNZIP_H)				# funzip only
 | 
						|
	-$(CP) globals.c globals_.c
 | 
						|
	$(CC) -c $(CF) -DFUNZIP globals_.c
 | 
						|
	$(RM) globals_.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
 | 
						|
 | 
						|
ttyio_$O:	ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h	# funzip only
 | 
						|
	-$(CP) ttyio.c ttyio_.c
 | 
						|
	$(CC) -c $(CF) -DFUNZIP ttyio_.c
 | 
						|
	$(RM) ttyio_.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_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) version.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
 | 
						|
 | 
						|
 | 
						|
process_$O:	process.c $(UNZIP_H)				# unzipsfx only
 | 
						|
	-$(CP) process.c process_.c
 | 
						|
	$(CC) -c $(CF) -DSFX process_.c
 | 
						|
	$(RM) process_.c
 | 
						|
 | 
						|
unix$O:		unix/unix.c $(UNZIP_H) version.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) version.h		# Unix shlib
 | 
						|
	$(CC) -c $(CF) -o $@ unix/unix.c
 | 
						|
 | 
						|
unzipsfx$O:	unzip.c $(UNZIP_H) crypt.h version.h consts.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
 | 
						|
 | 
						|
# 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) $(UNZIPS) $(BINDIR)
 | 
						|
	$(INSTALL) unix/zipgrep $(BINDIR)
 | 
						|
	$(RM) $(BINDIR)/zipinfo$E
 | 
						|
	$(LN) $(BINDIR)/unzip$E $(BINDIR)/zipinfo$E
 | 
						|
	-$(INSTALL_D) $(MANDIR)
 | 
						|
	$(INSTALL) unix/funzip.1 $(MANDIR)/funzip.$(manext)
 | 
						|
	$(INSTALL) unix/unzip.1 $(MANDIR)/unzip.$(manext)
 | 
						|
	$(INSTALL) unix/unzipsfx.1 $(MANDIR)/unzipsfx.$(manext)
 | 
						|
	$(INSTALL) unix/zipgrep.1 $(MANDIR)/zipgrep.$(manext)
 | 
						|
	$(INSTALL) unix/zipinfo.1 $(MANDIR)/zipinfo.$(manext)
 | 
						|
	$(CHMOD) 755  $(INSTALLEDBIN)
 | 
						|
	$(CHMOD) 644  $(INSTALLEDMAN)
 | 
						|
 | 
						|
uninstall:
 | 
						|
	rm -f $(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 US Pacific timezone, which is eight'; \
 | 
						|
	    echo '#####      hours west of Greenwich but effectively 7 hours west'; \
 | 
						|
	    echo '#####      during summer Daylight Savings Time.  The upper two'; \
 | 
						|
	    echo '#####      lines should correspond to your local time when the'; \
 | 
						|
	    echo '#####      files were created, on 18 July 1996 at 6:24am PDT.  If'; \
 | 
						|
	    echo '#####      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)"
 | 
						|
 | 
						|
#----------------------------------------------------------------------------
 | 
						|
#  "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 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 (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 -DALIGNMENT='.align 16' $(AF)"
 | 
						|
 | 
						|
isc_gcc:	unix_make
 | 
						|
	$(MAKE) unzips AS=gcc CC=gcc LD=gcc CRC32=crc_gcc LF="-shlib $(LF)" \
 | 
						|
	 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 <rsw@tfs.com>;
 | 
						|
# 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. -DDLL -fPIC $(LOC)"
 | 
						|
	gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.3 $(OBJSDLL)
 | 
						|
	ln -sf libunzip.so.0.3 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. -DDLL -DUSE_ZLIB -fPIC $(LOC)"
 | 
						|
	gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.3 $(OBJSDLL)
 | 
						|
	ln -sf libunzip.so.0.3 libunzip.so.0
 | 
						|
	gcc -c -O unzipstb.c
 | 
						|
	gcc -o unzip unzipstb.o -L. -lunzip -lz
 | 
						|
 | 
						|
# 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)
 | 
						|
 | 
						|
# 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 -f unix/Makefile 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.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
 |