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
307 lines
9.0 KiB
Makefile
Executable File
307 lines
9.0 KiB
Makefile
Executable File
#==============================================================================
|
|
# Makefile for UnZip, UnZipSFX and fUnZip: BeOS
|
|
# Version: 5.31 25 May 1997
|
|
#==============================================================================
|
|
|
|
# INSTRUCTIONS (such as they are):
|
|
#
|
|
# "make list" - lists all supported compilers (targets)
|
|
# "make foo" - makes UnZip in current directory using the foo compiler
|
|
#
|
|
# 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).
|
|
#
|
|
# Be sure to test your new UnZip (and UnZipSFX and fUnZip); successful compila-
|
|
# tion does not always imply a working program.
|
|
#
|
|
# You might want to go down to the "installation" section and set the prefix
|
|
# to something else; not everyone is as strange as me, and you might not want
|
|
# to put your Info-ZIP executables in /boot/usr/local/bin. [cjh]
|
|
|
|
all:
|
|
@echo ''
|
|
@echo 'Make what? You must say what compiler you want to use -- '
|
|
@echo 'for example, "make -f beos/Makefile mwcc".'
|
|
@echo ''
|
|
@echo 'The supported compilers are:'
|
|
@echo ''
|
|
@echo ' gcc GNU C'
|
|
@echo ' mwcc Metrowerks CodeWarrior'
|
|
@echo ''
|
|
|
|
list: all
|
|
|
|
#####################
|
|
# MACRO DEFINITIONS #
|
|
#####################
|
|
|
|
MAKE = make -j 2 -f beos/Makefile
|
|
|
|
# Defaults most systems use (use LOCAL_UNZIP in environment to add flags,
|
|
# such as -DDOSWILD).
|
|
|
|
# UnZip flags
|
|
MW_CC = mwcc
|
|
GNU_CC = gcc
|
|
|
|
LD = $(CC)
|
|
LOC = $(LOCAL_UNZIP) -DPASSWD_FROM_STDIN
|
|
AF = $(LOC)
|
|
|
|
# -ansi strict doesn't work with the AADR9 stdio.h... d'oh!
|
|
#MW_CF = -w9 -ansi strict -O7 -rostr -I. $(LOC)
|
|
MW_CF = -w9 -O7 -rostr -I. $(LOC)
|
|
MW_LF = -o unzip
|
|
MW_LF2 =
|
|
|
|
GNU_CF = -Wall -ansi -mcpu=604 -O3 -I. $(LOC)
|
|
GNU_LF = -o unzip
|
|
GNU_LF2 =
|
|
|
|
# UnZipSFX flags
|
|
SL = -o unzipsfx
|
|
SL2 = $(LF2)
|
|
|
|
# fUnZip flags
|
|
FL = -o funzip
|
|
FL2 = $(LF2)
|
|
|
|
# general-purpose stuff
|
|
CP = cp
|
|
RM = rm -f
|
|
LN = ln -sf
|
|
E =
|
|
O = .o
|
|
M = beos
|
|
SHELL = /bin/sh
|
|
|
|
# defaults for crc32 stuff and system-dependent headers
|
|
CRC32 = crc32
|
|
OSDEP_H = beos/beos.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) api$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
|
|
UNZIP_H = unzip.h unzpriv.h globals.h $(OSDEP_H)
|
|
|
|
# installation
|
|
INSTALL = install
|
|
# on some systems, manext=l and MANDIR=/usr/man/man$(manext) may be appropriate
|
|
manext = 1
|
|
prefix = /boot/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 zipinfo$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
|
|
|
|
###############################################
|
|
# BASIC COMPILE INSTRUCTIONS AND DEPENDENCIES #
|
|
###############################################
|
|
|
|
# this is for GNU make; comment out and notify zip-bugs if it causes errors
|
|
.SUFFIXES: .c .o
|
|
|
|
# default for compiling C files
|
|
.c.o:
|
|
$(CC) -c $(CF) $*.c
|
|
|
|
|
|
unzips: $(UNZIPS)
|
|
objs: $(OBJS)
|
|
objsdll: $(OBJSDLL)
|
|
docs: $(DOCS)
|
|
unzipsman: unzips docs
|
|
unzipsdocs: unzips docs
|
|
|
|
|
|
unzip$E: $(OBJS)
|
|
$(LD) $(LF) $(LOBJS) $(LF2)
|
|
|
|
unzipsfx$E: $(OBJX)
|
|
$(LD) $(SL) $(LOBJX) $(SL2)
|
|
|
|
funzip$E: $(OBJF)
|
|
$(LD) $(FL) $(OBJF) $(FL2)
|
|
|
|
zipinfo$E: unzip$E
|
|
$(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
|
|
|
|
process_$O: process.c $(UNZIP_H) # unzipsfx only
|
|
$(CP) process.c process_.c
|
|
$(CC) -c $(CF) -DSFX process_.c
|
|
$(RM) process_.c
|
|
|
|
beos$O: beos/beos.c $(UNZIP_H) version.h # BeOS only
|
|
$(CC) -c $(CF) beos/beos.c
|
|
|
|
# version() not used by unzipsfx, so no version.h dependency
|
|
beos_$O: beos/beos.c $(UNZIP_H) # unzipsfx only
|
|
$(CP) beos/beos.c beos_.c
|
|
$(CC) -c $(CF) -Ibeos -DSFX beos_.c
|
|
$(RM) beos_.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
|
|
|
|
|
|
# this really only works for Unix targets, unless E and O specified on cmd line
|
|
clean:
|
|
-rm -f $(UNZIPS) $(OBJS) $(OBJF) $(OBJX) api$O apihelp$O crc_gcc$O \
|
|
unzipstb$O
|
|
|
|
install: $(UNZIPS) $(MANS)
|
|
$(INSTALL) -m 755 $(UNZIPS) $(BINDIR)
|
|
$(RM) $(BINDIR)/zipinfo$E
|
|
$(LN) unzip$E $(BINDIR)/zipinfo$E
|
|
$(RM) $(BINDIR)/zipgrep$E
|
|
$(INSTALL) -m 755 unix/zipgrep $(BINDIR)/zipgrep$E
|
|
$(INSTALL) -m 644 unix/unzip.1 $(MANDIR)/unzip.$(manext)
|
|
$(INSTALL) -m 644 unix/unzipsfx.1 $(MANDIR)/unzipsfx.$(manext)
|
|
$(INSTALL) -m 644 unix/zipinfo.1 $(MANDIR)/zipinfo.$(manext)
|
|
$(INSTALL) -m 644 unix/funzip.1 $(MANDIR)/funzip.$(manext)
|
|
$(INSTALL) -m 644 $(DOCS) $(MANDIR)
|
|
|
|
# alternatively, could use zip method: -cd $(BINDIR); rm -f $(UNZIPS) [etc.]
|
|
uninstall:
|
|
rm -f $(INSTALLEDBIN) $(INSTALLEDMAN)
|
|
|
|
|
|
TESTZIP = testmake.zip # the test zipfile
|
|
|
|
# test some basic features of the build
|
|
test: check
|
|
|
|
check: unzips
|
|
@echo ' This is a Unix-specific target. (Just so you know.)'
|
|
@echo ' (Should work ok on BeOS... [cjh])'
|
|
if test ! -f $(TESTZIP); then \
|
|
echo " error: can't find test file $(TESTZIP)"; exit 1; fi
|
|
#
|
|
echo " testing extraction"
|
|
./unzip -b $(TESTZIP) testmake.zipinfo
|
|
if test $? ; 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 ;; else \
|
|
echo ' error: zipinfo output doesn't match stored version'; fi
|
|
$(RM) testmake.unzip-Z testmake.zipinfo
|
|
#
|
|
echo ' testing unzip -d exdir option'
|
|
./unzip -b $(TESTZIP) -d testun
|
|
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 ;; else \
|
|
echo 'error: funzip output disagrees with unzip'; fi
|
|
#
|
|
echo ' testing unzipsfx (self-extractor)'
|
|
cat unzipsfx $(TESTZIP) > testsfx
|
|
$(CHMOD) 0700 testsfx
|
|
./testsfx -b notes
|
|
if diff notes testun/notes; then ;; else \
|
|
echo ' error: unzipsfx file disagrees with unzip'; fi
|
|
$(RM) testsfx notes testun/notes testun/notes2
|
|
rmdir testun
|
|
#
|
|
echo ' testing complete.'
|
|
|
|
######################################################################
|
|
# Make rules for the supported compilers
|
|
|
|
gcc:
|
|
@echo ''
|
|
@echo 'WARNING: GNU C support is completely untested right now!'
|
|
@echo ' It is not likely even to compile yet.'
|
|
@echo ''
|
|
@echo ' You might want to contact chrish@qnx.com to see'
|
|
@echo ' if there are any GNU C patches for UnZip 5.31'
|
|
@echo ' before trying this.'
|
|
@echo ''
|
|
@echo 'Sleeping for 15 seconds so you can read this, then we'll try...'
|
|
@sleep 15s
|
|
@echo ''
|
|
@echo 'Making with GNU C...'
|
|
@echo ''
|
|
$(MAKE) $(UNZIPS) CC=$(GNU_CC) CF="$(GNU_CF)" LF="$(GNU_LF)" \
|
|
LF2="$(GNU_LF2)"
|
|
|
|
mwcc:
|
|
@echo 'Making with Metrowerks CodeWarrior...'
|
|
@echo ''
|
|
$(MAKE) $(UNZIPS) CC=$(MW_CC) CF="$(MW_CF)" LF="$(MW_LF)" \
|
|
LF2="$(MW_LF2)"
|
|
|
|
foo: list
|
|
@echo 'I was kidding about the "foo" compiler.'
|
|
@echo ''
|