# Makefile for ppm 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.

CC =            dcc
CFLAGS =        -O0 -E DCC_ERRORS -T RAM: -ffp -ms -mu -gs -proto -mRR
SCFLAGS =        -O0 -E DCC_ERRORS -T RAM: -ffp -ms -mu -gs -proto
RGBDEF =        -DRGB_DB="RGBDEF"
LDFLAGS =
BINDIR =        bin

PGMDIR =        /pgm
INCLUDEPGM =    -I$(PGMDIR)
LIBPGM =        $(PGMDIR)/libpgm_sr.lib
LARGELIBPGM =   $(PGMDIR)/libpgm_lr.lib
DEFPGM =        $(PGMDIR)/pgm.h
DEFLIBPGM =     $(PGMDIR)/libpgm.h

PBMDIR =        /pbm
INCLUDEPBM =    -I$(PBMDIR)
LIBPBM =        $(PBMDIR)/libpbm_sr.lib
LARGELIBPBM =   $(PBMDIR)/libpbm_lr.lib
DEFPBM =        $(PBMDIR)/pbm.h /pbmplus.h
DEFLIBPBM =     $(PBMDIR)/libpbm.h

SHELL =         /bin/sh
INCLUDE =       -I/ $(INCLUDEPGM) $(INCLUDEPBM)
ALLCFLAGS =     $(CFLAGS) $(RGBDEF) $(INCLUDE)
SALLCFLAGS =     $(SCFLAGS) $(RGBDEF) $(INCLUDE)
LIBPPM =        libppm_sr.lib
LARGELIBPPM =   libppm_lr.lib
STKLIBPPM =     libppm_l.lib

PORTBINARIES =  gouldtoppm imgtoppm mtvtoppm \
                pcxtoppm pi1toppm picttoppm \
                pjtoppm ppmdither ppmhist \
                ppmquant ppmrelief ppmtogif ppmtoicr \
                ppmtoilbm ppmtopcx ppmtopgm ppmtopi1 ppmtopict \
                ppmtopj ppmtopuzz ppmtorgb3 ppmtosixel \
                ppmtotga ppmtouil ppmtoxpm ppmtoyuv qrttoppm \
                rawtoppm rgb3toppm ximtoppm yuvtoppm

#LARGEBINS    =  ppmpat spctoppm sputoppm tgatoppm
LARGEBINS    =  spctoppm sputoppm tgatoppm

MATHBINARIES =  ilbmtoppm ppmtoacad pgmtoppm ppmforge ppmmake sldtoppm xpmtoppm

LARGEMATHBINS=  giftoppm

BINARIES =      $(PORTBINARIES) $(MATHBINARIES) $(LARGEBINS) $(LARGEMATHBINS)

SCRIPTS =       ppmquantall

OBJECTS =       giftoppm.o gouldtoppm.o ilbmtoppm.o imgtoppm.o mtvtoppm.o \
                pcxtoppm.o pgmtoppm.o pi1toppm.o picttoppm.o \
                pjtoppm.o ppmdither.o ppmhist.o ppmmake.o \
                ppmquant.o ppmrelief.o ppmtoacad.o ppmtogif.o ppmtoicr.o \
                ppmtoilbm.o ppmtopcx.o ppmtopgm.o ppmtopi1.o ppmtopict.o \
                ppmtopj.o ppmtopuzz.o ppmtorgb3.o ppmtosixel.o \
                ppmtotga.o ppmtouil.o ppmtoxpm.o ppmtoyuv.o qrttoppm.o \
                rawtoppm.o rgb3toppm.o sldtoppm.o spctoppm.o sputoppm.o \
                tgatoppm.o ximtoppm.o xpmtoppm.o yuvtoppm.o \
                ppmforge.o ppmpat.o



all:            bindir lib binaries

bindir:
                -makedir $(BINDIR)

binaries:       $(BINARIES)



# Rule for plain programs.
$(PORTBINARIES):        ppm.h $(DEFPGM) $(DEFPBM) $(LIBPPM) $(LIBPGM) $(LIBPBM)
        $(CC) -r $(ALLCFLAGS) $(LDFLAGS) -o $(BINDIR)/$@ $@.c -l $(LIBPPM) -l $(LIBPGM) -l $(LIBPBM)

$(LARGEBINS):           ppm.h $(DEFPGM) $(DEFPBM) $(LARGELIBPPM) $(LARGELIBPGM) $(LARGELIBPBM)
        $(CC) -mD -mC $(ALLCFLAGS) $(LDFLAGS) -o $(BINDIR)/$@ $@.c -l $(LARGELIBPPM) -l $(LARGELIBPGM) -l $(LARGELIBPBM)

# Rule for math-dependent programs.
$(MATHBINARIES):        ppm.h $(DEFPGM) $(DEFPBM) $(LIBPPM) $(LIBPGM) $(LIBPBM)
        $(CC) -r $(ALLCFLAGS) $(LDFLAGS) -o $(BINDIR)/$@ $@.c -l $(LIBPPM) -l $(LIBPGM) -l $(LIBPBM) -lm

$(LARGEMATHBINS):       ppm.h $(DEFPGM) $(DEFPBM) $(LARGELIBPPM) $(LARGELIBPGM) $(LARGELIBPBM)
        $(CC) -mD -mC $(ALLCFLAGS) $(LDFLAGS) -o $(BINDIR)/$@ $@.c -l $(LARGELIBPPM) -l $(LARGELIBPGM) -l $(LARGELIBPBM) -lm


# And libraries.
#$(LIBPBM):
#        cd $(PBMDIR) ; make lib
#$(LIBPGM):
#        cd $(PGMDIR) ; make lib
lib:            $(LIBPPM) $(LARGELIBPPM) $(STKLIBPPM)
$(LIBPPM):      libppm1.or libppm2.or libppm3.or libppm4.or libppm5.or
        -delete $(LIBPPM)
        join libppm1.or libppm2.or libppm3.or libppm4.or libppm5.or to $(LIBPPM)

libppm1.or:      ppm.h $(DEFPGM) $(DEFPBM) libppm.h libppm1.c
        $(CC) $(ALLCFLAGS) -S -o $@ -c libppm1.c
libppm2.or:      ppm.h $(DEFPGM) $(DEFPBM) libppm.h libppm2.c $(DEFLIBPGM) \
                $(DEFLIBPBM)
        $(CC) $(ALLCFLAGS) -S -o $@ -c libppm2.c
libppm3.or:      ppm.h $(DEFPGM) $(DEFPBM) ppmcmap.h libppm.h libppm3.c
        $(CC) $(ALLCFLAGS) -S -o $@ -c libppm3.c
libppm4.or:      ppm.h $(DEFPGM) $(DEFPBM) libppm4.c
        $(CC) $(ALLCFLAGS) -S -o $@ -c libppm4.c
libppm5.or:      ppm.h $(DEFPGM) $(DEFPBM) ppmdraw.h libppm5.c
        $(CC) $(ALLCFLAGS) -S -o $@ -c libppm5.c


# large data version
$(LARGELIBPPM):      libppm1.olr libppm2.olr libppm3.olr libppm4.olr libppm5.olr
        -delete $(LARGELIBPPM)
        join libppm1.olr libppm2.olr libppm3.olr libppm4.olr libppm5.olr to $(LARGELIBPPM)

libppm1.olr:      ppm.h $(DEFPGM) $(DEFPBM) libppm.h libppm1.c
        $(CC) -mD $(ALLCFLAGS) -S -o $@ -c libppm1.c
libppm2.olr:      ppm.h $(DEFPGM) $(DEFPBM) libppm.h libppm2.c $(DEFLIBPGM) \
                $(DEFLIBPBM)
        $(CC) -mD $(ALLCFLAGS) -S -o $@ -c libppm2.c
libppm3.olr:      ppm.h $(DEFPGM) $(DEFPBM) ppmcmap.h libppm.h libppm3.c
        $(CC) -mD $(ALLCFLAGS) -S -o $@ -c libppm3.c
libppm4.olr:      ppm.h $(DEFPGM) $(DEFPBM) libppm4.c
        $(CC) -mD $(ALLCFLAGS) -S -o $@ -c libppm4.c
libppm5.olr:      ppm.h $(DEFPGM) $(DEFPBM) ppmdraw.h libppm5.c
        $(CC) -mD $(ALLCFLAGS) -S -o $@ -c libppm5.c


# large data version, not registerized
$(STKLIBPPM):      libppm1.ol libppm2.ol libppm3.ol libppm4.ol libppm5.ol
        -delete $(STKLIBPPM)
        join libppm1.ol libppm2.ol libppm3.ol libppm4.ol libppm5.ol to $(STKLIBPPM)

libppm1.ol:      ppm.h $(DEFPGM) $(DEFPBM) libppm.h libppm1.c
        $(CC) -mD $(SALLCFLAGS) -S -o $@ -c libppm1.c
libppm2.ol:      ppm.h $(DEFPGM) $(DEFPBM) libppm.h libppm2.c $(DEFLIBPGM) \
                $(DEFLIBPBM)
        $(CC) -mD $(SALLCFLAGS) -S -o $@ -c libppm2.c
libppm3.ol:      ppm.h $(DEFPGM) $(DEFPBM) ppmcmap.h libppm.h libppm3.c
        $(CC) -mD $(SALLCFLAGS) -S -o $@ -c libppm3.c
libppm4.ol:      ppm.h $(DEFPGM) $(DEFPBM) libppm4.c
        $(CC) -mD $(SALLCFLAGS) -S -o $@ -c libppm4.c
libppm5.ol:      ppm.h $(DEFPGM) $(DEFPBM) ppmdraw.h libppm5.c
        $(CC) -mD $(SALLCFLAGS) -S -o $@ -c libppm5.c


# Other dependencies.
giftoppm giftoppm.o:            giftoppm.c
gouldtoppm gouldtoppm.o:        gouldtoppm.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
ppmdither ppmdither.o:          ppmdither.c
ppmforge ppmforge.o:            ppmforge.c
ppmhist ppmhist.o:              ppmhist.c ppmcmap.h
ppmmake ppmmake.o:              ppmmake.c
ppmpat ppmpat.o:                ppmpat.c ppmdraw.h
ppmquant ppmquant.o:            ppmquant.c $(PGMDIR)/dithers.h ppmcmap.h
ppmrelief ppmrelief.o:          ppmrelief.c
ppmtoacad ppmtoacad.o:          ppmtoacad.c ppmcmap.h autocad.h
ppmtogif ppmtogif.o:            ppmtogif.c ppmcmap.h
ppmtoicr ppmtoicr.o:            ppmtoicr.c ppmcmap.h
ppmtoilbm ppmtoilbm.o:          ppmtoilbm.c ilbm.h 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
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
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
yuvtoppm yuvtoppm.o:            yuvtoppm.c

clean:
        -delete \#?.o \#?.or \#?.ol \#?.olr \#?.lib DCC_ERRORS

cleanbin:   clean
        -delete $(BINDIR) all

