Files
chess/makefile
Josh c02ec7875d
All checks were successful
Python tests (make) / test (push) Successful in 10s
add-fen-loader (#5)
Reviewed-on: #5
Co-authored-by: Josh <josh@joshuaschuett.com>
Co-committed-by: Josh <josh@joshuaschuett.com>
2025-08-16 16:51:53 +00:00

58 lines
1.3 KiB
Makefile

CC := gcc
CFLAGS := -O3 -fPIC -Wall -Wextra
LDFLAGS := -shared
SRCDIR := engine/src
INCDIR := engine/include
BUILDDIR := build
LIBNAME := libchess
# Exclude test.c from the shared lib build
SRC := $(filter-out $(SRCDIR)/test.c,$(wildcard $(SRCDIR)/*.c))
OBJ := $(patsubst $(SRCDIR)/%.c,$(BUILDDIR)/%.o,$(SRC))
LIB := $(BUILDDIR)/$(LIBNAME).so
# ---- test executable (engine/src/test.c) ----
TESTSRC := $(SRCDIR)/test.c
TESTOBJ := $(BUILDDIR)/test.o
TESTBIN := $(BUILDDIR)/print_board
.PHONY: all clean test test-exe run
all: $(LIB)
$(BUILDDIR):
@mkdir -p $(BUILDDIR)
$(BUILDDIR)/%.o: $(SRCDIR)/%.c | $(BUILDDIR)
$(CC) $(CFLAGS) -I$(INCDIR) -c $< -o $@
$(LIB): $(OBJ)
$(CC) $(LDFLAGS) -o $@ $^
c-test-exe: $(TESTBIN)
$(TESTOBJ): $(TESTSRC) | $(BUILDDIR)
$(CC) -std=c11 -Wall -Wextra -O2 -I$(INCDIR) -c $< -o $@
$(TESTBIN): $(TESTOBJ) $(LIB)
$(CC) -O2 -o $@ $(TESTOBJ) -L$(BUILDDIR) -lchess -Wl,-rpath,'$$ORIGIN'
run-c-test: test-exe
LD_LIBRARY_PATH=$(BUILDDIR) $(TESTBIN) $(FEN)
clean:
@echo "Cleaning build and Python caches..."
@rm -rf $(BUILDDIR)
@find . -type d -name "__pycache__" -exec rm -rf {} +
@find . -type d -name ".pytest_cache" -exec rm -rf {} +
@find . -type f \( -name "*.pyc" -o -name "*.pyo" \) -delete
test:
@$(MAKE) clean
@$(MAKE) all
@python3 -m unittest -v; \
status=$$?; \
$(MAKE) clean; \
exit $$status