File: makefile.dj2

package info (click to toggle)
unzip 5.52-9etch1
  • links: PTS
  • area: main
  • in suites: etch
  • size: 5,776 kB
  • ctags: 7,140
  • sloc: ansic: 49,152; cpp: 3,978; makefile: 2,310; asm: 1,583; sh: 91
file content (238 lines) | stat: -rw-r--r-- 7,855 bytes parent folder | download | duplicates (5)
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)