aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 79be005335ff2bff370f422756de1e7c8ea30bbb (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
proj=tdo

# Compiler options
CC=gcc
CFLAGS=-std=c17 -Wall -Werror -g

# Directory paths
src:=src
bin:=bin
obj:=obj

# Files
srcs=$(filter-out $(src)/main.c, $(wildcard $(src)/*.c))
objs=$(patsubst $(src)/%.c, $(obj)/%.o, $(srcs))

# Directives
.PHONY: build
build: $(bin)/$(proj)

.PHONY: clean
clean:
	-rm -r $(bin) $(obj)

.PHONY: info
info:
	@echo srcs: $(srcs)
	@echo objs: $(objs)

# Make object files
$(obj)/%.o: $(srcs) $(obj)
	$(CC) $(CFLAGS) -o $@ -c $<

# Build executable including any object files
$(bin)/$(proj): $(bin) $(objs) $(src)/main.c
	$(CC) $(CFLAGS) -o $@ $(filter-out $<,$^)

# Make directories
$(bin):
	mkdir $@

$(obj):
	mkdir $@