1# Makefile for UnZip, fUnZip and UnZipSFX using LCC-Win32. 2# By E-Yen Tan (3 June 1998). 3# Last updated 20 Jul 2008 (Christian Spieler). 4# 5# This version includes rules to build the 32-bit windll DLL. 6 7# This compiler evaluates #include locations relative to current working dir, 8# not relative to the location of the file containing the #include directive. 9# As a consequence, a "-Iwin32" option is required to allow compilation of 10# the WIN32 specific sources. 11 12CC=lcc 13CCFLAGS=-Zp8 -O -DWIN32 $(AS_FLAGS) 14#DLLFLAG= 15DLLFLAG=-DWINDLL -DDLL -I./windll 16AS=lcc 17ASFLAGS= 18LD = lcclnk 19#DLLLDFLAG= 20DLLLDFLAG=-dll -entry DllMain 21LDFLAGS=-s -o ./ 22LDFLAGS2= 23OUT=-Fo 24OBJ=.obj 25 26CP=copy 27RM=del 28 29# Optional macros should be declared below. 30# (LCC's Make is unable to read the LOCAL_UNZIP environment variable.) 31LOC = $(ASMFLG) 32 33# Options to select optimized assembler code for CRC32 calculation. 34#ifdef NOASM 35#ASMFLG= 36#CRCA_O= 37#CRCA_OF= 38#CRCA_OL= 39#CRCA_OG= 40#CRCA_OX= 41#else 42ASMFLG=-DASM_CRC 43CRCA_O=crc_lcc$(OBJ) 44CRCA_OF=$(CRCA_O) 45CRCA_OL=$(CRCA_O) 46CRCA_OG=$(CRCA_O) 47CRCA_OX=$(CRCA_O) 48#endif 49 50CFLAGS = $(CCFLAGS) $(LOC) 51 52CFLAGS_UN = $(CFLAGS) 53CFLAGS_SX = $(CFLAGS) -DSFX 54CFLAGS_FU = $(CFLAGS) -DFUNZIP 55CFLAGS_DL = $(CFLAGS) $(DLLFLAG) 56CFLAGS_SL = $(CFLAGS) $(DLLFLAG) -DUNZIPLIB -DSFX 57CFLAGS_GX = $(CFLAGS) -I./windll -I./windll/guisfx -DSFX 58 59 60# The system specific files are defined here: 61OBJUS=win32$(OBJ) win32i64$(OBJ) nt$(OBJ) 62OBJXS=win32_$(OBJ) win32i64_$(OBJ) nt_$(OBJ) 63OBJFS=win32f$(OBJ) win32i64f$(OBJ) 64OBJDS=win32l$(OBJ) win32i64l$(OBJ) ntl$(OBJ) 65OBLXS=win32g$(OBJ) win32i64g$(OBJ) ntg$(OBJ) windllg$(OBJ) 66OSDEP_H=win32/w32cfg.h 67WINDLL_H=windll/windll.h windll/structs.h windll/decs.h 68DLLDEF=.\windll\windll_lc.def # lcclink requires backslashes as dir-sep!! 69WINDLL_IMP_H = windll/decs.h windll/structs.h 70 71 72OBJU1 = unzip$(OBJ) crc32$(OBJ) $(CRCA_O) crypt$(OBJ) envargs$(OBJ) 73OBJU2 = explode$(OBJ) extract$(OBJ) fileio$(OBJ) globals$(OBJ) 74OBJU3 = inflate$(OBJ) list$(OBJ) match$(OBJ) process$(OBJ) ttyio$(OBJ) 75OBJU4 = ubz2err$(OBJ) unreduce$(OBJ) unshrink$(OBJ) zipinfo$(OBJ) 76OBJU = $(OBJU1) $(OBJU2) $(OBJU3) $(OBJU4) $(OBJUS) 77OBJX1 = unzipsf_$(OBJ) crc32_$(OBJ) $(CRCA_OX) crypt_$(OBJ) 78OBJX2 = extract_$(OBJ) fileio_$(OBJ) globals_$(OBJ) inflate_$(OBJ) 79OBJX3 = match_$(OBJ) process_$(OBJ) ttyio_$(OBJ) ubz2err_$(OBJ) 80OBJX = $(OBJX1) $(OBJX2) $(OBJX3) $(OBJXS) 81OBJF = funzip$(OBJ) crc32f$(OBJ) $(CRCA_OF) cryptf$(OBJ) inflatef$(OBJ) \ 82 globalsf$(OBJ) ttyiof$(OBJ) $(OBJFS) 83OBJDLL = windll$(OBJ) windll32.res api$(OBJ) 84OBJD1 = crc32l$(OBJ) $(CRCA_OL) cryptl$(OBJ) 85OBJD2 = explodel$(OBJ) extractl$(OBJ) fileiol$(OBJ) globalsl$(OBJ) 86OBJD3 = inflatel$(OBJ) listl$(OBJ) matchl$(OBJ) processl$(OBJ) 87OBJD4 = ubz2errl$(OBJ) unreducl$(OBJ) unshrnkl$(OBJ) zipinfol$(OBJ) 88OBJD = $(OBJDLL) $(OBJD1) $(OBJD2) $(OBJD3) $(OBJD4) $(OBJDS) 89OBLX1 = apig$(OBJ) crc32g$(OBJ) $(CRCA_OG) cryptg$(OBJ) 90OBLX2 = extractg$(OBJ) fileiog$(OBJ) globalsg$(OBJ) inflateg$(OBJ) 91OBLX3 = matchg$(OBJ) processg$(OBJ) ubz2errg$(OBJ) 92OBLX = $(OBLX1) $(OBLX2) $(OBLX3) $(OBLXS) 93OBGX = sfxwiz$(OBJ) 94 95UNZIP_H = unzip.h unzpriv.h globals.h $(OSDEP_H) 96 97# rules 98 99.SUFFIXES: .c $(OBJ) 100 101.c$(OBJ): 102 $(CC) -c $(CFLAGS_UN) $(OUT)$@ $< 103 104.asm$(OBJ): 105 $(AS) $(ASFLAGS) $(OUT)$@ $< 106 107# targets 108 109unzips: unzip.exe funzip.exe unzipsfx.exe 110dll: unzip32.dll 111dllsample: uzexampl.exe 112guisfx: SFXWiz32.exe 113all: unzips dll dllsample guisfx 114 115unzip.exe: $(OBJU) winapp.res 116 $(LD) $(LDFLAGS)$@ $(DEF) $(OBJU) winapp.res $(LDFLAGS2) 117 118funzip.exe: $(OBJF) 119 $(LD) $(LDFLAGS)$@ $(DEF) $(OBJF) $(LDFLAGS2) 120 121unzipsfx.exe: $(OBJX) 122 $(LD) $(LDFLAGS)$@ $(DEF) $(OBJX) $(LDFLAGS2) 123 124unzip32.dll: $(DLLDEF) $(OBJD) 125 $(LD) $(DLLLDFLAG) $(LDFLAGS)$@ $(DLLDEF) $(OBJD) $(LDFLAGS2) 126 127unzsfx32.lib: $(OBLX) 128 lcclib $@ $(OBLX) 129 130SFXWiz32.exe: $(OBGX) sfxwiz.res unzsfx32.lib 131 $(LD) -subsystem windows $(LDFLAGS)$@ \ 132 $(OBGX) sfxwiz.res unzsfx32.lib 133 134uzexampl.exe: uzexampl$(OBJ) 135 $(LD) $(LDFLAGS)$@ $(DEF) uzexampl$(OBJ) version.lib $(LDFLAGS2) 136 137# dependencies 138 139api$(OBJ): api.c $(UNZIP_H) unzvers.h 140apihelp$(OBJ): apihelp.c $(UNZIP_H) unzvers.h 141crc32$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h 142envargs$(OBJ): envargs.c $(UNZIP_H) 143explode$(OBJ): explode.c $(UNZIP_H) 144extract$(OBJ): extract.c $(UNZIP_H) crc32.h crypt.h 145fileio$(OBJ): fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h 146globals$(OBJ): globals.c $(UNZIP_H) 147inflate$(OBJ): inflate.c $(UNZIP_H) 148list$(OBJ): list.c $(UNZIP_H) 149match$(OBJ): match.c $(UNZIP_H) 150process$(OBJ): process.c $(UNZIP_H) crc32.h 151ttyio$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h 152ubz2err$(OBJ): ubz2err.c $(UNZIP_H) 153unreduce$(OBJ): unreduce.c $(UNZIP_H) 154unshrink$(OBJ): unshrink.c $(UNZIP_H) 155unzip$(OBJ): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h 156zipinfo$(OBJ): zipinfo.c $(UNZIP_H) 157 158funzip$(OBJ): funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h 159 $(CC) -c $(CFLAGS) $(OUT)$@ funzip.c 160 161uzexampl$(OBJ): windll/uzexampl.c windll/uzexampl.h 162 $(CC) -c $(CFLAGS_UN) -I./windll $(OUT)$@ windll/uzexampl.c 163 164win32$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h unzvers.h 165 $(CC) -c $(CFLAGS_UN) -Iwin32 $(OUT)$@ win32/win32.c 166 167win32i64$(OBJ): win32/win32i64.c $(UNZIP_H) 168 $(CC) -c $(CFLAGS_UN) -Iwin32 $(OUT)$@ win32/win32i64.c 169 170nt$(OBJ): win32/nt.c $(UNZIP_H) win32/nt.h 171 $(CC) -c $(CFLAGS_UN) -Iwin32 $(OUT)$@ win32/nt.c 172 173crc_lcc$(OBJ): win32/crc_lcc.asm 174 $(AS) $(ASFLAGS) $(OUT)$@ win32/crc_lcc.asm 175 176crypt$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h 177 $(CC) -c $(CFLAGS_UN) $(OUT)$@ crypt.c 178 179winapp.res: win32/winapp.rc unzvers.h 180 - lrc -v -r -I./win32 -DWIN32 -o$@ win32/winapp.rc 181 182crc32f$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h 183 $(CC) -c $(CFLAGS_FU) $(OUT)$@ crc32.c 184 185cryptf$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h 186 $(CC) -c $(CFLAGS_FU) $(OUT)$@ crypt.c 187 188globalsf$(OBJ): globals.c $(UNZIP_H) 189 $(CC) -c $(CFLAGS_FU) $(OUT)$@ globals.c 190 191inflatef$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h 192 $(CC) -c $(CFLAGS_FU) $(OUT)$@ inflate.c 193 194ttyiof$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h 195 $(CC) -c $(CFLAGS_FU) $(OUT)$@ ttyio.c 196 197win32f$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h 198 $(CC) -c $(CFLAGS_FU) -Iwin32 $(OUT)$@ win32/win32.c 199 200win32i64f$(OBJ): win32/win32i64.c $(UNZIP_H) 201 $(CC) -c $(CFLAGS_FU) -Iwin32 $(OUT)$@ win32/win32i64.c 202 203crc32_$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h 204 $(CC) -c $(CFLAGS_SX) $(OUT)$@ crc32.c 205 206crypt_$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h 207 $(CC) -c $(CFLAGS_SX) $(OUT)$@ crypt.c 208 209extract_$(OBJ): extract.c $(UNZIP_H) crc32.h crypt.h 210 $(CC) -c $(CFLAGS_SX) $(OUT)$@ extract.c 211 212fileio_$(OBJ): fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h 213 $(CC) -c $(CFLAGS_SX) $(OUT)$@ fileio.c 214 215globals_$(OBJ): globals.c $(UNZIP_H) 216 $(CC) -c $(CFLAGS_SX) $(OUT)$@ globals.c 217 218inflate_$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h 219 $(CC) -c $(CFLAGS_SX) $(OUT)$@ inflate.c 220 221match_$(OBJ): match.c $(UNZIP_H) 222 $(CC) -c $(CFLAGS_SX) $(OUT)$@ match.c 223 224process_$(OBJ): process.c $(UNZIP_H) crc32.h 225 $(CC) -c $(CFLAGS_SX) $(OUT)$@ process.c 226 227ttyio_$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h 228 $(CC) -c $(CFLAGS_SX) $(OUT)$@ ttyio.c 229 230ubz2err_$(OBJ): ubz2err.c $(UNZIP_H) 231 $(CC) -c $(CFLAGS_SX) $(OUT)$@ ubz2err.c 232 233unzipsf_$(OBJ): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h 234 $(CC) -c $(CFLAGS_SX) $(OUT)$@ unzip.c 235 236win32_$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h 237 $(CC) -c $(CFLAGS_SX) -Iwin32 $(OUT)$@ win32/win32.c 238 239win32i64_$(OBJ): win32/win32i64.c $(UNZIP_H) 240 $(CC) -c $(CFLAGS_SX) -Iwin32 $(OUT)$@ win32/win32i64.c 241 242nt_$(OBJ): win32/nt.c $(UNZIP_H) win32/nt.h 243 $(CC) -c $(CFLAGS_SX) -Iwin32 $(OUT)$@ win32/nt.c 244 245# DLL compilation section 246api$(OBJ): api.c $(UNZIP_H) $(WINDLL_H) unzvers.h 247 $(CC) -c $(CFLAGS_DL) $(OUT)$@ api.c 248 249crc32l$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h 250 $(CC) -c $(CFLAGS_DL) $(OUT)$@ crc32.c 251 252cryptl$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h 253 $(CC) -c $(CFLAGS_DL) $(OUT)$@ crypt.c 254 255explodel$(OBJ): explode.c $(UNZIP_H) 256 $(CC) -c $(CFLAGS_DL) $(OUT)$@ explode.c 257 258extractl$(OBJ): extract.c $(UNZIP_H) crc32.h crypt.h 259 $(CC) -c $(CFLAGS_DL) $(OUT)$@ extract.c 260 261fileiol$(OBJ): fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h 262 $(CC) -c $(CFLAGS_DL) $(OUT)$@ fileio.c 263 264globalsl$(OBJ): globals.c $(UNZIP_H) 265 $(CC) -c $(CFLAGS_DL) $(OUT)$@ globals.c 266 267inflatel$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h 268 $(CC) -c $(CFLAGS_DL) $(OUT)$@ inflate.c 269 270listl$(OBJ): list.c $(UNZIP_H) $(WINDLL_H) 271 $(CC) -c $(CFLAGS_DL) $(OUT)$@ list.c 272 273matchl$(OBJ): match.c $(UNZIP_H) 274 $(CC) -c $(CFLAGS_DL) $(OUT)$@ match.c 275 276processl$(OBJ): process.c $(UNZIP_H) crc32.h 277 $(CC) -c $(CFLAGS_DL) $(OUT)$@ process.c 278 279ubz2errl$(OBJ): ubz2err.c $(UNZIP_H) 280 $(CC) -c $(CFLAGS_DL) $(OUT)$@ ubz2err.c 281 282unreducl$(OBJ): unreduce.c $(UNZIP_H) 283 $(CC) -c $(CFLAGS_DL) $(OUT)$@ unreduce.c 284 285unshrnkl$(OBJ): unshrink.c $(UNZIP_H) 286 $(CC) -c $(CFLAGS_DL) $(OUT)$@ unshrink.c 287 288zipinfol$(OBJ): zipinfo.c $(UNZIP_H) 289 $(CC) -c $(CFLAGS_DL) $(OUT)$@ zipinfo.c 290 291win32l$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h 292 $(CC) -c $(CFLAGS_DL) -Iwin32 $(OUT)$@ win32/win32.c 293 294win32i64l$(OBJ): win32/win32i64.c $(UNZIP_H) 295 $(CC) -c $(CFLAGS_DL) -Iwin32 $(OUT)$@ win32/win32i64.c 296 297ntl$(OBJ): win32/nt.c $(UNZIP_H) win32/nt.h 298 $(CC) -c $(CFLAGS_DL) -Iwin32 $(OUT)$@ win32/nt.c 299 300windll$(OBJ): windll/windll.c $(UNZIP_H) $(WINDLL_H) crypt.h unzvers.h consts.h 301 $(CC) -c $(CFLAGS_DL) $(OUT)$@ windll/windll.c 302 303windll32.res: windll/windll.rc unzvers.h 304 - lrc -v -r $(DLLFLAG) -DWIN32 -o$@ windll/windll.rc 305 306# SFX Lib compilation section 307apig$(OBJ): api.c $(UNZIP_H) $(WINDLL_H) unzvers.h 308 $(CC) -c $(CFLAGS_SL) $(OUT)$@ api.c 309 310crc32g$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h 311 $(CC) -c $(CFLAGS_SL) $(OUT)$@ crc32.c 312 313cryptg$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h 314 $(CC) -c $(CFLAGS_SL) $(OUT)$@ crypt.c 315 316extractg$(OBJ): extract.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h 317 $(CC) -c $(CFLAGS_SL) $(OUT)$@ extract.c 318 319fileiog$(OBJ): fileio.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h ttyio.h ebcdic.h 320 $(CC) -c $(CFLAGS_SL) $(OUT)$@ fileio.c 321 322globalsg$(OBJ): globals.c $(UNZIP_H) 323 $(CC) -c $(CFLAGS_SL) $(OUT)$@ globals.c 324 325inflateg$(OBJ): inflate.c inflate.h $(UNZIP_H) 326 $(CC) -c $(CFLAGS_SL) $(OUT)$@ inflate.c 327 328matchg$(OBJ): match.c $(UNZIP_H) 329 $(CC) -c $(CFLAGS_SL) $(OUT)$@ match.c 330 331processg$(OBJ): process.c $(UNZIP_H) $(WINDLL_H) crc32.h 332 $(CC) -c $(CFLAGS_SL) $(OUT)$@ process.c 333 334ubz2errg$(OBJ): ubz2err.c $(UNZIP_H) 335 $(CC) -c $(CFLAGS_SL) $(OUT)$@ ubz2err.c 336 337win32g$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h 338 $(CC) -c $(CFLAGS_SL) -Iwin32 $(OUT)$@ win32/win32.c 339 340win32i64g$(OBJ): win32/win32i64.c $(UNZIP_H) 341 $(CC) -c $(CFLAGS_SL) -Iwin32 $(OUT)$@ win32/win32i64.c 342 343ntg$(OBJ): win32/nt.c $(UNZIP_H) win32/nt.h 344 $(CC) -c $(CFLAGS_SL) -Iwin32 $(OUT)$@ win32/nt.c 345 346windllg$(OBJ): windll/windll.c $(UNZIP_H) $(WINDLL_H) crypt.h unzvers.h consts.h 347 $(CC) -c $(CFLAGS_SL) $(OUT)$@ windll/windll.c 348 349sfxwiz$(OBJ): windll/guisfx/sfxwiz.c windll/guisfx/dialog.h $(WINDLL_IMP_H) 350 $(CC) -c $(CFLAGS_GX) $(OUT)$@ windll/guisfx/sfxwiz.c 351 352sfxwiz.res: windll/guisfx/sfxwiz.rc 353 - lrc -v -r -Iwindll/guisfx -DWIN32 -o$@ windll/guisfx/sfxwiz.rc 354