libretro-super/libretro-build-android-mk.sh

208 lines
4.5 KiB
Bash
Raw Normal View History

#! /usr/bin/env bash
# vim: set ts=3 sw=3 noet ft=sh : bash
2013-02-10 12:30:38 -05:00
. ./libretro-config.sh
#split TARGET_ABI string into an array we can iterate over
IFS=' ' read -ra ABIS <<< "$TARGET_ABIS"
# 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/android
FORMAT=_android
2013-05-17 20:11:06 -04:00
FORMAT_EXT=so
2013-02-10 12:30:38 -05:00
die()
{
echo $1
#exit 1
2013-02-10 12:30:38 -05:00
}
# $1 is core name
# $2 is subdir (if there's no subdir, put "." here)
# $3 is appendage to core name for output JNI file
build_libretro_generic_makefile()
2014-06-21 12:34:11 -04:00
{
cd $BASE_DIR
if [ -d "libretro-${1}" ]; then
echo "=== Building ${1} ==="
cd libretro-${1}
cd ${2}
for a in "${ABIS[@]}"; do
if [ -z "${NOCLEAN}" ]; then
ndk-build clean APP_ABI=${a} || die "Failed to clean ${a} ${1}"
fi
ndk-build -j$JOBS APP_ABI=${a} || die "Failed to build ${a} ${1}"
cp ../libs/${a}/libretro${3}.${FORMAT_EXT} $RARCH_DIST_DIR/${a}/${1}_libretro${FORMAT}.${FORMAT_EXT}
done
else
echo "${1} not fetched, skipping ..."
fi
2014-06-21 12:34:11 -04:00
}
#same as above for armv7 with neon since android ndk does not see it as as its own architecture
build_libretro_generic_makefile_armv7neon()
{
cd $BASE_DIR
if [ -d "libretro-${1}" ]; then
echo "=== Attempting armv7-neon Build ==="
cd libretro-${1}
cd ${2}
if [ -z "${NOCLEAN}" ]; then
ndk-build clean APP_ABI="armeabi-v7a" NDK_OUT="../obj/local/armeabi-v7a-neon" NDK_LIBS_OUT="../libs/armeabi-v7a-neon" V7NEONOPTIMIZATION="1" || die "Failed to clean armeabi_v7a_neon ${1}"
fi
ndk-build -j$JOBS APP_ABI="armeabi-v7a" NDK_OUT="../obj/local/armeabi-v7a-neon" NDK_LIBS_OUT="../libs/armeabi-v7a-neon" V7NEONOPTIMIZATION="1" || die "Failed to build armeabi_v7a_neon ${1}"
mkdir -p $RARCH_DIST_DIR/armeabi-v7a-neon
cp ../libs/armeabi-v7a-neon/armeabi-v7a/libretro${3}.${FORMAT_EXT} $RARCH_DIST_DIR/armeabi-v7a-neon/${1}_libretro${FORMAT}.${FORMAT_EXT}
else
echo "${1} not fetched, skipping ..."
fi
}
create_dist_dir()
{
if [ -d $RARCH_DIR ]; then
echo "Directory $RARCH_DIR already exists, skipping creation..."
else
mkdir $RARCH_DIR
fi
if [ -d $RARCH_DIST_DIR ]; then
echo "Directory $RARCH_DIST_DIR already exists, skipping creation..."
else
mkdir $RARCH_DIST_DIR
fi
2022-12-20 06:13:49 -05:00
for a in "${ABIS[@]}"; do
if [ -d $RARCH_DIST_DIR/${a} ]; then
echo "Directory $RARCH_DIST_DIR/${a} already exists, skipping creation..."
else
mkdir $RARCH_DIST_DIR/${a}
fi
done
}
2014-07-12 22:22:50 -04:00
create_dist_dir
if [ $1 ]; then
WANT_CORES="$1"
else
WANT_CORES=" \
2048 \
bluemsx \
fmsx \
2020-02-17 00:26:47 -05:00
opera \
2021-01-19 15:34:44 -05:00
lowresnx\
mednafen_lynx \
mednafen_ngp \
mednafen_pce_fast \
mednafen_supergrafx \
mednafen_pcfx \
mednafen_vb \
mednafen_wswan \
mednafen_psx \
catsfc \
snes9x \
snes9x2002 \
snes9x2005 \
2022-12-20 06:13:49 -05:00
chimerasnes \
snes9x2010 \
genesis_plus_gx \
virtualjaguar \
stella \
gpsp \
dosbox \
picodrive \
3dengine \
prosystem \
meteor \
nxengine \
o2em \
2015-11-08 21:28:21 -05:00
pcsx_rearmed \
2017-02-17 09:48:46 -05:00
parallel_n64 \
2015-11-08 21:35:46 -05:00
vecx \
nestopia \
2015-11-08 21:38:20 -05:00
tgbdual \
2015-11-08 21:40:55 -05:00
quicknes \
handy \
2015-11-08 21:55:35 -05:00
gambatte \
2022-12-26 16:26:59 -05:00
numero \
2015-11-08 21:55:35 -05:00
prboom \
2015-11-08 22:10:18 -05:00
tyrquake \
vba_next \
2015-11-09 07:38:55 -05:00
vbam \
2015-11-09 07:44:16 -05:00
fceumm \
2015-11-09 08:42:28 -05:00
dinothawr \
desmume \
fb_alpha \
fb_alpha_new \
2015-11-09 08:42:28 -05:00
bsnes_mercury_performance \
bsnes_performance \
mame2000 \
mame2003 \
2017-03-24 02:35:03 -04:00
mrboom \
xrick \
2017-03-26 10:29:17 -04:00
pocketcdg \
crocods \
puae \
scummvm"
fi
for core in $WANT_CORES; do
path="jni"
append=""
if [ $core = "snes9x" ] || [ $core = "genesis_plus_gx" ] || [ $core = "meteor" ] || [ $core = "nestopia" ] || [ $core = "yabause" ] || [ $core = "vbam" ] || [ $core = "vba_next" ] || [ $core = "ppsspp" ] || [ $core = "px68k" ]; then
path="libretro/jni"
fi
if [ $core = "gambatte" ]; then
path="libgambatte/libretro/jni"
2022-12-26 16:26:59 -05:00
fi
if [ $core = "numero" ]; then
path="libnumero/libretro/jni"
fi
if [ $core = "desmume" ]; then
path="desmume/src/libretro/jni"
fi
if [ $core = "fb_alpha" ]; then
path="svn-current/trunk/projectfiles/libretro-android/jni"
fi
2015-11-09 08:42:28 -05:00
if [ $core = "bsnes_mercury_performance" ] || [ $core = "bsnes_performance" ]; then
path="target-libretro/jni"
append="_$core"
2015-11-09 08:42:28 -05:00
fi
2022-12-20 06:13:49 -05:00
if [ $core = "scummvm" ]; then
path="backends/platform/libretro/build/jni"
fi
2021-01-19 15:34:44 -05:00
if [ $core = "lowresnx" ]; then
path="platform/LibRetro/jni"
fi
build_libretro_generic_makefile $core $path $append
build_libretro_generic_makefile_armv7neon $core $path $append
done