# retoor <retoor@molodetz.nl>
.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