Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6725 siemargl 1
#==============================================================================
2
# Makefile for UnZip, UnZipSFX and fUnZip:  Atari           ("real" makes only)
3
# Version:  5.53                                               25 December 2006
4
#==============================================================================
5
 
6
 
7
# INSTRUCTIONS (such as they are):
8
#
9
# "make"	-- makes UnZip on a generic Atari
10
#
11
# CF are flags for the C compiler.  LF are flags for the loader.  LF2 are more
12
# flags for the loader, if they need to be at the end of the line instead of at
13
# the beginning (for example, some libraries).  FL and FL2 are the corre-
14
# sponding flags for fUnZip.  LOCAL_UNZIP is an environment variable that can
15
# be used to add default C flags to your compile without editing the Makefile
16
# (e.g., -DDEBUG_STRUC, or -FPi87 on PCs using Microsoft C).
17
#
18
# Be sure to test your new UnZip (and UnZipSFX and fUnZip); successful compila-
19
# tion does not always imply a working program.
20
 
21
 
22
#####################
23
# MACRO DEFINITIONS #
24
#####################
25
 
26
# Defaults most systems use (use LOCAL_UNZIP in environment to add flags,
27
# such as -DDOSWILD).
28
 
29
# UnZip flags
30
CC = gcc#	try using "gcc" target rather than changing this (if you do,
31
LD = $(CC)#	you MUST change LD, too--else "unresolved symbol:  ___main")
32
LOC = $(LOCAL_UNZIP)
33
CF = $(CFLAGS) $(LOC)
34
LF = -o unzip$E
35
LF2 = -s
36
 
37
# UnZipSFX flags
38
SL = -o unzipsfx$E
39
SL2 = $(LF2)
40
 
41
# fUnZip flags
42
FL = -o funzip$E
43
FL2 = $(LF2)
44
 
45
# general-purpose stuff
46
CP = ln -s
47
LN = ln
48
RM = rm -f
49
CHMOD = chmod
50
STRIP = strip
51
E = .ttp
52
O = .o
53
M = atari
54
SHELL = /bin/sh
55
 
56
# object files
57
OBJS1 = unzip$O crc32$O crypt$O envargs$O explode$O
58
OBJS2 = extract$O fileio$O globals$O inflate$O list$O match$O
59
OBJS3 = process$O ttyio$O ubz2err$O unreduce$O unshrink$O zipinfo$O
60
OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $M$O
61
LOBJS = $(OBJS)
62
OBJSDLL = $(OBJS) api$O
63
OBJX = unzipsfx$O crc32$O crypt_$O extract_$O fileio_$O \
64
	globals_$O inflate_$O match_$O process_$O ttyio_$O ubz2err_$O $M_$O
65
LOBJX = $(OBJX)
66
OBJF = funzip$O crc32$O cryptf$O globalsf$O inflatef$O ttyiof$O
67
#OBJS_OS2 = $(OBJS1:.o=.obj) $(OBJS2:.o=.obj) os2.obj
68
#OBJF_OS2 = $(OBJF:.o=.obj)
69
 
70
UNZIP_H = unzip.h unzpriv.h globals.h
71
 
72
# installation
73
INSTALL = cp#	probably can change this to 'install' if you have it
74
# on some systems, manext=l and MANDIR=/usr/man/man$(manext) may be appropriate
75
manext = 1
76
prefix = /usr/local
77
BINDIR = $(prefix)/bin#			where to install executables
78
MANDIR = $(prefix)/man/man$(manext)#	where to install man pages
79
INSTALLEDBIN = $(BINDIR)/funzip$E $(BINDIR)/zipinfo$E $(BINDIR)/unzipsfx$E \
80
	$(BINDIR)/unzip$E
81
INSTALLEDMAN = $(MANDIR)/unzip.$(manext) $(MANDIR)/funzip.$(manext) \
82
	$(MANDIR)/unzipsfx.$(manext) $(MANDIR)/zipinfo.$(manext)
83
#
84
UNZIPS = unzip$E funzip$E unzipsfx$E
85
# this is a little ugly...well, no, it's a lot ugly:
86
MANS = man/unzip.1 man/unzipsfx.1 man/zipinfo.1 man/funzip.1
87
DOCS = unzip.txt unzipsfx.txt zipinfo.txt funzip.txt
88
 
89
 
90
###############################################
91
# BASIC COMPILE INSTRUCTIONS AND DEPENDENCIES #
92
###############################################
93
 
94
# this is for GNU make; comment out and notify zip-bugs if it causes errors
95
.SUFFIXES:	.c .o .obj
96
 
97
# yes, we should be able to use the $O macro to combine these two, but it
98
# fails on some brain-damaged makes (e.g., AIX's)...no big deal
99
.c.o:
100
	$(CC) -c $(CF) $*.c
101
 
102
.c.obj:
103
	$(CC) -c $(CF) $*.c
104
 
105
 
106
####################
107
# DEFAULT HANDLING #
108
####################
109
 
110
 
111
all:		unzips
112
unzips:		$(UNZIPS)
113
docs:		$(DOCS)
114
unzipsman:	unzips docs
115
unzipsdocs:	unzips docs
116
 
117
 
118
unzip$E:	$(OBJS)
119
	$(LD) $(LF) $(LOBJS) $(LF2)
120
 
121
unzipsfx$E:	$(OBJX)
122
	$(LD) $(SL) $(LOBJX) $(SL2)
123
 
124
funzip$E:	$(OBJF)
125
	$(LD) $(FL) $(OBJF) $(FL2)
126
 
127
 
128
crc32$O:	crc32.c $(UNZIP_H) zip.h crc32.h
129
crypt$O:	crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h
130
envargs$O:	envargs.c $(UNZIP_H)
131
explode$O:	explode.c $(UNZIP_H)
132
extract$O:	extract.c $(UNZIP_H) crc32.h crypt.h
133
fileio$O:	fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h
134
funzip$O:	funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h
135
globals$O:	globals.c $(UNZIP_H)
136
inflate$O:	inflate.c inflate.h $(UNZIP_H)
137
list$O:		list.c $(UNZIP_H)
138
match$O:	match.c $(UNZIP_H)
139
process$O:	process.c $(UNZIP_H) crc32.h
140
ttyio$O:	ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h
141
ubz2err$O:	ubz2err.c $(UNZIP_H)
142
unreduce$O:	unreduce.c $(UNZIP_H)
143
unshrink$O:	unshrink.c $(UNZIP_H)
144
unzip$O:	unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h
145
zipinfo$O:	zipinfo.c $(UNZIP_H)
146
 
147
# unzipsfx only
148
crypt_$O:	crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h
149
	$(CP) crypt.c crypt_.c
150
	$(CC) -c $(CF) -DSFX crypt_.c
151
	$(RM) crypt_.c
152
 
153
extract_$O:	extract.c $(UNZIP_H) crc32.h crypt.h
154
	$(CP) extract.c extract_.c
155
	$(CC) -c $(CF) -DSFX extract_.c
156
	$(RM) extract_.c
157
 
158
fileio_$O:	fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h
159
	$(CP) fileio.c fileio_.c
160
	$(CC) -c $(CF) -DSFX fileio_.c
161
	$(RM) fileio_.c
162
 
163
globals_$O:	globals.c $(UNZIP_H)
164
	$(CP) globals.c globals_.c
165
	$(CC) -c $(CF) -DSFX globals_.c
166
	$(RM) globals_.c
167
 
168
inflate_$O:	inflate.c inflate.h $(UNZIP_H) crypt.h
169
	$(CP) inflate.c inflate_.c
170
	$(CC) -c $(CF) -DSFX inflate_.c
171
	$(RM) inflate_.c
172
 
173
match_$O:	match.c $(UNZIP_H)
174
	$(CP) match.c match_.c
175
	$(CC) -c $(CF) -DSFX match_.c
176
	$(RM) match_.c
177
 
178
process_$O:	process.c $(UNZIP_H) crc32.h
179
	$(CP) process.c process_.c
180
	$(CC) -c $(CF) -DSFX process_.c
181
	$(RM) process_.c
182
 
183
ttyio_$O:	ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h
184
	$(CP) ttyio.c ttyio_.c
185
	$(CC) -c $(CF) -DSFX ttyio_.c
186
	$(RM) ttyio_.c
187
 
188
ubz2err$O:	ubz2err.c $(UNZIP_H)
189
	$(CP) ubz2err.c ubz2err_.c
190
	$(CC) -c $(CF) -DSFX ubz2err_.c
191
	$(RM) ubz2err_.c
192
 
193
unzipsfx$O:	unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h
194
	$(CP) unzip.c unzipsfx.c
195
	$(CC) -c $(CF) -DSFX unzipsfx.c
196
	$(RM) unzipsfx.c
197
 
198
 
199
# funzip only
200
cryptf$O:	crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h
201
	$(CP) crypt.c cryptf.c
202
	$(CC) -c $(CF) -DFUNZIP cryptf.c
203
	$(RM) cryptf.c
204
 
205
globalsf$O:	globals.c $(UNZIP_H)
206
	$(CP) globals.c globalsf.c
207
	$(CC) -c $(CF) -DFUNZIP globalsf.c
208
	$(RM) globalsf.c
209
 
210
inflatef$O:	inflate.c inflate.h $(UNZIP_H) crypt.h
211
	$(CP) inflate.c inflatef.c
212
	$(CC) -c $(CF) -DFUNZIP inflatef.c
213
	$(RM) inflatef.c
214
 
215
ttyiof$O:	ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h
216
	$(CP) ttyio.c ttyiof.c
217
	$(CC) -c $(CF) -DFUNZIP ttyiof.c
218
	$(RM) ttyiof.c
219
 
220
 
221
# system-specific code
222
atari$O:	atari/atari.c $(UNZIP_H)
223
	$(CC) -c $(CF) atari/atari.c
224
 
225
atari_$O:	atari/atari.c $(UNZIP_H)
226
	$(CP) atari/atari.c atari_.c
227
	$(CC) -c $(CF) -DSFX atari_.c
228
	$(RM) atari_.c
229
 
230
 
231
# this really only works for Unix targets, unless specify E and O on cmd line
232
clean:
233
	@echo ""
234
	@echo '         This is a Unix-specific target.  (Just so you know.)'
235
	@echo ""
236
	rm -f $(OBJS) api$O apihelp$O unzipstb$O $(OBJF) $(OBJX) $(UNZIPS)
237
 
238
install:	$(UNZIPS) $(MANS)
239
	$(INSTALL) $(UNZIPS) $(BINDIR)
240
	$(RM) $(BINDIR)/zipinfo$E
241
	$(LN) $(BINDIR)/unzip$E $(BINDIR)/zipinfo$E
242
	$(INSTALL) man/unzip.1 $(MANDIR)/unzip.$(manext)
243
	$(INSTALL) man/unzipsfx.1 $(MANDIR)/unzipsfx.$(manext)
244
	$(INSTALL) man/zipinfo.1 $(MANDIR)/zipinfo.$(manext)
245
	$(INSTALL) man/funzip.1 $(MANDIR)/funzip.$(manext)
246
	$(CHMOD) 755  $(INSTALLEDBIN)
247
	$(CHMOD) 644  $(INSTALLEDMAN)
248
 
249
# alternatively, could use zip method:  -cd $(BINDIR); rm -f $(UNZIPS)  [etc.]
250
uninstall:
251
	rm -f $(INSTALLEDBIN) $(INSTALLEDMAN)
252
 
253
 
254
TESTZIP = testmake.zip	# the test zipfile
255
 
256
# test some basic features of the build
257
test:		check
258
 
259
check:	unzips
260
	@echo '  This is a Unix-specific target.  (Just so you know.)'
261
	if test ! -f $(TESTZIP); then \
262
		echo "  error:  can't find test file $(TESTZIP)"; exit 1; fi
263
#
264
	echo "  testing extraction"
265
	./unzip -b $(TESTZIP) testmake.zipinfo
266
	if test $? ; then \
267
	    echo "  error:  file extraction from $(TESTZIP) failed"; exit 1; fi
268
#
269
	echo '  testing zipinfo (unzip -Z)'
270
	./unzip -Z $(TESTZIP) > testmake.unzip-Z
271
	if diff testmake.unzip-Z testmake.zipinfo; then ;; else \
272
	    echo '  error:  zipinfo output doesn't match stored version'; fi
273
	$(RM) testmake.unzip-Z testmake.zipinfo
274
#
275
	echo '  testing unzip -d exdir option'
276
	./unzip -b $(TESTZIP) -d testun
277
	cat testun/notes
278
#
279
	echo '  testing unzip -o and funzip (ignore funzip warning)'
280
	./unzip -boq $(TESTZIP) notes -d testun
281
	./funzip < $(TESTZIP) > testun/notes2
282
	if diff testun/notes testun/notes2; then ;; else \
283
	    echo 'error:  funzip output disagrees with unzip'; fi
284
#
285
	echo '  testing unzipsfx (self-extractor)'
286
	cat unzipsfx $(TESTZIP) > testsfx
287
	$(CHMOD) 0700 testsfx
288
	./testsfx -b notes
289
	if diff notes testun/notes; then ;; else \
290
	    echo '  error:  unzipsfx file disagrees with unzip'; fi
291
	$(RM) testsfx notes testun/notes testun/notes2
292
	rmdir testun
293
#
294
	echo '  testing complete.'
295
 
296
 
297
################################
298
# INDIVIDUAL MACHINE MAKERULES #
299
################################
300
 
301
# these are left over for backward compatibility/convenience
302
 
303
generic:	unzips
304
atari:		unzips