# Makefile for Info-ZIP's UnZip, UnZipSFX and fUnZip using djgpp v2.0, by # Frank Donahoe. Last updated: 10 Nov 96 # This Makefile is specifically tailored for GNU make and GNU C and # may not work with a generic Unix-compatible make utility. # Features used: # - pattern rules (%.o : %.c, etc.) # - GNU-specific conditionals and functions (ifeq, $(patsubst,,),...) # # The stand-alone executable requires DPMI services to run. If running # in a DOS window under Windows 3.1 or later, the dpmi server is auto- # matically present. Under DOS, if a DPMI server is not loaded, the # program will look for "cwsdpmi.exe." If found, it will be loaded for # the duration of the program. # # cwsdpmi is a "free" dpmi server written by Charles W. Sandmann # (sandman@clio.rice.edu). It may be found, among other sites, on SimTel # Net at the URL: # # ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2misc/csdpmi?[b,s].zip # # and on its mirrors worldwide. The latest version as of this writing is 3. # Archives with the b postscript contain the binaries. An alternate server # is found, l.c., in the archive pmode??[b,s].zip. The latest (960908) is # v1.1. # Separators colon and are used in Unix, semi-colon and in DOS. VPATH=. msdos ifdef NOASM USE_ASMCRC= else USE_ASMCRC=1 endif # UnZip flags # LOCAL_UNZIP may be set in AUTOEXEC.BAT or defined in djgpp.env [make]. # See, for example, DOSWILD, in the file INSTALL. # [make] # LOCAL_UNZIP=-DDOSWILD # BUTT=-m486 # BUTT may also be defined to specify the target system. At present, -m386 # and -m486 are the only supported options. Either will produce code which # will run on the other microprocessor, though possibly not so fast. # In any case, omitting BUTT will result in a slightly smaller executable. LOC=-DDOS -DUSE_VFAT $(ASMFLG) $(LOCAL_UNZIP) CC=gcc LD=$(CC) CPPFLAGS=-I. $(LOC) ASFLAGS=$(CPPFLAGS) CFLAGS=-Wall -O2 $(BUTT) $(CPPFLAGS) # See INSTALL for discussion of SFX_EXDIR. # EXDIR=-DSFX_EXDIR FUN_FLAGS=$(CFLAGS) -DFUNZIP # Include OFP for a modest decrease in size of unzipsfx.exe. OFP=-fomit-frame-pointer SFX_FLAGS=-Wall -O2 $(CPPFLAGS) -DSFX $(EXDIR) $(OFP) LDFLAGS=-s # general-purpose stuff # If cp.exe is not found change to CP=copy /Y . CP = cp -f # If install.exe is not found change to INSTALL=$(CP) . INSTALL=install # The default value of RM is "rm -f" . If rm.exe is not found, uncomment # the following: # RM=del # If "djp.exe," which is Laszlo Molnar's executable file packer, is in the # path, uncomment the three lines found far below containing $(DJP). The # executable files will be converted to self-extracting compressed files. # Look for "djp.exe" in the directory v2misc in the archive mlp???b.zip. # Do not add the option -s to DJP without making the required changes to # the targets zipinfo$E and unzipsfx$E. DJP = djp -bq E = .exe O = .o M=msdos # defaults for crc32 stuff and system dependent headers ifdef USE_ASMCRC ASMFLG = -DASM_CRC CRC32 = crc_gcc else ASMFLG = CRC32 = crc32 endif # 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 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 OBJF = funzip$O $(CRC32)$O crypt-$O globals-$O inflate-$O ttyio-$O OBJECTS_ALL = $(sort $(OBJS) $(OBJX) $(OBJF) crc32$O crc_gcc$O) # Common header files included by all C sources: UNZIP_H = unzip.h unzpriv.h globals.h msdos/doscfg.h # executable files UNZIPS = unzip$E zipinfo$E funzip$E unzipsfx$E # pattern rules to compile the sources: %$O : %.c $(CC) $(CFLAGS) -c $< -o $@ %-$O: %.c $(CC) $(FUN_FLAGS) -c $< -o $@ %_$O: %.c $(CC) $(SFX_FLAGS) -c $< -o $@ %sfx$O: %.c $(CC) $(SFX_FLAGS) -c $< -o $@ all: unzips unzips: unzip$E zipinfo$E funzip$E unzipsfx$E unzip$E: $(OBJS) $(LD) $(LDFLAGS) $(OBJS) -o $@ # $(DJP) $@ zipinfo$E: unzip$E stubify -g $@ stubedit $@ runfile=unzip argv0=zipinfo funzip$E: $(OBJF) $(LD) $(LDFLAGS) $(OBJF) -o $@ # $(DJP) $@ unzipsfx$E: $(OBJX) $(LD) $(LDFLAGS) $(OBJX) -o $@ # $(DJP) -s $@ # explicit compilation instructions: crc_gcc$O: crc_i386.S # 32bit, GNU AS $(CC) $(ASFLAGS) -x assembler-with-cpp -c -o $@ crc_i386.S # BIN_PATH may be defined in djgpp.env [make] or defined below. If the # installation is to the directory containing gcc.exe etc. place the # following in djgpp.env: # [make] # BIN_PATH=%\>;BIN_PATH%%\DJDIR%\bin # Even if so placed, it can be over-ridden here by, say: # BIN_PATH=c:\usr\bin install: $(UNZIPS) -@if not exist $(BIN_PATH)\nul mkdir $(BIN_PATH) for %%f in ($(UNZIPS)) do $(INSTALL) %%f $(BIN_PATH) uninstall: for %%f in ($(UNZIPS)) do $(RM) $(BIN_PATH)\%%f clean: ifeq ($(firstword $(RM)), del) $(RM) *$O $(RM) *.~ $(RM) *.exe else $(RM) $(OBJECTS_ALL) *.~ *.exe endif # Source dependencies: crc_gcc$O: crc_i386.S 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 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 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) globals-$O: globals.c $(UNZIP_H) inflate$O: inflate.c inflate.h $(UNZIP_H) inflate-$O: inflate.c inflate.h $(UNZIP_H) crypt.h list$O: list.c $(UNZIP_H) match$O: match.c $(UNZIP_H) msdos$O: msdos/msdos.c $(UNZIP_H) msdos_$O: msdos/msdos.c $(UNZIP_H) process$O: process.c $(UNZIP_H) process_$O: process.c $(UNZIP_H) ttyio$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.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 unzipsfx$O: unzip.c $(UNZIP_H) crypt.h version.h consts.h zipinfo$O: zipinfo.c $(UNZIP_H)