# <<project>> Makefile  (--basic build, no CMake)
#
# Targets:
#   make             Build extension(s)
#   make test        C tests + <<py_test_label>>
#   make just-build  PEP 517 hook for just-buildit
#   make clean       Remove build artifacts
#   make help        Show this message

ifeq ($(OS), Windows_NT)
SHELL  := cmd.exe
PYTHON ?= $(or $(JUST_BUILDIT_PYTHON),python)
else
SHELL  := /bin/sh
PYTHON ?= $(or $(JUST_BUILDIT_PYTHON),python3)
endif
CC     ?= cc
CFLAGS ?= -O2 -fPIC -std=c99 -Wall

PY_INC := $(shell $(PYTHON) -c "import sysconfig; print(sysconfig.get_path('include'))")
EXT    := $(shell $(PYTHON) -c "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))")
INC     = -I$(PY_INC) -Inative/inc

TARGETS :=
C_TESTS :=

.PHONY: all test just-build clean help

all: $(TARGETS)

# ── Component rules ───────────────────────────────────────────────────────────

# ── Fixed targets ─────────────────────────────────────────────────────────────

test: all $(C_TESTS)
ifeq ($(OS), Windows_NT)
<<ensure_pytest_win>>	<<py_test_cmd_win>>
else
	@for t in $(C_TESTS); do echo "--- $$t ---" && ./$$t || exit 1; done
<<ensure_pytest_unix>>	<<py_test_cmd_unix>>
endif

just-build: all
	mkdir -p $(JUST_BUILDIT_OUTPUT_DIR)
	cp -r src/<<package>> $(JUST_BUILDIT_OUTPUT_DIR)/<<package>>

clean:
	rm -f $(TARGETS) $(C_TESTS)
	find src -name "*.so" -o -name "*.pyd" | xargs rm -f 2>/dev/null; true

help:
	@echo ""
	@echo "<<project>> build targets"
	@echo ""
	@echo "  make          Build extension(s)"
	@echo "  make test     Run C tests + <<py_test_label>>"
	@echo "  make clean    Remove build artifacts"
	@echo ""
