CC ?= cc
CFLAGS ?= -O2 -Wall -Wextra

all: derive process

derive: derive.c manifest_data.h module_index.h
	$(CC) $(CFLAGS) -o derive derive.c

process: process.c compliance_index.h
	$(CC) $(CFLAGS) -o process process.c

manifest_data.h module_index.h dart_index.h compliance_index.h: ../scripts/gen_manifest.py
	cd .. && /opt/homebrew/bin/python3 scripts/gen_manifest.py

test: all
	./derive --out /tmp/wb_derived
	./derive --verify /tmp/wb_derived
	./derive --lang dart --out /tmp/wb_dart
	./derive --lang cpp --out /tmp/wb_cpp
	./process schema ../src/schema.sql | tail -3
	./process schema ../src/schema.sql --lang py | tail -4
	./process contract ../contracts/roles.v1.json | head -8
	./process routes ../src/server.py | tail -4
	./process events ../app/lib/ledger/event_registry.dart | tail -3
	./process flow ../package/winkblue/services/rostering.py ../src/schema_full.sql
	./process flow ../package/winkblue/services/finance.py ../src/schema_full.sql

clean:
	rm -f derive process

.PHONY: all test clean
