2025-02-26 01:58:34 +01:00

53 lines
853 B
Makefile

# Slige 2 Runtime
#
# To build for debug:
# $ make
#
# To build for release:
# $ make RELEASE=1
#
# NOTICE that `RELEASE=1` is __after__ `make`
#
C_FLAGS = \
-std=c17 \
-Wall -Wextra -Wpedantic -Wconversion \
-pedantic -pedantic-errors \
L_FLAGS = -lm
F_FLAGS =
OPTIMIZATION =
RELEASE=0
ifeq ($(RELEASE),1)
C_FLAGS += -Werror
F_FLAGS += -flto=auto
OPTIMIZATION += -O3
else
C_FLAGS += -g
F_FLAGS += -fsanitize=address,undefined
OPTIMIZATION += -Og
endif
HEADERS = $(shell find src/ -name *.h)
C_FILES = $(shell find src/ -name *.c)
O_FILES = $(patsubst src/%.c,build/%.o,$(C_FILES))
CC = gcc
all: build_dir runtime
runtime: $(O_FILES)
$(CC) -o build/$@ $^ $(F_FLAGS) $(OPTIMIZATION) $(L_FLAGS)
build/%.o: src/%.c $(HEADERS)
$(CC) $< -c -o $@ $(C_FLAGS) $(OPTIMIZATION) $(F_FLAGS)
build_dir:
mkdir -p build/
clean:
rm -rf build/