.PHONY: all c sanitize rust clean run_solved_fixed run_solved_variable

c: c/fixed.c c/variable.c
	clang c/fixed.c -o c/fixed
	clang c/variable.c -o c/variable

sanitize: c/fixed.c c/variable.c
	clang c/fixed.c -fsanitize=address -o c/fixed_asan
	clang c/variable.c -fsanitize=address -o c/variable_asan

transpile:
	compiledb make c
	c2rust transpile compile_commands.json -o rust/

rust: fixed variable

fixed: rust/src/solved_fixed.rs
	cd rust && cargo rustc --bin solved_fixed -- -A unconditional-panic

variable: rust/src/solved_variable.rs
	cd rust && cargo build --bin solved_variable

clean:
	cd rust && cargo clean
	rm -f c/c c/c_asan compile_commands.json rust/src/variable.rs rust/src/fixed.rs

run_solved_fixed:
	cd rust && RUSTFLAGS="-A unconditional_panic" cargo run --bin solved_fixed

run_solved_variable:
	cd rust && cargo run --bin solved_variable
