application/octet-stream
•
2.23 KB
•
76 lines
MOON := ./moon
ASSET := tools/assets
CC := cc
CFLAGS := -g -D_GNU_SOURCE $(shell pkg-config --cflags sdl2)
LDFLAGS :=
LIBS := $(shell pkg-config --libs sdl2)
CSTD := -std=c11
OPTIMIZATION := -O2
WARNINGS := -Wall -Werror -Wextra -Wshadow -Wcast-align -Wno-missing-braces
ARCH := $(shell uname -m)
GFX_ASSETS := $(shell find gfx -type f -name '*')
SRC_SOURCES := $(shell find src -type f -name '*.c')
VEN_SOURCES := $(shell find vendor -type f -name '*.c')
SDL_SOURCES := $(shell find sdl_src -type f -name '*.c')
SOURCES := $(SRC_SOURCES) $(SDL_SOURCES) $(VEN_SOURCES)
OBJS := ${SOURCES:.c=.o}
DEPS := ${SOURCES:.c=.d}
all: $(MOON)
.PHONY: all release
include mk/disable_implicit_rules.mk
include mk/ansi_colors.mk
include mk/platform.mk
ifneq ($(MAKECMDGOALS),clean)
-include $(DEPS)
endif
.PHONY: clean
clean:
@rm -f gmon.out callgrind.out.* vgcore.*
@rm -f $(shell find ./ -type f \( -name '*.o' -o -name '*.d' \))
@rm -f moon moon.exe tools/assets tools/assets.exe
@rm -rf src/tmp releases
@echo "$(ANSI_BG_RED)" "[CLEAN]" "$(ANSI_RESET)" "moon"
.PHONY: sanitize
sanitize: CFLAGS += -fsanitize=address
sanitize: all
.PHONY: archive
archive:
git archive --format=tar --prefix=moon-firmware-HEAD.tar.gz/ HEAD | gzip > moon-firmware-HEAD.tar.gz
$(MOON): $(OBJS)
@$(CC) $^ -o $@ $(OPTIMIZATION) $(CFLAGS) $(CINCLUDES) $(LIBS) $(CSTD) $(LDFLAGS)
@echo "$(ANSI_BG_GREEN)" "[LD] " "$(ANSI_RESET)" $@
%.o: %.c
@$(CC) $(OPTIMIZATION) $(WARNINGS) $(CSTD) $(CFLAGS) $(CINCLUDES) -c $< -o $@ -MMD > ${<:.c=.d}
@echo "$(ANSI_GREEN)" "[CC] " "$(ANSI_RESET)" $@
$(ASSET): tools/assets.c
@$(CC) $(OPTIMIZATION) $(CSTD) $(CFLAGS) $^ -o $@
@echo "$(ANSI_BG_GREY)" "[CC] " "$(ANSI_RESET)" $@
src/tmp/assets.c: $(ASSET) $(GFX_ASSETS) $(SHADER_ASSETS)
@mkdir -p src/tmp/
@$(ASSET) src/tmp/assets $(GFX_ASSETS)
@echo "$(ANSI_GREY)" "[ST] " "$(ANSI_RESET)" $@
src/tmp/assets.h: src/tmp/assets.c
@true
.PHONY: optimizegfx
optimizegfx:
tools/optimizegfx $(GFX_ASSETS)
.PHONY: format
format:
clang-format -i ./src/**.[ch]
.PHONY: run
run: all
@./moon