!include <ntwin32.mak>
# Makefile for pgm 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
#CC =		gcc -ansi -pedantic -fcombine-regs -fpcc-struct-return
#CFLAGS =	-O
#CFLAGS =	-g
#CFLAGS =	-g -O

#LDFLAGS =	-s
#LDFLAGS =	
INSTALLBINARIES =	/usr/new/pbm
INSTALLMANUALS1 =	/usr/man/man1
SUFFIXMANUALS1 =	1
INSTALLMANUALS3 =	/usr/man/man3
SUFFIXMANUALS3 =	3
INSTALLMANUALS5 =	/usr/man/man5
SUFFIXMANUALS5 =	5
MANCP =			cp

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

SHELL =		/bin/sh
#INCLUDE =	-I.. $(INCLUDEPBM)
ALLCFLAGS =	$(CFLAGS) #$(INCLUDE)
LIBPGM =	pgm.lib

CFLAGS = $(cvarsdll) $(cflags) $(cdebug) -I.. $(INCLUDEPBM)

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

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

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)
	cp $(BINARIES) $(INSTALLBINARIES)


merge:		pgmmerge
pgmmerge:	pgmmerge.c $(OBJECTS) $(LIBPGM) $(LIBPBM)
	$(CC) $(ALLCFLAGS) $(LDFLAGS) $@.c $(OBJECTS) -lm $(LIBPGM) $(LIBPBM) $(conlibsdll)

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:
	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):	pgm.h $(DEFPBM) $(LIBPGM) $(LIBPBM)
	$(CC) $(ALLCFLAGS) $(LDFLAGS) $*.c $(LIBPGM) $(LIBPBM) $(conlibsdll)

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

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

# And libraries.
#$(LIBPBM):
#	cd $(PBMDIR) ; make lib
#lib:		$(LIBPGM)
#$(LIBPGM):	libpgm1.obj libpgm2.obj
#	-rm -f $(LIBPGM)
#	ar rc $(LIBPGM) libpgm1.obj libpgm2.obj
#	-ranlib $(LIBPGM)
lib:		$(LIBPGM)
$(LIBPGM):	libpgm1.obj libpgm2.obj
	del pgm.lib
	$(implib) -out:pgm.lib libpgm1.obj libpgm2.obj

libpgm1.obj:	pgm.h $(DEFPBM) libpgm.h libpgm1.c
	$(CC) $(ALLCFLAGS) -c libpgm1.c
libpgm2.obj:	pgm.h $(DEFPBM) libpgm.h libpgm2.c $(DEFLIBPBM)
	$(CC) $(ALLCFLAGS) -c libpgm2.c

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

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