# retoor .PHONY: build tests clean debug sync-sidebar buildmanual wasm wasm-clean install-emscripten coverage valgrind clean-coverage build: cd projects/make && $(MAKE) -f wren_cli.make -j $$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4) debug: cd projects/make && $(MAKE) -f wren_cli.make config=debug_64bit -j $$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4) tests: build python3 util/test.py create_merge: wren apps/merge_all_wren.wren create_docs: wren apps/merge_docs.wren create_training_data: python create_training_data.py --manual-html manual.md --out-train training_data.jsonl --out-val training_data_val.jsonl install: cp bin/wren_cli /usr/local/bin/wren clean: cd projects/make && $(MAKE) -f wren_cli.make clean publish: git add src git add example git add manual_src git add test git commit -a -m "Update." git push wasm-clean: cd projects/make.wasm && $(MAKE) -f wren_wasm.make clean install-emscripten: @if [ ! -d "$(HOME)/emsdk" ]; then \ echo "Cloning Emscripten SDK..."; \ git clone https://github.com/emscripten-core/emsdk.git $(HOME)/emsdk; \ cd $(HOME)/emsdk && ./emsdk install latest && ./emsdk activate latest; \ echo ""; \ echo "Emscripten installed. Run: source ~/emsdk/emsdk_env.sh"; \ else \ echo "Emscripten SDK already exists at ~/emsdk"; \ echo "Run: source ~/emsdk/emsdk_env.sh"; \ fi wasm: @if [ -z "$$EMSDK" ]; then \ echo "Error: EMSDK is not set. Run 'source ~/emsdk/emsdk_env.sh' first"; \ exit 1; \ fi cd projects/make.wasm && $(MAKE) -f wren_wasm.make -j $$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4) buildmanual: python3 util/build_manual.py coverage: cd projects/make && $(MAKE) -f wren_cli.make config=coverage_64bit clean cd projects/make && $(MAKE) -f wren_cli.make config=coverage_64bit -j $$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4) python3 util/test.py --suffix=_cov @echo "Generating coverage report..." lcov --capture --directory projects/make/obj/64bit/Coverage --output-file coverage.info --ignore-errors mismatch,inconsistent lcov --remove coverage.info '/usr/*' '*/deps/*' --output-file coverage.info --ignore-errors unused genhtml coverage.info --output-directory coverage_report @echo "Coverage report: coverage_report/index.html" valgrind: cd projects/make && $(MAKE) -f wren_cli.make config=debug_64bit -j $$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4) python3 util/test.py --suffix=_d --valgrind clean-coverage: rm -rf coverage.info coverage_report find projects/make -name "*.gcda" -delete find projects/make -name "*.gcno" -delete