-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakefile
More file actions
110 lines (79 loc) · 3.48 KB
/
Copy pathmakefile
File metadata and controls
110 lines (79 loc) · 3.48 KB
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
#
# DANTE :: System Automatycznych Testów Jednostkowych oraz Akceptacyjnych
# Tomasz Jaworski, 2018-2020
#
# Plik wygenerowany automatycznie
# Znacznik czasowy: 2022-12-12 19:23:04.715290
#
OUTDIR := build-dir
CC := gcc
CC_FLAGS := -Werror -pedantic -fmax-errors=5 -Wno-error=implicit-fallthrough -D_GNU_SOURCE -Wno-error=unused-parameter -DINSIDE_DANTE -Wno-parentheses -D_ANSI_OUTPUT -ggdb3 -Wall -xc -Wno-error=parentheses -std=c11 -Werror=vla -fdiagnostics-color -Wextra
#CC_FLAGS += -Werror=vla -Wno-error=unused-parameter -Wno-error=parentheses -Wno-parentheses -Wno-error=implicit-fallthrough
#CC_FLAGS += -D_GNU_SOURCE -D_TEST_BOOTSTRAP -DINSIDE_DANTE
#CC_FLAGS += -D_NO_HTML_OUTPUT -D_ANSI_OUTPUT
LD := gcc
LD_FLAGS := -Wl,-cref -Wl,-Map=main.map -ggdb3 -Wl,-wrap,main
LD_LIBS := -lpthread -lm
RM := rm -rf
MKDIR := mkdir -p
default: # Domyślny target - pomoc
@echo "Brak określonego celu budowania lub uruchomienia. Dostępne są możliwości:"
@echo " make build - Budowa pliku wykonywalnego"
@echo " make rebuild - Przebudowa pliku wykonywalnego"
@echo " make clean - Usunięcie pliku wykonywalnego i plików pośrenidch"
@echo " make run_main - Uruchomienie przesłanej funkcji main()"
@echo " make run_main_tests - Uruchomienie testów funkcji main()"
@echo " make run_unit_tests - Uruchomienie testów jednostkowych"
@echo ""
# Target: podstawowe uruchomienie całego programu
all: run_main
.PHONY: all
# Target: Uruchomienie przesłanej funkcji main()
run_main: build
${OUTDIR}/main 0
# Target: Uruchomienie testów jednostkowych
run_unit_tests: build
${OUTDIR}/main 1
# Target: Uruchomienie testów funkcji main()
run_main_tests: build
${OUTDIR}/main 2
# Target: Przebudowa pliku wykonywalnego
rebuild: clean build
# Target: Budowa pliku wykonywalnego
build: .prepare ${OUTDIR}/main
#
# Kompilacja i konsolidacja przesłanego programu
#
${OUTDIR}/main: ${OUTDIR}/main.c.o ${OUTDIR}/heap.c.o ${OUTDIR}/unit_helper_v2.c.o ${OUTDIR}/unit_test_v2.c.o ${OUTDIR}/rdebug.c.o ${OUTDIR}/memmanager.c.o
@echo "Konsolidacja..."
@${LD} ${LD_FLAGS} ${OUTDIR}/main.c.o ${OUTDIR}/heap.c.o ${OUTDIR}/unit_helper_v2.c.o ${OUTDIR}/unit_test_v2.c.o ${OUTDIR}/rdebug.c.o ${OUTDIR}/memmanager.c.o -o ${OUTDIR}/main ${LD_LIBS}
${OUTDIR}/main.c.o: main.c
@echo "Budowanie pliku 'main.o' z 'main.c'..."
${CC} ${CC_FLAGS} -c main.c -o ${OUTDIR}/main.c.o
${OUTDIR}/heap.c.o: heap.c
@echo "Budowanie pliku 'heap.o' z 'heap.c'..."
${CC} ${CC_FLAGS} -c heap.c -o ${OUTDIR}/heap.c.o
${OUTDIR}/unit_helper_v2.c.o: unit_helper_v2.c
@echo "Budowanie pliku 'unit_helper_v2.o' z 'unit_helper_v2.c'..."
${CC} ${CC_FLAGS} -c unit_helper_v2.c -o ${OUTDIR}/unit_helper_v2.c.o
${OUTDIR}/unit_test_v2.c.o: unit_test_v2.c
@echo "Budowanie pliku 'unit_test_v2.o' z 'unit_test_v2.c'..."
${CC} ${CC_FLAGS} -c unit_test_v2.c -o ${OUTDIR}/unit_test_v2.c.o
${OUTDIR}/rdebug.c.o: rdebug.c
@echo "Budowanie pliku 'rdebug.o' z 'rdebug.c'..."
${CC} ${CC_FLAGS} -c rdebug.c -o ${OUTDIR}/rdebug.c.o
${OUTDIR}/memmanager.c.o: memmanager.c
@echo "Budowanie pliku 'memmanager.o' z 'memmanager.c'..."
${CC} ${CC_FLAGS} -c memmanager.c -o ${OUTDIR}/memmanager.c.o
.PHONY: build rebuild run_main run_main_tests run_unit_tests clean
#
# Przygotownie środowiska
#
.prepare: ${OUTDIR}
${OUTDIR}:
${MKDIR} ${OUTDIR}
clean:
${RM} ${OUTDIR}
.PHONY: prepare clean
.PHONY: build rebuild
.PHONY: run_unit_tests run_main_tests run_main