#!/usr/bin/env bash mkdir -p ~/opt/mingw _mw_enabled=0 _mw_host32=i686-w64-mingw32.static _mw_host64=x86_64-w64-mingw32.static if [[ "$(uname -m)" == armv7l ]]; then _mw_hostarm=./ else _mw_hostarm=armv7l-unknown-linux-gnueabihf fi _mw_host=$_mw_host64 typeset -Ag _mw_ # cryptic math expression errors if not global! _mw_export() { [ -z "$1" ] && return 1 [ -n "${ZSH_VERSION:-}" ] && _mw_[$1]="${(P)1}" || _mw_[$1]="${!1}" export "$1=$2" } mw-disable() { [ $_mw_enabled -eq 0 ] && return 1 _mw_enabled=0 local e= for e in PATH PREFIX CC CPP CXX LD CFLAGS CPPFLAGS CXXFLAGS LDFLAGS \ AR RANLIB RC WINDRES OBJCOPY SDL_CFLAGS SDL_LDLIBS; do local v="${_mw_[$e]}" [ -n "$v" ] && export "$e=$v" || unset "$e" done echo "mw disabled" } mw-enable() { [ $_mw_enabled -eq 1 ] && mw-disable || true _mw_enabled=1 _mw_host=${1:-$_mw_host} _mw_usr=${2:-/usr} local _mw_misc=$_mw_usr/$_mw_host local _mw_bin=$_mw_usr/bin local _mw_prefix=~/opt/$_mw_host mkdir -p "$_mw_prefix" local tmp="$_mw_bin/$_mw_host" [ -d "$tmp" ] || tmp+='-' set -- CC gcc CXX g++ CPP cpp LD ld AR ar \ RANLIB ranlib RC windres WINDRES windres OBJCOPY objcopy while _mw_export "$1" "$tmp$2"; do shift 2 done _mw_export PATH "$PATH:$_mw_bin" _mw_export PREFIX "$_mw_prefix" _mw_export CFLAGS "-O2 -I $_mw_misc/include -I $_mw_prefix/include" _mw_export LDFLAGS "-L $_mw_misc/lib -L $_mw_prefix/lib" _mw_export CPPFLAGS '' _mw_export CXXFLAGS "$CFLAGS" # TODO: hackish local sdl2c=$_mw_host-sdl2-config which $sdl2c >/dev/null && { _mw_export SDL_CFLAGS "$($_mw_host-sdl2-config --cflags)" _mw_export SDL_LDLIBS "$($_mw_host-sdl2-config --libs)" } echo "mw enabled ($_mw_host)" return 0 } mw() { if [ "$#" -eq 1 ]; then if [[ "$1" == 32 ]]; then mw-enable $_mw_host32 /media/2tb/you/dump/mxe/usr export CFLAGS="-mwin32 $CFLAGS" export CXXFLAGS="$CFLAGS" elif [[ "$1" == 64 ]]; then mw-enable $_mw_host64 /media/2tb/you/dump/mxe/usr export CFLAGS="-mwin32 $CFLAGS" export CXXFLAGS="$CFLAGS" elif [[ "$1" == arm ]]; then mw-enable $_mw_hostarm /usr export CFLAGS="-mfloat-abi=hard -mcpu=cortex-a9 $CFLAGS" export CXXFLAGS="$CFLAGS" elif [[ "$1" == 0 ]]; then mw-disable else echo "usage: mw [0/32/64/arm]" return 1 fi else if [ $_mw_enabled -eq 0 ]; then mw-enable else mw-disable fi fi } mw $1