mirror of
https://github.com/notwa/rc
synced 2024-11-14 13:59:02 -08:00
115 lines
3.1 KiB
Bash
Executable file
115 lines
3.1 KiB
Bash
Executable file
#!/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 COMPILER_PATH 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 ~/src/mxe/usr
|
|
export CFLAGS="-mwin32 $CFLAGS"
|
|
export CXXFLAGS="$CFLAGS"
|
|
elif [[ "$1" == 64 ]]; then
|
|
mw-enable $_mw_host64 ~/src/mxe/usr
|
|
export CFLAGS="-mwin32 $CFLAGS"
|
|
export CXXFLAGS="$CFLAGS"
|
|
elif [[ "$1" == 32c ]]; then
|
|
mw-enable $_mw_host32 ~/src/mxe/usr
|
|
export CC="$_mw_host32-clang"
|
|
export CXX="$_mw_host32-clang++"
|
|
export COMPILER_PATH="$HOME/src/mxe/usr/bin"
|
|
elif [[ "$1" == 64c ]]; then
|
|
mw-enable $_mw_host64 ~/src/mxe/usr
|
|
export CC="$_mw_host64-clang"
|
|
export CXX="$_mw_host64-clang++"
|
|
export COMPILER_PATH="$HOME/src/mxe/usr/bin"
|
|
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
|