#------------------------------------------------------------------------------ # Makefile for UnZip 5.5 and later Greg Roelofs and others # Version: Microsoft C (5.x and later) 20 Oct 03 #------------------------------------------------------------------------------ # Users of MSC 6/7 and NMAKE can use the Unix Makefile (target msc_dos), # if desired. This makefile works just fine, too, however. OS/2 users # can cross-compile using os2/makefile.os2 (target mscdos). Note that # there is possibly a bug in MSC 6 which screws up funzip (goes into # infinite loop? --this has not been confirmed in over a year...). There # is definitely a bug (internal compiler error) in MSC 6.00 while com- # piling explode.c (fixed in 6.0a, 6.0ax, 6.0ax2, 7.*, 8.*). # GNU make doesn't like the return value from "rem" #STRIP=rem STRIP=echo Ignore this line. # If you don't have UPX, LZEXE, or PKLITE, get one of them. Then define: # (NOTE: upx needs a 386 or higher system to run the exe compressor) #STRIP=upx --8086 --best # or #STRIP=lzexe # or #STRIP=pklite # and remove /e from LDFLAGS. # This makes a big difference in .exe size (and possibly load time). # Optional nonstandard preprocessor flags (as -DCHECK_EOF or -DDOS_WILD) # should be added to the environment via "set LOCAL_UNZIP=-DFOO" or added # to the declaration of LOC here: LOC = $(LOCAL_UNZIP) # Type for CPU required: 0: 8086, 1: 80186, 2: 80286, 3: 80386, etc. CPU_TYP = 0 #UNMODEL=M # medium model for UnZip # with MSC 5.1, 6.0 and 8.x, small model exceeds 64k code segment; use medium # deflate64 support requires large or compact model UNMODEL=L # large model for UnZip with Deflate64 support FUMODEL=C # compact model for fUnZip (Deflate64 support enabled) SXMODEL=S # small model for UnZipSFX (without Deflate64 support) # name of Flag to select memory model for assembler compiles, supported # values are __SMALL__ , __MEDIUM__ , __COMPACT__ , __LARGE__ : # for MSC 5.1 and 8.x use: ASUNMODEL=__LARGE__ # keep in sync with UNMODEL definition !! ASFUMODEL=__COMPACT__ # keep in sync with FUMODEL definition !! ASSXMODEL=__SMALL__ # keep in sync with SXMODEL definition !! # Uncomment the following three macros to use the optimized CRC32 assembler # routine in UnZip and UnZipSFX: ASMFLG = -DASM_CRC ASMOBJS = crc_i86.obj ASMOBJF = crc_i86_.obj ASMOBJX = crc_i86x.obj ASCPUFLAG = __$(CPU_TYP)86 CC = cl # add -G2(3,4) for 286 (386, 486) and/or -FPi87 for 80x87: CC_GENFLAGS = -nologo -DMSC $(ASMFLG) $(LOC) -I. -G$(CPU_TYP) CC_SPEEDOPT = -Oait -Gs # -Ox does not work for inflate.c CC_SIZEOPT = -Oas -Gs CFLAGS_UN = -A$(UNMODEL) $(CC_GENFLAGS) $(CC_SPEEDOPT) CFLAGS_FU = -A$(FUMODEL) $(CC_GENFLAGS) $(CC_SPEEDOPT) -DFUNZIP CFLAGS_SX = -A$(SXMODEL) $(CC_GENFLAGS) $(CC_SIZEOPT) -DSFX AS = masm ASFLAGS = -ml -D$(ASCPUFLAG) $(LOC) LD = Link # mixed case to disable special handling by GNU Make # remove /e if you have LZEXE or PKLITE: LDFLAGS = /nologo/noi/e/st:0x0c00/farcall/packcode # "/farcall/packcode" are only useful for `large code' memory models # but should be a "no-op" for small code models. LDFLAGS2 = ,$* LDFLAGS2_UN = $(LDFLAGS2); LDFLAGS2_FU = $(LDFLAGS2); LDFLAGS2_SX = $(LDFLAGS2); OBJS1 = unzip.obj crc32.obj crctab.obj crypt.obj envargs.obj explode.obj OBJS2 = extract.obj fileio.obj globals.obj inflate.obj list.obj match.obj OBJS3 = process.obj ttyio.obj unreduce.obj unshrink.obj zipinfo.obj OBJS4 = msdos.obj $(ASMOBJS) OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) OBJX1 = unzipsfx.obj crc32x.obj crctabx.obj cryptx.obj extractx.obj fileiox.obj OBJX2 = globalsx.obj inflatex.obj matchx.obj processx.obj ttyiox.obj OBJX3 = msdosx.obj $(ASMOBJX) OBJX = $(OBJX1) $(OBJX2) $(OBJX3) OBJF = funzip.obj crc32_.obj crypt_.obj globals_.obj inflate_.obj ttyio_.obj \ msdos_.obj $(ASMOBJF) UNZIP_H = unzip.h unzpriv.h globals.h msdos/doscfg.h default: unzip.exe funzip.exe unzipsfx.exe #clean: # As long as the brain damaged old ``Make'' utility from MSC 5.1 and earlier # (NMAKE from MSC 6.0 + would work !) remains supported, a "clean" target # cannot be inserted !! # pattern rules for implicit dependencies: .asm.obj: $(AS) $(ASFLAGS) -D$(ASUNMODEL) $<, $@; .c.obj: $(CC) -c $(CFLAGS_UN) $*.c # individual dependencies and action rules: crc_i86.obj: msdos/crc_i86.asm $(AS) $(ASFLAGS) -D$(ASUNMODEL) msdos/crc_i86.asm, $@; crc_i86_.obj: msdos/crc_i86.asm $(AS) $(ASFLAGS) -D$(ASFUMODEL) msdos/crc_i86.asm, $@; crc_i86x.obj: msdos/crc_i86.asm $(AS) $(ASFLAGS) -D$(ASSXMODEL) msdos/crc_i86.asm, $@; crc32.obj: crc32.c $(UNZIP_H) zip.h crc32_.obj: crc32.c $(UNZIP_H) zip.h $(CC) -c $(CFLAGS_FU) -Focrc32_.obj crc32.c crc32x.obj: crc32.c $(UNZIP_H) zip.h $(CC) -c $(CFLAGS_SX) -Focrc32x.obj crc32.c crctab.obj: crctab.c $(UNZIP_H) zip.h crctabx.obj: crctab.c $(UNZIP_H) zip.h $(CC) -c $(CFLAGS_SX) -Focrctabx.obj crctab.c crypt.obj: crypt.c $(UNZIP_H) crypt.h ttyio.h zip.h crypt_.obj: crypt.c $(UNZIP_H) crypt.h ttyio.h zip.h $(CC) -c $(CFLAGS_FU) -Focrypt_.obj crypt.c cryptx.obj: crypt.c $(UNZIP_H) crypt.h ttyio.h zip.h $(CC) -c $(CFLAGS_SX) -Focryptx.obj crypt.c envargs.obj: envargs.c $(UNZIP_H) explode.obj: explode.c $(UNZIP_H) extract.obj: extract.c $(UNZIP_H) crypt.h extractx.obj: extract.c $(UNZIP_H) crypt.h $(CC) -c $(CFLAGS_SX) -Foextractx.obj extract.c fileio.obj: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h fileiox.obj: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h $(CC) -c $(CFLAGS_SX) -Fofileiox.obj fileio.c funzip.obj: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h $(CC) -c $(CFLAGS_FU) funzip.c globals.obj: globals.c $(UNZIP_H) globals_.obj: globals.c $(UNZIP_H) $(CC) -c $(CFLAGS_FU) -Foglobals_.obj globals.c globalsx.obj: globals.c $(UNZIP_H) $(CC) -c $(CFLAGS_SX) -Foglobalsx.obj globals.c inflate.obj: inflate.c inflate.h $(UNZIP_H) inflate_.obj: inflate.c inflate.h $(UNZIP_H) crypt.h $(CC) -c $(CFLAGS_FU) -Foinflate_.obj inflate.c inflatex.obj: inflate.c inflate.h $(UNZIP_H) crypt.h $(CC) -c $(CFLAGS_SX) -Foinflatex.obj inflate.c list.obj: list.c $(UNZIP_H) match.obj: match.c $(UNZIP_H) matchx.obj: match.c $(UNZIP_H) $(CC) -c $(CFLAGS_SX) -Fomatchx.obj match.c msdos.obj: msdos/msdos.c $(UNZIP_H) $(CC) -c $(CFLAGS_UN) msdos/msdos.c msdos_.obj: msdos/msdos.c $(UNZIP_H) $(CC) -c $(CFLAGS_FU) -Fomsdos_.obj msdos/msdos.c msdosx.obj: msdos/msdos.c $(UNZIP_H) $(CC) -c $(CFLAGS_SX) -Fomsdosx.obj msdos/msdos.c process.obj: process.c $(UNZIP_H) processx.obj: process.c $(UNZIP_H) $(CC) -c $(CFLAGS_SX) -Foprocessx.obj process.c ttyio.obj: ttyio.c $(UNZIP_H) crypt.h ttyio.h zip.h ttyio_.obj: ttyio.c $(UNZIP_H) crypt.h ttyio.h zip.h $(CC) -c $(CFLAGS_FU) -Fottyio_.obj ttyio.c ttyiox.obj: ttyio.c $(UNZIP_H) crypt.h ttyio.h zip.h $(CC) -c $(CFLAGS_SX) -Fottyiox.obj ttyio.c unreduce.obj: unreduce.c $(UNZIP_H) unshrink.obj: unshrink.c $(UNZIP_H) unzip.obj: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h unzipsfx.obj: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h $(CC) -c $(CFLAGS_SX) -Founzipsfx.obj unzip.c zipinfo.obj: zipinfo.c $(UNZIP_H) # MS make: # ------- unzip.exe: $(OBJS) echo $(OBJS1)+ > unzip.rsp echo $(OBJS2)+ >> unzip.rsp echo $(OBJS3)+ >> unzip.rsp echo $(OBJS4) >> unzip.rsp echo $(LDFLAGS2_UN) >> unzip.rsp $(LD) $(LDFLAGS) @unzip.rsp del unzip.rsp $(STRIP) unzip.exe unzipsfx.exe: $(OBJX) echo $(OBJX1)+ > unzipsfx.rsp echo $(OBJX2)+ >> unzipsfx.rsp echo $(OBJX3) >> unzipsfx.rsp echo $(LDFLAGS2_UN) >> unzipsfx.rsp $(LD) $(LDFLAGS) @unzipsfx.rsp del unzipsfx.rsp $(STRIP) unzipsfx.exe funzip.exe: $(OBJF) echo $(OBJF) > funzip.rsp echo $(LDFLAGS2_FU) >> funzip.rsp $(LD) $(LDFLAGS) @funzip.rsp del funzip.rsp $(STRIP) funzip.exe # better makes which know how to deal with 128-char limit on command line: # ----------------------------------------------------------------------- #unzip.exe: $(OBJS) # $(LD) $(LDFLAGS) $(OBJS) $(LDFLAGS2) # $(STRIP) unzip.exe # #unzipsfx.exe: $(OBJX) # $(LD) $(LDFLAGS) $(OBJX) $(LDFLAGS2) # $(STRIP) unzipsfx.exe # #funzip.exe: $(OBJF) # $(LD) $(LDFLAGS) $(OBJF) $(LDFLAGS2_FU) # $(STRIP) funzip.exe