# Standalone harness of the aggregation operators (src/agg/kern*.c, no backend linked). The col and bm25 kernels are linked for the
# shim of tools/kernels.
#   nice make -j4          build test + bench into $(OUT)
#   make test [N=20]       N thousand random cases per level (all operators) plus the length grid
#   make bench             ns per 4096-element vector per operator and level (under flock /tmp/sift-perf.lock)
#   make SANITIZE=1 test   ASan + UBSan build (into $(OUT)-san)
OUT     ?= /tmp/sift-aggkern-tools
N       ?= 20

LIB      = $(SRC)/agg/kern.c $(SRC)/agg/kern_avx2.c $(SRC)/agg/kern_avx512.c $(SRC)/agg/kern_neon.c \
           $(SRC)/col/kern.c $(SRC)/col/kern_avx2.c $(SRC)/col/kern_avx512.c $(SRC)/col/kern_neon.c \
           $(SRC)/bm25/kernels.c $(SRC)/bm25/kernels_avx2.c $(SRC)/bm25/kernels_avx512.c $(SRC)/bm25/kernels_neon.c \
           $(SRC)/bm25/bitmap_scalar.c $(SRC)/bm25/bitmap_avx2.c $(SRC)/bm25/bitmap_avx512.c $(SRC)/bm25/bitmap_neon.c
HDR      = $(SRC)/agg/kern.h $(SRC)/agg/kern_int.h $(SRC)/agg/kern_vec.h $(SRC)/agg/kern_cases.h $(SRC)/col/kern.h $(SRC)/col/kern_int.h harness.h

include ../tools.mk

$(OUT)/bench: $(OUT)/bench.o $(OBJ)
	$(CC) $(CFLAGS) -o $@ $^ $(LDLIBS)
