# makefile for mingw 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.
#
# Built from makefile.cygwin
# Copyright (C) 2002, 2006 Soren Anderson, Charles Wilson,
#    and Glenn Randers-Pehrson, based on makefile for linux-elf w/mmx by:
# Copyright (C) 1998-2000, 2007 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=

# If you're using a cross-compiler, add the appropriate prefix (e.g.,
# "i386-mingw32msvc-") to the following three commands:
CC=gcc
AR=ar
RANLIB=ranlib

MKDIR_P=/bin/mkdir -pv


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

# 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=

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
MINGDLL = 12
PNGMIN = 1.2.19beta17
PNGVER = $(PNGMAJ).$(PNGMIN)

SHAREDLIB=libpng$(MINGDLL).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))
LDEXTRA=-Wl,--out-implib=$(IMPLIB) $(addprefix -L,$(ZLIBLIB)) -lz

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$(MINGDLL) -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)

$(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 $@

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
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
pnggccrd.o pnggccrd.pic.o:	png.h pngconf.h pnggccrd.c

pngtest.o pngtest.pic.o:	png.h pngconf.h pngtest.c



