# Last edited on 2005-02-04 03:05:23 by stolfi

LIBNAME = libdygrid

INC = /home/staff/stolfi/PUB/include
LIB = /home/staff/stolfi/PUB/${PLATFORM}/lib

# Determine major platform for C compilation
IS_LINUX := ${findstring Linux,${PLATFORM}}
IS_SUNIV := ${findstring SunOS-4,${PLATFORM}}
IS_SUNV :=  ${findstring SunOS-5,${PLATFORM}}
IS_OSFIV :=  ${findstring OSF1-V4,${PLATFORM}}
PLATF := ${subst -,,${IS_LINUX}${IS_SUNIV}${IS_SUNV}${IS_OSFIV}}

HFILES := \
  dgbasic.h \
  dgbezier.h \
  dgpulse.h \
  dgbezpatch.h \
  dgtent.h \
  dgtree.h \
  dglocus.h \
  dgfindbasis.h \
  dgplot.h \
  dgmakegrid.h

NONHFILES := \
  dgspline.h \
  dgitemmap.h \
  dgplotextra.h

CFILES = \
  dgbasic.c \
  dgbezier.c \
  dgpulse.c \
  dgbezpatch.c \
  dgtent.c \
  dgtree.c \
  dglocus.c \
  dgfindbasis.c \
  dgplot.c \
  dgmakegrid.c
  
NONCFILES := \
  dgspline.c \
  dgitemmap.c \
  dgplotextra.c
  
HOFILES := ${subst .h,.ho,${HFILES}}
OFILES := ${subst .c,.o,${CFILES}}
  
LIBFILE = \
  ${LIBNAME}.a
  
.PHONY: all clean uninstall install test

all: uninstall install
# all: clean uninstall install check
# all: uninstall install check

uninstall:
	cd ${INC} && /bin/rm -f ${HFILES} ${HOFILES}
	cd ${LIB} && /bin/rm -f ${LIBFILE}

install: ${HOFILES} ${LIBFILE}
	cp -p ${HFILES} ${INC}
	cp ${HOFILES} ${INC}
	cp -p ${LIBFILE} ${LIB}
  
check:
	cd tests && make PLATF=${PLATF} all

clean:
	-/bin/rm -f *.o *.ho *.a core
	cd tests && make PLATF=${PLATF} clean

GCCFLAGS = \
  -D${PLATF} \
  -I. -I${INC} \
  -g \
  -Wall -Wpointer-arith -Wmissing-prototypes

dg%.o: dg%.c ${INC}/js.ho ${INC}/vec.ho ;\
  gcc -c ${GCCFLAGS} dg$*.c
  
dg%.ho: dg%.h ${INC}/js.ho ${INC}/vec.ho ;\
  gcc -o dg$*.ho -c ${GCCFLAGS} -x c dg$*.h \
  || /bin/rm -f dg$*.ho
  
${LIBFILE}: ${OFILES} ;\
  rm -f dg$*.a && ar crv $*.a ${OFILES} && ranlib $*.a
  
# Dependencies of .h files:
  
dgbasic.ho: dgbasic.h \
  ${INC}/js.ho ${INC}/vec.ho 

dgbezier.ho: dgbezier.h dgbasic.ho \
  ${INC}/js.ho

dgpulse.ho: dgpulse.h dgbasic.ho dgbezier.ho \
  ${INC}/js.ho 

dgbezpatch.ho: dgbezpatch.h dgbezier.ho dgbasic.ho \
  ${INC}/js.ho

dgtent.ho: dgtent.h dgbasic.ho dgbezier.ho dgpulse.ho dgbezpatch.ho \
  ${INC}/js.ho 

dgtree.ho: dgtree.h dgbasic.ho \
  ${INC}/js.ho ${INC}/vec.ho 
  
dglocus.ho: dglocus.h dgtree.ho dgbasic.ho \
  ${INC}/js.ho ${INC}/vec.ho
  
dgfindbasis.ho: dgfindbasis.h dgbasic.ho dgbezier.ho dgtent.ho dgbezpatch.ho dgtree.ho \
  ${INC}/js.ho ${INC}/vec.ho

dgspline.ho: dgspline.h dgbasic.ho dgbezier.ho dgtent.ho dgbezpatch.ho dgtree.ho \
  ${INC}/js.ho ${INC}/vec.ho
  
dgplot.ho: dgplot.h dgbasic.ho dgtree.ho dgbezpatch.ho \
  ${INC}/js.ho ${INC}/pswr.ho
  
dgmakegrid.ho: dgmakegrid.h dgbasic.ho dgtree.ho dgbezpatch.ho \
  ${INC}/js.ho
  
dgitemmap.ho: dgitemmap.h dgbasic.ho dgtree.ho dgbezpatch.ho \
  ${INC}/js.ho
  
dgplotextra.ho: dgplotextra.h dgbasic.ho dgtree.ho dgbezpatch.ho \
  dgplot.ho dgfaceshape.ho \
  ${INC}/js.ho

# Dependencies of .c files:

dgbasic.o: dgbasic.c dgbasic.ho \
  ${INC}/js.ho

dgbezier.o: dgbezier.c dgbasic.ho dgbezier.ho \
  ${INC}/js.ho

dgbezpatch.o: dgbezpatch.c dgbasic.ho dgbezier.ho dgbezpatch.ho \
  ${INC}/js.ho

dgpulse.o: dgpulse.c dgbasic.ho dgbezier.ho dgpulse.ho \
  ${INC}/js.ho

dgtent.o: dgtent.c dgbasic.ho dgbezier.ho dgbezpatch.ho dgtent.ho \
  dgtree.ho dglocus.ho \
  ${INC}/js.ho

dgtree.o: dgtree.c dgbasic.ho dgtree.ho
dglocus.o: dglocus.c dgbasic.ho dgtree.ho dglocus.ho

dgfindbasis.o: dgfindbasis.c dgbasic.ho dgtree.ho dglocus.ho dgtent.ho dgfindbasis.ho

dgspline.o: dgspline.c dgbasic.ho dgspline.ho dgbezier.ho dgtree.ho dglocus.ho

dgplot.o: dgplot.c dgbasic.ho dgplot.ho dgtree.ho dgbezpatch.ho \
  ${INC}/pswr.ho ${INC}/js.ho
  
dgmakegrid.o: dgmakegrid.c dgbasic.ho dgmakegrid.ho dgtree.ho dgbezier.ho
dgitemmap.o: dgitemmap.c dgbasic.ho dgitemmap.ho dgtree.ho dgbezier.ho
dgplotextra.o: dgplotextra.c dgbasic.ho dgplotextra.ho dgtree.ho dgspline.ho dgitemmap.ho
