Index: src/benchmark/Makefile.am
===================================================================
--- src/benchmark/Makefile.am	(revision 6fb1921e9fe4edac74c6ffb62a115973f7a930f6)
+++ src/benchmark/Makefile.am	(revision 04e367c3642ecfb66bd6da179b6b0b0db1ac9787)
@@ -17,5 +17,20 @@
 # applies to both programs
 CFLAGS =
-AM_CFLAGS = -g -Wall -Wno-unused-function -O2
+AM_CFLAGS = \
+	-XCFA \
+	-t \
+	-B${abs_top_builddir}/src/driver \
+	-g \
+	-O2 \
+	-Wall \
+	-Wno-unused-function \
+	-quiet \
+	-I$(srcdir) \
+	-L${abs_top_builddir}/src/libcfa \
+	-I${abs_top_srcdir}/src/libcfa \
+	-I${abs_top_srcdir}/src/libcfa/containers \
+	-I${abs_top_srcdir}/src/libcfa/concurrency \
+	-I${abs_top_srcdir}/src/libcfa/stdhdr
+
 CC = ${top_builddir}/src/driver/cfa
 TOOLSDIR = ${abs_top_srcdir}/tools/
@@ -93,11 +108,11 @@
 ## =========================================================================================================
 loop$(EXEEXT):
-	@@BACKEND_CC@ loop.c      -DBENCH_N=5000000000 -I. -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@@BACKEND_CC@ loop.c      -DBENCH_N=5000000000 -I$(srcdir) -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 function$(EXEEXT):
-	@@BACKEND_CC@ function.c  -DBENCH_N=5000000000 -I. -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@@BACKEND_CC@ function.c  -DBENCH_N=5000000000 -I$(srcdir) -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 fetch_add$(EXEEXT):
-	@@BACKEND_CC@ fetch_add.c -DBENCH_N=500000000  -I. -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@@BACKEND_CC@ fetch_add.c -DBENCH_N=500000000  -I$(srcdir) -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 ## =========================================================================================================
@@ -118,32 +133,32 @@
 
 ctxswitch-pthread$(EXEEXT):
-	@@BACKEND_CC@ ctxswitch/pthreads.c     -DBENCH_N=50000000  -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@@BACKEND_CC@ $(srcdir)/ctxswitch/pthreads.c     -DBENCH_N=50000000  -I$(srcdir) -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 ctxswitch-cfa_coroutine$(EXEEXT):
-	@${CC}        ctxswitch/cfa_cor.c      -DBENCH_N=50000000  -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/ctxswitch/cfa_cor.c      -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 ctxswitch-cfa_thread$(EXEEXT):
-	@${CC}        ctxswitch/cfa_thrd.c     -DBENCH_N=50000000  -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/ctxswitch/cfa_thrd.c     -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 ctxswitch-cfa_thread2$(EXEEXT):
-	@${CC}        ctxswitch/cfa_thrd2.c    -DBENCH_N=50000000  -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/ctxswitch/cfa_thrd2.c    -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 ctxswitch-upp_coroutine$(EXEEXT):
-	@u++          ctxswitch/upp_cor.cc     -DBENCH_N=50000000  -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@u++          $(srcdir)/ctxswitch/upp_cor.cc     -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 ctxswitch-upp_thread$(EXEEXT):
-	@u++          ctxswitch/upp_thrd.cc    -DBENCH_N=50000000  -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@u++          $(srcdir)/ctxswitch/upp_thrd.cc    -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 ctxswitch-kos_fibre$(EXEEXT):
-	@${CXX}       ctxswitch/kos_fibre.cpp  -DBENCH_N=50000000  -I. -I/home/tdelisle/software/KOS/src/ -g -O2 -lfibre -lpthread -lrt
+	@${CXX}       $(srcdir)/ctxswitch/kos_fibre.cpp  -DBENCH_N=50000000  -I$(srcdir) -I/home/tdelisle/software/KOS/src/ -g -O2 -lfibre -lpthread -lrt
 
 ctxswitch-kos_fibre2$(EXEEXT):
-	@${CXX}       ctxswitch/kos_fibre2.cpp -DBENCH_N=50000000  -I. -I/home/tdelisle/software/KOS/src/ -g -O2 -lfibre -lpthread -lrt
+	@${CXX}       $(srcdir)/ctxswitch/kos_fibre2.cpp -DBENCH_N=50000000  -I$(srcdir) -I/home/tdelisle/software/KOS/src/ -g -O2 -lfibre -lpthread -lrt
 
 ctxswitch-goroutine$(EXEEXT):
-	@go build -o a.out ctxswitch/goroutine.go
+	@go build -o a.out $(srcdir)/ctxswitch/goroutine.go
 
 ctxswitch-java_thread$(EXEEXT):
-	@javac ctxswitch/JavaThread.java
+	@javac $(srcdir)/ctxswitch/JavaThread.java
 	@echo "#!/bin/sh" > a.out
 	@echo "cd ctxswitch && java JavaThread" >> a.out
@@ -163,20 +178,20 @@
 
 mutex-pthread_lock$(EXEEXT):
-	@@BACKEND_CC@ mutex/pthreads.c    -DBENCH_N=50000000    -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@@BACKEND_CC@ $(srcdir)/mutex/pthreads.c    -DBENCH_N=50000000    -I$(srcdir) -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 mutex-upp$(EXEEXT):
-	@u++          mutex/upp.cc        -DBENCH_N=50000000    -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@u++          $(srcdir)/mutex/upp.cc        -DBENCH_N=50000000    -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 mutex-cfa1$(EXEEXT):
-	@${CC}        mutex/cfa1.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/mutex/cfa1.c        -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 mutex-cfa2$(EXEEXT):
-	@${CC}        mutex/cfa2.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/mutex/cfa2.c        -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 mutex-cfa4$(EXEEXT):
-	@${CC}        mutex/cfa4.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/mutex/cfa4.c        -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 mutex-java_thread$(EXEEXT):
-	@javac mutex/JavaThread.java
+	@javac $(srcdir)/mutex/JavaThread.java
 	@echo "#!/bin/sh" > a.out
 	@echo "cd mutex && java JavaThread" >> a.out
@@ -193,20 +208,20 @@
 
 signal-pthread_cond$(EXEEXT):
-	@@BACKEND_CC@ schedint/pthreads.c -DBENCH_N=500000      -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@@BACKEND_CC@ $(srcdir)/schedint/pthreads.c -DBENCH_N=500000      -I$(srcdir) -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 signal-upp$(EXEEXT):
-	@u++          schedint/upp.cc     -DBENCH_N=5000000     -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@u++          $(srcdir)/schedint/upp.cc     -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 signal-cfa1$(EXEEXT):
-	@${CC}        schedint/cfa1.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/schedint/cfa1.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 signal-cfa2$(EXEEXT):
-	@${CC}        schedint/cfa2.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/schedint/cfa2.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 signal-cfa4$(EXEEXT):
-	@${CC}        schedint/cfa4.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/schedint/cfa4.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 signal-java_thread$(EXEEXT):
-	@javac schedint/JavaThread.java
+	@javac $(srcdir)/schedint/JavaThread.java
 	@echo "#!/bin/sh" > a.out
 	@echo "cd schedint && java JavaThread" >> a.out
@@ -222,14 +237,14 @@
 
 waitfor-upp$(EXEEXT):
-	@u++          schedext/upp.cc     -DBENCH_N=5000000     -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@u++          $(srcdir)/schedext/upp.cc     -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 waitfor-cfa1$(EXEEXT):
-	@${CC}        schedext/cfa1.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/schedext/cfa1.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 waitfor-cfa2$(EXEEXT):
-	@${CC}        schedext/cfa2.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/schedext/cfa2.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 waitfor-cfa4$(EXEEXT):
-	@${CC}        schedext/cfa4.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/schedext/cfa4.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 ## =========================================================================================================
@@ -245,26 +260,26 @@
 
 creation-cfa_coroutine$(EXEEXT):
-	@${CC}        creation/cfa_cor.c   -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/creation/cfa_cor.c   -DBENCH_N=10000000   -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 creation-cfa_coroutine_eager$(EXEEXT):
-	@${CC}        creation/cfa_cor.c   -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags} -DEAGER
+	@${CC}        $(srcdir)/creation/cfa_cor.c   -DBENCH_N=10000000   -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags} -DEAGER
 
 creation-cfa_thread$(EXEEXT):
-	@${CC}        creation/cfa_thrd.c  -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/creation/cfa_thrd.c  -DBENCH_N=10000000   -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 creation-upp_coroutine$(EXEEXT):
-	@u++          creation/upp_cor.cc  -DBENCH_N=50000000   -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@u++          $(srcdir)/creation/upp_cor.cc  -DBENCH_N=50000000   -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 creation-upp_thread$(EXEEXT):
-	@u++          creation/upp_thrd.cc -DBENCH_N=50000000   -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@u++          $(srcdir)/creation/upp_thrd.cc -DBENCH_N=50000000   -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 creation-pthread$(EXEEXT):
-	@@BACKEND_CC@ creation/pthreads.c  -DBENCH_N=250000     -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@@BACKEND_CC@ $(srcdir)/creation/pthreads.c  -DBENCH_N=250000     -I$(srcdir) -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 creation-goroutine$(EXEEXT):
-	@go build -o a.out creation/goroutine.go
+	@go build -o a.out $(srcdir)/creation/goroutine.go
 
 creation-java_thread$(EXEEXT):
-	@javac creation/JavaThread.java
+	@javac $(srcdir)/creation/JavaThread.java
 	@echo "#!/bin/sh" > a.out
 	@echo "cd creation && java JavaThread" >> a.out
@@ -284,29 +299,31 @@
 
 
+testdir = $(top_srcdir)/src/tests
+
 compile-array$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w ../tests/array.c				@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC} -quiet -fsyntax-only -w $(testdir)/array.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 compile-attributes$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w ../tests/attributes.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC} -quiet -fsyntax-only -w $(testdir)/attributes.c		@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 compile-empty$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w compile/empty.c				@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC} -quiet -fsyntax-only -w $(srcdir)/compile/empty.c          @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 compile-expression$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w ../tests/expression.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC} -quiet -fsyntax-only -w $(testdir)/expression.c		@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 compile-io$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w ../tests/io1.c				@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC} -quiet -fsyntax-only -w $(testdir)/io1.c				@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 compile-monitor$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w ../tests/concurrent/monitor.c	@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC} -quiet -fsyntax-only -w $(testdir)/concurrent/monitor.c	@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 compile-operators$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w ../tests/operators.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC} -quiet -fsyntax-only -w $(testdir)/operators.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 compile-thread$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w ../tests/concurrent/thread.c		@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC} -quiet -fsyntax-only -w $(testdir)/concurrent/thread.c	@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 compile-typeof$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w ../tests/typeof.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
+	@${CC} -quiet -fsyntax-only -w $(testdir)/typeof.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
Index: src/benchmark/Makefile.in
===================================================================
--- src/benchmark/Makefile.in	(revision 6fb1921e9fe4edac74c6ffb62a115973f7a930f6)
+++ src/benchmark/Makefile.in	(revision 04e367c3642ecfb66bd6da179b6b0b0db1ac9787)
@@ -247,5 +247,20 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-AM_CFLAGS = -g -Wall -Wno-unused-function -O2
+AM_CFLAGS = \
+	-XCFA \
+	-t \
+	-B${abs_top_builddir}/src/driver \
+	-g \
+	-O2 \
+	-Wall \
+	-Wno-unused-function \
+	-quiet \
+	-I$(srcdir) \
+	-L${abs_top_builddir}/src/libcfa \
+	-I${abs_top_srcdir}/src/libcfa \
+	-I${abs_top_srcdir}/src/libcfa/containers \
+	-I${abs_top_srcdir}/src/libcfa/concurrency \
+	-I${abs_top_srcdir}/src/libcfa/stdhdr
+
 TOOLSDIR = ${abs_top_srcdir}/tools/
 REPEAT = ${TOOLSDIR}repeat
@@ -255,4 +270,5 @@
 TIME_FORMAT = "%E"
 PRINT_FORMAT = %20s: #Comments needed for spacing
+testdir = $(top_srcdir)/src/tests
 all: all-am
 
@@ -505,11 +521,11 @@
 
 loop$(EXEEXT):
-	@@BACKEND_CC@ loop.c      -DBENCH_N=5000000000 -I. -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@@BACKEND_CC@ loop.c      -DBENCH_N=5000000000 -I$(srcdir) -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 function$(EXEEXT):
-	@@BACKEND_CC@ function.c  -DBENCH_N=5000000000 -I. -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@@BACKEND_CC@ function.c  -DBENCH_N=5000000000 -I$(srcdir) -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 fetch_add$(EXEEXT):
-	@@BACKEND_CC@ fetch_add.c -DBENCH_N=500000000  -I. -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@@BACKEND_CC@ fetch_add.c -DBENCH_N=500000000  -I$(srcdir) -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 ctxswitch$(EXEEXT): \
@@ -529,32 +545,32 @@
 
 ctxswitch-pthread$(EXEEXT):
-	@@BACKEND_CC@ ctxswitch/pthreads.c     -DBENCH_N=50000000  -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@@BACKEND_CC@ $(srcdir)/ctxswitch/pthreads.c     -DBENCH_N=50000000  -I$(srcdir) -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 ctxswitch-cfa_coroutine$(EXEEXT):
-	@${CC}        ctxswitch/cfa_cor.c      -DBENCH_N=50000000  -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/ctxswitch/cfa_cor.c      -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 ctxswitch-cfa_thread$(EXEEXT):
-	@${CC}        ctxswitch/cfa_thrd.c     -DBENCH_N=50000000  -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/ctxswitch/cfa_thrd.c     -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 ctxswitch-cfa_thread2$(EXEEXT):
-	@${CC}        ctxswitch/cfa_thrd2.c    -DBENCH_N=50000000  -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/ctxswitch/cfa_thrd2.c    -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 ctxswitch-upp_coroutine$(EXEEXT):
-	@u++          ctxswitch/upp_cor.cc     -DBENCH_N=50000000  -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@u++          $(srcdir)/ctxswitch/upp_cor.cc     -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 ctxswitch-upp_thread$(EXEEXT):
-	@u++          ctxswitch/upp_thrd.cc    -DBENCH_N=50000000  -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@u++          $(srcdir)/ctxswitch/upp_thrd.cc    -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 ctxswitch-kos_fibre$(EXEEXT):
-	@${CXX}       ctxswitch/kos_fibre.cpp  -DBENCH_N=50000000  -I. -I/home/tdelisle/software/KOS/src/ -g -O2 -lfibre -lpthread -lrt
+	@${CXX}       $(srcdir)/ctxswitch/kos_fibre.cpp  -DBENCH_N=50000000  -I$(srcdir) -I/home/tdelisle/software/KOS/src/ -g -O2 -lfibre -lpthread -lrt
 
 ctxswitch-kos_fibre2$(EXEEXT):
-	@${CXX}       ctxswitch/kos_fibre2.cpp -DBENCH_N=50000000  -I. -I/home/tdelisle/software/KOS/src/ -g -O2 -lfibre -lpthread -lrt
+	@${CXX}       $(srcdir)/ctxswitch/kos_fibre2.cpp -DBENCH_N=50000000  -I$(srcdir) -I/home/tdelisle/software/KOS/src/ -g -O2 -lfibre -lpthread -lrt
 
 ctxswitch-goroutine$(EXEEXT):
-	@go build -o a.out ctxswitch/goroutine.go
+	@go build -o a.out $(srcdir)/ctxswitch/goroutine.go
 
 ctxswitch-java_thread$(EXEEXT):
-	@javac ctxswitch/JavaThread.java
+	@javac $(srcdir)/ctxswitch/JavaThread.java
 	@echo "#!/bin/sh" > a.out
 	@echo "cd ctxswitch && java JavaThread" >> a.out
@@ -573,20 +589,20 @@
 
 mutex-pthread_lock$(EXEEXT):
-	@@BACKEND_CC@ mutex/pthreads.c    -DBENCH_N=50000000    -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@@BACKEND_CC@ $(srcdir)/mutex/pthreads.c    -DBENCH_N=50000000    -I$(srcdir) -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 mutex-upp$(EXEEXT):
-	@u++          mutex/upp.cc        -DBENCH_N=50000000    -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@u++          $(srcdir)/mutex/upp.cc        -DBENCH_N=50000000    -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 mutex-cfa1$(EXEEXT):
-	@${CC}        mutex/cfa1.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/mutex/cfa1.c        -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 mutex-cfa2$(EXEEXT):
-	@${CC}        mutex/cfa2.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/mutex/cfa2.c        -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 mutex-cfa4$(EXEEXT):
-	@${CC}        mutex/cfa4.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/mutex/cfa4.c        -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 mutex-java_thread$(EXEEXT):
-	@javac mutex/JavaThread.java
+	@javac $(srcdir)/mutex/JavaThread.java
 	@echo "#!/bin/sh" > a.out
 	@echo "cd mutex && java JavaThread" >> a.out
@@ -602,20 +618,20 @@
 
 signal-pthread_cond$(EXEEXT):
-	@@BACKEND_CC@ schedint/pthreads.c -DBENCH_N=500000      -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@@BACKEND_CC@ $(srcdir)/schedint/pthreads.c -DBENCH_N=500000      -I$(srcdir) -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 signal-upp$(EXEEXT):
-	@u++          schedint/upp.cc     -DBENCH_N=5000000     -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@u++          $(srcdir)/schedint/upp.cc     -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 signal-cfa1$(EXEEXT):
-	@${CC}        schedint/cfa1.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/schedint/cfa1.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 signal-cfa2$(EXEEXT):
-	@${CC}        schedint/cfa2.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/schedint/cfa2.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 signal-cfa4$(EXEEXT):
-	@${CC}        schedint/cfa4.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/schedint/cfa4.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 signal-java_thread$(EXEEXT):
-	@javac schedint/JavaThread.java
+	@javac $(srcdir)/schedint/JavaThread.java
 	@echo "#!/bin/sh" > a.out
 	@echo "cd schedint && java JavaThread" >> a.out
@@ -629,14 +645,14 @@
 
 waitfor-upp$(EXEEXT):
-	@u++          schedext/upp.cc     -DBENCH_N=5000000     -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@u++          $(srcdir)/schedext/upp.cc     -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 waitfor-cfa1$(EXEEXT):
-	@${CC}        schedext/cfa1.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/schedext/cfa1.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 waitfor-cfa2$(EXEEXT):
-	@${CC}        schedext/cfa2.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/schedext/cfa2.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 waitfor-cfa4$(EXEEXT):
-	@${CC}        schedext/cfa4.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/schedext/cfa4.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 creation$(EXEEXT) :\
@@ -651,26 +667,26 @@
 
 creation-cfa_coroutine$(EXEEXT):
-	@${CC}        creation/cfa_cor.c   -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/creation/cfa_cor.c   -DBENCH_N=10000000   -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 creation-cfa_coroutine_eager$(EXEEXT):
-	@${CC}        creation/cfa_cor.c   -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags} -DEAGER
+	@${CC}        $(srcdir)/creation/cfa_cor.c   -DBENCH_N=10000000   -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags} -DEAGER
 
 creation-cfa_thread$(EXEEXT):
-	@${CC}        creation/cfa_thrd.c  -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC}        $(srcdir)/creation/cfa_thrd.c  -DBENCH_N=10000000   -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 creation-upp_coroutine$(EXEEXT):
-	@u++          creation/upp_cor.cc  -DBENCH_N=50000000   -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@u++          $(srcdir)/creation/upp_cor.cc  -DBENCH_N=50000000   -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 creation-upp_thread$(EXEEXT):
-	@u++          creation/upp_thrd.cc -DBENCH_N=50000000   -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@u++          $(srcdir)/creation/upp_thrd.cc -DBENCH_N=50000000   -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 creation-pthread$(EXEEXT):
-	@@BACKEND_CC@ creation/pthreads.c  -DBENCH_N=250000     -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@@BACKEND_CC@ $(srcdir)/creation/pthreads.c  -DBENCH_N=250000     -I$(srcdir) -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 creation-goroutine$(EXEEXT):
-	@go build -o a.out creation/goroutine.go
+	@go build -o a.out $(srcdir)/creation/goroutine.go
 
 creation-java_thread$(EXEEXT):
-	@javac creation/JavaThread.java
+	@javac $(srcdir)/creation/JavaThread.java
 	@echo "#!/bin/sh" > a.out
 	@echo "cd creation && java JavaThread" >> a.out
@@ -688,29 +704,29 @@
 
 compile-array$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w ../tests/array.c				@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC} -quiet -fsyntax-only -w $(testdir)/array.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 compile-attributes$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w ../tests/attributes.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC} -quiet -fsyntax-only -w $(testdir)/attributes.c		@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 compile-empty$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w compile/empty.c				@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC} -quiet -fsyntax-only -w $(srcdir)/compile/empty.c          @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 compile-expression$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w ../tests/expression.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC} -quiet -fsyntax-only -w $(testdir)/expression.c		@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 compile-io$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w ../tests/io1.c				@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC} -quiet -fsyntax-only -w $(testdir)/io1.c				@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 compile-monitor$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w ../tests/concurrent/monitor.c	@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC} -quiet -fsyntax-only -w $(testdir)/concurrent/monitor.c	@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 compile-operators$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w ../tests/operators.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC} -quiet -fsyntax-only -w $(testdir)/operators.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 compile-thread$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w ../tests/concurrent/thread.c		@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC} -quiet -fsyntax-only -w $(testdir)/concurrent/thread.c	@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 compile-typeof$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w ../tests/typeof.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+	@${CC} -quiet -fsyntax-only -w $(testdir)/typeof.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
