Makefile: build model checker as shared library (libmodel.so)
[c11tester.git] / Makefile
1 CC=gcc
2 CXX=g++
3
4 BIN=model
5 LIB_NAME=model
6 LIB_SO=lib$(LIB_NAME).so
7
8 USER_O=userprog.o
9 USER_H=libthreads.h libatomic.h
10
11 MODEL_CC=libthreads.cc schedule.cc libatomic.cc model.cc malloc.c threads.cc tree.cc
12 MODEL_O=libthreads.o schedule.o libatomic.o model.o malloc.o threads.o tree.o
13 MODEL_H=libthreads.h schedule.h common.h libatomic.h model.h threads.h tree.h
14
15 CPPFLAGS=-Wall -g
16 LDFLAGS=-ldl
17
18 all: $(BIN)
19
20 $(BIN): $(USER_O) $(LIB_SO)
21         $(CXX) -o $(BIN) $(USER_O) -L. -l$(LIB_NAME) $(CPPFLAGS)
22
23 # note: implicit rule for generating $(USER_O) (i.e., userprog.c -> userprog.o)
24
25 $(LIB_SO): $(MODEL_O) $(MODEL_H)
26         $(CXX) -shared -Wl,-soname,$(LIB_SO) -o $(LIB_SO) $(MODEL_O) $(LDFLAGS) $(CPPFLAGS)
27
28 $(MODEL_O): $(MODEL_CC) $(MODEL_H)
29         $(CXX) -fPIC -c $(MODEL_CC) $(CPPFLAGS)
30
31 clean:
32         rm -f $(BIN) *.o *.so
33
34 tags::
35         ctags -R