-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
50 lines (39 loc) · 1.07 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
LLBIN=/usr/lib/llvm-3.8/bin
LLVM_CONFIG=$(LLBIN)/llvm-config
LDIS=$(LLBIN)/llvm-dis
CPP=$(LLBIN)/clang++
CC=$(LLBIN)/clang
LLC=$(LLBIN)/llc
OPTB=$(LLBIN)/opt
#QUIET:=@
QUIET:=
SRC_DIR?=$(PWD)/src
BOD=build/obj
LDFLAGS+=$(shell $(LLVM_CONFIG) --ldflags)
COMMON_FLAGS=-Wall -Wextra -g
CXXFLAGS+=$(COMMON_FLAGS) $(shell $(LLVM_CONFIG) --cxxflags)
CPPFLAGS+=$(shell $(LLVM_CONFIG) --cppflags) -std=c++11 -I$(SRC_DIR)
LOADABLE_MODULE_OPTIONS=-shared
LIBS=$(shell $(LLVM_CONFIG) --libs)
PASS=libSingleOut.so
PASS_OBJECTS=SingleOutPass.o \
NoCallFunctionSieve.o \
FindInstructionsByLocation.o \
InjectPutsByMDTag.o \
PossiblyCheck.o \
SeahornBodyRock.o
default: prep $(PASS)
prep:
$(QUIET)mkdir -p build/obj
$(QUIET)mkdir -p build/lib
define builditdood
$(QUIET)$(CPP) -o $(BOD)/$(1)/$(@F) -c $(CPPFLAGS) $(CXXFLAGS) $<
endef
%.o: %.cpp
@echo "Compiling $*.cpp"
$(call builditdood,.)
$(PASS) : $(PASS_OBJECTS)
@echo "Linking $@"
$(QUIET)$(CPP) -o build/lib/$@ $(LOADABLE_MODULE_OPTIONS) $(CXXFLAGS) $(LDFLAGS) ${addprefix $(BOD)/,$^}
clean:
$(QUIET)rm -rf build