blob: 126952145eb77e78e7bd860f754e8e97ac779e34 (
plain)
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
|
# need to make a test command to run them easily
CC = gcc
CFLAGS_BASE = -Wall -Wextra -Wpedantic -Werror -std=c99 -Isrc
CFLAGS_DEBUG = $(CFLAGS_BASE) -g -DDEBUG
CFLAGS_PROD = $(CFLAGS_BASE) -O2 -DNDEBUG
LDFLAGS =
SRC_DIR = src
TEST_DIR = test
BUILD_DIR = build
TARGET = hoodsgate
SOURCES := $(shell find $(SRC_DIR) -type f -name '*.c')
OBJECTS = $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(SOURCES))
CFLAGS = $(CFLAGS_DEBUG)
CFLAGS += -D_POSIX_C_SOURCE=200809L
all: $(BUILD_DIR) $(TARGET)
prod: CFLAGS = $(CFLAGS_PROD)
prod: clean all
@echo "Production build complete"
debug: CFLAGS = $(CFLAGS_DEBUG)
debug: clean all
@echo "Debug build complete"
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
$(TARGET): $(OBJECTS)
$(CC) $(OBJECTS) $(LDFLAGS) -o $(TARGET)
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c
@mkdir -p $(dir $@)
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -rf $(BUILD_DIR) $(TARGET)
rebuild: clean all
run: $(TARGET)
./$(TARGET)
.PHONY: all prod debug clean rebuild run
|