# Makefile for Zip, ZipCloak, ZipNote and ZipSplit for # Microsoft C 5.1 and above. # To use, do "make makefile.msc" # Add -DSMALL_MEM or -DMEDIUM_MEM to the LOC macro if you wish to reduce # the memory requirements. # Add -DNO_ASM to CFLAGS and comment out the ASMOBJS definition if # you do not have masm. # # If you want link Zip against zlib to replace the built-in deflate routines, # the following changes are required: # - in the definition of "LOC", add "-DUSE_ZLIB" and remove "-DNO_SECURE_TESTS" # - comment out the "ASMOBJS" symbol definition # - modify the linking command blocks for zip and zipcloak according to # the following scheme: # add a command line "echo ,,,zlib_$(ZIPMODEL); >> zip[c].rsp" just # before the "$(LD)..." line; and remove the semicolon character from the # "echo ..." line immediately preceding the just inserted command # Optional nonstandard preprocessor flags (as -DMEDIUM_MEM or -DNO_ASM) # should be added to the environment via "set LOCAL_ZIP=-DFOO" or added # to the declaration of LOC here: LOC = -DDOS -DDYN_ALLOC -DNO_SECURE_TESTS $(LOCAL_ZIP) # Zip requires compact or large memory model. # with 2.1, compact model exceeds 64k code segment; use large model ZIPMODEL=L # large model for Zip and ZipUtils # name of Flag to select memory model for assembler compiles, supported # values are __SMALL__ , __MEDIUM__ , __COMPACT__ , __LARGE__ : ASMODEL=__LARGE__ # keep in sync with ZIPMODEL definition !! # Type for CPU required: 0: 8086, 1: 80186, 2: 80286, 3: 80386, etc. CPU_TYP = 0 # Uncomment the following macro to use the optimized assembler # routines in Zip: ASMOBJS = match.obj crc_i86.obj ASCPUFLAG = __$(CPU_TYP)86 # ------------- Microsoft C 5.1, 6.0, 7.0 and VC++ Pro 1.0 ------------- CC=cl MODEL=-A$(ZIPMODEL) FP= # With the feature additions of Zip 3, the default data segment gets occupied # with too much initialized data to fit into 64k. As a workaround, for some # source files with large amount of message strings, -Gt is used to # force data items of size or larger into their own data segments. COMMON_CFLAGS=-nologo -I. $(MODEL) $(FP) -DMSC $(LOC) -W3 -G$(CPU_TYP) CFLAGS=$(COMMON_CFLAGS) -Ox SPECFLAGS=$(COMMON_CFLAGS) -Oaict -Gs # For MSC/C++ 7.0 and VC++ no special flags are needed: # SPECFLAGS=$(CFLAGS) UTILFLAGS=-DUTIL $(CFLAGS) -Fo AS=masm ASFLAGS=-ml -t -D$(ASCPUFLAG) -D$(ASMODEL) $(LOC) # For MSC 6.0, use: #AS=ml #ASFLAGS=-c -D$(ASCPUFLAG) -D$(ASMODEL) $(LOC) # Supress -DDYN_ALLOC in ASFLAGS if you have suppressed it in CFLAGS LD=link LDFLAGS=/noi/farcall/packcode/e/st:0x1400/m # If you use an exe packer as recommended below, remove /e from LDFLAGS # ------------- Common declarations: STRIP=rem # 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 (if you've registered PKLITE) #STRIP=pklite # and remove /e from LDFLAGS. # This makes a big difference in .exe size (and possibly load time) # ------------- Used by install rule # set BIN to the directory you want to install the executables to BIN = c:\util # variables OBJZ = zip.obj crypt.obj ttyio.obj zipfile.obj zipup.obj fileio.obj util.obj \ crc32.obj globals.obj OBJI = deflate.obj trees.obj $(ASMOBJS) msdos.obj OBJU = zipfile_.obj fileio_.obj util_.obj globals.obj msdos_.obj OBJN = zipnote.obj $(OBJU) OBJC = zipcloak.obj crc32_.obj crypt_.obj ttyio.obj $(OBJU) OBJS = zipsplit.obj $(OBJU) ZIP_H = zip.h ziperr.h tailor.h msdos/osdep.h ZIPS = zip.exe zipnote.exe zipsplit.exe zipcloak.exe zips: $(ZIPS) zip.obj: zip.c $(ZIP_H) revision.h crc32.h crypt.h ttyio.h $(CC) -c $(CFLAGS) -Gt65 $*.c # MSC 5.1 generates bad code on zipfile with -Ox zipfile.obj: zipfile.c $(ZIP_H) crc32.h $(CC) -c $(SPECFLAGS) $*.c zipup.obj: zipup.c $(ZIP_H) revision.h crc32.h crypt.h msdos/zipup.h $(CC) -c $(CFLAGS) $*.c fileio.obj: fileio.c $(ZIP_H) crc32.h $(CC) -c $(CFLAGS) $*.c util.obj: util.c $(ZIP_H) $(CC) -c $(CFLAGS) $*.c globals.obj: globals.c $(ZIP_H) $(CC) -c $(CFLAGS) $*.c deflate.obj: deflate.c $(ZIP_H) $(CC) -c $(CFLAGS) $*.c trees.obj: trees.c $(ZIP_H) $(CC) -c $(CFLAGS) $*.c crc32.obj: crc32.c $(ZIP_H) crc32.h $(CC) -c $(CFLAGS) $*.c crypt.obj: crypt.c $(ZIP_H) crypt.h crc32.h ttyio.h $(CC) -c $(CFLAGS) $*.c ttyio.obj: ttyio.c $(ZIP_H) crypt.h ttyio.h $(CC) -c $(CFLAGS) $*.c msdos.obj: msdos/msdos.c $(ZIP_H) $(CC) -c $(CFLAGS) msdos/$*.c zipcloak.obj: zipcloak.c $(ZIP_H) revision.h crc32.h crypt.h ttyio.h $(CC) -c $(CFLAGS) $*.c zipnote.obj: zipnote.c $(ZIP_H) revision.h $(CC) -c $(CFLAGS) $*.c # MSC 5.1 dies on zipsplit with -Ox zipsplit.obj: zipsplit.c $(ZIP_H) revision.h $(CC) -c $(SPECFLAGS) $*.c # MSC 5.1 generates bad code on zipfile with -Ox zipfile_.obj: zipfile.c $(ZIP_H) crc32.h $(CC) -c $(SPECFLAGS) -DUTIL -Fo$@ zipfile.c fileio_.obj: fileio.c $(ZIP_H) crc32.h $(CC) -c $(UTILFLAGS)$@ fileio.c util_.obj: util.c $(ZIP_H) $(CC) -c $(UTILFLAGS)$@ util.c crc32_.obj: crc32.c $(ZIP_H) crc32.h $(CC) -c $(UTILFLAGS)$@ crc32.c crypt_.obj: crypt.c $(ZIP_H) crypt.h crc32.h ttyio.h $(CC) -c $(UTILFLAGS)$@ crypt.c msdos_.obj: msdos/msdos.c $(ZIP_H) $(CC) -c $(UTILFLAGS)$@ msdos/msdos.c crc_i86.obj: msdos/crc_i86.asm $(AS) $(ASFLAGS) msdos\crc_i86.asm ; match.obj: msdos/match.asm $(AS) $(ASFLAGS) msdos\match.asm ; # we must cut the command line to fit in the MS/DOS 128 byte limit: zip.exe: $(OBJZ) $(OBJI) echo $(OBJZ)+ > zip.rsp echo $(OBJI); >> zip.rsp $(LD) $(LDFLAGS) @zip.rsp del zip.rsp $(STRIP) zip.exe zipcloak.exe: $(OBJC) echo $(OBJC); > zipc.rsp $(LD) $(LDFLAGS) @zipc.rsp del zipc.rsp $(STRIP) zipcloak.exe zipnote.exe: $(OBJN) echo $(OBJN); > zipn.rsp $(LD) $(LDFLAGS) @zipn.rsp del zipn.rsp $(STRIP) zipnote.exe zipsplit.exe: $(OBJS) echo $(OBJS); > zips.rsp $(LD) $(LDFLAGS) @zips.rsp del zips.rsp $(STRIP) zipsplit.exe # No `install' and `clean' target possible as long as MSC's old MAKE utility # is supported (MSC 5.1 Make always tries to update ALL targets. The result # is that install and clean are always executed, unless an error occured.) #install: $(ZIPS) # copy /b *.exe $(BIN) # #clean: # del *.obj # del *.exe