-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathMakefile_cc
75 lines (55 loc) · 1.74 KB
/
Makefile_cc
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
# no built-in rules please
.SUFFIXES:
DIR=build
$(info $(shell mkdir -p $(DIR)))
############################################################
# Code Gen
############################################################
cwast_gen.cc: cwast.py
@echo "[$@]"
$(PYPY) ./cwast.py gen_cc <$@ > $(DIR)/$@.tmp
@mv $(DIR)/$@.tmp $@
cwast_gen.h: cwast.py
@echo "[$@]"
$(PYPY) ./cwast.py gen_h <$@ > $(DIR)/$@.tmp
@mv $(DIR)/$@.tmp $@
lexer_gen.cc: lexer_tab.py
@echo "[$@]"
$(PYPY) ./lexer_tab.py gen_cc <$@ > $(DIR)/$@.tmp
@mv $(DIR)/$@.tmp $@
GENERATED = cwast_gen.cc cwast_gen.h lexer_gen.cc
############################################################
# C++
############################################################
BUILD_DIR=../build
LEXER_BENCH=$(BUILD_DIR)/lexer_bench.exe
PP=$(BUILD_DIR)/pp.exe
EMIT_IR=$(BUILD_DIR)/emit_ir.exe
$(LEXER_BENCH)::
@cd $(BUILD_DIR); $(MAKE) -s lexer_bench.exe
$(PP)::
@cd $(BUILD_DIR); $(MAKE) -s pp.exe
$(EMIT_IR)::
@cd $(BUILD_DIR); $(MAKE) -s emit_ir.exe
run_lexer_bench: $(LEXER_BENCH)
/bin/time -p $(LEXER_BENCH) Lib/*cw TestData/*cw LangTest/*cw > /dev/null
############################################################
# Profile
#############################################################
# For profiling to work, run this as root first:
# echo "-1" > /proc/sys/kernel/perf_event_paranoid
#
# to examine the profile use
# perf report
XXX1 = Lib/*cw
XXX2 = $(XXX1) $(XXX1)
XXX3 = $(XXX2) $(XXX2)
XXX4 = $(XXX3) $(XXX3)
XXX5 = $(XXX4) $(XXX4)
XXX6 = $(XXX5) $(XXX5)
XXX7 = $(XXX6) $(XXX6)
profile: $(LEXER_BENCH)
perf record -g -F max $(LEXER_BENCH) -m parser $(XXX7) $(XXX5) $(XXX1)
benchmark: $(LEXER_BENCH)
/bin/time -p $(LEXER_BENCH) -m parser $(XXX7) $(XXX5) $(XXX1)
all:: $(LEXER_BENCH) $(PP) $(EMIT_IR)