All checks were successful
Python tests (make) / test (push) Successful in 14s
Reviewed-on: #29 Co-authored-by: Josh <josh@joshuaschuett.com> Co-committed-by: Josh <josh@joshuaschuett.com>
58 lines
1.4 KiB
Makefile
58 lines
1.4 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-c-test
|
|
|
|
all: $(LIB)
|
|
|
|
$(BUILDDIR):
|
|
@mkdir -p $(BUILDDIR)
|
|
|
|
$(BUILDDIR)/%.o: $(SRCDIR)/%.c | $(BUILDDIR)
|
|
$(CC) $(CFLAGS) -I$(INCDIR) -c $< -o $@
|
|
|
|
$(LIB): $(OBJ) | $(BUILDDIR)
|
|
$(CC) $(LDFLAGS) -o $@ $^
|
|
|
|
# ---- test exe rules ----
|
|
test-exe: $(TESTBIN)
|
|
|
|
$(TESTOBJ): $(TESTSRC) | $(BUILDDIR)
|
|
$(CC) $(CFLAGS) -I$(INCDIR) -c $< -o $@
|
|
|
|
$(TESTBIN): $(TESTOBJ) $(LIB) | $(BUILDDIR)
|
|
$(CC) -O2 -o $@ $(TESTOBJ) -L$(BUILDDIR) -lchess -Wl,-rpath,'$$ORIGIN'
|
|
|
|
run-c-test: $(TESTBIN)
|
|
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
|