-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
133 lines (101 loc) · 2.7 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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
###################
# Cimple #
# Makefile #
###################
NAME = cimple
CC = gcc
INCLUDES = -I include
STD_CFLAGS = -Wall -fprofile-arcs -ftest-coverage $(shell pkg-config sdl2 SDL2_image libjpeg --cflags)
STD_CLIBS = -lm -lreadline $(shell pkg-config sdl2 SDL2_image libjpeg --libs)
TEST_CFLAGS = $(shell pkg-config cmocka --cflags) $(STD_CFLAGS)
TEST_CLIBS = $(shell pkg-config cmocka --libs) $(STD_CLIBS)
include const.mk
.PHONY: all
all : $(NAME)
##########
# BUILDS #
##########
$(NAME) : $(OBJS)
@printf "\n== LINKING : %s ==\n" $(NAME)
$(CC) $(STD_CFLAGS) $(INCLUDES) -o $@ $^ $(STD_CLIBS)
@printf "=== END LINKING ==\n"
$(BUILD)%.o : $(SRC_FOLDER)%.c
@mkdir -p $(dir $@)
@printf "Compile : %s\n" $<
@$(CC) $(STD_CFLAGS) $(INCLUDES) -c -o $@ $< $(STD_CLIBS)
.PHONY: view model controller
view : $(OBJ_VIEW)
model : $(OBJ_MOD)
controller : $(OBJ_CONTR)
###############
# TESTS_BUILD #
###############
$(BUILD)%.o : $(TESTS_FOLDER)%.c
@mkdir -p $(dir $@)
@printf "Compile TEST : %s\n" $<
@$(CC) $(INCLUDES) $(TEST_CFLAGS) -c -o $@ $< $(TEST_CLIBS)
$(TESTS)testing: $(OBJ_TESTS) $(TESTS_DEPS)
@printf "\n== LINKING TESTS ==\n"
$(CC) $(INCLUDES) $(TEST_CFLAGS) -o $@ $^ $(TEST_CLIBS)
@printf "=== END LINKING ==\n"
#########
# TESTS #
#########
.PHONY: check
check: $(TESTS)testing
@printf "\n=== TESTS ===\n"
$(TESTS)testing
@printf "=== END TESTS ===\n"
.PHONY: check_valgrind
check_valgrind:
@printf "\n=== TESTS Valgrind ===\n"
@valgrind --error-exitcode=1 \
--leak-resolution=low \
--leak-check=full $(TESTS)/testing
@printf "=== END VALGRIND ===\n"
.PHONY: checkall
checkall: check check_valgrind
####################
# DOCKER for tests #
####################
.PHONY: docker-build
docker-build:
docker build -t kolibs/travis_test .
.PHONY: docker-run
docker-run:
docker run --rm kolibs/travis_test sh -c "cd root ; make check"
############
# COVERAGE #
############
.PHONY: coverage
coverage:
@printf "=== COVERAGE ===\n"
@rm -rf coverage coverage.info
@lcov -c --directory build --output-file coverage.info
@genhtml coverage.info --output-directory coverage
@printf "=== END COVERAGE ===\n"
##############
# UNCRUSTIFY #
##############
uncrustify:
scripts/uncrustify.sh
##########
# CLEANS #
##########
.PHONY: clean_test
clean_test:
@printf "\n=== CLEAN TESTS ===\n"
rm -rf $(TESTS)testing $(OBJ_TESTS)
@printf "=== END CLEAN ===\n"
.PHONY: clean_build
clean_build :
@printf "\n=== CLEAN BUILD & CIMP ===\n"
rm -rf $(BUILD) $(NAME)
@printf "=== END ===\n"
.PHONY: clean_cov
clean_cov:
@printf "\n=== CLEAN COVERAGE ===\n"
rm -rf coverage coverage.info
@printf "=== END COVERAGE ===\n"
.PHONY: cleanall
cleanall: clean_build clean_test clean_cov