#!/usr/bin/env bash # Compila a toolchain oficial do Vircon32 (compilador C, montador, empacotador, conversores de PNG e WAV; repositorio # vircon32/ComputerSoftware, commit 70ed768 de 2026-11-05, 3-Clause BSD) em artifacts/tools/vircon32-70ed768/bin. # Idempotente: se o diretorio bin ja tem o compilador, nao faz nada. # src/FredGames.Bundler/Builds/vircon32/install-toolchain.sh # Precisa de cmake, de um compilador C++ e do SDL2 (Homebrew: brew install sdl2; so o wav2vircon e o # montador o usam para ler WAV e para a janela de log). O libpng e o 1.6.50 de artifacts/tools/libpng-1.6.50. # O mesmo tarball do ComputerSoftware serve ao Engines/build-vircon32.sh (emulador). set -euo pipefail COMMIT=70ed768d88de15c3682b9e518b1430f806e97134 SHA256=8ebca3e044edec919cb8a8106105b4ba17f1d83b35519bdc5738f425e41c5318 VERSION=${COMMIT:0:7} here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || (cd "$here/../../../.." && pwd))" tools="$root/artifacts/tools/vircon32-$VERSION" cache="$root/artifacts/build/vircon32-$VERSION/cache" png="$root/artifacts/tools/libpng-1.6.50" [ -x "$tools/bin/compile" ] && [ -d "$tools/bin/include" ] && { echo "Toolchain do Vircon32 ja instalada em $tools/bin"; exit 0; } mkdir -p "$cache" "$tools" tarball="$cache/ComputerSoftware-$VERSION.tar.gz" [ -f "$tarball" ] || curl -fsSL "https://github.com/vircon32/ComputerSoftware/archive/$COMMIT.tar.gz" -o "$tarball" echo "$SHA256 $tarball" | shasum -a 256 -c - rm -rf "$tools/src" "$tools/build" "$tools/bin" mkdir -p "$tools/src" "$tools/build" "$tools/bin" tar -xzf "$tarball" -C "$tools/src" --strip-components 1 ( cd "$tools/build" cmake "$tools/src/DevelopmentTools" -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/opt/homebrew/opt/sdl2 \ -DPNG_LIBRARY="$png/lib/libpng16.a" -DCMAKE_EXE_LINKER_FLAGS=-lz -DCMAKE_POLICY_VERSION_MINIMUM=3.5 >/dev/null CPATH="$png/include" make -j"$(sysctl -n hw.ncpu 2>/dev/null || nproc)" >/dev/null ) for t in assemble compile disassemble packrom png2vircon vircon2png wav2vircon vircon2wav unpackrom joinpngs tiled2vircon; do cp "$tools/build/$t" "$tools/bin/" done cp -R "$tools/src/DevelopmentTools/Data/include" "$tools/bin/include" # biblioteca padrao do compilador echo "Toolchain do Vircon32 instalada em $tools/bin"