summaryrefslogtreecommitdiff
path: root/Makefile
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