Add some basic algorithms and eval functions for an AI
All checks were successful
Python tests (make) / test (push) Successful in 11s
All checks were successful
Python tests (make) / test (push) Successful in 11s
This commit is contained in:
58
makefile
58
makefile
@@ -2,46 +2,64 @@ CC := gcc
|
||||
CFLAGS := -O3 -fPIC -Wall -Wextra
|
||||
LDFLAGS := -shared
|
||||
|
||||
SRCDIR := engine/src
|
||||
INCDIR := engine/include
|
||||
# ---- paths ----
|
||||
SRCDIRS := engine/src engine/src/ai
|
||||
INCDIRS := engine/include
|
||||
BUILDDIR := build
|
||||
LIBNAME := libchess
|
||||
LIB := $(BUILDDIR)/$(LIBNAME).so
|
||||
|
||||
# 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
|
||||
# ---- sources/objects ----
|
||||
EXCLUDE := engine/src/test.c
|
||||
SRCS := $(foreach d,$(SRCDIRS),$(wildcard $(d)/*.c))
|
||||
SRCS := $(filter-out $(EXCLUDE),$(SRCS))
|
||||
OBJS := $(patsubst %.c,$(BUILDDIR)/%.o,$(SRCS))
|
||||
|
||||
# ---- includes ----
|
||||
INCLUDES := $(addprefix -I,$(INCDIRS))
|
||||
|
||||
# ---- test executable (engine/src/test.c) ----
|
||||
TESTSRC := $(SRCDIR)/test.c
|
||||
TESTOBJ := $(BUILDDIR)/test.o
|
||||
TESTBIN := $(BUILDDIR)/print_board
|
||||
TESTSRC := engine/src/test.c
|
||||
TESTOBJ := $(BUILDDIR)/engine/src/test.o
|
||||
TESTBIN := $(BUILDDIR)/print_board
|
||||
|
||||
.PHONY: all clean test test-exe run-c-test
|
||||
# ---- runner (python) ----
|
||||
PYTHON := python3
|
||||
RUN_SCRIPT := scripts/simulation.py
|
||||
ARGS ?=
|
||||
|
||||
.PHONY: all clean test test-exe run-c-test run-engine
|
||||
|
||||
all: $(LIB)
|
||||
|
||||
$(BUILDDIR):
|
||||
@mkdir -p $(BUILDDIR)
|
||||
# generic object rule: build/<path>/file.o from <path>/file.c
|
||||
$(BUILDDIR)/%.o: %.c
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
|
||||
|
||||
$(BUILDDIR)/%.o: $(SRCDIR)/%.c | $(BUILDDIR)
|
||||
$(CC) $(CFLAGS) -I$(INCDIR) -c $< -o $@
|
||||
|
||||
$(LIB): $(OBJ) | $(BUILDDIR)
|
||||
$(LIB): $(OBJS)
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) $(LDFLAGS) -o $@ $^
|
||||
|
||||
# ---- test exe rules ----
|
||||
test-exe: $(TESTBIN)
|
||||
|
||||
$(TESTOBJ): $(TESTSRC) | $(BUILDDIR)
|
||||
$(CC) $(CFLAGS) -I$(INCDIR) -c $< -o $@
|
||||
$(TESTOBJ): $(TESTSRC)
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
|
||||
|
||||
$(TESTBIN): $(TESTOBJ) $(LIB) | $(BUILDDIR)
|
||||
$(TESTBIN): $(TESTOBJ) $(LIB)
|
||||
$(CC) -O2 -o $@ $(TESTOBJ) -L$(BUILDDIR) -lchess -Wl,-rpath,'$$ORIGIN'
|
||||
|
||||
run-c-test: $(TESTBIN)
|
||||
LD_LIBRARY_PATH=$(BUILDDIR) $(TESTBIN) $(FEN)
|
||||
|
||||
# ---- run engine (Python) ----
|
||||
# Usage: make run-engine ARGS="--fen '...' --depth 5"
|
||||
run-engine: $(LIB)
|
||||
@echo "Running engine via $(RUN_SCRIPT)"
|
||||
LD_LIBRARY_PATH=$(BUILDDIR) $(PYTHON) $(RUN_SCRIPT) $(ARGS)
|
||||
|
||||
clean:
|
||||
@echo "Cleaning build and Python caches..."
|
||||
@rm -rf $(BUILDDIR)
|
||||
@@ -55,4 +73,4 @@ test:
|
||||
@python3 -m unittest -v; \
|
||||
status=$$?; \
|
||||
$(MAKE) clean; \
|
||||
exit $$status
|
||||
exit $$status
|
||||
|
||||
Reference in New Issue
Block a user