!include <ntwin32.mak>
# 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.

# Default values, usually overridden by top-level Makefile.
#CC =		cc
#CC =		gcc -ansi -pedantic -fcombine-regs -fpcc-struct-return
#CFLAGS =	-O
#CFLAGS =	-g
#CFLAGS =	-g -O
#LDFLAGS =	-s
LDFLAGS =	
INSTALLBINARIES =	/usr/new/pbm
INSTALLSCRIPTS =	$(INSTALLBINARIES)
INSTALLMANUALS1 =	/usr/man/mann
SUFFIXMANUALS1 =	1
INSTALLMANUALS3 =	/usr/man/mann
SUFFIXMANUALS3 =	3
INSTALLMANUALS5 =	/usr/man/mann
SUFFIXMANUALS5 =	5
MANCP =			cp

CFLAGS =	$(cvarsdll) $(cflags) $(cdebug) -I..
PGMDIR =	..\pgm
INCLUDEPGM =	-I$(PGMDIR)
LIBPGM =	$(PGMDIR)\pgm.lib
DEFPGM =	$(PGMDIR)\pgm.h
DEFLIBPGM =	$(PGMDIR)\libpgm.h

PBMDIR =	..\pbm
INCLUDEPBM =	-I$(PBMDIR)
LIBPBM =	$(PBMDIR)\pbm.lib
DEFPBM =	$(PBMDIR)\pbm.h ..\pbmplus.h
DEFLIBPBM =	$(PBMDIR)\libpbm.h

SHELL =		/bin/sh
#INCLUDE =	-I.. $(INCLUDEPGM) $(INCLUDEPBM)
ALLCFLAGS =	$(CFLAGS) -I.. $(INCLUDEPGM) $(INCLUDEPBM)
LIBPPM =	ppm.lib

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

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

MANUALS1 =	$(BINARIES) $(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)
	cp $(BINARIES) $(INSTALLBINARIES)
	cd $(INSTALLSCRIPTS) ; rm -f $(SCRIPTS)
	cp $(SCRIPTS) $(INSTALLSCRIPTS)
	cd $(INSTALLSCRIPTS) ; chmod +x $(SCRIPTS)


merge:		ppmmerge
ppmmerge:	ppmmerge.exe
ppmmerge.exe:	ppmmerge.c $(OBJECTS) $(LIBPPM) $(LIBPGM) $(LIBPBM)
	$(CC) $(ALLCFLAGS) $(LDFLAGS) $*.c $(OBJECTS) $(LIBPPM) $(LIBPGM) $(LIBPBM) $(conlibsdll)

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:
	for i in $(MANUALS1) ; do \
	    rm -f $(INSTALLMANUALS1)/$$i.$(SUFFIXMANUALS1) ; \
	    $(MANCP) $$i.1 $(INSTALLMANUALS1)/$$i.$(SUFFIXMANUALS1) ; \
	done
	for i in $(MANUALS3) ; do \
	    rm -f $(INSTALLMANUALS3)/$$i.$(SUFFIXMANUALS3) ; \
	    $(MANCP) $$i.3 $(INSTALLMANUALS3)/$$i.$(SUFFIXMANUALS3) ; \
	done
	for i in $(MANUALS5) ; do \
	    rm -f $(INSTALLMANUALS5)/$$i.$(SUFFIXMANUALS5) ; \
	    $(MANCP) $$i.5 $(INSTALLMANUALS5)/$$i.$(SUFFIXMANUALS5) ; \
	done


# Rule for plain programs.
$(PORTBINARIES):	ppm.h $(DEFPGM) $(DEFPBM) $(LIBPPM) $(LIBPGM) $(LIBPBM)
	$(CC) $(ALLCFLAGS) $(LDFLAGS) $*.c $(LIBPPM) $(LIBPGM) $(LIBPBM) $(conlibsdll)

# Rule for math-dependent programs.
$(MATHBINARIES):	ppm.h $(DEFPGM) $(DEFPBM) $(LIBPPM) $(LIBPGM) $(LIBPBM)
	$(CC) $(ALLCFLAGS) $(LDFLAGS) $*.c $(LIBPPM) $(LIBPGM) $(LIBPBM) $(conlibsdll)

# Rule for objects.
$(OBJECTS):	ppm.h $(DEFPGM) $(DEFPBM)
	$(CC) $(ALLCFLAGS) "-Dmain=$*_main" -c $*.c

# And libraries.
$(LIBPBM):
	cd $(PBMDIR) ; make lib
$(LIBPGM):
	cd $(PGMDIR) ; make lib
lib:		$(LIBPPM)
$(LIBPPM):	libppm1.obj libppm2.obj libppm3.obj libppm4.obj libppm5.obj bitio.obj
	-rm -f $(LIBPPM)
	$(implib) -out:$(LIBPPM) libppm1.obj libppm2.obj libppm3.obj libppm4.obj \
	libppm5.obj bitio.obj

libppm1.obj:	ppm.h $(DEFPGM) $(DEFPBM) libppm.h libppm1.c
	$(CC) $(ALLCFLAGS) -c libppm1.c
libppm2.obj:	ppm.h $(DEFPGM) $(DEFPBM) libppm.h libppm2.c $(DEFLIBPGM) \
		$(DEFLIBPBM)
	$(CC) $(ALLCFLAGS) -c libppm2.c
libppm3.obj:	ppm.h $(DEFPGM) $(DEFPBM) ppmcmap.h libppm.h libppm3.c
	$(CC) $(ALLCFLAGS) -c libppm3.c
libppm4.obj:	ppm.h $(DEFPGM) $(DEFPBM) libppm4.c
	$(CC) $(ALLCFLAGS) -c libppm4.c
libppm5.obj:	ppm.h $(DEFPGM) $(DEFPBM) ppmdraw.h libppm5.c
	$(CC) $(ALLCFLAGS) -c libppm5.c
bitio.obj:	../pbmplus.h bitio.c
	$(CC) $(ALLCFLAGS) -c bitio.c

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

clean:
	-rm -f *.obj *.lib *.cat *~ core $(BINARIES) ppmmerge.exe
