Building on Windows/MSYS2

The main Windows development environment for this tree is MSYS2. The Windows build scripts handle the details that are easy to get wrong by hand: shell path conversion, package naming, compiler architecture, installer layout, and NSIS lookup.

Native Windows builds

Use the MSYS2 scripts for repeatable package builds:

    ./build_scripts/msys2-build-freebasic.sh
    ./build_scripts/msys2-test-freebasic.sh

The tree has support for the usual Win32 and Win64 x86 targets and for Windows ARM64 work where the required toolchain is installed.

Cross-target Windows packages

Several non-Windows targets are packaged from Windows because the required tools are easiest to stage there or because the release artifact is a Windows-hosted compiler for another platform. Examples include Android, JavaScript, Wii, and Xbox package scripts.

    ./build_scripts/msys2-build-freebasic-android.sh
    ./build_scripts/msys2-build-freebasic-js.sh
    ./build_scripts/msys2-build-freebasic-wii.sh
    ./build_scripts/msys2-build-freebasic-xbox.sh

Keep MSYS2, Cygwin, and plain Windows command prompts separate when debugging a build. Many Windows failures come from crossing those path and shell models in one command line.