librace: add load/store interface for checking data races
[c11tester.git] / Makefile
index d134f02037c0fb83c03112501e4da736a1ec617b..1f91c5dd6b86b22182c0813e0d2906bfbed7664d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,16 +1,35 @@
-CC=g++
+CC=gcc
+CXX=g++
+
 BIN=model
-SOURCE=libthreads.cc schedule.cc libatomic.cc userprog.c model.cc malloc.c threads.cc tree.cc
-HEADERS=libthreads.h schedule.h common.h libatomic.h model.h threads.h tree.h
-FLAGS=-Wall -ldl -g
+LIB_NAME=model
+LIB_SO=lib$(LIB_NAME).so
+
+USER_O=userprog.o
+USER_H=libthreads.h libatomic.h
+
+MODEL_CC=libthreads.cc schedule.cc libatomic.cc model.cc malloc.c threads.cc tree.cc librace.cc
+MODEL_O=libthreads.o schedule.o libatomic.o model.o malloc.o threads.o tree.o librace.o
+MODEL_H=libthreads.h schedule.h common.h libatomic.h model.h threads.h tree.h librace.h
+
+CPPFLAGS=-Wall -g
+LDFLAGS=-ldl
+
+all: $(BIN)
+
+$(BIN): $(USER_O) $(LIB_SO)
+       $(CXX) -o $(BIN) $(USER_O) -L. -l$(LIB_NAME) $(CPPFLAGS)
+
+# note: implicit rule for generating $(USER_O) (i.e., userprog.c -> userprog.o)
 
-all: ${BIN}
+$(LIB_SO): $(MODEL_O) $(MODEL_H)
+       $(CXX) -shared -Wl,-soname,$(LIB_SO) -o $(LIB_SO) $(MODEL_O) $(LDFLAGS) $(CPPFLAGS)
 
-${BIN}: ${SOURCE} ${HEADERS}
-       ${CC} -o ${BIN} ${SOURCE} ${FLAGS}
+$(MODEL_O): $(MODEL_CC) $(MODEL_H)
+       $(CXX) -fPIC -c $(MODEL_CC) $(CPPFLAGS)
 
 clean:
-       rm -f ${BIN} *.o
+       rm -f $(BIN) *.o *.so
 
 tags::
        ctags -R