#!/usr/bin/env bash # Check for registries before attempting to compile, prevents confusion if [ ! -f "include/registries.h" ]; then echo "Error: 'include/registries.h' is missing." echo "Please follow the 'Compilation' section of the README to generate it." exit 1 fi # Figure out executable suffix (for MSYS compilation) case "$OSTYPE" in msys*|cygwin*|win32*) exe=".exe" ;; *) exe="" ;; esac # mingw64-specific linker options windows_linker="" unameOut="$(uname -s)" case "$unameOut" in MINGW64_NT*) windows_linker="-static -lws2_32 -pthread" ;; esac # Default compiler compiler="gcc" # Handle arguments for windows 9x build for arg in "$@"; do case $arg in --9x) if [[ "$unameOut" == MINGW64_NT* ]]; then compiler="/opt/bin/i686-w64-mingw32-gcc" windows_linker="$windows_linker -Wl,--subsystem,console:4" else echo "Error: Compiling for Windows 9x is only supported when running under the MinGW64 shell." exit 1 fi ;; esac done rm -f "bareiron$exe" $compiler src/*.c -O3 -Iinclude -o "bareiron$exe" $windows_linker "./bareiron$exe"