LIB = /usr/local/lib
LIBS = ${LIB}/libfp.a ${LIB}/libnfp.a ${LIB}/libdfp.a
SRC = lib.fp set.fp store.fp format.fp makefile nil
TST = tstlib tststore tstset tstformat
OBJ = lib.o store.o set.o format.o
NOBJ = nlib.o nstore.o nset.o nformat.o
DOBJ = dlib.o dstore.o dset.o dformat.o

all: ${OBJ} ${NOBJ} ${DOBJ} ${TST}

release: ${LIBS} ${TST}

clean:
	mkdir .tmp
	mv ${SRC} .tmp
	touch tmp
	rm -f *
	mv .tmp/* .
	rmdir .tmp

.SUFFIXES:

# make ../src/fp.o explicitly depend on nothing, otherwise make
# tries to make it from ../src/fp.c!
../src/fp.o:
	echo trying to make ../src/fp.o

fp.o: ../fp.o
	rm -f fp.o
	cp ../fp.o .

fpc: ../fpc
	rm -f fpc
	cp ../fpc .

tstlib: lib.fp fp.o nil fpc
	cp lib.fp tstlib.fp
	fpc -m tstlib.fp
	cc -o tstlib tstlib.c fp.o
	rm -f tstlib.*
	tstlib < nil | sed \$$!d

tstset: set.fp fp.o nil fpc
	cp set.fp tstset.fp
	fpc -m tstset.fp
	cc -o tstset tstset.c fp.o
	rm -f tstset.*
	tstset < nil | sed \$$!d

tststore: store.fp fp.o nil fpc
	cp store.fp tststore.fp
	fpc -m tststore.fp
	cc -o tststore tststore.c fp.o
	rm -f tststore.*
	tststore < nil | sed \$$!d

tstformat: format.fp lib.o set.o fp.o nil fpc
	cp format.fp tstformat.fp
	fpc -mtstformat tstformat.fp
	cc -o tstformat tstformat.c lib.o set.o fp.o
	rm -f tstformat.*
	tstformat < nil | sed \$$!d

.SUFFIXES: .c .o

.c.o: $*.c
	cc -c -O ${CFLAGS} $*.c

lib.c: lib.fp fpc
	fpc lib.fp

nlib.c: lib.fp fpc
	cp lib.fp nlib.fp
	fpc -n nlib.fp
	rm -f nlib.fp

dlib.c: lib.fp fpc
	cp lib.fp dlib.fp
	fpc -d dlib.fp
	rm -f dlib.fp

set.c: set.fp fpc
	fpc set.fp

nset.c: set.fp fpc
	cp set.fp nset.fp
	fpc -n nset.fp
	rm -f nset.fp

dset.c: set.fp fpc
	cp set.fp dset.fp
	fpc -d dset.fp
	rm -f dset.fp

store.c: store.fp fpc
	fpc store.fp

nstore.c: store.fp fpc
	cp store.fp nstore.fp
	fpc -n nstore.fp
	rm -f nstore.fp

dstore.c: store.fp fpc
	cp store.fp dstore.fp
	fpc -d dstore.fp
	rm -f dstore.fp

format.c: format.fp fpc
	fpc format.fp

nformat.c: format.fp fpc
	cp format.fp nformat.fp
	fpc -n nformat.fp
	rm -f nformat.fp

dformat.c: format.fp fpc
	cp format.fp dformat.fp
	fpc -d dformat.fp
	rm -f dformat.fp

${LIB}/libfp.a: ${OBJ}
	ar ru ${LIB}/libfp.a ${OBJ}
	ranlib ${LIB}/libfp.a

${LIB}/libnfp.a: ${NOBJ}
	ar ru ${LIB}/libnfp.a ${NOBJ}
	ranlib ${LIB}/libnfp.a

${LIB}/libdfp.a: ${DOBJ}
	ar ru ${LIB}/libdfp.a ${DOBJ}
	ranlib ${LIB}/libdfp.a

nil:
	echo \<\> > nil
