# Makefile for pgm tools.
#
# Copyright (C) 1989, 1991 by Jef Poskanzer.
# Modified by Robert A. Knop Jr. (rknop@cco.caltech.edu) 940126 for Amiga SAS/C
#   Merge is not currently supported by this makefile
#
# 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
#CC =		gcc -ansi -pedantic -fcombine-regs -fpcc-struct-return
CC =		sc
CFLAGS =
#CFLAGS =	-g
#CFLAGS =	-g -O
LDFLAGS =	-s
#LDFLAGS =	
INSTALLBINARIES =	/bin
INSTALLMANUALS1 =	/man/man1
SUFFIXMANUALS1 =	1
INSTALLMANUALS3 =	/man/man3
SUFFIXMANUALS3 =	3
INSTALLMANUALS5 =	/man/man5
SUFFIXMANUALS5 =	5
MANCP =			copy

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

#SHELL =		/bin/sh
INCLUDE =	IDIR=/ $(INCLUDEPBM)
ALLCFLAGS =	$(CFLAGS) $(INCLUDE)
LIBPGM =	libpgm.lib

PORTBINARIES =	asciitopgm hipstopgm lispmtopgm \
		pbmtopgm pgmbentley pgmnoise \
		pgmoil pgmtofs pgmtolispm \
		psidtopgm spottopgm
MATHBINARIES =	pgmcrater pgmedge pgmkernel pgmtexture rawtopgm \
		bioradtopgm fstopgm pgmenhance \
		pgmhist pgmnorm pgmramp pgmtopbm 
BINARIES =	$(PORTBINARIES) $(MATHBINARIES)

OBJECTS =	asciitopgm bioradtopgm.o fstopgm.o hipstopgm.o 
		lispmtopgm.o pbmtopgm.o \
		pgmbentley.o pgmenhance.o pgmhist.o pgmkernel.o pgmnoise.o \
		pgmnorm.o pgmoil.o pgmramp.o pgmtofs.o pgmtolispm.o \
		pgmtopbm.o psidtopgm.o spottopgm.o \
		rawtopgm.o pgmcrater.o pgmedge.o pgmtexture.o

MANUALS1 =	$(BINARIES)
MANUALS3 =	libpgm
MANUALS5 =	pgm


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


binaries:	$(BINARIES)

install.bin:	binaries
#	cd $(INSTALLBINARIES) ; rm -f $(BINARIES)
	copy $(BINARIES) TO $(INSTALLBINARIES) CLONE


#merge:		pgmmerge
#pgmmerge:	pgmmerge.c $(OBJECTS) $(LIBPGM) $(LIBPBM)
#	$(CC) $(ALLCFLAGS) $(LDFLAGS) -o $@ $@.c $(OBJECTS) -lm $(LIBPGM) $(LIBPBM)
#
#install.merge:	install.pgmmerge
#install.pgmmerge:	pgmmerge
#	cd $(INSTALLBINARIES) ; rm -f $(BINARIES)
#	cp pgmmerge $(INSTALLBINARIES)
#	cd $(INSTALLBINARIES) ; for i in $(BINARIES) ; do ln pgmmerge $$i ; done
#	rm -f $(INSTALLBINARIES)/pgmmerge


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
	<


# Rule for plain programs.
$(PORTBINARIES):	pgm.h $(DEFPBM) $(LIBPGM) $(LIBPBM)
	$(CC) $(ALLCFLAGS) $(LDFLAGS) LINK $@.c $(LIBPGM) $(LIBPBM)

# Rule for math-dependent programs.
$(MATHBINARIES):	pgm.h $(DEFPBM) $(LIBPGM) $(LIBPBM)
	$(CC) $(ALLCFLAGS) $(LDFLAGS) MATH=I LINK $@.c $(LIBPGM) $(LIBPBM)

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

# And libraries.
$(LIBPBM):
	execute < <(T:smake_temp.com)
	cd $(PBMDIR)
	smake lib
	<
lib:		$(LIBPGM)
$(LIBPGM):	libpgm1.o libpgm2.o
	-delete $(LIBPGM)
	oml $(LIBPGM) r libpgm1.o libpgm2.o

libpgm1.o:	pgm.h $(DEFPBM) libpgm.h libpgm1.c
	$(CC) $(ALLCFLAGS) MATH=I NOLINK libpgm1.c
libpgm2.o:	pgm.h $(DEFPBM) libpgm.h libpgm2.c $(DEFLIBPBM)
	$(CC) $(ALLCFLAGS) MATH=I NOLINK libpgm2.c

# Other dependencies.
asciitopgm asciitopgm.o:	asciitopgm.c
bioradtopgm bioradtopgm.o:	bioradtopgm.c
fstopgm fstopgm.o:		fstopgm.c
hipstopgm hipstopgm.o:		hipstopgm.c
lispmtopgm lispmtopgm.o:	lispmtopgm.c
pbmtopgm pbmtopgm.o:		pbmtopgm.c
pgmbentley pgmbentley.o:	pgmbentley.c
pgmcrater pgmcrater.o:		pgmcrater.c
pgmedge pgmedge.o:		pgmedge.c
pgmenhance pgmenhance.o:	pgmenhance.c
pgmhist pgmhist.o:		pgmhist.c
pgmkernel pgmkernel.o:		pgmkernel.c
pgmnoise pgmnoise.o:		pgmnoise.c
pgmnorm pgmnorm.o:		pgmnorm.c
pgmoil pgmoil.o:		pgmoil.c
pgmramp pgmramp.o:		pgmramp.c
pgmtexture pgmtexture.o:	pgmtexture.c
pgmtopbm pgmtopbm.o:		pgmtopbm.c dithers.h $(DEFPBM)
pgmtofs pgmtofs.o:		pgmtofs.c
pgmtolispm pgmtolispm.o:	pgmtolispm.c
psidtopgm psidtopgm.o:		psidtopgm.c
rawtopgm rawtopgm.o:		rawtopgm.c
spottopgm spottopgm.o:		spottopgm.c

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