CC ?= gcc CFLAGS ?= -O2 -Wall -Wextra -std=gnu11 SRCS := $(sort $(wildcard test_*.c)) BIN_DIR ?= bin BIN_NAMES := $(SRCS:.c=) BINS := $(addprefix $(BIN_DIR)/,$(BIN_NAMES)) RUN_DIR ?= /tmp/zvfs-test RUN_BINS ?= test_basic test_lseek test_dual_open_same_file test_two_files \ test_single_file_perf test_single_file_random_perf \ test_single_file_random_noaligned_perf test_write_file test_read_delete_file \ test_phase2_posix .PHONY: all clean list run-test all: $(BINS) $(BIN_DIR): mkdir -p $@ $(BIN_DIR)/%: %.c test_utils.h | $(BIN_DIR) $(CC) $(CFLAGS) -o $@ $< list: @printf "%s\n" $(BINS) run-test: all @mkdir -p $(RUN_DIR) @pass=0; fail=0; \ for t in $(RUN_BINS); do \ printf "\n[RUN] %s\n" "$$t"; \ if ./$(BIN_DIR)/$$t $(RUN_DIR); then \ pass=$$((pass + 1)); \ else \ fail=$$((fail + 1)); \ fi; \ done; \ printf "\n=== run-test summary: PASS=%d FAIL=%d ===\n" $$pass $$fail; \ test $$fail -eq 0 clean: $(RM) $(BINS) -rmdir $(BIN_DIR)