# Makefile for pbmplus tools.
#
# Copyright (C) 1989, 1991 by Jef Poskanzer.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted, provided
# that the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation.  This software is provided "as is" without express or
# implied warranty.

# CONFIGURE: gcc makes things go faster on some machines, but not everyone
# has it.  Warning: do not use gcc's -finline-functions or -fstrength-reduce
# flags, they can produce incorrect code.  (This is with gcc versions 1.35,
# 1.36, and 1.37, later versions may fix these bugs.)  Also, on some systems
# gcc can't compile pnmconvol - dunno why.  And on some systems you can't
# use the -ansi flag, it gives compilation errors in <math.h>.
CC =		cc
#CC =		gcc
#CC =		gcc -fcombine-regs -fpcc-struct-return
#CC =		gcc -ansi -pedantic -fcombine-regs -fpcc-struct-return

# CONFIGURE: cc flags go here.
CFLAGS =	-O
#CFLAGS =	-g
#CFLAGS =	-g -O

# CONFIGURE: ld flags go here.  Eunice users may want to use -noshare so that
# the binaries can run standalone.
LDFLAGS =	-s
#LDFLAGS =	
#LDFLAGS =	-noshare

# CONFIGURE: If you have an X11-style rgb color names file, define its
# path here.  This is used by PPM to parse color names into rgb values.
# If you don't have such a file, comment this out and use the alternative
# hex and decimal forms to specify colors (see ppm/pgmtoppm.1 for details).
RGBDEF =	-DRGB_DB=\"/usr/lib/X11/rgb\"

# CONFIGURE: PBMPLUS's support for TIFF files depends on the library from
# Sam Leffler's TIFF Software package - see the OTHER.SYSTEMS file for a
# full description and access information.  To configure PBMPLUS to use the
# library: first, if necessary, fetch the TIFF Software, unpack it in a
# scratch directory somewhere, and move the libtiff subdirectory right here
# into the PBMPLUS top-level directory.  Configure and "make" in the
# libtiff directory.  Yes, you do have to do the TIFF make by hand, the
# general PBMPLUS make will *not* make libtiff.  Finally, uncomment the
# following five definitions.
#
# Libtiff is pretty good about portability, but there are some machines
# it has problems on.  If you run into problems, you may wish to contact
# Sam directly, at the address listed in the OTHER.SYSTEMS file.
#
# By the way, you must have at least version 2.4 of libtiff.  Earlier
# versions will not work.
TIFFDEF =	-DLIBTIFF
TIFFINC =	-I../libtiff
TIFFLIB =	../libtiff/libtiff.a
TIFFBINARIES =	tifftopnm pnmtotiff
TIFFOBJECTS =	tifftopnm.o pnmtotiff.o

# CONFIGURE: Define the directory that you want the binaries copied to.
# If you need scripts and binaries to be in different directories, you
# can set that up too.
INSTALLBINARIES =	/usr/new/pbmplus
INSTALLSCRIPTS =	$(INSTALLBINARIES)

# CONFIGURE: Define the directories that you want the manual sources copied to,
# plus the suffix you want them to have.
INSTALLMANUALS1 =	/usr/man/mann
SUFFIXMANUALS1 =	n
INSTALLMANUALS3 =	/usr/man/mann
SUFFIXMANUALS3 =	n
INSTALLMANUALS5 =	/usr/man/mann
SUFFIXMANUALS5 =	n

# CONFIGURE: Normally the man pages are installed using "cp".  By changing
# this define you can use something else, for example a script that calls
# compress or pack.
MANCP =			cp

# CONFIGURE: Normally the Makefiles build and install separate binaries for
# each program.  However, on some systems (especially those without shared
# libraries) this can mean a lot of space.  In this case you might try
# building a "merge" instead.  The idea here is to link all the binaries
# together into one huge executable, with a tiny dispatch program as the
# main.  Then the merged binary is installed with file-system links for
# each program it includes.  The dispatch routine can tell which program
# to run by looking at argv[0].  On a Sun3 under SunOS 3.5 the space for
# executables went from 2.9 meg to .36 meg.
#
# Note that if you make a "merge", the executables don't get created
# until you do the install.
all:		binaries
install:	install.bin install.man
#all:		merge
#install:	install.merge install.man

# End of configurable definitions.

SHELL =		/bin/sh
MAKE =		make
SUBDIRS =	pbm pgm ppm pnm

binaries:
	for i in $(SUBDIRS) ; do \
	    ( echo $$i ; cd $$i ; $(MAKE) $(MFLAGS) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'RGBDEF=$(RGBDEF)' 'TIFFDEF=$(TIFFDEF)' 'TIFFINC=$(TIFFINC)' 'TIFFLIB=$(TIFFLIB)' 'TIFFBINARIES=$(TIFFBINARIES)' 'TIFFOBJECTS=$(TIFFOBJECTS)' 'LDFLAGS=$(LDFLAGS)' binaries ); \
	done

merge:
	for i in $(SUBDIRS) ; do \
	    ( echo $$i ; cd $$i ; $(MAKE) $(MFLAGS) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'RGBDEF=$(RGBDEF)' 'TIFFDEF=$(TIFFDEF)' 'TIFFINC=$(TIFFINC)' 'TIFFLIB=$(TIFFLIB)' 'TIFFBINARIES=$(TIFFBINARIES)' 'TIFFOBJECTS=$(TIFFOBJECTS)' 'LDFLAGS=$(LDFLAGS)' merge ); \
	done

install.bin:
	for i in $(SUBDIRS) ; do \
	    ( echo $$i ; cd $$i ; $(MAKE) $(MFLAGS) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'RGBDEF=$(RGBDEF)' 'TIFFDEF=$(TIFFDEF)' 'TIFFINC=$(TIFFINC)' 'TIFFLIB=$(TIFFLIB)' 'TIFFBINARIES=$(TIFFBINARIES)' 'TIFFOBJECTS=$(TIFFOBJECTS)' 'LDFLAGS=$(LDFLAGS)' 'INSTALLBINARIES=$(INSTALLBINARIES)' 'INSTALLSCRIPTS=$(INSTALLSCRIPTS)' install.bin ); \
	done

install.merge:
	for i in $(SUBDIRS) ; do \
	    ( echo $$i ; cd $$i ; $(MAKE) $(MFLAGS) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'RGBDEF=$(RGBDEF)' 'TIFFDEF=$(TIFFDEF)' 'TIFFINC=$(TIFFINC)' 'TIFFLIB=$(TIFFLIB)' 'TIFFBINARIES=$(TIFFBINARIES)' 'TIFFOBJECTS=$(TIFFOBJECTS)' 'LDFLAGS=$(LDFLAGS)' 'INSTALLBINARIES=$(INSTALLBINARIES)' 'INSTALLSCRIPTS=$(INSTALLSCRIPTS)' install.merge ); \
	done

install.man:
	for i in $(SUBDIRS) ; do \
	    ( echo $$i ; cd $$i ; $(MAKE) $(MFLAGS) 'TIFFBINARIES=$(TIFFBINARIES)' 'INSTALLMANUALS1=$(INSTALLMANUALS1)' 'SUFFIXMANUALS1=$(SUFFIXMANUALS1)' 'INSTALLMANUALS3=$(INSTALLMANUALS3)' 'SUFFIXMANUALS3=$(SUFFIXMANUALS3)' 'INSTALLMANUALS5=$(INSTALLMANUALS5)' 'SUFFIXMANUALS5=$(SUFFIXMANUALS5)' 'MANCP=$(MANCP)' install.man ); \
	done

clean:
	-rm -f *.shar *.shar? art.*
	for i in $(SUBDIRS) ; do \
	    ( echo $$i ; cd $$i ; $(MAKE) $(MFLAGS) clean ); \
	done
