###  UTS - Unbalanced Tree Search  ###

PROGRAM = uts

UPCC = upcc
UPCC_FLAGS = -network=smp -lm
CC = icc
CLINK = ${UPCC}
CLINKFLAGS = ${UPCC_FLAGS}
VPATH = .:${UPC_LIB}

RNG_SRC = rng/brg_sha1.c
RNG_INCL= rng/brg_sha1.h
RNG_DEF= -DBRG_RNG

UPC_LIB = ../../lib
SRCS = ${PROGRAM}.c uts_common.c ${UPC_LIB}/taskq.c ${UPC_LIB}/map.c $(RNG_SRC)
OBJS = ${PROGRAM}.o uts_common.o taskq.o map.o brg_sha1.o

${PROGRAM}: $(OBJS)
	$(CLINK) $(CLINKFLAGS) $(RNG_DEF) -o ${PROGRAM} ${OBJS}

${PROGRAM}.o: ${PROGRAM}.c uts.h upc_task.h taskq.h
	${UPCC} ${UPCC_FLAGS} $(RNG_DEF) -c ${PROGRAM}.c -I../../lib

taskq.o: taskq.c upc_task.h taskq.h
	$(UPCC) ${UPCC_FLAGS} -c ${UPC_LIB}/taskq.c -I{UPC_LIB}

map.o: map.c upc_task.h
	$(UPCC) ${UPCC_FLAGS} -c ${UPC_LIB}/map.c -I{UPC_LIB}

uts_common.o: uts_common.c uts.h 
	$(UPCC) ${UPCC_FLAGS} $(RNG_DEF) -c uts_common.c

brg_sha1.o: rng/brg_sha1.c rng/brg_sha1.h rng/brg_endian.h
	$(CC) -O3 -c rng/brg_sha1.c -lm -I./rng

clean:
	-rm -f $(OBJS) $(PROGRAM) *.dbg

