summaryrefslogtreecommitdiff
path: root/msdos/makefile.msc
diff options
context:
space:
mode:
Diffstat (limited to 'msdos/makefile.msc')
-rw-r--r--msdos/makefile.msc209
1 files changed, 209 insertions, 0 deletions
diff --git a/msdos/makefile.msc b/msdos/makefile.msc
new file mode 100644
index 0000000..a7ec9c9
--- /dev/null
+++ b/msdos/makefile.msc
@@ -0,0 +1,209 @@
+# 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<num> is used to
+# force data items of size <num> 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