CC = gcc -Wall -W -Wno-unused
COPT = -g
CFLAGS = ${COPT} ${CDEFS}
LIBS =


objcache.o:	objcache.c objcache.h config.h
1-objcache.o:	1-objcache.c objcache.h config.h
2-objcache.o:	2-objcache.c objcache.h config.h
3-objcache.o:	3-objcache.c objcache.h config.h

1-objcache.c:	objcache.c Makefile
	echo "#define THREE_SINGLELINKED_SLABLISTS" >$@
	echo '# 1 "$<"' >>$@
	cat $< >>$@
2-objcache.c:	objcache.c Makefile
	echo "#define THREE_CIRCULAR_DOUBLELINKED_SLABLISTS" >$@
	echo '# 1 "$<"' >>$@
	cat $< >>$@
3-objcache.c:	objcache.c Makefile
	echo "#define ONE_CIRCULAR_DOUBLELINKED_SLABLIST" >$@
	echo '# 1 "$<"' >>$@
	cat $< >>$@

test.o:		test.c objcache.h
test1:	test.o 1-objcache.o
	${CC} ${COPT} $^ -o $@ ${LIBS}
test2:	test.o 2-objcache.o
	${CC} ${COPT} $^ -o $@ ${LIBS}
test3:	test.o 3-objcache.o
	${CC} ${COPT} $^ -o $@ ${LIBS}

timer.o: timer.c objcache.h
timer1:	timer.o 1-objcache.o
	${CC} ${COPT} $^ -o $@ ${LIBS}
timer2:	timer.o 2-objcache.o
	${CC} ${COPT} $^ -o $@ ${LIBS}
timer3:	timer.o 3-objcache.o
	${CC} ${COPT} $^ -o $@ ${LIBS}


clean:
	${RM} test1 test2 test3 timer1 timer2 timer3
	${RM} 1-objcache.c 2-objcache.c 3-objcache.c
	${RM} *.o
