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 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238
|
# Makefile for Info-ZIP's UnZip, UnZipSFX and fUnZip using DJGPP v2.01 or
# higher, by Frank Donahoe. Last updated: 17 Feb 02
# This Makefile is specifically tailored for GNU make and GNU C and
# may not work with a generic Unix-compatible make utility. The latest
# make version is 3.78.1. Thanks to Eli Zaretskii for generously responding
# to questions with advice on the changes needed to make install work under
# DJGPP version 2.0x.
# Features used:
# - pattern rules (%.o : %.c, etc.)
# - GNU-specific conditionals and functions (ifeq, $(patsubst,,),...)
#
# The stand-alone executable requires DPMI services to run. If running
# in a DOS window under Windows 3.1 or later, the dpmi server is auto-
# matically present. Under DOS, if a DPMI server is not loaded, the
# program will look for "cwsdpmi.exe." If found, it will be loaded for
# the duration of the program.
#
# cwsdpmi is a "free" dpmi server written by Charles W. Sandmann
# (sandman@clio.rice.edu). It may be found, among other sites, on SimTel
# Net at the URL:
#
# ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2misc/csdpmi?[b,s].zip
#
# and on its mirrors worldwide. The latest version as of this writing is 5.
# Archives with the b postscript contain the binaries. An alternate server
# is found, l.c., in the archive pmode??[b,s].zip. The latest (20001022) is
# v1.3.
# Separators colon and <sp> are used in Unix, semi-colon and <sp> in DOS.
VPATH=. msdos
ifdef NOASM
USE_ASMCRC=
else
USE_ASMCRC=1
endif
.PHONY : clean install uninstall
# UnZip flags
# LOCAL_UNZIP may be set in "AUTOEXEC.BAT" or defined in "djgpp.env" under
# [make] as in the example below. Or, if you habitually work in a DOS box
# under Windows9x, right click on the MS-DOS icon, select properties, then
# program, to find a slot called batch file, where you may specify the path
# to a file which will set the variables of choice every time the box is
# opened.
# See, for example, DOSWILD, in the file INSTALL.
# [make]
# +BUTT=-mcpu=pentiumpro
# +LOC=-W -Wall
# +LOCAL_UNZIP=-DUSE_UNSHRINK
# BUTT may be defined to specify the target system. With gcc v2.95,
# optimizing options like "-mcpu=pentiumpro -march=pentiumpro" are supported,
# but the traditional "-m386" and "-m486" options of previous gcc 2.x
# version will continue to work.
# So if you are in the habit of compiling from source, programs for your
# own use, it is well to consult gcc's manual for options suitable to
# your processer and to set BUTT accordingly. Consult INSTALL for
# LOCAL_UNZIP.
LOC=
CC=gcc
LD=$(CC)
CPPFLAGS=-I. -DDOS -DUSE_VFAT $(ASMFLG) $(LOCAL_UNZIP) $(LOC)
ASFLAGS=$(CPPFLAGS)
CFLAGS=-Wall -O2 $(BUTT) $(CPPFLAGS)
# See INSTALL for discussion of SFX_EXDIR.
# EXDIR=-DSFX_EXDIR
FUN_FLAGS=$(CFLAGS) -DFUNZIP
# Include OFP for a modest decrease in size of unzipsfx.exe.
OFP=-fomit-frame-pointer
SFX_FLAGS=-Wall -O2 $(CPPFLAGS) -DSFX $(EXDIR) $(OFP)
LDFLAGS=-s
# general-purpose stuff
# If cp.exe is not found change to CP=copy /Y .
CP = cp -fp
# If install.exe is not found change to INSTALL=$(CP) . To prevent a
# conflict with any of the many different "install's" that might be found
# in the path, GNU install will be called as `ginstall'. This also bypasses
# a stub bug that cropped up with the install from fil316b.zip.
INSTALL=ginstall
# The default value of RM is "rm -f" . If rm.exe is not found, uncomment
# the following:
# RM=del
# Laszlo Molnar who wrote DJ Packer and Markus F. X. J. Oberhumer who wrote
# the compression library used by the DJ Packer have collaborated on the
# Ultimate Packer for eXecutables, which has recently been released. Look
# for upx???d.zip at http://upx.sourceforge.net/
# As an alternative, look for "djp.exe", now two years old, in the archive
# mlp107[b,s].zip, found in the same location as csdpmi?[b,s].zip (see above).
# Do not add the option -s to djp.exe without making the required changes
# to the target zipinfo$E. Uncomment the three lines beginning with $(DJP)
# or $(DJPSX).
#DJP = djp -q
#DJPSX = djp -q -s
DJP = upx -qq --best
DJPSX = $(DJP)
E = .exe
O = .o
M=msdos
# defaults for crc32 stuff and system dependent headers
ifdef USE_ASMCRC
ASMFLG = -DASM_CRC
CRC32 = crc_gcc
else
ASMFLG =
CRC32 = crc32
endif
# object files
OBJS1 = unzip$O $(CRC32)$O crctab$O crypt$O envargs$O explode$O
OBJS2 = extract$O fileio$O globals$O inflate$O list$O match$O
OBJS3 = process$O ttyio$O unreduce$O unshrink$O zipinfo$O
OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $M$O
OBJX = unzipsfx$O $(CRC32)$O crctab_$O crypt_$O extract_$O fileio_$O \
globals_$O inflate_$O match_$O process_$O ttyio_$O $M_$O
OBJF = funzip$O $(CRC32)$O crypt-$O globals-$O inflate-$O ttyio-$O
OBJECTS_ALL = $(sort $(OBJS) $(OBJX) $(OBJF) crc32$O crc_gcc$O)
# Common header files included by all C sources:
UNZIP_H = unzip.h unzpriv.h globals.h msdos/doscfg.h
# executable files
UNZIPS = unzip$E zipinfo$E funzip$E unzipsfx$E
# pattern rules to compile the sources:
%$O : %.c
$(CC) $(CFLAGS) -c $< -o $@
%-$O: %.c
$(CC) $(FUN_FLAGS) -c $< -o $@
%_$O: %.c
$(CC) $(SFX_FLAGS) -c $< -o $@
%sfx$O: %.c
$(CC) $(SFX_FLAGS) -c $< -o $@
all: unzips
unzips: unzip$E zipinfo$E funzip$E unzipsfx$E
unzip$E: $(OBJS)
$(LD) $(LDFLAGS) $(OBJS) -o $@
# $(DJP) $@
zipinfo$E: unzip$E
stubify -g $@
stubedit $@ runfile=unzip argv0=zipinfo
funzip$E: $(OBJF)
$(LD) $(LDFLAGS) $(OBJF) -o $@
# $(DJP) $@
unzipsfx$E: $(OBJX)
$(LD) $(LDFLAGS) $(OBJX) -o $@
# $(DJPSX) $@
# explicit compilation instructions:
crc_gcc$O: crc_i386.S # 32bit, GNU AS
$(CC) $(ASFLAGS) -x assembler-with-cpp -c -o $@ crc_i386.S
# BIN_PATH may be defined in djgpp.env [make] or defined below. If the
# installation is to the directory containing gcc.exe etc. place the
# following in djgpp.env:
# [make]
# +BIN_PATH=%\DJDIR%\bin
# Even if so placed, it can be over-ridden here by, say:
# BIN_PATH=c:\usr\bin
install:
-@if not exist $(BIN_PATH)\nul mkdir $(BIN_PATH)
command.com /c for %f in ($(UNZIPS)) do $(INSTALL) %f $(BIN_PATH) > NUL
uninstall:
command.com /c for %f in ($(UNZIPS)) do $(RM) $(BIN_PATH)\%f > NUL
clean:
ifeq ($(firstword $(RM)), del)
$(RM) *$O
$(RM) *.~
$(RM) *.exe
else
$(RM) $(OBJECTS_ALL) *.~ *.exe
endif
# Source dependencies:
crc_gcc$O: crc_i386.S
crc32$O: crc32.c $(UNZIP_H) zip.h
crctab$O: crctab.c $(UNZIP_H) zip.h
crctab_$O: crctab.c $(UNZIP_H) zip.h
crypt$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h
crypt-$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h
crypt_$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h
envargs$O: envargs.c $(UNZIP_H)
explode$O: explode.c $(UNZIP_H)
extract$O: extract.c $(UNZIP_H) crypt.h
extract_$O: extract.c $(UNZIP_H) crypt.h
fileio$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h
fileio_$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h
funzip$O: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h
globals$O: globals.c $(UNZIP_H)
globals-$O: globals.c $(UNZIP_H)
globals_$O: globals.c $(UNZIP_H)
inflate$O: inflate.c inflate.h $(UNZIP_H)
inflate-$O: inflate.c inflate.h $(UNZIP_H) crypt.h
inflate_$O: inflate.c inflate.h $(UNZIP_H)
list$O: list.c $(UNZIP_H)
match$O: match.c $(UNZIP_H)
match_$O: match.c $(UNZIP_H)
msdos$O: msdos/msdos.c $(UNZIP_H)
msdos_$O: msdos/msdos.c $(UNZIP_H)
process$O: process.c $(UNZIP_H)
process_$O: process.c $(UNZIP_H)
ttyio$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h
ttyio-$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h
ttyio_$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h
unreduce$O: unreduce.c $(UNZIP_H)
unshrink$O: unshrink.c $(UNZIP_H)
unzip$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h
unzipsfx$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h
zipinfo$O: zipinfo.c $(UNZIP_H)
|