test:
	uv run pytest

nox:
	uv run nox

nox-with-rng-checksum:
	PREVENT_REVERSIONS=1 SSE_TEST_RNG=1 uv run nox

wc:
	find src tests -type f -name "*.py" | xargs wc -l
	find src tests -type f \( -name "*.c" -o -name "*.h" \) | xargs wc -l

local-install:
	uv pip install -e .

build-with-rng-checksum: clean-build-products
	PREVENT_REVERSIONS=1 SSE_TEST_RNG=1 uv sync --reinstall

build: clean-build-products
	PREVENT_REVERSIONS=1 uv sync --reinstall

clean-build-products:
	find src tests \( -name '*.dylib' -o -name '*.so' \) -delete

clean: clean-build-products
	find src tests \( -name '*.egg-info' -o -name __pycache__ \) | xargs -r rm -r
	find src tests -name '*~' -delete
	rm -rf build

BENCHMARK_SRCS := \
	src/c/benchmark.c \
	src/c/scramble_ndr.c \
	src/c/scramble_cdlr.c \
	src/c/scramble_nor.c \
	src/c/scramble_cor.c \
	src/c/scramble_clr.c \
	src/c/scramble_cls.c \
	src/c/scramble_clm.c \
	src/c/mutate_sequence.c \
	src/c/lib.c

build/benchmark: $(BENCHMARK_SRCS) src/c/lib.h src/c/test_rng.h
	mkdir -p build
	cc -O2 -o build/benchmark $(BENCHMARK_SRCS) -Isrc/c -lm

benchmark-bin: build/benchmark

benchmark: build benchmark-bin
	@echo 'Running a simple default benchmark (10 random sequences of length 1000 with 3 repeats).'
	@echo 'Use "uv run python -m SSE_for_Py.cli.benchmark" to run it yourself.'
	@echo 'To see options, use "uv run python -m SSE_for_Py.cli.benchmark --help"'
	uv run python -m SSE_for_Py.cli.benchmark
