# Makefile for pnm tools.
#
# Copyright (C) 1989, 1991 by Jef Poskanzer.
#
# Modified by Robert A. Knop Jr. (rknop@cco.caltech.edu) 940126 for Amiga SAS/C
#
# 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.

# Default values, usually overridden by top-level Makefile.
#CC =		cc
#CC =		gcc -ansi -pedantic -fcombine-regs -fpcc-struct-return
CC =		sc
#CFLAGS =	-O
CFLAGS =
#CFLAGS =	-g -O
TIFFDEF =	DEFINE=LIBTIFF
TIFFINC =       IDIR=/libtiff
TIFFLIB =       /libtiff/libtiff.lib
TIFFBINARIES =  tifftopnm pnmtotiff
TIFFOBJECTS =   tifftopnm.o pnmtotiff.o
#LDFLAGS =	-s
LDFLAGS =	
INSTALLBINARIES =	/bin
INSTALLSCRIPTS =	$(INSTALLBINARIES)
INSTALLMANUALS1 =	/man/man1
SUFFIXMANUALS1 =	1
INSTALLMANUALS3 =	/man/man3
SUFFIXMANUALS3 =	3
INSTALLMANUALS5 =	/man/man5
SUFFIXMANUALS5 =	5
MANCP =			copy

PPMDIR =	/ppm
INCLUDEPPM =	IDIR=$(PPMDIR)
LIBPPM =	$(PPMDIR)/libppm.lib
DEFPPM =	$(PPMDIR)/ppm.h
DEFLIBPPM =	$(PPMDIR)/libppm.h

PGMDIR =	/pgm
INCLUDEPGM =	IDIR=$(PGMDIR)
LIBPGM =	$(PGMDIR)/libpgm.lib
DEFPGM =	$(PGMDIR)/pgm.h
DEFLIBPGM =	$(PGMDIR)/libpgm.h

PBMDIR =	/pbm
INCLUDEPBM =	IDIR=$(PBMDIR)
LIBPBM =	$(PBMDIR)/libpbm.lib
DEFPBM =	$(PBMDIR)/pbm.h /pbmplus.h
DEFLIBPBM =	$(PBMDIR)/libpbm.h

#SHELL =		/bin/sh
INCLUDE =	IDIR=/ $(INCLUDEPPM) $(INCLUDEPGM) $(INCLUDEPBM)
ALLCFLAGS =	$(CFLAGS) $(INCLUDE) $(TIFFDEF) $(TIFFINC)
LIBPNM =	libpnm.lib

PORTBINARIES =	pnmarith pnmcat pnmcrop pnmcut \
		pnmdepth pnmenlarge pnmfile pnmflip pnminvert \
		pnmnoraw pnmpad pnmpaste pnmtile \
		pnmtorast pnmtosir pnmtoxwd \
		rasttopnm sirtopnm xwdtopnm zeisstopnm
MATHBINARIES =	fitstopnm pnmalias pnmgamma pnmnlfilt pnmrotate pnmshear \
		pnmcomp giftopnm pnmhistmap pnmconvol pnmscale pnmtoddif \
		pnmtofits pnmtops
BINARIES =      $(PORTBINARIES) $(MATHBINARIES) $(TIFFBINARIES)
SCRIPTS =	anytopnm pnmindex pnmmargin pnmsmooth pstopnm

PORTOBJECTS =	fitstopnm giftopnm.o pnmalias.o \
		pnmarith.o pnmcat.o pnmcomp.o pnmconvol.o pnmcrop.o pnmcut.o \
		pnmdepth.o pnmenlarge.o pnmfile.o pnmflip.o pnmhistmap.o \
		pnminvert.o pnmnoraw.o pnmpad.o pnmpaste.o \
		pnmtile.o pnmtoddif.o pnmtofits.o pnmtops.o pnmtorast.o \
		pnmtosir.o pnmtoxwd.o \
		rasttopnm.o sirtopnm.o xwdtopnm.o zeisstopnm.o \
		pnmgamma.o pnmnlfilt.o pnmrotate.o pnmscale.o pnmshear.o
OBJECTS =	$(PORTOBJECTS) $(TIFFOBJECTS)

MANUALS1 =	$(BINARIES) $(SCRIPTS)
MANUALS3 =	libpnm
MANUALS5 =	pnm


all:		binaries
#all:		merge
install:	install.bin
#install:	install.merge


binaries:	$(BINARIES)

install.bin:	binaries $(SCRIPTS)
#	cd $(INSTALLBINARIES) ; rm -f $(BINARIES)
	copy $(BINARIES) TO $(INSTALLBINARIES) CLONE
#	cd $(INSTALLSCRIPTS) ; rm -f $(SCRIPTS)
 	execute < <(T:install_man.temp)
        foreach i in $(SCRIPTS)
		protect $${i} +s
		end
	<
	copy $(SCRIPTS) TO $(INSTALLSCRIPTS) CLONE
#	cd $(INSTALLSCRIPTS) ; chmod +x $(SCRIPTS)


#merge:		pnmmerge
#pnmmerge:	pnmmerge.c $(OBJECTS) $(LIBPNM) $(LIBPPM) $(LIBPGM) $(LIBPBM)
#	$(CC) $(ALLCFLAGS) $(LDFLAGS) -o $@ $@.c $(OBJECTS) -lm $(LIBPNM) $(LIBPPM) $(LIBPGM) $(LIBPBM) $(TIFFLIB)
#
#install.merge:	install.pnmmerge $(SCRIPTS)
#install.pnmmerge:	pnmmerge
#	cd $(INSTALLBINARIES) ; rm -f $(BINARIES)
#	cp pnmmerge $(INSTALLBINARIES)
#	cd $(INSTALLBINARIES) ; for i in $(BINARIES) ; do ln pnmmerge $$i ; done
#	rm -f $(INSTALLBINARIES)/pnmmerge
#	cd $(INSTALLSCRIPTS) ; rm -f $(SCRIPTS)
#	cp $(SCRIPTS) $(INSTALLSCRIPTS)
#	cd $(INSTALLSCRIPTS) ; chmod +x $(SCRIPTS)


install.man:
	execute < <(T:install_man.temp)
	foreach i in $(MANUALS1)
	    delete $(INSTALLMANUALS1)/$${i}.$(SUFFIXMANUALS1)
	    $(MANCP) $${i}.1 $(INSTALLMANUALS1)/$${i}.$(SUFFIXMANUALS1)
	end
	<
	execute < <(T:install_man.temp)
	foreach i in $(MANUALS3)
	    delete $(INSTALLMANUALS3)/$${i}.$(SUFFIXMANUALS3)
	    $(MANCP) $${i}.3 $(INSTALLMANUALS3)/$${i}.$(SUFFIXMANUALS3)
	end
	<
	execute < <(T:install_man.temp)
	foreach i in $(MANUALS5)
	    delete $(INSTALLMANUALS5)/$${i}.$(SUFFIXMANUALS5)
	    $(MANCP) $${i}.5 $(INSTALLMANUALS5)/$${i}.$(SUFFIXMANUALS5)
	end
	<


# Rules for plain programs.
$(PORTBINARIES) $(TIFFBINARIES):	pnm.h $(DEFPPM) $(DEFPGM) $(DEFPBM) $(LIBPNM) $(LIBPPM) $(LIBPGM) $(LIBPBM) $(TIFFLIB)
	$(CC) $(ALLCFLAGS) $(LDFLAGS) LINK $@.c $(LIBPNM) $(LIBPPM) $(LIBPGM) $(LIBPBM) $(TIFFLIB)

# Rule for math-dependent programs.
$(MATHBINARIES):        pnm.h $(DEFPPM) $(DEFPGM) $(DEFPBM) $(LIBPNM) \
			$(LIBPPM) $(LIBPGM) $(LIBPBM)
	$(CC) $(ALLCFLAGS) $(LDFLAGS) MATH=I LINK $@.c $(LIBPNM) $(LIBPPM) $(LIBPGM) $(LIBPBM)

# commented out until merge supported RKNOP 931107
# Rule for objects.
#$(OBJECTS):	pnm.h $(DEFPPM) $(DEFPGM) $(DEFPBM)
#	$(CC) $(ALLCFLAGS) "-Dmain=$*_main" -c $*.c

# And libraries.
$(LIBPBM):
	execute < <(T:smake_temp.com)
	cd $(PBMDIR)
	smake lib
	<
$(LIBPGM) FOO:
	execute < <(T:smake_temp.com)
	cd $(PGMDIR)
	smake lib
	<
$(LIBPPM) BAR:
	execute < <(T:smake_temp.com)
	cd $(PPMDIR)
	smake lib
	<
lib:		$(LIBPNM)
$(LIBPNM):	libpnm1.o libpnm2.o libpnm3.o libpnm4.o
	-delete $(LIBPNM)
	oml $(LIBPNM) r libpnm1.o libpnm2.o libpnm3.o libpnm4.o

libpnm1.o:	pnm.h $(DEFPPM) $(DEFPGM) $(DEFPBM) libpnm1.c
	$(CC) $(ALLCFLAGS) NOLINK libpnm1.c
libpnm2.o:	pnm.h $(DEFPPM) $(DEFPGM) $(DEFPBM) libpnm2.c $(DEFLIBPPM) \
		$(DEFLIBPGM) $(DEFLIBPBM)
	$(CC) $(ALLCFLAGS) NOLINK libpnm2.c
libpnm3.o:	pnm.h $(DEFPPM) $(DEFPGM) $(DEFPBM) libpnm3.c $(DEFLIBPPM) \
		$(DEFLIBPGM) $(DEFLIBPBM)
	$(CC) $(ALLCFLAGS) NOLINK libpnm3.c
libpnm4.o:	pnm.h $(DEFPPM) $(DEFPGM) $(DEFPBM) rast.h libpnm4.c
	$(CC) $(ALLCFLAGS) NOLINK libpnm4.c

# Other dependencies.
fitstopnm fitstopnm.o:		fitstopnm.c
giftopnm giftopnm.o:		giftopnm.c
pnmalias pnmalias.o:		pnmalias.c
pnmarith pnmarith.o:		pnmarith.c
pnmcat pnmcat.o:		pnmcat.c
pnmcomp pnmcomp.o:		pnmcomp.c
pnmconvol pnmconvol.o:		pnmconvol.c
pnmcrop pnmcrop.o:		pnmcrop.c
pnmcut pnmcut.o:		pnmcut.c
pnmdepth pnmdepth.o:		pnmdepth.c
pnmenlarge pnmenlarge.o:	pnmenlarge.c
pnmfile pnmfile.o:		pnmfile.c
pnmflip pnmflip.o:		pnmflip.c
pnmgamma pnmgamma.o:		pnmgamma.c
pnmhistmap pnmhistmap.o:	pnmhistmap.c
pnminvert pnminvert.o:		pnminvert.c
pnmnoraw pnmnoraw.o:		pnmnoraw.c
pnmpad pnmpad.o:		pnmpad.c
pnmpaste pnmpaste.o:		pnmpaste.c
pnmrotate pnmrotate.o:		pnmrotate.c
pnmscale pnmscale.o:		pnmscale.c
pnmshear pnmshear.o:		pnmshear.c
pnmtile pnmtile.o:		pnmtile.c
pnmtoddif pnmtoddif.o:		pnmtoddif.c
pnmtofits pnmtofits.o:		pnmtofits.c
pnmtops pnmtops.o:		pnmtops.c
pnmtosir pnmtosir.o:		pnmtosir.c
pnmtorast pnmtorast.o:		pnmtorast.c rast.h
pnmtotiff pnmtotiff.o:		pnmtotiff.c
pnmtoxwd pnmtoxwd.o:		pnmtoxwd.c x11wd.h
rasttopnm rasttopnm.o:		rasttopnm.c rast.h
sirtopnm sirtopnm.o:		sirtopnm.c
tifftopnm tifftopnm.o:		tifftopnm.c
xwdtopnm xwdtopnm.o:		xwdtopnm.c x10wd.h x11wd.h
zeisstopnm zeisstopnm.o:	zeisstopnm.c

clean:
	delete *.o *.lib *.lnk $(BINARIES)
