libretro-super/libretro-build-win32.sh

322 lines
10 KiB
Bash
Executable File

#!/bin/sh
SCRIPT=$(readlink -f $0)
BASE_DIR=$(dirname $SCRIPT)
RARCH_DIR=$BASE_DIR/dist
RARCH_DIST_DIR=$RARCH_DIR/windows
JOBS=4
die()
{
echo $1
#exit 1
}
if [ "$HOST_CC" ]; then
CC="${HOST_CC}-gcc"
CXX="${HOST_CC}-g++"
STRIP="${HOST_CC}-strip"
fi
if [ -z "$MAKE" ]; then
if [ "$(expr substr $(uname -s) 1 7)" == "MINGW32" ]; then
MAKE=mingw32-make
else
MAKE=make
fi
fi
if [ -z "$CC" ]; then
if [ "$(expr substr $(uname -s) 1 7)" == "MINGW32" ]; then
CC=mingw32-gcc
else
CC=gcc
fi
fi
if [ -z "$CXX" ]; then
if [ "$(expr substr $(uname -s) 1 7)" == "MINGW32" ]; then
CXX=mingw32-g++
else
CXX=g++
fi
fi
build_libretro_bsnes()
{
if [ -d "libretro-bsnes/perf" ]; then
echo "=== Building bSNES performance ==="
cd libretro-bsnes/perf/higan
rm -f obj/*.o
rm -f out/*.dll
$MAKE platform=win compiler="$CC" ui=target-libretro profile=performance -j$JOBS clean || die "Failed to clean bSNES performance core"
$MAKE platform=win compiler="$CC" ui=target-libretro profile=performance -j$JOBS || die "Failed to build bSNES performance core"
cp -f out/retro.dll "$RARCH_DIST_DIR"/libretro-092-bsnes-performance.dll
cd ../../..
else
echo "bSNES performance not fetched, skipping ..."
fi
if [ -d "libretro-bsnes/balanced" ]; then
echo "=== Building bSNES balanced ==="
cd libretro-bsnes/balanced/higan
rm -f obj/*.o
rm -f out/*.dll
$MAKE platform=win compiler="$CC" ui=target-libretro profile=balanced -j$JOBS clean || die "Failed to clean bSNES balanced core"
$MAKE platform=win compiler="$CC" ui=target-libretro profile=balanced -j$JOBS || die "Failed to build bSNES balanced core"
cp -f out/retro.dll "$RARCH_DIST_DIR"/libretro-092-bsnes-balanced.dll
cd ../../..
else
echo "bSNES compat not fetched, skipping ..."
fi
if [ -d "libretro-bsnes" ]; then
echo "=== Building bSNES accuracy ==="
cd libretro-bsnes/higan
rm -f obj/*.o
rm -f out/*.dll
$MAKE platform=win compiler="$CC" ui=target-libretro profile=accuracy -j$JOBS clean || die "Failed to clean bSNES accuracy core"
$MAKE platform=win compiler="$CC" ui=target-libretro profile=accuracy -j$JOBS || die "Failed to build bSNES accuracy core"
cp -f out/retro.dll "$RARCH_DIST_DIR"/libretro-092-bsnes-accuracy.dll
cd ../..
fi
}
build_libretro_mednafen()
{
if [ -d "libretro-mednafen" ]; then
echo "=== Building Mednafen ==="
cd libretro-mednafen
cd psx
$MAKE core=psx platform=win CC=$CC CXX=$CXX -j$JOBS clean || die "Failed to clean mednafen/psx"
$MAKE core=psx platform=win CC=$CC CXX=$CXX -j$JOBS || die "Failed to build mednafen/psx"
cp retro.dll "$RARCH_DIST_DIR"/libretro-0928-mednafen-psx.dll
"$STRIP" ../libretro-0928-mednafen-psx.dll
cd ..
cd pce-fast
$MAKE core=pce-fast platform=win CC=$CC CXX=$CXX -j$JOBS clean || die "Failed to clean mednafen/pce-fast"
$MAKE core=pce-fast platform=win CC=$CC CXX=$CXX -j$JOBS || die "Failed to build mednafen/pce-fast"
cp retro.dll "$RARCH_DIST_DIR"/libretro-0928-mednafen-pce-fast.dll
"$STRIP" "$RARCH_DIST_DIR"/libretro-0928-mednafen-pce-fast.dll
cd ..
cd wswan
$MAKE core=wswan platform=win CC=$CC CXX=$CXX -j$JOBS clean || die "Failed to clean mednafen/wswan"
$MAKE core=wswan platform=win CC=$CC CXX=$CXX -j$JOBS || die "Failed to build mednafen/wswan"
cp retro.dll "$RARCH_DIST_DIR"/libretro-0928-mednafen-wswan.dll
"$STRIP" "$RARCH_DIST_DIR"/libretro-0928-mednafen-wswan.dll
cd ..
cd ..
else
echo "Mednafen not fetched, skipping ..."
fi
}
build_libretro_s9x()
{
if [ -d "libretro-s9x" ]; then
echo "=== Building SNES9x ==="
cd libretro-s9x/libretro
$MAKE CC=$CC CXX=$CXX platform=win -j$JOBS clean || die "Failed to clean SNES9x"
$MAKE CC=$CC CXX=$CXX platform=win -j$JOBS || die "Failed to build SNES9x"
cp libretro.dll "$RARCH_DIST_DIR"/libretro-git-snes9x.dll
cd ../..
else
echo "SNES9x not fetched, skipping ..."
fi
}
build_libretro_s9x_next()
{
if [ -d "libretro-s9x-next" ]; then
echo "=== Building SNES9x-Next ==="
cd libretro-s9x-next/
$MAKE CC=$CC CXX=$CXX platform=win -f Makefile.libretro -j$JOBS clean || die "Failed to clean SNES9x-Next"
$MAKE CC=$CC CXX=$CXX platform=win -f Makefile.libretro -j$JOBS || die "Failed to build SNES9x-Next"
cp snes9x_next_retro.dll "$RARCH_DIST_DIR"/libretro-git-snes9x-next.dll
cd ..
else
echo "SNES9x-Next not fetched, skipping ..."
fi
}
build_libretro_genplus()
{
if [ -d "libretro-genplus" ]; then
echo "=== Building Genplus GX ==="
cd libretro-genplus/
$MAKE CC=$CC CXX=$CXX platform=win -f Makefile.libretro -j$JOBS clean || die "Failed to clean Genplus GX"
$MAKE CC=$CC CXX=$CXX platform=win -f Makefile.libretro -j$JOBS || die "Failed to build Genplus GX"
cp genesis_plus_gx_retro.dll "$RARCH_DIST_DIR"/libretro-git-genplus.dll
cd ..
else
echo "Genplus GX not fetched, skipping ..."
fi
}
build_libretro_fba()
{
if [ -d "libretro-fba" ]; then
echo "=== Building Final Burn Alpha ==="
cd libretro-fba/svn-current/trunk
$MAKE CC=$CC CXX=$CXX platform=win -f makefile.libretro -j$JOBS clean || die "Failed to clean Final Burn Alpha"
$MAKE CC=$CC CXX=$CXX platform=win -f makefile.libretro -j$JOBS || die "Failed to build Final Burn Alpha"
cp fb_alpha_retro.dll "$RARCH_DIST_DIR"/libretro-git-fba.dll
cd ../../..
else
echo "Final Burn Alpha not fetched, skipping ..."
fi
}
build_libretro_vba()
{
if [ -d "libretro-vba" ]; then
echo "=== Building VBA-Next ==="
cd libretro-vba/
$MAKE CC=$CC CXX=$CXX platform=win -f Makefile.libretro -j$JOBS clean || die "Failed to clean VBA-Next"
$MAKE CC=$CC CXX=$CXX platform=win -f Makefile.libretro -j$JOBS || die "Failed to build VBA-Next"
cp vba_next_retro.dll "$RARCH_DIST_DIR"/libretro-git-vba.dll
cd ..
else
echo "VBA-Next not fetched, skipping ..."
fi
}
build_libretro_bnes()
{
if [ -d "libretro-bnes" ]; then
echo "=== Building bNES ==="
cd libretro-bnes
mkdir -p obj
$MAKE CC=$CC CXX=$CXX platform=win -j$JOBS clean || die "Failed to clean bNES"
$MAKE CC=$CC CXX=$CXX platform=win -j$JOBS || die "Failed to build bNES"
cp retro.dll "$RARCH_DIST_DIR"/libretro-git-bnes.dll
cd ..
else
echo "bNES not fetched, skipping ..."
fi
}
build_libretro_fceu()
{
if [ -d "libretro-fceu" ]; then
echo "=== Building FCEU ==="
cd libretro-fceu
$MAKE CC=$CC CXX=$CXX platform=win -C fceumm-code -f Makefile.libretro -j$JOBS clean || die "Failed to clean FCEU"
$MAKE CC=$CC CXX=$CXX platform=win -C fceumm-code -f Makefile.libretro -j$JOBS || die "Failed to build FCEU"
cp fceumm-code/fceumm_retro.dll "$RARCH_DIST_DIR"/libretro-git-fceu.dll
cd ..
else
echo "FCEU not fetched, skipping ..."
fi
}
build_libretro_gambatte()
{
if [ -d "libretro-gambatte" ]; then
echo "=== Building Gambatte ==="
cd libretro-gambatte/libgambatte
$MAKE CC=$CC CXX=$CXX platform=win -f Makefile.libretro -j$JOBS clean || die "Failed to clean Gambatte"
$MAKE CC=$CC CXX=$CXX platform=win -f Makefile.libretro -j$JOBS || die "Failed to build Gambatte"
cp gambatte_retro.dll "$RARCH_DIST_DIR"/libretro-git-gambatte.dll
cd ../..
else
echo "Gambatte not fetched, skipping ..."
fi
}
build_libretro_meteor()
{
if [ -d "libretro-meteor" ]; then
echo "=== Building Meteor ==="
cd libretro-meteor/libretro
$MAKE platform=win CC=$CC CXX=$CXX -j$JOBS clean || die "Failed to clean Meteor"
$MAKE platform=win CC=$CC CXX=$CXX -j$JOBS || die "Failed to build Meteor"
cp retro.dll "$RARCH_DIST_DIR"/libretro-git-meteor.dll
cd ../..
else
echo "Meteor not fetched, skipping ..."
fi
}
build_libretro_stella()
{
if [ -d "libretro-stella" ]; then
echo "=== Building Stella ==="
cd libretro-stella
$MAKE platform=win CC=$CC CXX=$CXX -j$JOBS clean || die "Failed to clean Stella"
$MAKE platform=win CC=$CC CXX=$CXX -j$JOBS || die "Failed to build Stella"
cp stella_retro.dll "$RARCH_DIST_DIR"/libretro-git-stella.dll
cd ../
else
echo "Stella not fetched, skipping ..."
fi
}
build_libretro_desmume()
{
if [ -d "libretro-desmume" ]; then
echo "=== Building Desmume ==="
cd libretro-desmume
$MAKE platform=win CC=$CC CXX=$CXX -f Makefile.libretro -j$JOBS clean || die "Failed to clean Desmume"
$MAKE platform=win CC=$CC CXX=$CXX -f Makefile.libretro -j$JOBS || die "Failed to build Desmume"
cp retro.dll "$RARCH_DIST_DIR"/libretro-git-desmume.dll
cd ../
else
echo "Desmume not fetched, skipping ..."
fi
}
build_libretro_quicknes()
{
if [ -d "libretro-quicknes" ]; then
echo "=== Building QuickNES ==="
cd libretro-quicknes/libretro
$MAKE platform=win CC=$CC CXX=$CXX -j$JOBS clean || die "Failed to clean QuickNES"
$MAKE platform=win CC=$CC CXX=$CXX -j$JOBS || die "Failed to build QuickNES"
cp quicknes_retro.dll "$RARCH_DIST_DIR"/libretro-git-quicknes.dll
cd ../..
else
echo "QuickNES not fetched, skipping ..."
fi
}
build_libretro_nestopia()
{
if [ -d "libretro-nestopia" ]; then
echo "=== Building Nestopia ==="
cd libretro-nestopia/libretro
$MAKE platform=win CC=$CC CXX=$CXX -j$JOBS clean || die "Failed to clean Nestopia"
$MAKE platform=win CC=$CC CXX=$CXX -j$JOBS || die "Failed to build Nestopia"
cp nestopia_retro.dll "$RARCH_DIST_DIR"/libretro-144-nestopia.dll
cd ../..
else
echo "Nestopia not fetched, skipping ..."
fi
}
mkdir -p "$RARCH_DIST_DIR"
if [ $1 ]; then
$1
else
build_libretro_bsnes
build_libretro_mednafen
build_libretro_s9x
build_libretro_s9x_next
build_libretro_genplus
build_libretro_fba
build_libretro_vba
build_libretro_bnes
build_libretro_fceu
build_libretro_gambatte
build_libretro_meteor
build_libretro_stella
build_libretro_desmume
build_libretro_quicknes
build_libretro_nestopia
fi