#
# Makefile Written by S. Wartik, April 1991
#          Modified by C. Fox, November 1991
#
# Makefile for bit-vector implementation of boolean operations.
#
# The make directives are:
#
#  	bv.o		A bit vector implementation of boolean operations.
#
#	hash.o		A hashing implementation of boolean operations.
#
#	all (default)	bv.o and hash.o.
#
#  	bvdriver	A test driver for the bit vector-based implementation.
#
#  	hdriver		A test driver for the hashing-based implementation.
#
#	regression	A combined execution of bvregression and hregression.
#
#  	bvregression	An execution of the bit vector test driver, with an 
#			indication of whether the results are as expected.
#
#  	hregression	An execution of the hashing test driver, with an
#			indication of whether the results are as expected.
#

BV_OBJS=	bv.o
BV_SRCS=	bv.c
BV_HDRS=	bv.h

HSH_OBJS=	hash.o
HSH_SRCS=	hash.c
HSH_HDRS=	hash.h

BV_DR_SRCS=	bvdriver.c
BV_DR_OBJS=	bvdriver.o
HSH_DR_SRCS=	hdriver.c
HSH_DR_OBJS=	hdriver.o

all : $(BV_OBJS) $(HSH_OBJS)

bvdriver: $(BV_OBJS) $(BV_DR_OBJS)
	$(CC) $(LDFLAGS) -o bvdriver $(BV_DR_OBJS) $(BV_OBJS)

hdriver: $(HSH_OBJS) $(HSH_DR_OBJS)
	$(CC) $(LDFLAGS) -o hdriver $(HSH_DR_OBJS) $(HSH_OBJS)

$(BV_DR_OBJS): $(BV_DR_SRCS) $(BV_HDRS)
	$(CC) -c $(CFLAGS) $(BV_DR_SRCS)

$(HSH_DR_OBJS): $(DR_SRCS) $(HSH_HDRS)
	$(CC) -c $(CFLAGS) $(HSH_DR_SRCS)

bvregression: bvdriver
	./bvdriver 0 255	# Exercise maximum possible range.
	./bvdriver 1 256	# Ditto, but offset a bit.
	./bvdriver -10 34	# Can ranges include all domain values?
	./bvdriver 20 26	# Test a small range too.
	./bvdriver 1024 1100	# Test a large minimum value.

hregression: hdriver
	./hdriver 0 20 101	# Large hash table, few elements.
	./hdriver 0 101 20	# Small hash table, many elements.

regression: bvregression hregression

bv.o:	bv.h

hash.o:	hash.h
