#!/bin/bash set -eo pipefail # Cleanup old files. rm -rf 8bitbench/ rm -rf build/ touch build.log BUILD_LOG="$(realpath build.log)" echo -e "Built on $(date -u '+%Y-%m-%dT%H:%M:%SZ')" | tee "$BUILD_LOG" echo "Toolchain versions" | tee -a "$BUILD_LOG" rustc --version | tee -a "$BUILD_LOG" cargo --version | tee -a "$BUILD_LOG" wasm-pack --version | tee -a "$BUILD_LOG" echo -e "Getting sources..." | tee -a "$BUILD_LOG" git clone https://github.com/justinmichaud/8bitbench.git |& tee -a "$BUILD_LOG" echo "Building..." | tee -a "$BUILD_LOG" pushd 8bitbench/ pushd rust/ # Emulator itself. # NOTE: The 8bitbench README uses `--target web`, but that produces an ES6 # module, so we use the `no-modules` here (which produces almost the same code). wasm-pack build --target no-modules --release popd pushd assets/ pushd cc65/ # Compiler, assembler, linker etc. for the program ROM. make all popd pushd tutorial # Program ROM to run on the emulator. make popd popd popd echo "Copying files from 8bitbench/ into build/" | tee -a "$BUILD_LOG" mkdir -p build/{lib/fast-text-encoding-1.0.3/,rust/pkg/,assets/} cp 8bitbench/rust/pkg/{emu_bench.js,emu_bench_bg.wasm} build/rust/pkg cp 8bitbench/assets/tutorial/full_game.bin build/assets/program.bin echo "Build success" | tee -a "$BUILD_LOG"