# t: 2026-08-12T21:23:13Z
# dictionary
# r_dictionary: 0
# classes
# r_classes: 0
# membrane
# r_membrane: 0
# phrases
# r_phrases: 0
# seed
# r_seed: 0
# project
# r_project: 0
# board
# r_board: 0
# cubes
# r_cubes: 0
# crystal
# r_crystal: 0
# lattice
# r_lattice: 0
# brick
# r_brick: 0
# chlang v3.18.0 — pure C
# Windows (MinGW): force-include win_compat.h for POSIX shims
ifeq ($(OS),Windows_NT)
CFLAGS = -O2 -Wall -include win_compat.h
else
CFLAGS = -O2 -Wall
endif
CC = gcc
LIBS = -lm

all: chlang chlang_arch board_builder state_ledger chlang_teach

chlang: chlang.c capability_table.c board_builder.c board_config.c ../c_library/20_state/state_ledger.c ../c_library/24_doc/common_doc.c ../c_library/23_agent/consume_check.c ../c_library/23_agent/raman_chat.c
	$(CC) $(CFLAGS) -DDOC_ENGINE_LINK -DCONSUME_ENGINE_LINK -DCHAT_ENGINE_LINK -o chlang chlang.c capability_table.c board_builder.c board_config.c ../c_library/20_state/state_ledger.c ../c_library/24_doc/common_doc.c ../c_library/23_agent/consume_check.c ../c_library/23_agent/raman_chat.c

capability_table: capability_table.c
	$(CC) $(CFLAGS) -DTABLE_MAIN -o capability_table capability_table.c

chlang_arch: chlang_arch.c
	$(CC) $(CFLAGS) -o chlang_arch chlang_arch.c $(LIBS)

board_builder: board_builder.c board_config.c
	$(CC) $(CFLAGS) -DBOARD_BUILDER_STANDALONE -o board_builder board_builder.c board_config.c

state_ledger: ../c_library/20_state/state_ledger.c
	$(CC) $(CFLAGS) -DSTATE_STANDALONE -o state_ledger ../c_library/20_state/state_ledger.c

chlang_teach: teach.c
	$(CC) $(CFLAGS) -o chlang_teach teach.c

# LIB RULE audit: every library script must compile. Run from setup/.
audit:
	@fail=0; total=0; \
	for f in ../c_library/*_*/*.c ../c_library/13_skills/*/*.c; do \
	  total=$$((total+1)); \
	  gcc -c "$$f" -o /tmp/chlang_audit.o 2>/dev/null || { echo "FAIL: $$f"; fail=$$((fail+1)); }; \
	done; \
	rm -f /tmp/chlang_audit.o; \
	echo "audit: $$total scripts compiled, $$fail failures"; \
	[ $$fail -eq 0 ] || exit 1

install: all audit
	./chlang_teach

clean:
	rm -f chlang chlang_arch board_builder chlang_teach state_ledger
