libretro-super/libretro-build.sh

317 lines
7.8 KiB
Bash
Raw Normal View History

#! /usr/bin/env bash
# vim: set ts=3 sw=3 noet ft=sh : bash
SCRIPT="${0#./}"
BASE_DIR="${SCRIPT%/*}"
WORKDIR="$PWD"
if [ "$BASE_DIR" = "$SCRIPT" ]; then
BASE_DIR="$WORKDIR"
2017-08-01 13:05:29 -04:00
elif [[ "$0" != /* ]]; then
# Make the path absolute
BASE_DIR="$WORKDIR/$BASE_DIR"
fi
2015-02-06 07:00:22 -05:00
. "$BASE_DIR/libretro-config.sh"
if [ -z "$RARCH_DIST_DIR" ]; then
RARCH_DIR="$WORKDIR/dist"
RARCH_DIST_DIR="$RARCH_DIR/$DIST_DIR"
fi
2017-08-01 13:05:29 -04:00
JOBS=${JOBS:-7}
if [ "$HOST_CC" ]; then
CC="${HOST_CC}-gcc"
CXX="${HOST_CC}-g++"
CXX11="${HOST_CC}-g++"
2019-09-07 14:47:29 -04:00
CXX17="${HOST_CC}-g++"
STRIP="${HOST_CC}-strip"
fi
if [ -z "$MAKE" ]; then
2017-09-19 14:51:43 -04:00
if uname -o | grep -i Msys > /dev/null 2>&1; then
MAKE=make
elif uname -s | grep -i MINGW > /dev/null 2>&1; then
MAKE=mingw32-make
else
if type gmake > /dev/null 2>&1; then
MAKE=gmake
else
MAKE=make
fi
fi
fi
if [ -z "$CC" ]; then
if [ $FORMAT_COMPILER_TARGET = "osx" ]; then
CC=cc
elif uname -s | grep -i MINGW32 > /dev/null 2>&1; then
CC=mingw32-gcc
else
CC=gcc
fi
fi
if [ -z "$CXX" ]; then
if [ $FORMAT_COMPILER_TARGET = "osx" ]; then
CXX=c++
CXX11="clang++ -std=c++11 -stdlib=libc++"
2019-09-07 14:47:29 -04:00
CXX17="clang++ -std=c++17 -stdlib=libc++"
# FIXME: Do this right later.
if [ "$ARCH" = "i386" ]; then
CC="cc -arch i386"
CXX="c++ -arch i386"
CXX11="clang++ -arch i386 -std=c++11 -stdlib=libc++"
2019-09-07 14:47:29 -04:00
CXX17="clang++ -arch i386 -std=c++17 -stdlib=libc++"
fi
elif uname -s | grep -i MINGW32 > /dev/null 2>&1; then
CXX=mingw32-g++
CXX11=mingw32-g++
2019-09-07 14:47:29 -04:00
CXX17=mingw32-g++
else
CXX=g++
CXX11=g++
2019-09-07 14:47:29 -04:00
CXX17=g++
fi
fi
FORMAT_COMPILER_TARGET_ALT=$FORMAT_COMPILER_TARGET
echo "CC = $CC"
echo "CXX = $CXX"
echo "CXX11 = $CXX11"
2019-09-07 14:47:29 -04:00
echo "CXX17 = $CXX17"
echo "STRIP = $STRIP"
. "$BASE_DIR/libretro-build-common.sh"
2015-07-30 23:53:55 -04:00
# These are cores which only work properly right
# now on little-endian architecture systems
build_default_cores_little_endian_only() {
libretro_build_core tgbdual
2015-07-31 00:48:22 -04:00
if [ $platform != "psp1" ]; then
libretro_build_core gpsp
libretro_build_core o2em
fi
2020-02-17 00:26:47 -05:00
libretro_build_core opera
2015-07-30 23:53:55 -04:00
if [ $platform != "qnx" ]; then
2015-07-31 00:48:22 -04:00
if [ $platform != "psp1" ]; then
2018-02-27 03:07:54 -05:00
libretro_build_core desmume
2018-02-24 08:45:17 -05:00
libretro_build_core desmume2015
2015-07-31 00:48:22 -04:00
fi
2015-07-30 23:53:55 -04:00
libretro_build_core picodrive
fi
# TODO - Verify endianness compatibility - for now exclude
libretro_build_core virtualjaguar
}
2015-07-31 01:41:02 -04:00
# These are C++11 cores
2015-07-30 23:09:54 -04:00
build_default_cores_cpp11() {
libretro_build_core dinothawr
libretro_build_core bsnes_accuracy
libretro_build_core bsnes_balanced
libretro_build_core bsnes_performance
2015-08-01 23:27:59 -04:00
libretro_build_core bsnes_mercury_accuracy
libretro_build_core bsnes_mercury_balanced
libretro_build_core bsnes_mercury_performance
2019-01-19 21:30:58 -05:00
libretro_build_core mame2015
2017-01-24 10:36:34 -05:00
libretro_build_core mame2016
2015-07-30 23:09:54 -04:00
libretro_build_core mame
}
2013-05-03 05:32:01 -04:00
# These are cores intended for platforms with a limited
# amount of RAM, where the full version would not fit
# into memory
build_default_cores_small_memory_footprint() {
libretro_build_core fb_alpha_cps1
libretro_build_core fb_alpha_cps2
libretro_build_core fb_alpha_neo
}
build_default_cores_libretro_gl() {
# Reasons for not compiling this yet on these targets (other than endianness issues)
# 1) Wii/NGC - no PPC dynarec, no usable graphics plugins that work with GX
# 2) PS3 - no PPC dynarec, PSGL is GLES 1.0 while graphics plugins right now require GL 2.0+/GLES2
2015-07-30 23:53:55 -04:00
# 3) QNX - Compilation issues, ARM NEON compiler issues
if [ $platform != "qnx" ]; then
libretro_build_core mupen64plus
fi
# Graphics require GLES 2/GL 2.0
2015-07-31 00:48:22 -04:00
if [ $platform != "psp1" ]; then
libretro_build_core 3dengine
fi
}
2015-07-30 23:09:54 -04:00
# These build everywhere libretro-build.sh works
# (They also use rules builds, which will help later)
2015-07-30 23:09:54 -04:00
build_default_cores() {
2015-07-31 00:17:17 -04:00
if [ $platform == "wii" ] || [ $platform == "ngc" ] || [ $platform == "psp1" ]; then
build_default_cores_small_memory_footprint
fi
2015-02-26 17:43:29 -05:00
libretro_build_core 2048
libretro_build_core bluemsx
2016-11-06 17:32:25 -05:00
2015-09-15 02:35:40 -04:00
if [ $platform != "psp1" ] && [ $platform != "ngc" ] && [ $platform != "wii" ] && [ $platform != "ps3" ] && [ $platform != "sncps3" ] && [ $platform != "vita" ]; then
2015-07-31 00:17:17 -04:00
libretro_build_core dosbox
fi
2016-11-06 17:32:25 -05:00
2016-08-05 11:57:37 -04:00
libretro_build_core snes9x2005
2022-12-20 06:13:49 -05:00
libretro_build_core chimerasnes
2015-07-31 00:17:17 -04:00
if [ $platform != "psp1" ]; then
# Excluded for binary size reasons
2019-05-21 03:35:03 -04:00
libretro_build_core fbneo
2015-07-31 00:17:17 -04:00
fi
2015-02-26 17:43:29 -05:00
libretro_build_core fceumm
libretro_build_core fmsx
2015-02-26 17:43:29 -05:00
libretro_build_core gambatte
2015-09-14 20:48:56 -04:00
libretro_build_core handy
2015-07-31 01:25:29 -04:00
libretro_build_core stella
libretro_build_core nestopia
2022-12-26 16:26:59 -05:00
libretro_build_core numero
2015-02-26 17:43:29 -05:00
libretro_build_core nxengine
libretro_build_core prboom
libretro_build_core quicknes
2016-08-05 11:57:37 -04:00
libretro_build_core snes9x2010
2015-02-26 17:43:29 -05:00
libretro_build_core tyrquake
libretro_build_core vba_next
libretro_build_core vecx
2015-07-29 19:34:15 -04:00
2015-07-31 00:17:17 -04:00
if [ $platform != "psp1" ]; then
# (PSP) Compilation issues
libretro_build_core mgba
# (PSP) Performance issues
libretro_build_core genesis_plus_gx
fi
2015-07-30 23:53:55 -04:00
2015-09-04 20:54:50 -04:00
if [ $platform != "psp1" ] && [ $platform != "wii" ] && [ $platform != "ngc" ] && [ $platform != "vita" ]; then
# (PSP/NGC/Wii/Vita) Performance and/or binary size issues
2015-07-31 00:17:17 -04:00
libretro_build_core bsnes_cplusplus98
2015-11-03 10:06:30 -05:00
libretro_build_core mame2003
2015-07-31 00:17:17 -04:00
libretro_build_core mednafen_gba
fi
2015-07-30 23:53:55 -04:00
libretro_build_core mednafen_lynx
libretro_build_core mednafen_ngp
libretro_build_core mednafen_pce_fast
2015-07-31 00:17:17 -04:00
libretro_build_core mednafen_supergrafx
libretro_build_core mednafen_vb
libretro_build_core mednafen_wswan
2018-11-05 22:48:34 -05:00
libretro_build_core mu
2015-07-30 23:21:23 -04:00
libretro_build_core gw
libretro_build_core prosystem
2015-07-30 23:05:01 -04:00
2015-09-15 02:35:40 -04:00
if [ $platform != "ps3" ] && [ $platform != "sncps3" ] && [ $platform != "vita" ]; then
2015-08-04 01:08:57 -04:00
libretro_build_core 81
2015-07-30 23:53:55 -04:00
libretro_build_core fuse
2015-07-31 04:01:57 -04:00
libretro_build_core lutro
2015-07-30 23:53:55 -04:00
fi
2016-11-06 17:32:25 -05:00
if [ $platform != "ps3" ] && [ $platform != "sncps3" ] && [ $platform != "wii" ] && [ $platform != "wiiu" ] && [ $platform != "ngc" ] && [ $platform != "vita" ]; then
2015-07-30 23:53:55 -04:00
build_default_cores_little_endian_only
2015-07-30 23:25:02 -04:00
build_default_cores_libretro_gl
2015-07-30 23:05:01 -04:00
2015-07-31 00:48:22 -04:00
if [ $platform != "psp1" ]; then
# (PS3/NGC/Wii/PSP) Excluded for performance reasons
libretro_build_core snes9x
libretro_build_core vbam
2015-07-31 02:22:50 -04:00
# The only reason ScummVM won't be compiled in yet is
# 1) Wii/NGC/PSP - too big in binary size
# 2) PS3 - filesystem API issues
2015-07-31 00:48:22 -04:00
libretro_build_core scummvm
2015-07-31 02:22:50 -04:00
# Excluded for performance reasons
libretro_build_core mednafen_pcfx
libretro_build_core mednafen_psx
libretro_build_core mednafen_psx_hw
2015-07-31 02:22:50 -04:00
if [ $platform != "qnx" ]; then
libretro_build_core mednafen_snes
fi
2015-07-31 00:48:22 -04:00
fi
2015-07-30 23:05:01 -04:00
# Could work on PS3/Wii right now but way too slow right now,
# and messed up big-endian colors
libretro_build_core yabause
2015-07-31 01:25:29 -04:00
# Compilation/port status issues
libretro_build_core hatari
libretro_build_core meteor
2015-07-30 23:05:01 -04:00
2015-08-02 03:42:28 -04:00
2015-09-04 20:54:50 -04:00
if [ $platform != "qnx" ] && [ $platform != "psp1" ] && [ $platform != "vita" ]; then
2015-11-03 10:06:30 -05:00
libretro_build_core mame2010
2015-08-02 03:42:28 -04:00
2015-07-31 02:22:50 -04:00
build_default_cores_cpp11
2015-07-31 02:22:50 -04:00
# Just basic compilation issues right now for these platforms
libretro_build_core emux
2015-07-29 19:34:15 -04:00
2015-07-31 02:22:50 -04:00
if [ $platform != "win" ]; then
# Reasons for not compiling this on Windows yet -
# (Windows) - Doesn't work properly
# (QNX) - Compilation issues
# (PSP1) - Performance/compilation issues
# (Wii) - Performance/compilation issues
# (PS3) - Performance/compilation issues
libretro_build_core pcsx_rearmed
fi
2015-10-15 10:32:03 -04:00
if [ $platform != "ios" ] || [ $platform != "ios9" ]; then
2015-07-31 02:22:50 -04:00
# Would need ffmpeg libraries baked in
libretro_build_core ffmpeg
libretro_build_core ppsspp
libretro_build_core bnes
fi
2015-07-31 01:41:02 -04:00
fi
2015-07-31 02:22:50 -04:00
build_libretro_test
fi
}
mkdir -p "$RARCH_DIST_DIR"
if [ -n "$SKIP_UNCHANGED" ]; then
[ -z "$BUILD_REVISIONS_DIR" ] && BUILD_REVISIONS_DIR="$WORKDIR/build-revisions"
echo "mkdir -p \"$BUILD_REVISIONS_DIR\""
mkdir -p "$BUILD_REVISIONS_DIR"
fi
if [ -n "$1" ]; then
while [ -n "$1" ]; do
case "$1" in
--nologs)
LIBRETRO_LOG_SUPER=""
LIBRETRO_LOG_CORE=""
;;
*)
# New style (just generic cores for now)
want_cores="$want_cores $1"
;;
esac
shift
done
fi
libretro_log_init
if [ -n "$want_cores" ]; then
for core in $want_cores; do
libretro_build_core $core
done
else
build_default_cores
fi
summary