forked from NotAShelf/rogged
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I322b7dd5dcd699247b58fe9f5db7bcd86a6a6964
45 lines
1.2 KiB
Makefile
45 lines
1.2 KiB
Makefile
# Makefile for Roguelike Game
|
|
# Requires raylib, pkg-config
|
|
|
|
CC := cc
|
|
CFLAGS := -Wall -Wextra -O2 -std=c99 -Isrc
|
|
LDFLAGS := -lraylib -lm -lpthread -ldl -lrt
|
|
|
|
TARGET := roguelike
|
|
SRCDIR := src
|
|
OBJDIR := obj
|
|
|
|
SOURCES := $(wildcard $(SRCDIR)/*.c)
|
|
OBJECTS := $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SOURCES))
|
|
|
|
.PHONY: all clean format format-check
|
|
|
|
all: $(TARGET)
|
|
|
|
$(TARGET): $(OBJECTS)
|
|
$(CC) $^ -o $@ $(LDFLAGS)
|
|
|
|
$(OBJDIR)/%.o: $(SRCDIR)/%.c
|
|
@mkdir -p $(dir $@)
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
clean:
|
|
rm -rf $(OBJDIR) $(TARGET)
|
|
|
|
# Alias for development
|
|
dev: all
|
|
./$(TARGET)
|
|
|
|
# Format all source files with clang-format
|
|
fmt:
|
|
@command -v clang-format >/dev/null 2>&1 || { echo "Error: clang-format is missing"; exit 1; }
|
|
@echo "Formatting source files..."
|
|
@clang-format -i $(SOURCES) $(wildcard $(SRCDIR)/*.h)
|
|
@echo "Done formatting."
|
|
|
|
# Check formatting without modifying files
|
|
fmt-check:
|
|
@command -v clang-format >/dev/null 2>&1 || { echo "Error: clang-format is missing"; exit 1; }
|
|
@echo "Checking formatting..."
|
|
@clang-format --dry-run --Werror \
|
|
$(SOURCES) $(wildcard $(SRCDIR)/*.h) && echo "All files properly formatted." || { echo "Formatting issues found. Run 'make fmt' to fix."; exit 1; }
|