update doxygen file
[satcheck.git] / Makefile
1 include common.mk
2
3 PHONY += directories
4 MKDIR_P = mkdir -p
5 TSO_DIR = build_tso
6 SC_DIR = build_sc
7
8 CPP_SOURCES := mymemory.cc context.cc snapshot.cc snapshot-interface.cc libinterface.cc execpoint.cc main.cc cmodelint.cc eprecord.cc epvalue.cc mcexecution.cc model.cc libthreads.cc mcschedule.cc common.cc threads.cc planner.cc cgoal.cc change.cc constgen.cc constraint.cc branchrecord.cc valuerecord.cc storeloadset.cc functionrecord.cc loadrf.cc schedulebuilder.cc equalsrecord.cc inc_solver.cc
9 C_SOURCES := malloc.c
10
11 TSO_OBJECTS := $(CPP_SOURCES:%.cc=$(TSO_DIR)/%.o) $(C_SOURCES:%.c=$(TSO_DIR)/%.o)
12 SC_OBJECTS := $(CPP_SOURCES:%.cc=$(SC_DIR)/%.o) $(C_SOURCES:%.c=$(SC_DIR)/%.o)
13
14 CPPFLAGS += -Iinclude -I.
15 LDFLAGS := -ldl -lrt -rdynamic
16 SHARED := -shared
17
18 # Mac OSX options
19 ifeq ($(UNAME), Darwin)
20 LDFLAGS := -ldl
21 SHARED := -Wl,-undefined,dynamic_lookup -dynamiclib
22 endif
23
24 TESTS_DIR := test
25
26 MARKDOWN := doc/Markdown/Markdown.pl
27
28 all: directories $(TSO_LIB_SO) $(SC_LIB_SO)
29
30 directories: ${TSO_DIR} ${SC_DIR}
31
32 ${TSO_DIR}:
33         ${MKDIR_P} ${TSO_DIR}
34
35 ${SC_DIR}:
36         ${MKDIR_P} ${SC_DIR}
37
38 debug: CPPFLAGS += -DCONFIG_DEBUG
39 debug: all
40
41 PHONY += docs
42 docs: *.c *.cc *.h
43         doxygen
44
45 $(TSO_LIB_SO): $(TSO_OBJECTS)
46         $(CXX) -g $(SHARED) -o $(TSO_LIB_SO) $+ $(LDFLAGS)
47
48 $(SC_LIB_SO): $(SC_OBJECTS)
49         $(CXX) -g $(SHARED) -o $(SC_LIB_SO) $+ $(LDFLAGS)
50
51 ${TSO_DIR}/%.o: %.c
52         $(CC) -fPIC -c $< -o $@ -DTSO -DMSPACES -DONLY_MSPACES -DHAVE_MMAP=0 $(CPPFLAGS) -Wno-unused-variable
53
54 ${TSO_DIR}/%.o: %.cc
55         $(CXX) -MMD -DTSO -MF $@.d -o $@ -fPIC -c $< $(CPPFLAGS)
56
57 ${SC_DIR}/%.o: %.c
58         $(CC) -fPIC -c $< -o $@ -DMSPACES -DONLY_MSPACES -DHAVE_MMAP=0 $(CPPFLAGS) -Wno-unused-variable
59
60 ${SC_DIR}/%.o: %.cc
61         $(CXX) -MMD -MF $@.d -fPIC -o $@ -c $< $(CPPFLAGS)
62
63 %.pdf: %.dot
64         dot -Tpdf $< -o $@
65
66 -include $(TSO_OBJECTS:%=$TSO_DIR/.%.d)
67 -include $(SC_OBJECTS:%=$SC_DIR/.%.d)
68
69 PHONY += clean
70 clean:
71         rm -f *.o *.so *.pdf *.dot dimacs.cnf dimacs.out
72         rm -rf $(TSO_DIR) $(SC_DIR)
73         $(MAKE) -C $(TESTS_DIR) clean
74
75 PHONY += mrclean
76 mrclean: clean
77         rm -rf docs
78
79 PHONY += tags
80 tags:
81         ctags -R
82
83 PHONE += tests
84 tests: $(LIB_SO)
85         $(MAKE) -C $(TESTS_DIR)
86
87 PHONY += pdfs
88 pdfs: $(patsubst %.dot,%.pdf,$(wildcard *.dot))
89
90 tabbing:
91         uncrustify -c C.cfg --no-backup *.cc
92         uncrustify -c C.cfg --no-backup *.h
93
94 .PHONY: $(PHONY)
95
96 # A 1-inch margin PDF generated by 'pandoc'
97 %.pdf: %.md
98         pandoc -o $@ $< -V header-includes='\usepackage[margin=1in]{geometry}'