-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
62 lines (43 loc) · 1.44 KB
/
Makefile
File metadata and controls
62 lines (43 loc) · 1.44 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
CC = gcc
STD = -std=c18
WARNINGS = -Wall -Wextra -pedantic
CFLAGS_COMMON = $(STD) $(WARNINGS) -Isrc
CFLAGS_DEBUG = -g -O0 -DDEBUG $(CFLAGS_COMMON)
CFLAGS_PROD = -O3 -march=native -mtune=native \
-flto -fno-fat-lto-objects \
-DNDEBUG $(CFLAGS_COMMON)
LDFLAGS_PROD = -flto -lpthread
LDFLAGS_DEBUG = -lpthread
SRCS = src/main.c src/queue.c src/worker.c
OBJS = $(patsubst src/%.c,build/%.o,$(SRCS))
TARGET = build/norm
all: prod
# Цели сборки
prod: CFLAGS = $(CFLAGS_PROD)
prod: LDFLAGS = $(LDFLAGS_PROD)
prod: $(TARGET)
debug: CFLAGS = $(CFLAGS_DEBUG)
debug: LDFLAGS = $(LDFLAGS_DEBUG)
debug: $(TARGET)
build:
mkdir -p build
build/%.o: src/%.c | build
$(CC) $(CFLAGS) -c $< -o $@
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) $(OBJS) -o $@ $(LDFLAGS)
# Вспомогательные цели
run: $(TARGET)
./$(TARGET)
run-gdb: debug
gdb --args ./$(TARGET)
clean:
rm -rf build
help:
@echo "Доступные цели:"
@echo " make prod - Продакшен-сборка (по умолчанию)"
@echo " make debug - Отладочная сборка"
@echo " make run - Запустить собранную программу"
@echo " make run-gdb - Запустить в GDB (debug-сборка)"
@echo " make clean - Очистить артефакты сборки"
@echo " make help - Показать это сообщение"
.PHONY: all prod debug run run-gdb clean help