blob: 57c8ea3cf5d844a4bea0f3466537da17455f4a6e [file] [log] [blame]
Chris Craikb50c2172013-07-29 15:28:30 -07001# makefile for libpng using MSYS/gcc (shared, static library)
xNombre232e9ca2020-07-03 22:10:22 +02002# Copyright (C) 2019-2020 Cosmin Truta
Chris Craikb50c2172013-07-29 15:28:30 -07003# Copyright (C) 2012 Glenn Randers-Pehrson and Christopher M. Wheeler
4#
xNombred07bb0d2020-03-10 20:17:12 +01005# Portions taken from makefile.linux and makefile.gcc:
6# Copyright (C) 2000 Cosmin Truta
Sireesh Tripurarib478e662014-05-09 15:15:10 +05307# Copyright (C) 1998, 1999, 2002, 2006, 2008, 2010-2014 Greg Roelofs and
Chris Craikb50c2172013-07-29 15:28:30 -07008# Glenn Randers-Pehrson
Chris Craikb50c2172013-07-29 15:28:30 -07009# Copyright (C) 1996, 1997 Andreas Dilger
10# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
11#
12# This code is released under the libpng license.
13# For conditions of distribution and use, see the disclaimer
14# and license in png.h
15# # # # # # # # # # # # # # # # #
16prefix=/usr/local
17exec_prefix=$(prefix)
18
19# Library name:
20LIBNAME = libpng16
21PNGMAJ = 16
xNombred07bb0d2020-03-10 20:17:12 +010022RELEASE = 37
Chris Craikb50c2172013-07-29 15:28:30 -070023
24# Shared library names:
25LIBSO=$(LIBNAME).dll
26LIBSOMAJ=$(LIBNAME).dll.$(PNGMAJ)
27LIBSOREL=$(PNGMAJ).$(RELEASE)
28OLDSO=libpng.dll
29
30# Where the zlib library and include files are located.
31#ZLIBLIB=../zlib
32#ZLIBINC=../zlib
33ZLIBLIB=/usr/local/lib
34ZLIBINC=/usr/local/include
35
36# Compiler, linker, lib and other tools
37CC = gcc
38LD = $(CC)
39AR_RC = ar rcs
40RANLIB = ranlib
Matt Sarett9b1fe632015-11-25 10:21:17 -050041CP = cp
Chris Craikb50c2172013-07-29 15:28:30 -070042RM_F = rm -rf
43MKDIR_P=mkdir -p
44LN_SF=ln -sf
45
Sireesh Tripurarib478e662014-05-09 15:15:10 +053046CPPFLAGS = # -DPNG_DEBUG=5
xNombre232e9ca2020-07-03 22:10:22 +020047CFLAGS = -W -Wall -O2 # -g
Sireesh Tripurarib478e662014-05-09 15:15:10 +053048LDFLAGS =
Chris Craikb50c2172013-07-29 15:28:30 -070049LIBS = -lz -lm
50
51# File extensions
Sireesh Tripurarib478e662014-05-09 15:15:10 +053052EXEEXT=.exe
Chris Craikb50c2172013-07-29 15:28:30 -070053
54INCPATH=$(prefix)/include
55LIBPATH=$(exec_prefix)/lib
56MANPATH=$(prefix)/man
57BINPATH=$(exec_prefix)/bin
58
59# override DESTDIR= on the make install command line to easily support
60# installing into a temporary location. Example:
61#
62# make install DESTDIR=/tmp/build/libpng
63#
64# If you're going to install into a temporary location
65# via DESTDIR, $(DESTDIR)$(prefix) must already exist before
66# you execute make install.
Chris Craikb50c2172013-07-29 15:28:30 -070067DESTDIR=
68
69DB=$(DESTDIR)$(BINPATH)
70DI=$(DESTDIR)$(INCPATH)
71DL=$(DESTDIR)$(LIBPATH)
72DM=$(DESTDIR)$(MANPATH)
73
Matt Sarett9b1fe632015-11-25 10:21:17 -050074# Pre-built configuration
75# See scripts/pnglibconf.mak for more options
76PNGLIBCONF_H_PREBUILT = scripts/pnglibconf.h.prebuilt
77
xNombre232e9ca2020-07-03 22:10:22 +020078# File lists
79OBJS = png.o pngerror.o pngget.o pngmem.o pngpread.o \
80 pngread.o pngrio.o pngrtran.o pngrutil.o pngset.o \
81 pngtrans.o pngwio.o pngwrite.o pngwtran.o pngwutil.o
Chris Craikb50c2172013-07-29 15:28:30 -070082
83# Targets
84all: static shared
85
Matt Sarett9b1fe632015-11-25 10:21:17 -050086pnglibconf.h: $(PNGLIBCONF_H_PREBUILT)
87 $(CP) $(PNGLIBCONF_H_PREBUILT) $@
Chris Craikb50c2172013-07-29 15:28:30 -070088
Sireesh Tripurarib478e662014-05-09 15:15:10 +053089.c.o:
90 $(CC) -c $(CPPFLAGS) $(CFLAGS) $<
Chris Craikb50c2172013-07-29 15:28:30 -070091
Sireesh Tripurarib478e662014-05-09 15:15:10 +053092static: libpng.a pngtest$(EXEEXT)
Chris Craikb50c2172013-07-29 15:28:30 -070093
94shared: $(LIBSOMAJ)
95 $(CC) -shared -Wl,-soname,$(LIBSOMAJ) -o $(LIBSO)
96
97$(LIBSO): $(LIBSOMAJ)
98 $(LN_SF) $(LIBSOMAJ) $(LIBSO)
99
100$(LIBSOMAJ):
101 $(CC) -shared -Wl,-soname,$(LIBSOMAJ) -o $(LIBSOMAJ)
102
Sireesh Tripurarib478e662014-05-09 15:15:10 +0530103libpng.a: $(OBJS)
Chris Craikb50c2172013-07-29 15:28:30 -0700104 $(AR_RC) $@ $(OBJS)
105 $(RANLIB) $@
106
107install-headers: png.h pngconf.h pnglibconf.h
108 -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi
109 -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
110 cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME)
111 -@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h
112 -@$(RM_F) $(DI)/libpng
113 (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .)
114
115install-static: install-headers libpng.a
116 -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi
117 cp libpng.a $(DL)/$(LIBNAME).a
118 -@$(RM_F) $(DL)/libpng.a
119 (cd $(DL); $(LN_SF) $(LIBNAME).a libpng.a)
120
121libpng.pc:
122 cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
123 -e s!@exec_prefix@!$(exec_prefix)! \
124 -e s!@libdir@!$(LIBPATH)! \
125 -e s!@includedir@!$(INCPATH)! \
126 -e s!-lpng16!-lpng16\ -lz\ -lm! > libpng.pc
127
128libpng-config:
129 ( cat scripts/libpng-config-head.in; \
130 echo prefix=\"$(prefix)\"; \
131 echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \
132 echo L_opts=\"-L$(LIBPATH)\"; \
133 echo R_opts=\"-Wl,-rpath,$(LIBPATH)\"; \
134 echo libs=\"-lpng16 -lz -lm\"; \
135 cat scripts/libpng-config-body.in ) > libpng-config
136
137install-shared: install-headers $(LIBSOMAJ) libpng.pc
138 -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi
139 -@$(RM_F) $(DL)/$(LIBSO)
140 -@$(RM_F) $(DL)/$(OLDSO)
141 cp $(LIBSO) $(DL)/$(LIBSOREL)
142 (cd $(DL); \
143 $(LN_SF) $(LIBSOREL) $(LIBSO); \
144 $(LN_SF) $(LIBSO) $(OLDSO))
Chris Craikb50c2172013-07-29 15:28:30 -0700145 -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi
146 -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc
147 -@$(RM_F) $(DL)/pkgconfig/libpng.pc
148 cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc
149 (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc)
150
151install-man: libpng.3 libpngpf.3 png.5
152 -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi
153 -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi
154 -@$(RM_F) $(DM)/man3/libpng.3
155 -@$(RM_F) $(DM)/man3/libpngpf.3
156 cp libpng.3 $(DM)/man3
157 cp libpngpf.3 $(DM)/man3
158 -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi
159 -@$(RM_F) $(DM)/man5/png.5
160 cp png.5 $(DM)/man5
161
162install-config: libpng-config
163 -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi
164 -@$(RM_F) $(DB)/libpng-config
165 -@$(RM_F) $(DB)/$(LIBNAME)-config
166 cp libpng-config $(DB)/$(LIBNAME)-config
167 (cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config)
168
169install: install-static install-shared install-man install-config
170
Sireesh Tripurarib478e662014-05-09 15:15:10 +0530171test: pngtest$(EXEEXT)
172 ./pngtest$(EXEEXT)
Chris Craikb50c2172013-07-29 15:28:30 -0700173
Sireesh Tripurarib478e662014-05-09 15:15:10 +0530174pngtest$(EXEEXT): pngtest.o libpng.a
xNombred07bb0d2020-03-10 20:17:12 +0100175 $(LD) $(LDFLAGS) -o $@ pngtest.o libpng.a $(LIBS)
Chris Craikb50c2172013-07-29 15:28:30 -0700176
177clean:
xNombre232e9ca2020-07-03 22:10:22 +0200178 $(RM_F) $(OBJS) libpng.a
179 $(RM_F) pngtest*.o pngtest$(EXEEXT) pngout.png
180 $(RM_F) $(LIBSO) $(LIBSOMAJ)
181 $(RM_F) libpng.pc pnglibconf.h libpng-config
Chris Craikb50c2172013-07-29 15:28:30 -0700182
Sireesh Tripurarib478e662014-05-09 15:15:10 +0530183png.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h
184pngerror.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h
185pngget.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h
186pngmem.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h
187pngpread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h
188pngread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h
189pngrio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h
190pngrtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h
191pngrutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h
192pngset.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h
193pngtrans.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h
194pngwio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h
195pngwrite.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h
196pngwtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h
197pngwutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h
Chris Craikb50c2172013-07-29 15:28:30 -0700198
Sireesh Tripurarib478e662014-05-09 15:15:10 +0530199pngtest.o: png.h pngconf.h pnglibconf.h