# makefile for cygwin on x86
#   Builds both dll (with import lib) and static lib versions
#   of the library, and builds two copies of pngtest: one
#   statically linked and one dynamically linked.
#
# Copyright (C) 2002, 2006, 2007 Soren Anderson, Charles Wilson,
#    and Glenn Randers-Pehrson, based on makefile for linux-elf w/mmx by:
# Copyright (C) 1998-2000 Greg Roelofs
# Copyright (C) 1996, 1997 Andreas Dilger
# For conditions of distribution and use, see copyright notice in png.h

# This makefile intends to support building outside the src directory
# if desired. When invoking it, specify an argument to SRCDIR on the
# command line that points to the top of the directory where your source
# is located.

ifdef SRCDIR
VPATH = $(SRCDIR)
else
SRCDIR = .
endif

# Override DESTDIR= on the make install command line to easily support
# installing into a temporary location.  Example:
#
#    make install DESTDIR=/tmp/build/libpng
#
# If you're going to install into a temporary location
# via DESTDIR, $(DESTDIR)$(prefix) must already exist before
# you execute make install.

DESTDIR=

# To disable assembler optimizations, add '-DPNG_NO_MMX_CODE' to
# $CFLAGS.

CC=gcc
ifdef MINGW
MINGW_CCFLAGS=-mno-cygwin -I/usr/include/mingw
MINGW_LDFLAGS=-mno-cygwin -L/usr/lib/mingw
endif

# Where "make install" puts libpng*.a, *png*.dll, png.h, and pngconf.h
ifndef prefix
prefix=/usr
$(warning You haven't specified a 'prefix=' location. Defaulting to "/usr")
endif
exec_prefix=$(prefix)

# Where the zlib library and include files are located
ZLIBLIB= /usr/lib
ZLIBINC=
#ZLIBLIB=../zlib
#ZLIBINC=../zlib

ALIGN=
# for i386:
#ALIGN=-malign-loops=2 -malign-functions=2

WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
	-Wmissing-declarations -Wtraditional -Wcast-align \
	-Wstrict-prototypes -Wmissing-prototypes #-Wconversion

### if you don't need thread safety, but want the asm accel
#CFLAGS= $(strip $(MINGW_CCFLAGS) -DPNG_THREAD_UNSAFE_OK \
#	$(addprefix -I,$(ZLIBINC)) -Wall -O $(ALIGN) -funroll-loops \
#	-fomit-frame-pointer)  # $(WARNMORE) -g -DPNG_DEBUG=5
### if you need thread safety and want (minimal) asm accel
#CFLAGS= $(strip $(MINGW_CCFLAGS) $(addprefix -I,$(ZLIBINC)) \
#	-Wall -O $(ALIGN) -funroll-loops \
#	-fomit-frame-pointer)  # $(WARNMORE) -g -DPNG_DEBUG=5
### Normal (non-asm) compilation
CFLAGS= $(strip $(MINGW_CCFLAGS) $(addprefix -I,$(ZLIBINC)) \
        -Wall -O3 $(ALIGN) -funroll-loops -DPNG_NO_MMX_CODE \
	-fomit-frame-pointer) # $(WARNMORE) -g -DPNG_DEBUG=5

LIBNAME = libpng12
PNGMAJ = 0
CYGDLL = 12
PNGMIN = 1.2.19beta17
PNGVER = $(PNGMAJ).$(PNGMIN)

SHAREDLIB=cygpng$(CYGDLL).dll
STATLIB=libpng.a
IMPLIB=libpng.dll.a
SHAREDDEF=libpng.def
LIBS=$(SHAREDLIB) $(STATLIB)
EXE=.exe

LDFLAGS=$(strip -L. $(MINGW_LDFLAGS) -lpng $(addprefix -L,$(ZLIBLIB)) -lz)
LDSFLAGS=$(strip -shared -L.  $(MINGW_LDFLAGS) -Wl,--export-all)
LDEXTRA=-Wl,--out-implib=$(IMPLIB) $(addprefix -L,$(ZLIBLIB)) -lz

MKDIR_P=/bin/mkdir -pv
RANLIB=ranlib
#RANLIB=echo

INCPATH=$(prefix)/include
LIBPATH=$(exec_prefix)/lib

BINPATH=$(exec_prefix)/bin
MANPATH=$(prefix)/man
MAN3PATH=$(MANPATH)/man3
MAN5PATH=$(MANPATH)/man5

# cosmetic: shortened strings:
S =$(SRCDIR)
D =$(DESTDIR)
DB =$(D)$(BINPATH)
DI =$(D)$(INCPATH)
DL =$(D)$(LIBPATH)

OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
	pngwtran.o pngmem.o pngerror.o pngpread.o pnggccrd.o

OBJSDLL = $(OBJS:.o=.pic.o)

.SUFFIXES: .c .o .pic.o

%.o : %.c
	$(CC) -c $(CFLAGS) -o $@ $<
%.pic.o : CFLAGS += -DPNG_BUILD_DLL
%.pic.o : %.c
	$(CC) -c $(CFLAGS) -o $@ $<

all: all-static all-shared libpng.pc libpng-config libpng.pc libpng-config

# Make this to verify that "make [...] install" will do what you want.
buildsetup-tell:
	@echo  VPATH is set to: \"$(VPATH)\"
	@echo  prefix is set to: \"$(prefix)\"
	@echo -e INCPATH,LIBPATH, etc. are set to:'\n' \
 $(addprefix $(D),$(INCPATH)'\n' $(LIBPATH)'\n' $(BINPATH)'\n' \
   $(MANPATH)'\n' $(MAN3PATH)'\n' $(MAN5PATH)'\n')'\n'

libpng.pc: scripts/libpng.pc.in
	@echo -e Making pkg-config file for this libpng installation..'\n' \
           using PREFIX=\"$(prefix)\"'\n'
	cat $(S)/scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! | \
	   sed -e s/-lm// > libpng.pc

libpng-config: scripts/libpng-config-head.in scripts/libpng-config-body.in
	@echo -e Making $(LIBNAME) libpng-config file for this libpng \
 installation..'\n' using PREFIX=\"$(prefix)\"'\n'
	( cat $(S)/scripts/libpng-config-head.in; \
	echo prefix=\"$(prefix)\"; \
	echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \
	echo L_opts=\"-L$(LIBPATH)\"; \
	echo libs=\"-lpng$(CYGDLL) -lz\"; \
	cat $(S)/scripts/libpng-config-body.in ) > libpng-config
	chmod +x libpng-config

static: all-static
shared: all-shared
all-static: $(STATLIB) pngtest-stat$(EXE)
all-shared: $(SHAREDLIB) pngtest$(EXE)

pnggccrd.o: pnggccrd.c png.h pngconf.h
	@echo ""
	@echo '    You can ignore the "control reaches end of non-void function"'
	@echo '    warning and "<variable> defined but not used" warnings:'
	@echo ""
	$(CC) -c $(CFLAGS) -o $@ $<

pnggccrd.pic.o:	pnggccrd.c png.h pngconf.h
	@echo ""
	@echo '    You can ignore the "control reaches end of non-void function"'
	@echo '    warning and "<variable> defined but not used" warnings:'
	@echo ""
	$(CC) -c $(CFLAGS) -DPNG_BUILD_DLL -o $@ $<

$(STATLIB): $(OBJS)
	ar rc $@ $(OBJS)
	$(RANLIB) $@

$(SHAREDDEF): scripts/pngw32.def
	cat $< | sed -e '1{G;s/^\(.*\)\(\n\)/EXPORTS/;};2,/^EXPORTS/d' | \
	sed -e 's/\([^;]*\);/;/' > $@

$(SHAREDLIB): $(OBJSDLL) $(SHAREDDEF)
	$(CC) $(LDSFLAGS) -o $@ $(OBJSDLL) -L. $(LDEXTRA)

pngtest$(EXE): pngtest.pic.o $(SHAREDLIB)
	$(CC) $(CFLAGS) $< $(LDFLAGS) -o $@

pngtest-stat$(EXE): pngtest.o $(STATLIB)
	$(CC) -static $(CFLAGS) $< $(LDFLAGS) -o $@

pngtest.pic.o: pngtest.c
	$(CC) $(CFLAGS) -c $< -o $@

pngtest.o: pngtest.c
	$(CC) $(CFLAGS) -c $< -o $@

test: test-static test-shared

test-static: pngtest-stat$(EXE)
	./pngtest-stat $(S)/pngtest.png

test-shared: pngtest$(EXE)
	./pngtest $(S)/pngtest.png

install-static: $(STATLIB) install-headers install-man
	-@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi
	install -m 644 $(STATLIB) $(DL)/$(LIBNAME).a
	-@rm -f $(DL)/$(STATLIB)
	(cd $(DL); ln -sf $(LIBNAME).a $(STATLIB))

install-shared: $(SHAREDLIB) libpng.pc libpng-config install-headers install-man
	-@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi
	-@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi
	-@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi
	-@/bin/rm -f $(DL)/pkgconfig/$(LIBNAME).pc
	-@/bin/rm -f $(DL)/pkgconfig/libpng.pc
	install -m 644 $(IMPLIB) $(DL)/$(LIBNAME).dll.a
	-@rm -f $(DL)/$(IMPLIB)
	(cd $(DL); ln -sf $(LIBNAME).dll.a $(IMPLIB))
	install -s -m 755 $(SHAREDLIB) $(DB)
	install -m 644 libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc
	(cd $(DL)/pkgconfig; ln -sf $(LIBNAME).pc libpng.pc)

install-headers:
	-@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi
	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
	-@rm -f $(DI)/png.h
	-@rm -f $(DI)/pngconf.h
	install -m 644 $(S)/png.h $(S)/pngconf.h $(DI)/$(LIBNAME)
	-@rm -f $(DI)/libpng
	(cd $(DI); ln -sf $(LIBNAME) libpng; ln -sf $(LIBNAME)/* .)

install-man:
	-@if [ ! -d $(D)$(MAN3PATH) ]; then $(MKDIR_P) $(D)$(MAN3PATH); fi
	-@if [ ! -d $(D)$(MAN5PATH) ]; then $(MKDIR_P) $(D)$(MAN5PATH); fi
	install -m 644 $(S)/libpngpf.3 $(S)/libpng.3 $(D)$(MAN3PATH)
	install -m 644 $(S)/png.5 $(D)$(MAN5PATH)

install-config: libpng-config
	-@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi
	-@/bin/rm -f $(DB)/libpng-config
	-@/bin/rm -f $(DB)/$(LIBNAME)-config
	cp libpng-config $(DB)/$(LIBNAME)-config
	chmod 755 $(DB)/$(LIBNAME)-config
	(cd $(DB); ln -sf $(LIBNAME)-config libpng-config)

# Run this to verify that a future `configure' run will pick up the settings
# you want.
test-config-install: SHELL=/bin/bash
test-config-install: $(DB)/libpng-config
	@echo -e Testing libpng-config functions...'\n'
	@ for TYRA in LDFLAGS CPPFLAGS CFLAGS LIBS VERSION; \
   do \
    printf "(%d)\t %10s =%s\n" $$(($$gytiu + 1)) $$TYRA \
    "$$($(DB)/libpng-config `echo --$$TYRA |tr '[:upper:]' '[:lower:]'`)"; \
    gytiu=$$(( $$gytiu + 1 )); \
   done

install: install-static install-shared install-man install-config

# If you installed in $(DESTDIR), test-installed won't work until you
# move the library to its final location.  Use test-dd to test it
# before then.

test-dd:
	echo
	echo Testing installed dynamic shared library in $(DL).
	$(CC) -I$(DI) $(CFLAGS) \
	   `$(BINPATH)/libpng12-config --cflags` pngtest.c \
	   -L$(DL) -L$(ZLIBLIB) \
	   -o pngtestd `$(BINPATH)/libpng12-config --ldflags`
	./pngtestd pngtest.png

test-installed:
	$(CC) $(CFLAGS) \
	   `$(BINPATH)/libpng12-config --cflags` pngtest.c \
	   -L$(ZLIBLIB) \
	   -o pngtesti$(EXE) `$(BINPATH)/libpng12-config --ldflags`
	./pngtesti$(EXE) pngtest.png

clean:
	/bin/rm -f *.pic.o *.o $(STATLIB) $(IMPLIB) $(SHAREDLIB) \
	pngtest-stat$(EXE) pngtest$(EXE) pngout.png $(SHAREDDEF) \
	libpng-config libpng.pc pngtesti$(EXE)

DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
writelock:
	chmod a-w *.[ch35] $(DOCS) scripts/*

.PHONY: buildsetup-tell libpng.pc libpng-config test-config-install clean

# DO NOT DELETE THIS LINE -- make depend depends on it.

png.o png.pic.o:		png.h pngconf.h png.c
pngerror.o pngerror.pic.o:	png.h pngconf.h pngerror.c
pngrio.o pngrio.pic.o:		png.h pngconf.h pngrio.c
pngwio.o pngwio.pic.o:		png.h pngconf.h pngwio.c
pngmem.o pngmem.pic.o:		png.h pngconf.h pngmem.c
pngset.o pngset.pic.o:		png.h pngconf.h pngset.c
pngget.o pngget.pic.o:		png.h pngconf.h pngget.c
pnggccrd.o pnggccrd.pic.o:	png.h pngconf.h pnggccrd.c
pngread.o pngread.pic.o:	png.h pngconf.h pngread.c
pngrtran.o pngrtran.pic.o:	png.h pngconf.h pngrtran.c
pngrutil.o pngrutil.pic.o:	png.h pngconf.h pngrutil.c
pngtrans.o pngtrans.pic.o:	png.h pngconf.h pngtrans.c
pngwrite.o pngwrite.pic.o:	png.h pngconf.h pngwrite.c
pngwtran.o pngwtran.pic.o:	png.h pngconf.h pngwtran.c
pngwutil.o pngwutil.pic.o:	png.h pngconf.h pngwutil.c
pngpread.o pngpread.pic.o:	png.h pngconf.h pngpread.c

pngtest.o:			png.h pngconf.h pngtest.c
pngtest-stat.o:			png.h pngconf.h pngtest.c



