summaryrefslogtreecommitdiff
path: root/Makefile
blob: 9846889d95f9bcffbd97dc6f30e4b6aadc14a148 (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
# Build configuration
BIN := build/tb_ml
SRC := source/tb_ml/tb_ml.c
OBJ := build/tb_ml.o
DEP := build/tb_ml.d

# Compiler flags
CC ?= clang
CFLAGS := -Wall -Wextra -Wpedantic -Wno-unused-function -g --std=c99 -fno-omit-frame-pointer
LDFLAGS := -lm

# Optimization level
OPT ?= 0
CFLAGS += -O$(OPT)

# Build directory
$(shell mkdir -p build)

# Targets
.PHONY: all run clean help

all: $(BIN)

$(BIN): $(OBJ)
	$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@

$(OBJ): $(SRC)
	$(CC) $(CFLAGS) -MT $@ -MMD -MP -MF $(DEP) -c $< -o $@

-include $(DEP)

run: $(BIN)
	./$(BIN)

clean:
	rm -rf build

help:
	@echo "make [OPT=0|1|2|3]"
	@echo "  all    - Build (default)"
	@echo "  run    - Build and run"
	@echo "  clean  - Remove artifacts"