mirror of
https://github.com/libretro/libretro-super
synced 2024-12-01 04:03:00 +00:00
9724b24788
PC
496 lines
15 KiB
Bash
Executable File
496 lines
15 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
. ./libretro-config.sh
|
|
|
|
UNAME=$(uname)
|
|
if [ "`echo $UNAME | grep Linux`" ]; then
|
|
FORMAT_EXT="so"
|
|
elif [ "`echo $UNAME | grep BSD`" ]; then
|
|
FORMAT_EXT="so"
|
|
elif [ "`echo $UNAME | grep Darwin`" ]; then
|
|
FORMAT_EXT="dylib"
|
|
elif [ "`echo $UNAME | grep -i MINGW`" ]; then
|
|
FORMAT_EXT="dll"
|
|
else
|
|
FORMAT_EXT="so"
|
|
fi
|
|
|
|
# BSDs don't have readlink -f
|
|
read_link()
|
|
{
|
|
TARGET_FILE="$1"
|
|
cd $(dirname "$TARGET_FILE")
|
|
TARGET_FILE=$(basename "$TARGET_FILE")
|
|
|
|
while [ -L "$TARGET_FILE" ]
|
|
do
|
|
TARGET_FILE=$(readlink "$TARGET_FILE")
|
|
cd $(dirname "$TARGET_FILE")
|
|
TARGET_FILE=$(basename "$TARGET_FILE")
|
|
done
|
|
|
|
PHYS_DIR=$(pwd -P)
|
|
RESULT="$PHYS_DIR/$TARGET_FILE"
|
|
echo $RESULT
|
|
}
|
|
|
|
SCRIPT=$(read_link "$0")
|
|
echo "Script: $SCRIPT"
|
|
BASE_DIR=$(dirname "$SCRIPT")
|
|
RARCH_DIR="$BASE_DIR/dist"
|
|
RARCH_DIST_DIR="$RARCH_DIR/pc"
|
|
|
|
if [ -z "$JOBS" ]; then
|
|
JOBS=4
|
|
fi
|
|
|
|
die()
|
|
{
|
|
echo $1
|
|
#exit 1
|
|
}
|
|
|
|
ARCH=$(uname -m)
|
|
X86=false
|
|
X86_64=false
|
|
ARM=false
|
|
ARMV5=false
|
|
ARMV6=false
|
|
ARMV7=false
|
|
if [ $ARCH = x86_64 ]; then
|
|
echo "x86_64 CPU detected"
|
|
X86=true
|
|
X86_64=true
|
|
elif [ $ARCH = i686 ]; then
|
|
echo "x86_32 CPU detected"
|
|
X86=true
|
|
elif [ $ARCH = armv5tel ]; then
|
|
echo "ARMv5 CPU detected"
|
|
ARM=true
|
|
ARMV5=true
|
|
elif [ $ARCH = armv6l ]; then
|
|
echo "ARMv6 CPU detected"
|
|
ARM=true
|
|
ARMV6=true
|
|
elif [ $ARCH = armv7l ]; then
|
|
echo "ARMv7 CPU detected"
|
|
ARM=true
|
|
ARMV7=true
|
|
fi
|
|
|
|
if [ -z "$CC" ]; then
|
|
CC=gcc
|
|
fi
|
|
|
|
build_libretro_bsnes()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-bsnes/perf" ]; then
|
|
echo "=== Building bSNES performance ==="
|
|
cd libretro-bsnes/perf/higan
|
|
make compiler="$CC" ui=target-libretro profile=performance -j$JOBS clean || die "Failed to clean bSNES performance core"
|
|
make compiler="$CC" ui=target-libretro profile=performance -j$JOBS || die "Failed to build bSNES performance core"
|
|
cp -f out/libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-bsnes-performance.${FORMAT_EXT}
|
|
else
|
|
echo "bSNES performance not fetched, skipping ..."
|
|
fi
|
|
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-bsnes/balanced" ]; then
|
|
echo "=== Building bSNES balanced ==="
|
|
cd libretro-bsnes/balanced/higan
|
|
make compiler="$CC" ui=target-libretro profile=balanced -j$JOBS clean || die "Failed to clean bSNES balanced core"
|
|
make compiler="$CC" ui=target-libretro profile=balanced -j$JOBS || die "Failed to build bSNES balanced core"
|
|
cp -f out/libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-bsnes-balanced.${FORMAT_EXT}
|
|
else
|
|
echo "bSNES compat not fetched, skipping ..."
|
|
fi
|
|
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-bsnes" ]; then
|
|
echo "=== Building bSNES accuracy ==="
|
|
cd libretro-bsnes/higan
|
|
make compiler="$CC" ui=target-libretro profile=accuracy -j$JOBS clean || die "Failed to clean bSNES accuracy core"
|
|
make compiler="$CC" ui=target-libretro profile=accuracy -j$JOBS || die "Failed to build bSNES accuracy core"
|
|
cp -f out/libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-bsnes-accuracy.${FORMAT_EXT}
|
|
fi
|
|
}
|
|
|
|
build_libretro_mednafen()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-mednafen" ]; then
|
|
echo "=== Building Mednafen ==="
|
|
cd libretro-mednafen
|
|
|
|
for core in psx pce-fast wswan ngp gba snes vb
|
|
do
|
|
make core=${core} -j$JOBS clean || die "Failed to clean mednafen/${core}"
|
|
make core=${core} -j$JOBS || die "Failed to build mednafen/${core}"
|
|
cp mednafen_$(echo ${core} | tr '[\-]' '[_]')_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-mednafen-${core}.${FORMAT_EXT}
|
|
done
|
|
else
|
|
echo "Mednafen not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_mame078()
|
|
{
|
|
cd $BASE_DIR
|
|
if [ -d "libretro-mame078" ]; then
|
|
echo "=== Building MAME 0.78 ==="
|
|
cd libretro-mame078
|
|
|
|
make -j$JOBS clean || die "Failed to clean MAME 0.78"
|
|
make -j$JOBS || die "Failed to build MAME 0.78"
|
|
cp mame078_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-mame078.${FORMAT_EXT}
|
|
else
|
|
echo "MAME 0.78 not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_s9x()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-s9x" ]; then
|
|
echo "=== Building SNES9x ==="
|
|
cd libretro-s9x/libretro
|
|
make -j$JOBS clean || die "Failed to clean SNES9x"
|
|
make -j$JOBS || die "Failed to build SNES9x"
|
|
cp libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-snes9x.${FORMAT_EXT}
|
|
else
|
|
echo "SNES9x not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_s9x_next()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-s9x-next" ]; then
|
|
echo "=== Building SNES9x-Next ==="
|
|
cd libretro-s9x-next/
|
|
make -f Makefile.libretro -j$JOBS clean || die "Failed to clean SNES9x-Next"
|
|
make -f Makefile.libretro -j$JOBS || die "Failed to build SNES9x-Next"
|
|
cp snes9x_next_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-snes9x-next.${FORMAT_EXT}
|
|
else
|
|
echo "SNES9x-Next not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_genplus()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-genplus" ]; then
|
|
echo "=== Building Genplus GX ==="
|
|
cd libretro-genplus/
|
|
make -f Makefile.libretro -j$JOBS clean || die "Failed to clean Genplus GX"
|
|
make -f Makefile.libretro -j$JOBS || die "Failed to build Genplus GX"
|
|
cp genesis_plus_gx_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-genplus.${FORMAT_EXT}
|
|
else
|
|
echo "Genplus GX not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_fba()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-fba" ]; then
|
|
echo "=== Building Final Burn Alpha ==="
|
|
cd libretro-fba/
|
|
cd svn-current/trunk
|
|
make -f makefile.libretro clean || die "Failed to clean Final Burn Alpha"
|
|
make -f makefile.libretro -j$JOBS || die "Failed to build Final Burn Alpha"
|
|
cp fb_alpha_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-fba.${FORMAT_EXT}
|
|
else
|
|
echo "Final Burn Alpha not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_vba()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-vba" ]; then
|
|
echo "=== Building VBA-Next ==="
|
|
cd libretro-vba/
|
|
make -f Makefile.libretro -j$JOBS clean || die "Failed to clean VBA-Next"
|
|
make -f Makefile.libretro -j$JOBS || die "Failed to build VBA-Next"
|
|
cp vba_next_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-vba.${FORMAT_EXT}
|
|
else
|
|
echo "VBA-Next not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_bnes()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-bnes" ]; then
|
|
echo "=== Building bNES ==="
|
|
cd libretro-bnes
|
|
mkdir -p obj
|
|
make -j$JOBS clean || die "Failed to clean bNES"
|
|
make -j$JOBS || die "Failed to build bNES"
|
|
cp libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-bnes.${FORMAT_EXT}
|
|
else
|
|
echo "bNES not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_fceu()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-fceu" ]; then
|
|
echo "=== Building FCEU ==="
|
|
cd libretro-fceu
|
|
make -C fceumm-code -f Makefile.libretro -j$JOBS clean || die "Failed to clean FCEU"
|
|
make -C fceumm-code -f Makefile.libretro -j$JOBS || die "Failed to build FCEU"
|
|
cp fceumm-code/fceumm_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-fceu.${FORMAT_EXT}
|
|
else
|
|
echo "FCEU not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_gambatte()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-gambatte" ]; then
|
|
echo "=== Building Gambatte ==="
|
|
cd libretro-gambatte/libgambatte
|
|
make -f Makefile.libretro -j$JOBS clean || die "Failed to clean Gambatte"
|
|
make -f Makefile.libretro -j$JOBS || die "Failed to build Gambatte"
|
|
cp gambatte_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-gambatte.${FORMAT_EXT}
|
|
else
|
|
echo "Gambatte not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_meteor()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-meteor" ]; then
|
|
echo "=== Building Meteor ==="
|
|
cd libretro-meteor/libretro
|
|
make -j$JOBS clean || die "Failed to clean Meteor"
|
|
make -j$JOBS || die "Failed to build Meteor"
|
|
cp libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-meteor.${FORMAT_EXT}
|
|
else
|
|
echo "Meteor not fetched, skipping ..."
|
|
fi
|
|
}
|
|
build_libretro_nx()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-nx" ]; then
|
|
echo "=== Building NXEngine ==="
|
|
cd libretro-nx
|
|
make -j$JOBS clean || die "Failed to clean NXEngine"
|
|
make -j$JOBS || die "Failed to build NXEngine"
|
|
cp nxengine_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-nx.${FORMAT_EXT}
|
|
else
|
|
echo "NXEngine not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_prboom()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-prboom" ]; then
|
|
echo "=== Building PRBoom ==="
|
|
cd libretro-prboom
|
|
make -j$JOBS clean || die "Failed to clean PRBoom"
|
|
make -j$JOBS || die "Failed to build PRBoom"
|
|
cp prboom_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-prboom.${FORMAT_EXT}
|
|
else
|
|
echo "PRBoom not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_stella()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-stella" ]; then
|
|
echo "=== Building Stella ==="
|
|
cd libretro-stella
|
|
make -j$JOBS clean || die "Failed to clean Stella"
|
|
make -j$JOBS || die "Failed to build Stella"
|
|
cp libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-stella.${FORMAT_EXT}
|
|
else
|
|
echo "Stella not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_desmume()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-desmume" ]; then
|
|
echo "=== Building Desmume ==="
|
|
cd libretro-desmume
|
|
if [ $X86 = true ]; then
|
|
echo "=== Building Desmume with x86 JIT recompiler ==="
|
|
make -f Makefile.libretro DESMUME_JIT=1 -j$JOBS clean || die "Failed to clean Desmume"
|
|
make -f Makefile.libretro DESMUME_JIT=1 -j$JOBS || die "Failed to build Desmume"
|
|
elif [ $ARMV7 = true ]; then
|
|
echo "=== Building Desmume with ARMv7 JIT recompiler ==="
|
|
make -f Makefile.libretro platform=arm DESMUME_JIT=1 -j$JOBS clean || die "Failed to clean Desmume"
|
|
make -f Makefile.libretro platform=arm DESMUME_JIT=1 -j$JOBS || die "Failed to build Desmume"
|
|
else
|
|
make -f Makefile.libretro -j$JOBS clean || die "Failed to clean Desmume"
|
|
make -f Makefile.libretro -j$JOBS || die "Failed to build Desmume"
|
|
fi
|
|
cp desmume_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-desmume.${FORMAT_EXT}
|
|
else
|
|
echo "Desmume not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_pcsx_rearmed()
|
|
{
|
|
cd $BASE_DIR
|
|
pwd
|
|
if [ -d "libretro-pcsx-rearmed" ]; then
|
|
echo "=== Building PCSX ReARMed ==="
|
|
cd libretro-pcsx-rearmed
|
|
if [ $ARMV7 = true ]; then
|
|
echo "=== Building PCSX ReARMed (ARMV7 NEON) ==="
|
|
make -f Makefile.libretro platform=arm -j$JOBS clean || die "Failed to clean PCSX ReARMed"
|
|
make -f Makefile.libretro platform=arm -j$JOBS || die "Failed to build PCSX ReARMed"
|
|
else
|
|
make -f Makefile.libretro -j$JOBS clean || die "Failed to clean PCSX ReARMed"
|
|
make -f Makefile.libretro -j$JOBS || die "Failed to build PCSX ReARMed"
|
|
fi
|
|
cp pcsx_rearmed_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-pcsx-rearmed.${FORMAT_EXT}
|
|
else
|
|
echo "PCSX ReARMed not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_quicknes()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-quicknes" ]; then
|
|
echo "=== Building QuickNES ==="
|
|
cd libretro-quicknes/libretro
|
|
make -j$JOBS clean || die "Failed to clean QuickNES"
|
|
make -j$JOBS || die "Failed to build QuickNES"
|
|
cp libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-quicknes.${FORMAT_EXT}
|
|
else
|
|
echo "QuickNES not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_nestopia()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-nestopia" ]; then
|
|
echo "=== Building Nestopia ==="
|
|
cd libretro-nestopia/libretro
|
|
make -j$JOBS clean || die "Failed to clean Nestopia"
|
|
make -j$JOBS || die "Failed to build Nestopia"
|
|
cp nestopia_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-nestopia.${FORMAT_EXT}
|
|
else
|
|
echo "Nestopia not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_tyrquake()
|
|
{
|
|
cd "$BASE_DIR"
|
|
if [ -d "libretro-tyrquake" ]; then
|
|
echo "=== Building Tyr Quake ==="
|
|
cd libretro-tyrquake
|
|
make -f Makefile.libretro -j$JOBS clean || die "Failed to clean Tyr Quake"
|
|
make -f Makefile.libretro -j$JOBS || die "Failed to build Tyr Quake"
|
|
cp tyrquake_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-tyrquake.${FORMAT_EXT}
|
|
else
|
|
echo "Tyr Quake not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_dosbox()
|
|
{
|
|
cd $BASE_DIR
|
|
if [ -d "libretro-dosbox" ]; then
|
|
echo "=== Building DOSbox ==="
|
|
cd libretro-dosbox
|
|
make -f Makefile.libretro -j$JOBS clean || die "Failed to clean DOSbox"
|
|
make -f Makefile.libretro -j$JOBS || die "Failed to build DOSbox"
|
|
cp dosbox_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-dosbox.${FORMAT_EXT}
|
|
else
|
|
echo "DOSbox not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_scummvm()
|
|
{
|
|
cd $BASE_DIR
|
|
if [ -d "libretro-scummvm" ]; then
|
|
echo "=== Building ScummVM ==="
|
|
cd libretro-scummvm/backends/platform/libretro/build
|
|
make -f Makefile -j$JOBS clean || die "Failed to clean ScummVM"
|
|
make -f Makefile -j$JOBS || die "Failed to build ScummVM"
|
|
cp scummvm_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-scummvm.${FORMAT_EXT}
|
|
else
|
|
echo "ScummVM not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_modelviewer()
|
|
{
|
|
cd $BASE_DIR
|
|
if [ -d "libretro-gl-modelviewer" ]; then
|
|
echo "=== Building Modelviewer (GL) ==="
|
|
cd libretro-gl-modelviewer
|
|
make -f Makefile -j$JOBS clean || die "Failed to clean Modelviewer"
|
|
make -f Makefile -j$JOBS || die "Failed to build Modelviewer"
|
|
cp modelviewer_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-gl-modelviewer.${FORMAT_EXT}
|
|
else
|
|
echo "ModelViewer not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
build_libretro_scenewalker()
|
|
{
|
|
cd $BASE_DIR
|
|
if [ -d "libretro-gl-scenewalker" ]; then
|
|
echo "=== Building SceneWalker (GL) ==="
|
|
cd libretro-gl-scenewalker
|
|
make -f Makefile -j$JOBS clean || die "Failed to clean SceneWalker"
|
|
make -f Makefile -j$JOBS || die "Failed to build SceneWalker"
|
|
cp scenewalker_libretro.${FORMAT_EXT} "$RARCH_DIST_DIR"/libretro-gl-scenewalker.${FORMAT_EXT}
|
|
else
|
|
echo "SceneWalker not fetched, skipping ..."
|
|
fi
|
|
}
|
|
|
|
mkdir -p "$RARCH_DIST_DIR"
|
|
|
|
if [ $1 ]; then
|
|
$1
|
|
else
|
|
build_libretro_desmume
|
|
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_nx
|
|
build_libretro_prboom
|
|
build_libretro_stella
|
|
build_libretro_quicknes
|
|
build_libretro_nestopia
|
|
build_libretro_tyrquake
|
|
build_libretro_pcsx_rearmed
|
|
build_libretro_mame078
|
|
build_libretro_dosbox
|
|
build_libretro_scummvm
|
|
if [ -z $BUILD_LIBRETRO_GL ]; then
|
|
build_libretro_modelviewer
|
|
build_libretro_scenewalker
|
|
fi
|
|
fi
|