# Makefile for ppm tools for Amiga with SAS/C version 6.3
#
# 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 -ansi -pedantic -fcombine-regs -fpcc-struct-return
CC =		sc
#CFLAGS =	-O
CFLAGS =
#CFLAGS =	-g -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

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=/ $(INCLUDEPGM) $(INCLUDEPBM)
ALLCFLAGS =	$(CFLAGS) $(INCLUDE)
LIBPPM =	libppm.lib

PORTBINARIES =	bmptoppm gouldtoppm hpcdtoppm imgtoppm mtvtoppm pcxtoppm \
		pi1toppm pjtoppm ppmbrighten ppmrelief \
		ppmshift ppmspread ppmtobmp ppmtoicr ppmtomitsu \
		ppmtopcx ppmtopi1 ppmtopict ppmtopj \
		ppmtopuzz ppmtorgb3 ppmtosixel ppmtotga \
		ppmtoxpm ppmtoyuv ppmtoyuvsplit qrttoppm rawtoppm \
		rgb3toppm spctoppm sputoppm tgatoppm xvminitoppm \
		yuvtoppm yuvsplittoppm
MATHBINARIES =	picttoppm ppmchange ppmforge ppmpat ppmqvga ppmtogif ppmtomap \
		ppmtoacad ppmtopjxl sldtoppm ilbmtoppm ppmdither \
		ppmnorm ppmquant pgmtoppm ppm3d ppmdim ppmdist ppmflash ppmhist \
		ppmmake ppmmix ppmntsc \
		ppmtoilbm ppmtopgm ppmtouil ximtoppm xpmtoppm 
BINARIES =	$(PORTBINARIES) $(MATHBINARIES)
SCRIPTS =	ppmquantall

OBJECTS =	bmptoppm.o gouldtoppm.o hpcdtoppm.o ilbmtoppm.o imgtoppm.o \
		mtvtoppm.o pcxtoppm.o pgmtoppm.o pi1toppm.o picttoppm.o \
		pjtoppm.o \
		ppm3d.o ppmbrighten.o ppmchange.o ppmdim.o ppmdist.o ppmdither.o \
		ppmflash.o ppmhist.o ppmmake.o ppmmix.o ppmnorm.o \
		ppmntsc.o ppmquant.o ppmrelief.o ppmshift.o ppmspread.o \
		ppmtoacad.o \
		ppmtobmp.o ppmtogif.o ppmtoicr.o ppmtoilbm.o ppmtomitsu.o \
		ppmtopcx.o ppmtopgm.o ppmtopi1.o ppmtopict.o ppmtopj.o \
		ppmtopjxl.o ppmtopuzz.o ppmtorgb3.o ppmtosixel.o \
		ppmtotga.o ppmtouil.o ppmtoxpm.o ppmtoyuv.o \
		ppmtoyuvsplit.o \
		qrttoppm.o rawtoppm.o rgb3toppm.o sldtoppm.o spctoppm.o \
		sputoppm.o tgatoppm.o ximtoppm.o xpmtoppm.o xvminitoppm.o \
		yuvtoppm.o yuvsplittoppm.o \
		ppmforge.o ppmpat.o ppmqvga.o ppmtomap.o

MANUALS1P=	$(PORTBINARIES)
MANUALS1M=	$(MATHBINARIES)
MANUALS1S=	$(SCRIPTS)
MANUALS3 =	libppm
MANUALS5 =	ppm


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


binaries:	$(BINARIES)

install.bin:	binaries $(SCRIPTS)
#	cd $(INSTALLBINARIES) ; rm -f $(BINARIES)
	copy $(PORTBINARIES) TO $(INSTALLBINARIES) CLONE
	copy $(MATHBINARIES) 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:		ppmmerge
#ppmmerge:	ppmmerge.c $(OBJECTS) $(LIBPPM) $(LIBPGM) $(LIBPBM)
#	$(CC) $(ALLCFLAGS) $(LDFLAGS) -o $@ $@.c $(OBJECTS) -lm $(LIBPPM) $(LIBPGM) $(LIBPBM)
#
#install.merge:	install.ppmmerge $(SCRIPTS)
#install.ppmmerge:	ppmmerge
#	cd $(INSTALLBINARIES) ; rm -f $(BINARIES)
#	cp ppmmerge $(INSTALLBINARIES)
#	cd $(INSTALLBINARIES) ; for i in $(BINARIES) ; do ln ppmmerge $$i ; done
#	rm -f $(INSTALLBINARIES)/ppmmerge
#	cd $(INSTALLSCRIPTS) ; rm -f $(SCRIPTS)
#	cp $(SCRIPTS) $(INSTALLSCRIPTS)
#	cd $(INSTALLSCRIPTS) ; chmod +x $(SCRIPTS)


install.man:
	execute < <(T:install_man.temp)
	foreach i in $(MANUALS1P)
	    delete $(INSTALLMANUALS1)/$${i}.$(SUFFIXMANUALS1)
	    $(MANCP) $${i}.1 $(INSTALLMANUALS1)/$${i}.$(SUFFIXMANUALS1)
	end
	foreach i in $(MANUALS1M)
	    delete $(INSTALLMANUALS1)/$${i}.$(SUFFIXMANUALS1)
	    $(MANCP) $${i}.1 $(INSTALLMANUALS1)/$${i}.$(SUFFIXMANUALS1)
	end
	foreach i in $(MANUALS1S)
	    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):	ppm.h $(DEFPGM) $(DEFPBM) $(LIBPPM) $(LIBPGM) $(LIBPBM)
	$(CC) $(ALLCFLAGS) $(LDFLAGS) LINK $@.c $(LIBPPM) $(LIBPGM) $(LIBPBM)

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

#The following is only needed for ppmmerge, which I currently don't support RKNOP
# Rule for objects.
#$(OBJECTS):	ppm.h $(DEFPGM) $(DEFPBM)
#	$(CC) $(ALLCFLAGS) "-Dmain=$*_main" -c $*.c

# And libraries.
$(LIBPBM):
        execute < <(T:smake_temp.com)
	cd $(PBMDIR)
	smake lib
	<
$(LIBPGM):
	execute < <(T:smake_temp.com)
	cd $(PGMDIR)
	smake lib
	<
lib:		$(LIBPPM)
$(LIBPPM):	libppm1.o libppm2.o libppm3.o libppm4.o libppm5.o bitio.o
  	-delete $(LIBPPM)
	oml $(LIBPPM) r libppm1.o libppm2.o libppm3.o libppm4.o \
	libppm5.o bitio.o

libppm1.o:	ppm.h $(DEFPGM) $(DEFPBM) libppm.h libppm1.c
	$(CC) $(ALLCFLAGS) MATH=I NOLINK libppm1.c
libppm2.o:	ppm.h $(DEFPGM) $(DEFPBM) libppm.h libppm2.c $(DEFLIBPGM) \
		$(DEFLIBPBM)
	$(CC) $(ALLCFLAGS) MATH=I NOLINK libppm2.c
libppm3.o:	ppm.h $(DEFPGM) $(DEFPBM) ppmcmap.h libppm.h libppm3.c
	$(CC) $(ALLCFLAGS) MATH=I NOLINK libppm3.c
libppm4.o:	ppm.h $(DEFPGM) $(DEFPBM) libppm4.c
	$(CC) $(ALLCFLAGS) MATH=I NOLINK libppm4.c
libppm5.o:	ppm.h $(DEFPGM) $(DEFPBM) ppmdraw.h libppm5.c
	$(CC) $(ALLCFLAGS) MATH=I NOLINK libppm5.c
bitio.o:	/pbmplus.h bitio.c
	$(CC) $(ALLCFLAGS) MATH=I NOLINK bitio.c

# Other dependencies.
bmptoppm bmptoppm.o:		bmptoppm.c bitio.o bitio.h bmp.h
gouldtoppm gouldtoppm.o:	gouldtoppm.c
hpcdtoppm hpcdtoppm.o:		hpcdtoppm.c
ilbmtoppm ilbmtoppm.o:		ilbmtoppm.c ilbm.h
imgtoppm imgtoppm.o:		imgtoppm.c
mtvtoppm mtvtoppm.o:		mtvtoppm.c
pcxtoppm pcxtoppm.o:		pcxtoppm.c
pgmtoppm pgmtoppm.o:		pgmtoppm.c
pi1toppm pi1toppm.o:		pi1toppm.c
picttoppm picttoppm.o:		picttoppm.c
pjtoppm pjtoppm.o:		pjtoppm.c
ppm3d ppm3d.o:			ppm3d.c
ppmbrighten ppmbrighten.o:	ppmbrighten.c
ppmchange ppmchange.o:		ppmchange.c
ppmdim ppmdim.o:		ppmdim.c
ppmdist ppmdist.o:		ppmdist.c ppmcmap.h
ppmdither ppmdither.o:		ppmdither.c
ppmflash ppmflash.o:		ppmflash.c
ppmforge ppmforge.o:		ppmforge.c
ppmhist ppmhist.o:		ppmhist.c ppmcmap.h
ppmmake ppmmake.o:		ppmmake.c
ppmmix ppmmix.o:		ppmmix.c
ppmnorm ppmnorm.o:		ppmnorm.c lum.h
ppmntsc ppmntsc.o:		ppmntsc.c
ppmpat ppmpat.o:		ppmpat.c ppmdraw.h
ppmquant ppmquant.o:		ppmquant.c $(PGMDIR)/dithers.h ppmcmap.h
ppmqvga ppmqvga.o:		ppmqvga.c
ppmrelief ppmrelief.o:		ppmrelief.c
ppmshift ppmshift.o:		ppmshift.c
ppmspread ppmspread.o:		ppmspread.c
ppmtoacad ppmtoacad.o:		ppmtoacad.c ppmcmap.h autocad.h
ppmtobmp ppmtobmp.o:		ppmtobmp.c bitio.h bmp.h
ppmtogif ppmtogif.o:		ppmtogif.c ppmcmap.h
ppmtoicr ppmtoicr.o:		ppmtoicr.c ppmcmap.h
ppmtoilbm ppmtoilbm.o:		ppmtoilbm.c ilbm.h ppmcmap.h
ppmtomitsu ppmtomitsu.o:	ppmtomitsu.c ppmcmap.h mitsu.h
ppmtomap ppmtomap.o:		ppmtomap.c ppmcmap.h
ppmtopcx ppmtopcx.o:		ppmtopcx.c ppmcmap.h
ppmtopgm ppmtopgm.o:		ppmtopgm.c
ppmtopi1 ppmtopi1.o:		ppmtopi1.c ppmcmap.h
ppmtopict ppmtopict.o:		ppmtopict.c ppmcmap.h
ppmtopj ppmtopj.o:		ppmtopj.c
ppmtopjxl ppmtopjxl.o:		ppmtopjxl.c ppmcmap.h
ppmtopuzz ppmtopuzz.o:		ppmtopuzz.c ppmcmap.h
ppmtorgb3 ppmtorgb3.o:		ppmtorgb3.c
ppmtosixel ppmtosixel.o:	ppmtosixel.c ppmcmap.h
ppmtotga ppmtotga.o:		ppmtotga.c ppmcmap.h
ppmtouil ppmtouil.o:		ppmtouil.c ppmcmap.h
ppmtoxpm ppmtoxpm.o:		ppmtoxpm.c ppmcmap.h
ppmtoyuv ppmtoyuv.o:		ppmtoyuv.c
ppmtoyuvsplit ppmtoyuvsplit.o:	ppmtoyuvsplit.c
qrttoppm qrttoppm.o:		qrttoppm.c
rawtoppm rawtoppm.o:		rawtoppm.c
rgb3toppm rgb3toppm.o:		rgb3toppm.c
sldtoppm sldtoppm.o:		sldtoppm.c ppmdraw.h autocad.h
spctoppm spctoppm.o:		spctoppm.c
sputoppm sputoppm.o:		sputoppm.c
tgatoppm tgatoppm.o:		tgatoppm.c tga.h
ximtoppm ximtoppm.o:		ximtoppm.c xim.h
xpmtoppm xpmtoppm.o:		xpmtoppm.c
xvminitoppm xvminitoppm.o:	xvminitoppm.c
yuvtoppm yuvtoppm.o:		yuvtoppm.c
yuvsplittoppm yuvsplittoppm.o:	yuvsplittoppm.c

clean:
	-delete *.o *.lib *.lnk
#                              $(BINARIES)
	-delete $(PORTBINARIES)
	-delete $(MATHBINARIES)
