-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathmakefile
59 lines (41 loc) · 1.71 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
# A bit complicated of a makefile done by hand, I'll replace it by an automatic version soon...
# It does what needs to be done for now...
EXE = llvm_wasm
HEADERS = $(wildcard src/*h) $(wildcard src/parser/*h) $(wildcard src/passes/*h)
GENERATED = obj/lex.yy.cpp obj/wasm.tab.cpp
GENERATED_OBJ = obj/lex.yy.o obj/wasm.tab.o
SRC_OBJ = $(patsubst src/%.cpp, obj/%.o, $(wildcard src/*.cpp))
PARSER_SRC_OBJ = $(patsubst src/parser/%.cpp, obj/%.o, $(wildcard src/parser/*.cpp))
PASSES_SRC_OBJ = $(patsubst src/passes/%.cpp, obj/%.o, $(wildcard src/passes/*.cpp))
FILES = ${HEADERS} ${SRC_OBJ} ${GENERATED}
OBJS = $(SRC_OBJ) $(PARSER_SRC_OBJ) $(GENERATED_OBJ) $(PASSES_SRC_OBJ)
INCLUDEDIR = -I`llvm-config --includedir` -Isrc/parser -Isrc -Isrc/passes
CFLAGS = -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -g -std=gnu++0x $(INCLUDEDIR) -O3
LIBDIR = `llvm-config --libdir`
LIBS = -L$(LIBDIR) -lLLVM
$(EXE): ${OBJS} $(HEADERS)
g++ -o $@ ${CFLAGS} ${OBJS} ${LIBS}
obj/lex.yy.cpp: src/parser/wasm.flex obj/wasm.tab.hpp $(HEADERS)
flex --noyywrap -o $@ $<
obj/lex.yy.o: obj/lex.yy.cpp
g++ -c -o $@ $< ${CFLAGS}
obj/wasm.tab.o: obj/wasm.tab.cpp obj/wasm.tab.hpp
g++ -c -o $@ $< ${CFLAGS}
obj/wasm.tab.hpp: src/parser/wasm.ypp $(HEADERS)
bison --defines $< -o obj/wasm.tab.cpp
obj/wasm.tab.cpp: src/parser/wasm.ypp $(HEADERS)
bison --defines $< -o $@
$(SRC_OBJ):obj/%.o: src/%.cpp $(HEADERS)
g++ -c -o $@ $< ${CFLAGS}
$(PARSER_SRC_OBJ):obj/%.o: src/parser/%.cpp $(HEADERS)
g++ -c -o $@ $< ${CFLAGS}
$(PASSES_SRC_OBJ):obj/%.o: src/passes/%.cpp $(HEADERS)
g++ -c -o $@ $< ${CFLAGS}
perf-test: $(EXE)
perf_tests/run.sh
test: $(EXE)
wrapper/run.sh
update-modules:
git submodule foreach git pull origin master
clean:
rm -f $(EXE) obj/*