# Makefile for pnmtopng/pngtopnm
# Copyright (C) 1995-1997 Willem van Schaik

# Makefile modificaitons Copyright(c) 1998 Wayne Gramlich

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

# Some directories:
BIN_DIRECTORY = $(ROOT)/bin/$(PLATFORM)
LIBPNG_DIRECTORY = ../libpng
PBMPLUS_DIRECTORY = ../pbmplus
PBM_DIRECTORY = $(PBMPLUS_DIRECTORY)/pbm
PGM_DIRECTORY =	$(PBMPLUS_DIRECTORY)/pgm
PNM_DIRECTORY = $(PBMPLUS_DIRECTORY)/pnm
PPM_DIRECTORY = $(PBMPLUS_DIRECTORY)/ppm
ZLIB_DIRECTORY = ../zlib
MAN_DIRECTORY = $(ROOT)/man
MAN1_DIRECTORY = $(MAN_DIRECTORY)/man1

# Some libraries:
LIBPNG = $(LIBPNG_DIRECTORY)/$(PLATFORM)/libpng.a
ZLIB = $(ZLIB_DIRECTORY)/$(PLATFORM)/libz.a
LIBPNM = $(PNM_DIRECTORY)/$(PLATFORM)/libpnm.a
LIBPPM = $(PPM_DIRECTORY)/$(PLATFORM)/libppm.a
LIBPGM = $(PGM_DIRECTORY)/$(PLATFORM)/libpgm.a
LIBPBM = $(PBM_DIRECTORY)/$(PLATFORM)/libpbm.a
LIBRARIES =		\
	$(LIBPNG)	\
	$(ZLIB)		\
	$(LIBPNM)	\
	$(LIBPPM)	\
	$(LIBPGM)	\
	$(LIBPBM)

# change to match your directories
#     it is suggested that you place things like libpng and zlib in 
#     version-specific directories like ../zlib-1.0 and that you make a 
#     symbolic link like "ln -s zlib-1.0 zlib" in the .. directory 

# where "make install" puts pnmtopng and pngtopnm
#INSTDIR=/Users/Willem/Unix

# Compiler options:
CC = gcc
INCLUDES =			\
	-I$(PBMPLUS_DIRECTORY)	\
	-I$(PNM_DIRECTORY) 	\
	-I$(PPM_DIRECTORY)	\
	-I$(PGM_DIRECOTRY)	\
	-I$(PBM_DIRECTORY)	\
	-I$(LIBPNG_DIRECTORY)	\
	-I$(ZLIB_DIRECTORY)
CFLAGS = ${INCLUDES} -O2

PNMTOPNG_BASES =		\
	pnmtopng
PNMTOPNG_C_SOURCES = ${PNMTOPNG_BASES:%=%.c}
PNMTOPNG_MAN = ${PNMTOPNG_BASES:%=%.1}
PNMTOPNG_OBJECTS = ${PNMTOPNG_BASES:%=$(PLATFORM)/%.o}
PNMTOPNG = $(PLATFORM)/pnmtopng

PNGTOPNM_BASES =		\
	pngtopnm
PNGTOPNM_C_SOURCES = ${PNGTOPNM_BASES:%=%.c}
PNGTOPNM_MAN = ${PNGTOPNM_BASES:%=%.1}
PNGTOPNM_OBJECTS = ${PNGTOPNM_BASES:%=$(PLATFORM)/%.o}
PNGTOPNM = $(PLATFORM)/pngtopnm

C_SOURCES =			\
	${PNMTOPNG_C_SOURCES}	\
	${PNGTOPNM_C_SOURCES}
OBJECTS =			\
	${PNMTOPNG_OBJECTS}	\
	${PNGTOPNM_OBJECTS}

PROGRAMS =			\
	$(PNMTOPNG)		\
	$(PNGTOPNM)

INSTALL_TARGETS =			\
	$(MAN1_DIRECTORY)/pngtopnm.1	\
	$(MAN1_DIRECTORY)/pnmtopng.1	\
	$(BIN_DIRECTORY)/pnmtopng	\
	$(BIN_DIRECTORY)/pngtopnm

MAN_SOURCES =			\
	${PNMTOPNG_MAN}		\
	${PNGTOPNM_MAN}
OTHER_SOURCES =			\
	pnmtopng.README		\
	pnmtopng.txt		\
	Makefile
SOURCES =			\
	${C_SOURCES}		\
	${MAN_SOURCES}		\
	${OTHER_SOURCES}
ALL_SOURCES =			\
	${SOURCES}		\
	index.html		\
	source.html

.PHONY: all clean test install platform site

all: platform $(WAIT) ${PROGRAMS}

$(PNMTOPNG): ${PNMTOPNG_OBJECTS} ${LIBRARIES}
	$(CC) -o $@ ${PNMTOPNG_OBJECTS} ${LIBRARIES} -lm

$(PNGTOPNM): ${PNGTOPNM_OBJECTS} ${LIBRARIES}
	$(CC) -o $@ ${PNGTOPNM_OBJECTS} ${LIBRARIES} -lm

${OBJECTS}:
	$(CC) -o $@ -c ${CFLAGS} ${@:$(PLATFORM)/%.o=%.c}

install: platform $(WAIT) ${INSTALL_TARGETS}

$(MAN1_DIRECTORY)/pnmtopng.1: pnmtopng.1
	mkdir -p $(MAN1_DIRECTORY)
	cp pnmtopng.1 $@
	chmod 644 $@

$(MAN1_DIRECTORY)/pngtopnm.1: pngtopnm.1
	mkdir -p $(MAN1_DIRECTORY)
	cp pngtopnm.1 $@
	chmod 644 $@

$(BIN_DIRECTORY)/pnmtopng: $(PNMTOPNG)
	mkdir -p $(BIN_DIRECTORY)
	cp $(PNMTOPNG) $@
	chmod 755 $@

$(BIN_DIRECTORY)/pngtopnm: $(PNGTOPNM)
	mkdir -p $(BIN_DIRECTORY)
	cp $(PNGTOPNM) $@
	chmod 755 $@

$(LIBPNG):
	cd $(LIBPNG_DIRECTORY); $(MAKE)

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

test:
	# No tests

site: clean

clean:
	rm -rf $(PLATFORM)

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)

source.html: Makefile ${SOURCES}
	@echo -n "Generating $@..."
	@rm -f $@
	@echo '<HTML>' > $@
	@echo '<Head>' >> $@
	@echo '<Title>PBMPlus PBM Directory 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 'PBMPlus PBM Directory 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 $@


