1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
|
# Makefile for Zip, ZipCloak, ZipNote and ZipSplit
# using emx 0.9c for DOS.
# By Kai-Uwe Rommel, Chr. Spieler, E-Yen Tan (and others).
# Last updated 30th June 1998.
#
# This Makefile is a stripped down version of win32/Makefile.emx that
# builds executables applying the default MSDOS emx setup. For variant
# targets (using zlib), and cross-compilation for WIN32 or OS/2, take a
# look into "win32/makefile.emx" resp. "os2/makefile.os2".
#
# Supported Make utilities:
# - Microsoft/IBM nmake (e.g. from MSC 6.0 or newer)
# - dmake 3.8 or higher
# - GNU make, at least version 3.68 (GNUish 16-bit port, RSXNT Make 3.75 in a
# Win95/WinNT DOS box, DJGPP v1.12 Make 3.71, some versions of DJGPP v2.x
# 32-bit Make; current DJGPP v2.01 Make 3.76.1 does NOT work)
# - NOT watcom make
# The "smart" Make utilities mentioned below are Christian Spieler's
# enhanced version of GNUish 16-bit Make (3.74) and his adaption of these
# GNU Make sources to EMX (32-bit).
# Supported 32-bit C Compilers for MSDOS:
# - GNU gcc (emx kit 0.9c or newer, 32-bit)
# Supported Assemblers:
# - GNU as with GNU gcc
# To use, enter "make/nmake/dmake -f msdos/makefile.emx"
# (this makefile depends on its name being "msdos/makefile.emx").
# emx 0.9c, gcc, a.out format, for MS-DOS
CC=gcc -O2 -m486 -Wall
CFLAGS=-DDOS -DMSDOS -DASM_CRC
AS=gcc
ASFLAGS=-Di386
LDFLAGS=-o ./
LDFLAGS2=-s -Zsmall-conv
OUT=-o
OBJ=.o
CRC32=crc_gcc
OBJA=matchgcc.o
OBJZS=msdos.o
OBJUS=msdos_.o
OSDEP_H=msdos/osdep.h
ZIPUP_H=msdos/zipup.h
#default settings for target dependent macros:
DIRSEP = /
AS_DIRSEP = /
RM = del
LOCAL_OPTS = $(LOCAL_ZIP)
CCFLAGS = $(CFLAGS) $(LOCAL_OPTS)
OBJZ1 = zip$(OBJ) zipfile$(OBJ) zipup$(OBJ) fileio$(OBJ) util$(OBJ) \
$(CRC32)$(OBJ) crctab$(OBJ)
OBJZ2 = globals$(OBJ) deflate$(OBJ) trees$(OBJ) crypt$(OBJ) \
ttyio$(OBJ)
OBJZ = $(OBJZ1) $(OBJZ2) $(OBJZS) $(OBJA)
OBJU1 = zipfile_$(OBJ) fileio_$(OBJ) util_$(OBJ) globals$(OBJ)
OBJU = $(OBJU1) $(OBJUS)
OBJN = zipnote$(OBJ) $(OBJU)
OBJS = zipsplit$(OBJ) $(OBJU)
OBJC1 = zipcloak$(OBJ) crctab$(OBJ) crypt_$(OBJ) ttyio$(OBJ)
OBJC = $(OBJC1) $(OBJU)
ZIP_H = zip.h ziperr.h tailor.h $(OSDEP_H)
# rules
.SUFFIXES: .c $(OBJ)
.c$(OBJ):
$(CC) -c -I. $(CCFLAGS) $(OUT)$@ $<
# targets
all: zip.exe zipnote.exe zipsplit.exe zipcloak.exe
zip$(OBJ): zip.c $(ZIP_H) revision.h crypt.h ttyio.h
zipfile$(OBJ): zipfile.c $(ZIP_H)
zipup$(OBJ): zipup.c $(ZIP_H) revision.h crypt.h $(ZIPUP_H)
fileio$(OBJ): fileio.c $(ZIP_H)
util$(OBJ): util.c $(ZIP_H)
globals$(OBJ): globals.c $(ZIP_H)
deflate$(OBJ): deflate.c $(ZIP_H)
trees$(OBJ): trees.c $(ZIP_H)
crc32$(OBJ): crc32.c $(ZIP_H)
crctab$(OBJ): crctab.c $(ZIP_H)
crypt$(OBJ): crypt.c $(ZIP_H) crypt.h ttyio.h
ttyio$(OBJ): ttyio.c $(ZIP_H) crypt.h ttyio.h
msdos$(OBJ): msdos/msdos.c $(ZIP_H)
$(CC) -c -I. $(CCFLAGS) msdos$(DIRSEP)msdos.c
win32zip$(OBJ): win32/win32zip.c $(ZIP_H) win32/win32zip.h win32/nt.h
$(CC) -c -I. $(CCFLAGS) win32$(DIRSEP)win32zip.c
win32$(OBJ): win32/win32.c $(ZIP_H) win32/win32zip.h
$(CC) -c -I. $(CCFLAGS) win32$(DIRSEP)win32.c
nt$(OBJ): win32/nt.c $(ZIP_H) win32/nt.h
$(CC) -c -I. $(CCFLAGS) win32$(DIRSEP)nt.c
crc_gcc$(OBJ): crc_i386.S # 32bit, GNU AS
$(AS) $(ASFLAGS) -x assembler-with-cpp -c -o $@ crc_i386.S
matchgcc$(OBJ): match.S
$(AS) $(ASFLAGS) -x assembler-with-cpp -c -o $@ match.S
zipcloak$(OBJ): zipcloak.c $(ZIP_H) revision.h crypt.h ttyio.h
zipnote$(OBJ): zipnote.c $(ZIP_H) revision.h
zipsplit$(OBJ): zipsplit.c $(ZIP_H) revision.h
zipfile_$(OBJ): zipfile.c $(ZIP_H)
$(CC) -c -I. $(CCFLAGS) -DUTIL $(OUT)$@ zipfile.c
fileio_$(OBJ): fileio.c $(ZIP_H)
$(CC) -c -I. $(CCFLAGS) -DUTIL $(OUT)$@ fileio.c
util_$(OBJ): util.c $(ZIP_H)
$(CC) -c -I. $(CCFLAGS) -DUTIL $(OUT)$@ util.c
crypt_$(OBJ): crypt.c $(ZIP_H) crypt.h ttyio.h
$(CC) -c -I. $(CCFLAGS) -DUTIL $(OUT)$@ crypt.c
msdos_$(OBJ): msdos/msdos.c $(ZIP_H)
$(CC) -c -I. $(CCFLAGS) -DUTIL $(OUT)$@ msdos$(DIRSEP)msdos.c
win32_$(OBJ): win32/win32.c $(ZIP_H) win32/win32zip.h
$(CC) -c -I. $(CCFLAGS) -DUTIL $(OUT)$@ win32$(DIRSEP)win32.c
# This next bit is nasty, but is needed to overcome the MS-DOS command
# line limit as response files for emx's gcc seem to only work if each
# file is on a different line. DJGPP doesn't do this (if you are at all
# interested).
zip.exe: $(OBJZ)
# for DUMB make utilities, uncomment the following commands:
-@$(RM) zip.rsp
@for %%f in ($(OBJZ1)) do echo %%f >> zip.rsp
@for %%f in ($(OBJZ2)) do echo %%f >> zip.rsp
@for %%f in ($(OBJZS) $(OBJA)) do echo %%f >> zip.rsp
$(CC) $(LDFLAGS)$@ @zip.rsp $(LDFLAGS2)
@$(RM) zip.rsp
# smart make utilities (like well done ports of GNU Make) can use this:
# $(CC) $(LDFLAGS)$@ $(OBJZ) $(LDFLAGS2)
zipcloak.exe: $(OBJC)
# for DUMB make utilities, uncomment the following commands:
-@$(RM) zipcloak.rsp
@for %%f in ($(OBJC1)) do echo %%f >> zipcloak.rsp
@for %%f in ($(OBJU1)) do echo %%f >> zipcloak.rsp
@for %%f in ($(OBJUS)) do echo %%f >> zipcloak.rsp
$(CC) $(LDFLAGS)$@ @zipcloak.rsp $(LDFLAGS2)
@$(RM) zipcloak.rsp
# smart make utilities (like well done ports of GNU Make) can use this:
# $(CC) $(LDFLAGS)$@ $(OBJC) $(LDFLAGS2)
zipnote.exe: $(OBJN)
$(CC) $(LDFLAGS)$@ $(OBJN) $(LDFLAGS2)
zipsplit.exe: $(OBJS)
$(CC) $(LDFLAGS)$@ $(OBJS) $(LDFLAGS2)
|