!include <ntwin32.mak>
# Makefile for pnm 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
TIFFDEF =	-DLIBTIFF
TIFFINC =       -I..\libtiff
TIFFLIB =       ..\libtiff\tiff.lib
TIFFBINARIES =  tifftopnm pnmtotiff
TIFFOBJECTS =   tifftopnm.obj pnmtotiff.obj
#LDFLAGS =	-s
LDFLAGS =	
INSTALLBINARIES =	/usr/new/pbm
INSTALLSCRIPTS =	$(INSTALLBINARIES)
INSTALLMANUALS1 =	/usr/man/man1
SUFFIXMANUALS1 =	1
INSTALLMANUALS3 =	/usr/man/man3
SUFFIXMANUALS3 =	3
INSTALLMANUALS5 =	/usr/man/man5
SUFFIXMANUALS5 =	5
MANCP =			cp

PPMDIR =	..\ppm
INCLUDEPPM =	-I$(PPMDIR)
LIBPPM =	$(PPMDIR)\ppm.lib
DEFPPM =	$(PPMDIR)\ppm.h
DEFLIBPPM =	$(PPMDIR)\libppm.h

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.. $(INCLUDEPPM) $(INCLUDEPGM) $(INCLUDEPBM)
CFLAGS = $(cvarsdll) $(cflags) $(cdebug) -I.. $(INCLUDEPPM) $(INCLUDEPGM) $(INCLUDEPBM)
ALLCFLAGS =	$(CFLAGS) $(TIFFDEF) $(TIFFINC)
LIBPNM =	pnm.lib

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

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

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


merge:		pnmmerge
pnmmerge:	pnmmerge.c $(OBJECTS) $(LIBPNM) $(LIBPPM) $(LIBPGM) $(LIBPBM)
	$(CC) $(ALLCFLAGS) $(LDFLAGS) $@.c $(OBJECTS) $(LIBPNM) $(LIBPPM) $(LIBPGM) $(LIBPBM) $(TIFFLIB) $(conlibs)

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:
	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


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

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

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

# And libraries.
$(LIBPBM):
	cd $(PBMDIR) ; make lib
$(LIBPGM) FOO:
	cd $(PGMDIR) ; make lib
$(LIBPPM) BAR:
	cd $(PPMDIR) ; make lib
lib:		$(LIBPNM)
#$(LIBPNM):	libpnm1.obj libpnm2.obj libpnm3.obj libpnm4.obj
#	-rm -f $(LIBPNM)
#	ar rc $(LIBPNM) libpnm1.obj libpnm2.obj libpnm3.obj libpnm4.obj
#	-ranlib $(LIBPNM)
$(LIBPNM):	libpnm1.obj libpnm2.obj libpnm3.obj libpnm4.obj
	del $(LIBPNM)
	$(implib) -out:$(LIBPNM) libpnm1.obj libpnm2.obj libpnm3.obj libpnm4.obj
	

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

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

clean:
	-rm -f *.obj *.a *.cat *~ core $(BINARIES) pnmmerge
