# makefile for libpng on Linux ELF with gcc
# Copyright (C) 1996, 1997 Andreas Dilger
# Copyright (C) 1998 Greg Roelofs
# For conditions of distribution and use, see copyright notice in png.h

# Makefile modifications Copyright (c) 1998 -- Wayne Gramlich.
#
# Please use the same conditions for distribution as in png.h

ROOT=../..
include $(ROOT)/Makefile_common.mk
include $(ROOT)/Makefile_private.mk

# Various directories:
INCLUDE_DIRECTORY = $(ROOT)/include
LIB_DIRECTORY = $(ROOT)/lib
MAN_DIRECTORY = $(ROOT)/man
MAN1_DIRECTORY = $(ROOT)/man1
MAN3_DIRECTORY = $(ROOT)/man3
MAN5_DIRECTORY = $(ROOT)/man5
ZLIB_DIRECTORY = ../zlib

CC=gcc

#WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
#         -Wmissing-declarations -Wtraditional -Wcast-align \
#         -Wstrict-prototypes -Wmissing-prototypes #-Wconversion
CFLAGS=-I$(ZLIB_DIRECTORY) -Wall -O3 -funroll-loops -malign-loops=2 \
       -malign-functions=2 #$(WARNMORE) -g -DPNG_DEBUG=5

#LDFLAGS=-L. -Wl,-rpath,. -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) -lpng -lz -lm

# read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
# have to change it.
#PNGMAJ = 2
#PNGMIN = 1.0
#PNGVER = $(PNGMAJ).$(PNGMIN)

ZLIB = $(ZLIB_DIRECTORY)/$(PLATFORM)/libz.a

LIBPNG_BASES =		\
	png		\
	pngset		\
	pngget		\
	pngrutil	\
	pngtrans	\
	pngwutil	\
	pngread		\
	pngrio		\
	pngwio		\
	pngwrite	\
	pngrtran	\
	pngwtran	\
	pngmem		\
	pngerror	\
	pngpread
LIBPNG_C_SOURCES = ${LIBPNG_BASES:%=%.c}
LIBPNG_OBJECTS = ${LIBPNG_BASES:%=$(PLATFORM)/%.o}
LIBPNG = $(PLATFORM)/libpng.a

HEADERS =		\
	png.h		\
	pngconf.h
OTHER_SOURCES =		\
	CHANGES		\
	INSTALL		\
	Makefile	\
	README		\
	TODO
MAN_SOURCES =		\
	libpng.3	\
	libpngpf.3	\
	png.5

PNGTEST_BASES =		\
	pngtest
PNGTEST_OBJECTS = ${PNGTEST_BASES:%=$(PLATFORM)/%.o}
PNGTEST = $(PLATFORM)/pngtest

SOURCES =			\
	${LIBPNG_C_SOURCES}	\
	${HEADERS}		\
	${MAN_SOURCES}		\
	${OTHER_SOURCES}
ALL_SOURCES =			\
	${SOURCES}		\
	index.html		\
	source.html
INSTALL_TARGETS =			\
	$(MAN3_DIRECTORY)/libpng.3	\
	$(MAN3_DIRECTORY)/libpngpf.3	\
	$(MAN5_DIRECTORY)/png.5		\
	$(INCLUDE_DIRECTORY)/png.h	\
	$(INCLUDE_DIRECTORY)/pngconf.h	\
	$(LIB_DIRECTORY)/$(LIBPNG)

.PHONY: all install test clean platform site


all: platform $(WAIT) $(LIBPNG) $(PNGTEST)

# Library stuff:
$(LIBPNG): ${LIBPNG_OBJECTS}
	ar rc $@ ${LIBPNG_OBJECTS}

#libpng.so: libpng.so.$(PNGMAJ)
#	ln -sf libpng.so.$(PNGMAJ) libpng.so
#
#libpng.so.$(PNGMAJ): libpng.so.$(PNGVER)
#	ln -sf libpng.so.$(PNGVER) libpng.so.$(PNGMAJ)
#
#libpng.so.$(PNGVER): $(OBJSDLL)
#	$(CC) -shared -Wl,-soname,libpng.so.$(PNGMAJ) -o libpng.so.$(PNGVER) \
#	 $(OBJSDLL)

# Test stuff:
$(PNGTEST): ${PNGTEST_OBJECTS} $(LIBPNG)
	$(CC) -o $@ $(CFLAGS) ${PNGTEST_OBJECTS} $(LIBPNG) $(ZLIB) -lm

test: platform $(WAIT) $(PNGTEST) pngtest.out
	./$(PNGTEST) > $(PLATFORM)/pngtest.out 2>&1
	cmp pngtest.out $(PLATFORM)/pngtest.out

# Install stuff:
install: platform $(WAIT) $(LIBPNG) ${INSTALL_TARGETS}

$(MAN3_DIRECTORY)/libpng.3: libpng.3
	mkdir -p $(MAN3_DIRECTORY)
	cp libpng.3 $@
	chmod 644 $@

$(MAN3_DIRECTORY)/libpngpf.3: libpngpf.3
	mkdir -p $(MAN3_DIRECTORY)
	cp libpng.3 $@
	chmod 644 $@

$(INCLUDE_DIRECTORY)/png.h: png.h
	mkdir -p $(INCLUDE_DIRECTORY)
	cp png.h $@
	chmod 644 $@

$(INCLUDE_DIRECTORY)/pngconf.h: png.h
	mkdir -p $(INCLUDE_DIRECTORY)
	cp pngconf.h $@
	chmod 644 $@

$(MAN5_DIRECTORY)/png.5: png.5
	mkdir -p $(MAN5_DIRECTORY)
	cp libpng.3 $@
	chmod 644 $@

$(LIB_DIRECTORY)/$(LIBPNG): $(LIBPNG)
	mkdir -p $(LIB_DIRECTORY)/$(PLATFORM)
	cp $(LIBPNG) $@
	chmod 644 $@

# Misc stuff:
site: clean

clean:
	rm -rf $(PLATFORM) pngout.png

copy: source.html
	set -e ;							\
	if [ "$(COPY_DIRECTORY)" = "" ] ;				\
	  then								\
	    echo "Please set COPY_DIRECTORY in `pwd`" ;			\
	    exit 1 ;							\
	  fi
	rm -rf $(COPY_DIRECTORY)
	mkdir -p $(COPY_DIRECTORY)
	cp ${ALL_SOURCES} $(COPY_DIRECTORY)

$(ZLIB):
	cd $(ZLIB_DIRECTORY) ; $(MAKE)

source.html: Makefile ${SOURCES}
	@echo -n "Generating $@..."
	@rm -f $@
	@echo '<HTML>' > $@
	@echo '<Head>' >> $@
	@echo '<Title>libpng Source Files</Title>' >> $@
	@echo '</Head>' >> $@
	@echo '<Body>' >> $@
	@echo '<P>These are the source files for the' >> $@
	@echo '<A HRef="index.html">PBMPlus Download</A>' >> $@
	@echo 'top-level directory.</P>' >> $@
	@echo '<H1>' >> $@
	@echo 'libpng Source Files' >> $@
	@echo '</H1>' >> $@
	@echo '<P>The following source files are available:</P>' >> $@
	@echo '<UL>' >> $@
	@for i in `ls ${SOURCES} | sort` ; do 				\
		echo "  <LI><A HRef='$$i'>$$i</A></LI>" >> $@ ;		\
		done
	@echo '</UL>' >> $@
	@echo '<HR>' >> $@
	@echo '<Address>' >> $@
	@echo 'This page is' >> $@
	@echo '<A HRef="../../../../copyright.html">' >> $@
	@echo 'Copyright</A> (c) 1998 by' >> $@
	@echo '<A HRef="../../../../gramlich.html">' >> $@
	@echo 'Wayne Gramlich</A> All rights reserved.' >> $@
	@echo '</Address>' >> $@
	@echo '</Body>' >> $@
	@echo '</HTML>' >> $@
	@echo "Done"
	
platform: $(PLATFORM)/touched

$(PLATFORM)/touched:
	rm -rf $(PLATFORM)
	mkdir $(PLATFORM)
	touch $@

