xref: /netbsd-src/common/dist/zlib/win32/Makefile.gcc (revision ec47cc4ba82fddf470a849188f4f11d4978b571d)
1aaf4ece6Schristos# Makefile for zlib, derived from Makefile.dj2.
2aaf4ece6Schristos# Modified for mingw32 by C. Spieler, 6/16/98.
3aaf4ece6Schristos# Updated for zlib 1.2.x by Christian Spieler and Cosmin Truta, Mar-2003.
4*c3423655Schristos# Last updated: Mar 2012.
5aaf4ece6Schristos# Tested under Cygwin and MinGW.
6aaf4ece6Schristos
7aaf4ece6Schristos# Copyright (C) 1995-2003 Jean-loup Gailly.
8aaf4ece6Schristos# For conditions of distribution and use, see copyright notice in zlib.h
9aaf4ece6Schristos
10*c3423655Schristos# To compile, or to compile and test, type from the top level zlib directory:
11aaf4ece6Schristos#
12*c3423655Schristos#   make -fwin32/Makefile.gcc;  make test testdll -fwin32/Makefile.gcc
13aaf4ece6Schristos#
14aaf4ece6Schristos# To install libz.a, zconf.h and zlib.h in the system directories, type:
15aaf4ece6Schristos#
16*c3423655Schristos#   make install -fwin32/Makefile.gcc
17*c3423655Schristos#
18*c3423655Schristos# BINARY_PATH, INCLUDE_PATH and LIBRARY_PATH must be set.
19*c3423655Schristos#
20*c3423655Schristos# To install the shared lib, append SHARED_MODE=1 to the make command :
21*c3423655Schristos#
22*c3423655Schristos#   make install -fwin32/Makefile.gcc SHARED_MODE=1
23aaf4ece6Schristos
24aaf4ece6Schristos# Note:
25aaf4ece6Schristos# If the platform is *not* MinGW (e.g. it is Cygwin or UWIN),
26aaf4ece6Schristos# the DLL name should be changed from "zlib1.dll".
27aaf4ece6Schristos
28aaf4ece6SchristosSTATICLIB = libz.a
29aaf4ece6SchristosSHAREDLIB = zlib1.dll
30*c3423655SchristosIMPLIB    = libz.dll.a
31*c3423655Schristos
32*c3423655Schristos#
33*c3423655Schristos# Set to 1 if shared object needs to be installed
34*c3423655Schristos#
35*c3423655SchristosSHARED_MODE=0
36aaf4ece6Schristos
37*c3423655Schristos#LOC = -DZLIB_DEBUG -g
38aaf4ece6Schristos
39*c3423655SchristosPREFIX =
40*c3423655SchristosCC = $(PREFIX)gcc
41aaf4ece6SchristosCFLAGS = $(LOC) -O3 -Wall
42aaf4ece6Schristos
43aaf4ece6SchristosAS = $(CC)
44aaf4ece6SchristosASFLAGS = $(LOC) -Wall
45aaf4ece6Schristos
46aaf4ece6SchristosLD = $(CC)
47*c3423655SchristosLDFLAGS = $(LOC)
48aaf4ece6Schristos
49*c3423655SchristosAR = $(PREFIX)ar
50aaf4ece6SchristosARFLAGS = rcs
51aaf4ece6Schristos
52*c3423655SchristosRC = $(PREFIX)windres
53aaf4ece6SchristosRCFLAGS = --define GCC_WINDRES
54aaf4ece6Schristos
55*c3423655SchristosSTRIP = $(PREFIX)strip
56*c3423655Schristos
57aaf4ece6SchristosCP = cp -fp
58aaf4ece6Schristos# If GNU install is available, replace $(CP) with install.
59aaf4ece6SchristosINSTALL = $(CP)
60aaf4ece6SchristosRM = rm -f
61aaf4ece6Schristos
62*c3423655Schristosprefix ?= /usr/local
63aaf4ece6Schristosexec_prefix = $(prefix)
64aaf4ece6Schristos
65*c3423655SchristosOBJS = adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o \
66*c3423655Schristos       gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o
67aaf4ece6SchristosOBJA =
68aaf4ece6Schristos
69*c3423655Schristosall: $(STATICLIB) $(SHAREDLIB) $(IMPLIB) example.exe minigzip.exe example_d.exe minigzip_d.exe
70aaf4ece6Schristos
71*c3423655Schristostest: example.exe minigzip.exe
72aaf4ece6Schristos	./example
73aaf4ece6Schristos	echo hello world | ./minigzip | ./minigzip -d
74aaf4ece6Schristos
75*c3423655Schristostestdll: example_d.exe minigzip_d.exe
76aaf4ece6Schristos	./example_d
77aaf4ece6Schristos	echo hello world | ./minigzip_d | ./minigzip_d -d
78aaf4ece6Schristos
79aaf4ece6Schristos.c.o:
80aaf4ece6Schristos	$(CC) $(CFLAGS) -c -o $@ $<
81aaf4ece6Schristos
82aaf4ece6Schristos.S.o:
83aaf4ece6Schristos	$(AS) $(ASFLAGS) -c -o $@ $<
84aaf4ece6Schristos
85aaf4ece6Schristos$(STATICLIB): $(OBJS) $(OBJA)
86aaf4ece6Schristos	$(AR) $(ARFLAGS) $@ $(OBJS) $(OBJA)
87aaf4ece6Schristos
88aaf4ece6Schristos$(IMPLIB): $(SHAREDLIB)
89aaf4ece6Schristos
90aaf4ece6Schristos$(SHAREDLIB): win32/zlib.def $(OBJS) $(OBJA) zlibrc.o
91*c3423655Schristos	$(CC) -shared -Wl,--out-implib,$(IMPLIB) $(LDFLAGS) \
92*c3423655Schristos	-o $@ win32/zlib.def $(OBJS) $(OBJA) zlibrc.o
93*c3423655Schristos	$(STRIP) $@
94aaf4ece6Schristos
95*c3423655Schristosexample.exe: example.o $(STATICLIB)
96aaf4ece6Schristos	$(LD) $(LDFLAGS) -o $@ example.o $(STATICLIB)
97*c3423655Schristos	$(STRIP) $@
98aaf4ece6Schristos
99*c3423655Schristosminigzip.exe: minigzip.o $(STATICLIB)
100aaf4ece6Schristos	$(LD) $(LDFLAGS) -o $@ minigzip.o $(STATICLIB)
101*c3423655Schristos	$(STRIP) $@
102aaf4ece6Schristos
103*c3423655Schristosexample_d.exe: example.o $(IMPLIB)
104aaf4ece6Schristos	$(LD) $(LDFLAGS) -o $@ example.o $(IMPLIB)
105*c3423655Schristos	$(STRIP) $@
106aaf4ece6Schristos
107*c3423655Schristosminigzip_d.exe: minigzip.o $(IMPLIB)
108aaf4ece6Schristos	$(LD) $(LDFLAGS) -o $@ minigzip.o $(IMPLIB)
109*c3423655Schristos	$(STRIP) $@
110*c3423655Schristos
111*c3423655Schristosexample.o: test/example.c zlib.h zconf.h
112*c3423655Schristos	$(CC) $(CFLAGS) -I. -c -o $@ test/example.c
113*c3423655Schristos
114*c3423655Schristosminigzip.o: test/minigzip.c zlib.h zconf.h
115*c3423655Schristos	$(CC) $(CFLAGS) -I. -c -o $@ test/minigzip.c
116aaf4ece6Schristos
117aaf4ece6Schristoszlibrc.o: win32/zlib1.rc
118aaf4ece6Schristos	$(RC) $(RCFLAGS) -o $@ win32/zlib1.rc
119aaf4ece6Schristos
120aaf4ece6Schristos.PHONY: install uninstall clean
121aaf4ece6Schristos
122*c3423655Schristosinstall: zlib.h zconf.h $(STATICLIB) $(IMPLIB)
123*c3423655Schristos	@if test -z "$(DESTDIR)$(INCLUDE_PATH)" -o -z "$(DESTDIR)$(LIBRARY_PATH)" -o -z "$(DESTDIR)$(BINARY_PATH)"; then \
124*c3423655Schristos		echo INCLUDE_PATH, LIBRARY_PATH, and BINARY_PATH must be specified; \
125*c3423655Schristos		exit 1; \
126*c3423655Schristos	fi
127*c3423655Schristos	-@mkdir -p '$(DESTDIR)$(INCLUDE_PATH)'
128*c3423655Schristos	-@mkdir -p '$(DESTDIR)$(LIBRARY_PATH)' '$(DESTDIR)$(LIBRARY_PATH)'/pkgconfig
129*c3423655Schristos	-if [ "$(SHARED_MODE)" = "1" ]; then \
130*c3423655Schristos		mkdir -p '$(DESTDIR)$(BINARY_PATH)'; \
131*c3423655Schristos		$(INSTALL) $(SHAREDLIB) '$(DESTDIR)$(BINARY_PATH)'; \
132*c3423655Schristos		$(INSTALL) $(IMPLIB) '$(DESTDIR)$(LIBRARY_PATH)'; \
133*c3423655Schristos	fi
134*c3423655Schristos	-$(INSTALL) zlib.h '$(DESTDIR)$(INCLUDE_PATH)'
135*c3423655Schristos	-$(INSTALL) zconf.h '$(DESTDIR)$(INCLUDE_PATH)'
136*c3423655Schristos	-$(INSTALL) $(STATICLIB) '$(DESTDIR)$(LIBRARY_PATH)'
137*c3423655Schristos	sed \
138*c3423655Schristos		-e 's|@prefix@|${prefix}|g' \
139*c3423655Schristos		-e 's|@exec_prefix@|${exec_prefix}|g' \
140*c3423655Schristos		-e 's|@libdir@|$(LIBRARY_PATH)|g' \
141*c3423655Schristos		-e 's|@sharedlibdir@|$(LIBRARY_PATH)|g' \
142*c3423655Schristos		-e 's|@includedir@|$(INCLUDE_PATH)|g' \
143*c3423655Schristos		-e 's|@VERSION@|'`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' zlib.h`'|g' \
144*c3423655Schristos		zlib.pc.in > '$(DESTDIR)$(LIBRARY_PATH)'/pkgconfig/zlib.pc
145aaf4ece6Schristos
146aaf4ece6Schristosuninstall:
147*c3423655Schristos	-if [ "$(SHARED_MODE)" = "1" ]; then \
148*c3423655Schristos		$(RM) '$(DESTDIR)$(BINARY_PATH)'/$(SHAREDLIB); \
149*c3423655Schristos		$(RM) '$(DESTDIR)$(LIBRARY_PATH)'/$(IMPLIB); \
150*c3423655Schristos	fi
151*c3423655Schristos	-$(RM) '$(DESTDIR)$(INCLUDE_PATH)'/zlib.h
152*c3423655Schristos	-$(RM) '$(DESTDIR)$(INCLUDE_PATH)'/zconf.h
153*c3423655Schristos	-$(RM) '$(DESTDIR)$(LIBRARY_PATH)'/$(STATICLIB)
154aaf4ece6Schristos
155aaf4ece6Schristosclean:
156aaf4ece6Schristos	-$(RM) $(STATICLIB)
157aaf4ece6Schristos	-$(RM) $(SHAREDLIB)
158aaf4ece6Schristos	-$(RM) $(IMPLIB)
159aaf4ece6Schristos	-$(RM) *.o
160aaf4ece6Schristos	-$(RM) *.exe
161aaf4ece6Schristos	-$(RM) foo.gz
162aaf4ece6Schristos
163aaf4ece6Schristosadler32.o: zlib.h zconf.h
164aaf4ece6Schristoscompress.o: zlib.h zconf.h
165aaf4ece6Schristoscrc32.o: crc32.h zlib.h zconf.h
166aaf4ece6Schristosdeflate.o: deflate.h zutil.h zlib.h zconf.h
167*c3423655Schristosgzclose.o: zlib.h zconf.h gzguts.h
168*c3423655Schristosgzlib.o: zlib.h zconf.h gzguts.h
169*c3423655Schristosgzread.o: zlib.h zconf.h gzguts.h
170*c3423655Schristosgzwrite.o: zlib.h zconf.h gzguts.h
171aaf4ece6Schristosinffast.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
172aaf4ece6Schristosinflate.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
173aaf4ece6Schristosinfback.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
174aaf4ece6Schristosinftrees.o: zutil.h zlib.h zconf.h inftrees.h
175aaf4ece6Schristostrees.o: deflate.h zutil.h zlib.h zconf.h trees.h
176aaf4ece6Schristosuncompr.o: zlib.h zconf.h
177aaf4ece6Schristoszutil.o: zutil.h zlib.h zconf.h
178