-
Notifications
You must be signed in to change notification settings - Fork 2
/
makefile.targets
61 lines (45 loc) · 1.86 KB
/
makefile.targets
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
#Tests
TEST_PATH = ../tests/
#ref: http://stackoverflow.com/a/2706067/577298
TEST_FILES = $(sort $(wildcard $(TEST_PATH)*.nwt))
TESTS = $(patsubst $(TEST_PATH)%.nwt,%,$(TEST_FILES))
WTESTS = $(patsubst $(TEST_PATH)%.nwt,w%,$(TEST_FILES))
MTESTS = $(patsubst $(TEST_PATH)%.nwt,m%,$(TEST_FILES))
INCLUDE_DIRS = -I"./" -I"../src/expressions" -I"../src/types" -I"../src/types/specifiers" -I"../src/statements" -I"../src/statements/declarations" -I"../src/variables" -I"../src"
test: newt $(TESTS)
$(TEST_PATH)output:
mkdir -p $(TEST_PATH)output
%: $(TEST_PATH)%.nwt $(TEST_PATH)output
-@echo ' '
./newt --debug --include-paths '../tests/includes' $< >$(TEST_PATH)output/$@ 2>&1
diff $(TEST_PATH)reference/$@ $(TEST_PATH)output/$@
#run a test in debug mode
r%: newt $(TEST_PATH)%.nwt
-@echo ' '
./newt --debug --include-paths '../tests/includes' $(word 2,$^)
#update the reference output for the given test
w%: newt $(TEST_PATH)%.nwt $(TEST_PATH)reference
-@echo ' '
./newt --debug --include-paths '../tests/includes' $(word 2,$^) >$(TEST_PATH)reference/$* 2>&1
#DANGER: update all test output
wtest: newt $(WTESTS)
c%: $(TEST_PATH)%.nwt
@cat -n $<
mtest: newt $(MTESTS)
m%: newt $(TEST_PATH)%.nwt
-@echo ' '
-@echo 'Memory test for ' $(word 2,$^)
@valgrind --leak-check=full --show-leak-kinds=all -v --error-exitcode=1 ./newt --debug --include-paths '../tests/includes' $(word 2,$^)
#compare test w/ reference output (requires kdiff)
d%: $(TEST_PATH)%.nwt $(TEST_PATH)reference
kdiff3 $(TEST_PATH)reference/$* $(TEST_PATH)output/$*
lint:
cppcheck $(INCLUDE_DIRS) --enable=all ../src/
#add aditional rules to cleaning process
clean: clean-parser clean-test
clean-parser:
@echo 'Cleaning parser files...'
-$(RM) lexer.o parser.tab.o parser.tab.* parser.output lexer.* location.hh position.hh stack.hh
@echo 'Cleaned parser files.'
clean-test:
-$(RM) $(TEST_PATH)output/*