2 # Copyright (C) 1995-2017 Jean-loup Gailly, Mark Adler
3 # For conditions of distribution and use, see copyright notice in zlib.h
5 # To compile and test, type:
6 # ./configure; make test
7 # Normally configure builds both a static and a shared library.
8 # If you want to build just a static library, use: ./configure --static
10 # To install /usr/local/lib/libz.* and /usr/local/include/zlib.h, type:
12 # To install in $HOME instead of /usr/local, use:
13 # make install prefix=$HOME
18 #CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
19 #CFLAGS=-g -DZLIB_DEBUG
20 #CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
21 # -Wstrict-prototypes -Wmissing-prototypes
25 TEST_LDFLAGS=$(LDFLAGS) -L. libz.a
31 SHAREDLIBV=libz.so.1.2.13
33 LIBS=$(STATICLIB) $(SHAREDLIBV)
45 exec_prefix = ${prefix}
46 libdir = ${exec_prefix}/lib
47 sharedlibdir = ${libdir}
48 includedir = ${prefix}/include
49 mandir = ${prefix}/share/man
50 man3dir = ${mandir}/man3
51 pkgconfigdir = ${libdir}/pkgconfig
56 OBJZ = adler32.o crc32.o deflate.o infback.o inffast.o inflate.o inftrees.o trees.o zutil.o
57 OBJG = compress.o uncompr.o gzclose.o gzlib.o gzread.o gzwrite.o
58 OBJC = $(OBJZ) $(OBJG)
60 PIC_OBJZ = adler32.lo crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo
61 PIC_OBJG = compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo
62 PIC_OBJC = $(PIC_OBJZ) $(PIC_OBJG)
64 # to use the asm code: make OBJA=match.o, PIC_OBJA=match.lo
68 OBJS = $(OBJC) $(OBJA)
70 PIC_OBJS = $(PIC_OBJC) $(PIC_OBJA)
74 static: example$(EXE) minigzip$(EXE)
76 shared: examplesh$(EXE) minigzipsh$(EXE)
78 all64: example64$(EXE) minigzip64$(EXE)
82 test: all teststatic testshared
86 if echo hello world | ${QEMU_RUN} ./minigzip | ${QEMU_RUN} ./minigzip -d && ${QEMU_RUN} ./example $$TMPST ; then \
87 echo ' *** zlib test OK ***'; \
89 echo ' *** zlib test FAILED ***'; false; \
94 @LD_LIBRARY_PATH=`pwd`:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \
95 LD_LIBRARYN32_PATH=`pwd`:$(LD_LIBRARYN32_PATH) ; export LD_LIBRARYN32_PATH; \
96 DYLD_LIBRARY_PATH=`pwd`:$(DYLD_LIBRARY_PATH) ; export DYLD_LIBRARY_PATH; \
97 SHLIB_PATH=`pwd`:$(SHLIB_PATH) ; export SHLIB_PATH; \
99 if echo hello world | ${QEMU_RUN} ./minigzipsh | ${QEMU_RUN} ./minigzipsh -d && ${QEMU_RUN} ./examplesh $$TMPSH; then \
100 echo ' *** zlib shared test OK ***'; \
102 echo ' *** zlib shared test FAILED ***'; false; \
108 if echo hello world | ${QEMU_RUN} ./minigzip64 | ${QEMU_RUN} ./minigzip64 -d && ${QEMU_RUN} ./example64 $$TMP64; then \
109 echo ' *** zlib 64-bit test OK ***'; \
111 echo ' *** zlib 64-bit test FAILED ***'; false; \
115 infcover.o: $(SRCDIR)test/infcover.c $(SRCDIR)zlib.h zconf.h
116 $(CC) $(CFLAGS) $(ZINCOUT) -c -o $@ $(SRCDIR)test/infcover.c
118 infcover: infcover.o libz.a
119 $(CC) $(CFLAGS) -o $@ infcover.o libz.a
123 ${QEMU_RUN} ./infcover
127 $(AR) $(ARFLAGS) $@ $(OBJS)
128 -@ ($(RANLIB) $@ || true) >/dev/null 2>&1
131 $(CPP) match.S > _match.s
137 $(CPP) match.S > _match.s
138 $(CC) -c -fPIC _match.s
142 example.o: $(SRCDIR)test/example.c $(SRCDIR)zlib.h zconf.h
143 $(CC) $(CFLAGS) $(ZINCOUT) -c -o $@ $(SRCDIR)test/example.c
145 minigzip.o: $(SRCDIR)test/minigzip.c $(SRCDIR)zlib.h zconf.h
146 $(CC) $(CFLAGS) $(ZINCOUT) -c -o $@ $(SRCDIR)test/minigzip.c
148 example64.o: $(SRCDIR)test/example.c $(SRCDIR)zlib.h zconf.h
149 $(CC) $(CFLAGS) $(ZINCOUT) -D_FILE_OFFSET_BITS=64 -c -o $@ $(SRCDIR)test/example.c
151 minigzip64.o: $(SRCDIR)test/minigzip.c $(SRCDIR)zlib.h zconf.h
152 $(CC) $(CFLAGS) $(ZINCOUT) -D_FILE_OFFSET_BITS=64 -c -o $@ $(SRCDIR)test/minigzip.c
155 adler32.o: $(SRCDIR)adler32.c
156 $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)adler32.c
158 crc32.o: $(SRCDIR)crc32.c
159 $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)crc32.c
161 deflate.o: $(SRCDIR)deflate.c
162 $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)deflate.c
164 infback.o: $(SRCDIR)infback.c
165 $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)infback.c
167 inffast.o: $(SRCDIR)inffast.c
168 $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)inffast.c
170 inflate.o: $(SRCDIR)inflate.c
171 $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)inflate.c
173 inftrees.o: $(SRCDIR)inftrees.c
174 $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)inftrees.c
176 trees.o: $(SRCDIR)trees.c
177 $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)trees.c
179 zutil.o: $(SRCDIR)zutil.c
180 $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)zutil.c
182 compress.o: $(SRCDIR)compress.c
183 $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)compress.c
185 uncompr.o: $(SRCDIR)uncompr.c
186 $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)uncompr.c
188 gzclose.o: $(SRCDIR)gzclose.c
189 $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)gzclose.c
191 gzlib.o: $(SRCDIR)gzlib.c
192 $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)gzlib.c
194 gzread.o: $(SRCDIR)gzread.c
195 $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)gzread.c
197 gzwrite.o: $(SRCDIR)gzwrite.c
198 $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)gzwrite.c
201 adler32.lo: $(SRCDIR)adler32.c
202 -@mkdir objs 2>/dev/null || test -d objs
203 $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/adler32.o $(SRCDIR)adler32.c
204 -@mv objs/adler32.o $@
206 crc32.lo: $(SRCDIR)crc32.c
207 -@mkdir objs 2>/dev/null || test -d objs
208 $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/crc32.o $(SRCDIR)crc32.c
211 deflate.lo: $(SRCDIR)deflate.c
212 -@mkdir objs 2>/dev/null || test -d objs
213 $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/deflate.o $(SRCDIR)deflate.c
214 -@mv objs/deflate.o $@
216 infback.lo: $(SRCDIR)infback.c
217 -@mkdir objs 2>/dev/null || test -d objs
218 $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/infback.o $(SRCDIR)infback.c
219 -@mv objs/infback.o $@
221 inffast.lo: $(SRCDIR)inffast.c
222 -@mkdir objs 2>/dev/null || test -d objs
223 $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/inffast.o $(SRCDIR)inffast.c
224 -@mv objs/inffast.o $@
226 inflate.lo: $(SRCDIR)inflate.c
227 -@mkdir objs 2>/dev/null || test -d objs
228 $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/inflate.o $(SRCDIR)inflate.c
229 -@mv objs/inflate.o $@
231 inftrees.lo: $(SRCDIR)inftrees.c
232 -@mkdir objs 2>/dev/null || test -d objs
233 $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/inftrees.o $(SRCDIR)inftrees.c
234 -@mv objs/inftrees.o $@
236 trees.lo: $(SRCDIR)trees.c
237 -@mkdir objs 2>/dev/null || test -d objs
238 $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/trees.o $(SRCDIR)trees.c
241 zutil.lo: $(SRCDIR)zutil.c
242 -@mkdir objs 2>/dev/null || test -d objs
243 $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/zutil.o $(SRCDIR)zutil.c
246 compress.lo: $(SRCDIR)compress.c
247 -@mkdir objs 2>/dev/null || test -d objs
248 $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/compress.o $(SRCDIR)compress.c
249 -@mv objs/compress.o $@
251 uncompr.lo: $(SRCDIR)uncompr.c
252 -@mkdir objs 2>/dev/null || test -d objs
253 $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/uncompr.o $(SRCDIR)uncompr.c
254 -@mv objs/uncompr.o $@
256 gzclose.lo: $(SRCDIR)gzclose.c
257 -@mkdir objs 2>/dev/null || test -d objs
258 $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/gzclose.o $(SRCDIR)gzclose.c
259 -@mv objs/gzclose.o $@
261 gzlib.lo: $(SRCDIR)gzlib.c
262 -@mkdir objs 2>/dev/null || test -d objs
263 $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/gzlib.o $(SRCDIR)gzlib.c
266 gzread.lo: $(SRCDIR)gzread.c
267 -@mkdir objs 2>/dev/null || test -d objs
268 $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/gzread.o $(SRCDIR)gzread.c
269 -@mv objs/gzread.o $@
271 gzwrite.lo: $(SRCDIR)gzwrite.c
272 -@mkdir objs 2>/dev/null || test -d objs
273 $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/gzwrite.o $(SRCDIR)gzwrite.c
274 -@mv objs/gzwrite.o $@
277 placebo $(SHAREDLIBV): $(PIC_OBJS) libz.a
278 $(LDSHARED) $(SFLAGS) -o $@ $(PIC_OBJS) $(LDSHAREDLIBC) $(LDFLAGS)
279 rm -f $(SHAREDLIB) $(SHAREDLIBM)
280 ln -s $@ $(SHAREDLIB)
281 ln -s $@ $(SHAREDLIBM)
284 example$(EXE): example.o $(STATICLIB)
285 $(CC) $(CFLAGS) -o $@ example.o $(TEST_LDFLAGS)
287 minigzip$(EXE): minigzip.o $(STATICLIB)
288 $(CC) $(CFLAGS) -o $@ minigzip.o $(TEST_LDFLAGS)
290 examplesh$(EXE): example.o $(SHAREDLIBV)
291 $(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS) -L. $(SHAREDLIBV)
293 minigzipsh$(EXE): minigzip.o $(SHAREDLIBV)
294 $(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS) -L. $(SHAREDLIBV)
296 example64$(EXE): example64.o $(STATICLIB)
297 $(CC) $(CFLAGS) -o $@ example64.o $(TEST_LDFLAGS)
299 minigzip64$(EXE): minigzip64.o $(STATICLIB)
300 $(CC) $(CFLAGS) -o $@ minigzip64.o $(TEST_LDFLAGS)
302 install-libs: $(LIBS)
303 -@if [ ! -d $(DESTDIR)$(exec_prefix) ]; then mkdir -p $(DESTDIR)$(exec_prefix); fi
304 -@if [ ! -d $(DESTDIR)$(libdir) ]; then mkdir -p $(DESTDIR)$(libdir); fi
305 -@if [ ! -d $(DESTDIR)$(sharedlibdir) ]; then mkdir -p $(DESTDIR)$(sharedlibdir); fi
306 -@if [ ! -d $(DESTDIR)$(man3dir) ]; then mkdir -p $(DESTDIR)$(man3dir); fi
307 -@if [ ! -d $(DESTDIR)$(pkgconfigdir) ]; then mkdir -p $(DESTDIR)$(pkgconfigdir); fi
308 rm -f $(DESTDIR)$(libdir)/$(STATICLIB)
309 cp $(STATICLIB) $(DESTDIR)$(libdir)
310 chmod 644 $(DESTDIR)$(libdir)/$(STATICLIB)
311 -@($(RANLIB) $(DESTDIR)$(libdir)/libz.a || true) >/dev/null 2>&1
312 -@if test -n "$(SHAREDLIBV)"; then \
313 rm -f $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBV); \
314 cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir); \
315 echo "cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)"; \
316 chmod 755 $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBV); \
317 echo "chmod 755 $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBV)"; \
318 rm -f $(DESTDIR)$(sharedlibdir)/$(SHAREDLIB) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBM); \
319 ln -s $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIB); \
320 ln -s $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBM); \
321 ($(LDCONFIG) || true) >/dev/null 2>&1; \
323 rm -f $(DESTDIR)$(man3dir)/zlib.3
324 cp $(SRCDIR)zlib.3 $(DESTDIR)$(man3dir)
325 chmod 644 $(DESTDIR)$(man3dir)/zlib.3
326 rm -f $(DESTDIR)$(pkgconfigdir)/zlib.pc
327 cp zlib.pc $(DESTDIR)$(pkgconfigdir)
328 chmod 644 $(DESTDIR)$(pkgconfigdir)/zlib.pc
329 # The ranlib in install is needed on NeXTSTEP which checks file times
330 # ldconfig is for Linux
332 install: install-libs
333 -@if [ ! -d $(DESTDIR)$(includedir) ]; then mkdir -p $(DESTDIR)$(includedir); fi
334 rm -f $(DESTDIR)$(includedir)/zlib.h $(DESTDIR)$(includedir)/zconf.h
335 cp $(SRCDIR)zlib.h zconf.h $(DESTDIR)$(includedir)
336 chmod 644 $(DESTDIR)$(includedir)/zlib.h $(DESTDIR)$(includedir)/zconf.h
339 cd $(DESTDIR)$(includedir) && rm -f zlib.h zconf.h
340 cd $(DESTDIR)$(libdir) && rm -f libz.a; \
341 if test -n "$(SHAREDLIBV)" -a -f $(SHAREDLIBV); then \
342 rm -f $(SHAREDLIBV) $(SHAREDLIB) $(SHAREDLIBM); \
344 cd $(DESTDIR)$(man3dir) && rm -f zlib.3
345 cd $(DESTDIR)$(pkgconfigdir) && rm -f zlib.pc
349 zlib.3.pdf: $(SRCDIR)zlib.3
350 groff -mandoc -f H -T ps $(SRCDIR)zlib.3 | ps2pdf - $@
352 zconf.h.cmakein: $(SRCDIR)zconf.h.in
353 -@ TEMPFILE=zconfh_$$; \
354 echo "/#define ZCONF_H/ a\\\\\n#cmakedefine Z_PREFIX\\\\\n#cmakedefine Z_HAVE_UNISTD_H\n" >> $$TEMPFILE &&\
355 sed -f $$TEMPFILE $(SRCDIR)zconf.h.in > $@ &&\
356 touch -r $(SRCDIR)zconf.h.in $@ &&\
359 zconf: $(SRCDIR)zconf.h.in
360 cp -p $(SRCDIR)zconf.h.in zconf.h
365 example$(EXE) minigzip$(EXE) examplesh$(EXE) minigzipsh$(EXE) \
366 example64$(EXE) minigzip64$(EXE) \
368 libz.* foo.gz so_locations \
369 _match.s maketree contrib/infback9/*.o
371 rm -f *.gcda *.gcno *.gcov
372 rm -f contrib/infback9/*.gcda contrib/infback9/*.gcno contrib/infback9/*.gcov
374 maintainer-clean: distclean
375 distclean: clean zconf zconf.h.cmakein
376 rm -f Makefile zlib.pc configure.log
378 @if [ -f Makefile.in ]; then \
379 printf 'all:\n\t-@echo "Please use ./configure first. Thank you."\n' > Makefile ; \
380 printf '\ndistclean:\n\tmake -f Makefile.in distclean\n' >> Makefile ; \
381 touch -r $(SRCDIR)Makefile.in Makefile ; fi
384 etags $(SRCDIR)*.[ch]
386 adler32.o zutil.o: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h
387 gzclose.o gzlib.o gzread.o gzwrite.o: $(SRCDIR)zlib.h zconf.h $(SRCDIR)gzguts.h
388 compress.o example.o minigzip.o uncompr.o: $(SRCDIR)zlib.h zconf.h
389 crc32.o: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)crc32.h
390 deflate.o: $(SRCDIR)deflate.h $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h
391 infback.o inflate.o: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h $(SRCDIR)inflate.h $(SRCDIR)inffast.h $(SRCDIR)inffixed.h
392 inffast.o: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h $(SRCDIR)inflate.h $(SRCDIR)inffast.h
393 inftrees.o: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h
394 trees.o: $(SRCDIR)deflate.h $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)trees.h
396 adler32.lo zutil.lo: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h
397 gzclose.lo gzlib.lo gzread.lo gzwrite.lo: $(SRCDIR)zlib.h zconf.h $(SRCDIR)gzguts.h
398 compress.lo example.lo minigzip.lo uncompr.lo: $(SRCDIR)zlib.h zconf.h
399 crc32.lo: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)crc32.h
400 deflate.lo: $(SRCDIR)deflate.h $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h
401 infback.lo inflate.lo: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h $(SRCDIR)inflate.h $(SRCDIR)inffast.h $(SRCDIR)inffixed.h
402 inffast.lo: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h $(SRCDIR)inflate.h $(SRCDIR)inffast.h
403 inftrees.lo: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h
404 trees.lo: $(SRCDIR)deflate.h $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)trees.h