-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
53 lines (36 loc) · 1.19 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
VERSION = 0.5.1
NAME = pseudolisp
READLINE = 1
SRC = ${NAME}.c structs.c error.c execute.c testy.c helpers.c hashovani.c reader.c parser.c funkce.c funkce-sideef.c gc.c
HEADERS = structs.h error.h execute.h helpers.h hashovani.h parser.h funkce.h gc.h
OBJ = ${SRC:.c=.o}
PARAMS = -std=c99 -Wall -pedantic -D'VERSION="${VERSION}"'
PARAMS+= -D"READLINE=${READLINE}" -lreadline
DEBUG = -g -DDEBUG # je pro gdb/valgrind a DEBUG mod
PROFILER = -pg # je pro gprof
GCOVERAGE = -fprofile-arcs -ftest-coverage # je pro gcov
# optimalizace kompilace podle vysledku profielru
# http://www.abclinuxu.cz/blog/kazdy_den_jinak/2007/5/gcc-a-optimalizace-s-profilerem
# strip pseudolisp -> oreze nepotrebne veci
all: ${NAME}
debug: PARAMS += ${DEBUG}
debug: znova
prof: PARAMS += ${PROFILER}
prof: debug
gcov: PARAMS += ${GCOVERAGE}
gcov: prof
.c.o:
@echo " Compiling $<"
@gcc -c $< ${PARAMS}
${NAME}: ${OBJ} ${HEADERS}
@echo " Building ${NAME}"
@gcc -o $@ ${OBJ} ${PARAMS}
clean:
@echo Cleaning
@rm -f ${OBJ} *.gcda *.gcno *.gcov gmon.out
dist: ${SRC} ${HEADERS}
@rm -f ${NAME}-${VERSION}.tar.bz2
tar cjf ${NAME}-${VERSION}.tar.bz2 * .git .gitignore
znova: clean all
TAGS: ${SRC} ${HEADERS}
ctags -R .