-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
93 lines (73 loc) · 2.33 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
93
SRCFILES:=main.cpp token.cpp lexer.cpp parser.cpp irCodegenContext.cpp identifier.cpp astScope.cpp astType.cpp irDebug.cpp message.cpp parsec.cpp ast.cpp validate.cpp sema.cpp astVisitor.cpp lowering.cpp lower.cpp file.cpp
# additional clang libraries to build
llvm_prefix=/usr
ifeq ($(shell if [ -e /usr/local/lib/libclang.a ]; then echo "EXISTS"; fi ),EXISTS)
llvm_prefix=/usr/local
endif
CLANGLIBS = libclang.a\
libclangIndex.a\
libclangFrontend.a\
libclangDriver.a\
libclangParse.a\
libclangSema.a\
libclangEdit.a\
libclangTooling.a\
libclangRewriteFrontend.a\
libclangAST.a\
libclangFormat.a\
libclangBasic.a\
libclangLex.a\
libclangSerialization.a\
libclangAnalysis.a
# only used for clang 3.4, to build additional static libraries
CLANGLIBS_34:=libclangRewriteCore.a\
libLLVMSupport.a
CLANGLIBS_35:=libclangRewrite.a
NODEPS:=clean install installsyntax
SRC:=$(foreach file, $(SRCFILES), src/$(file))
OBJ:=$(foreach file, $(SRCFILES), build/$(file:.cpp=.o))
DEP:=$(foreach file, $(SRCFILES), build/$(file:.cpp=.d))
# get llvm version in format of '3.4'
# llvm config will get version, and cut will extract only the
# major and minor version, ignoring any patch or svn qualifier
LLVMVERSION=$(shell llvm-config --version | cut -c -3)
LLVMLDFLAGS=
ifeq ($(shell uname -s),Darwin)
LLVMLDFLAGS += -lllvm
endif
ifeq ($(LLVMVERSION),3.5)
ifeq ($(shell uname -s),Linux)
LLVMLDFLAGS += -lLLVM-3.5
endif
LLVMLDFLAGS += -lclang -lz -lpthread -lcurses -ldl
CLANGLIBS:=$(CLANGLIBS) $(CLANGLIBS_35)
endif
ifeq ($(LLVMVERSION),3.4)
ifeq ($(shell uname -s),Linux)
LLVMLDFLAGS += -lLLVM-3.4
endif
CLANGLIBS:=$(CLANGLIBS) $(CLANGLIBS_34)
endif
CLANGLIBS:=$(foreach file, $(CLANGLIBS), $(llvm_prefix)/lib/$(file))
CXXFLAGS=`llvm-config --cxxflags` -ggdb -O0 -frtti -UNDEBUG -DDEBUG -I/usr/local/include -Wall -Wno-sign-compare -Wno-reorder
LDFLAGS=`llvm-config --ldflags --libs` $(LLVMLDFLAGS)
.PHONY: clean all install installsyntax
all: build wlc
clean:
rm -rf build
wlc: $(OBJ)
-ctags -R -o .tags
g++ $(OBJ) $(CLANGLIBS) $(CXXFLAGS) $(LDFLAGS) -o wlc
build/%.o: src/%.cpp
g++ $< -c $(CXXFLAGS) -o $@
g++ $(CXXFLAGS) -MM -MT '$@' $< -MF build/$*.d
build:
mkdir -p build
install: wlc
sudo cp wlc /usr/local/bin/
-cp wl.vim ~/.vim/syntax/
sudo mkdir -p /usr/local/include/wl
sudo cp -R lib/* /usr/local/include/wl
installsyntax:
cp wl.vim ~/.vim/syntax/
-include $(DEP)