-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
93 lines (67 loc) · 1.96 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
include common.mk
OBJECTS := libthreads.o schedule.o model.o threads.o librace.o action.o \
clockvector.o main.o cyclegraph.o \
datarace.o impatomic.o cmodelint.o \
snapshot.o malloc.o mymemory.o common.o mutex.o conditionvariable.o \
context.o execution.o libannotate.o plugins.o pthread.o futex.o fuzzer.o \
sleeps.o printf.o \
hashfunction.o pipe.o epoll.o actionlist.o
CPPFLAGS += -Iinclude -I.
LDFLAGS := -ldl -lrt -rdynamic -lpthread
SHARED := -shared
# Mac OSX options
ifeq ($(UNAME), Darwin)
LDFLAGS := -ldl
SHARED := -Wl,-undefined,dynamic_lookup -dynamiclib
endif
MARKDOWN := doc/Markdown/Markdown.pl
all: $(LIB_SO) README.html
debug: CPPFLAGS += -DCONFIG_DEBUG
debug: all
PHONY += docs
docs: *.c *.cc *.h README.html
doxygen
README.html: README.md
$(MARKDOWN) $< > $@
malloc.o: malloc.c
$(CC) -fPIC -c malloc.c -DMSPACES -DONLY_MSPACES -DHAVE_MMAP=1 $(CPPFLAGS) -Wno-unused-variable
printf.o: printf.c
$(CC) -fPIC -c printf.c $(CPPFLAGS)
futex.o: futex.cc
$(CXX) -fPIC -c futex.cc -std=c++11 $(CPPFLAGS)
%.o : %.cc
$(CXX) -MMD -MF [email protected] -fPIC -c $< $(CPPFLAGS)
$(LIB_SO): $(OBJECTS)
$(CXX) $(SHARED) -o $(LIB_SO) $+ $(LDFLAGS)
%.pdf: %.dot
dot -Tpdf $< -o $@
-include $(OBJECTS:%=.%.d)
PHONY += clean
clean:
rm -f *.o *.so .*.d *.pdf *.dot
PHONY += mrclean
mrclean: clean
rm -rf docs
PHONY += tags
tags:
ctags -R
BENCH_DIR := benchmarks
PHONY += benchmarks
benchmarks: $(LIB_SO)
@if ! test -d $(BENCH_DIR); then \
echo "Directory $(BENCH_DIR) does not exist" && \
echo "Please clone the benchmarks repository" && \
echo && \
exit 1; \
fi
$(MAKE) -C $(BENCH_DIR)
PHONY += pdfs
pdfs: $(patsubst %.dot,%.pdf,$(wildcard *.dot))
.PHONY: $(PHONY)
# A 1-inch margin PDF generated by 'pandoc'
%.pdf: %.md
pandoc -o $@ $< -V header-includes='\usepackage[margin=1in]{geometry}'
tabbing:
uncrustify -c C.cfg --no-backup --replace *.cc
uncrustify -c C.cfg --no-backup --replace *.h
uncrustify -c C.cfg --no-backup --replace include/*