Makefile 911 B raw
1
# Builds the C bootstrap compiler.
2
3
CC      := clang
4
CFLAGS  := -fvisibility=hidden -std=c99 -Os \
5
           -Wall -Wextra -Wpedantic \
6
           -Wformat=2 -Wformat-security \
7
           -Wnull-dereference \
8
           -Wno-format-nonliteral \
9
           -Wcast-align \
10
           -Wunused -Wuninitialized \
11
           -Wmissing-field-initializers \
12
           -fno-common -fstack-protector-all \
13
           -mcmodel=medium
14
LDFLAGS := -fuse-ld=lld -Wl,-z,stack-size=33554432
15
16
SRC := $(wildcard *.c) $(wildcard gen/*.c)
17
HDR := $(wildcard *.h) $(wildcard gen/*.h)
18
OBJ := $(SRC:.c=.o)
19
BIN := bin/radiance.s0
20
21
default: $(BIN)
22
23
$(BIN): $(OBJ)
24
	@echo "ld   $^ => $@"
25
	@mkdir -p bin
26
	@$(CC) $(LDFLAGS) $(OBJ) -o $@
27
	@echo "ok   $@"
28
29
%.o: %.c $(HDR)
30
	@echo "cc   $< => $@"
31
	@$(CC) $(CFLAGS) -c $< -o $@
32
33
clean:
34
	@rm -f $(OBJ) $(BIN)
35
36
fmt:
37
	git ls-files "*.c" "*.h" | xargs clang-format -i
38
39
.PHONY: default clean fmt