RetroArch/dist-scripts/dist-cores.sh

343 lines
14 KiB
Bash
Raw Normal View History

#!/bin/sh
2016-08-09 15:07:56 +00:00
RARCH_VERSION=1.3.6
PLATFORM=$1
2015-09-01 15:31:34 +00:00
SALAMANDER=no
MAKEFILE_GRIFFIN=no
2015-09-01 15:14:14 +00:00
# PSP
if [ $PLATFORM = "unix" ] ; then
platform=unix
SALAMANDER=no
EXT=a
mkdir -p ../pkg/${platform}/
# For statically linked cores, we need to configure once
cd ..
LDFLAGS=-L. ./configure --disable-dynamic
cd dist-scripts
elif [ $PLATFORM = "psp1" ] ; then
2015-09-01 15:14:14 +00:00
platform=psp1
2015-09-01 15:31:34 +00:00
SALAMANDER=yes
2015-09-02 10:34:05 +00:00
EXT=a
2015-09-01 15:14:14 +00:00
mkdir -p ../pkg/${platform}/cores/
2015-09-20 13:33:54 +00:00
make -C ../bootstrap/${platform}/kernel_functions_prx/ clean || exit 1
make -C ../bootstrap/${platform}/kernel_functions_prx/ || exit 1
2015-09-01 15:14:14 +00:00
cp -f ../kernel_functions.prx ../pkg/${platform}/kernel_functions.prx
2015-09-01 15:31:34 +00:00
# Vita
elif [ $PLATFORM = "vita" ] ; then
platform=vita
MAKEFILE_GRIFFIN=yes
2015-09-02 10:34:05 +00:00
EXT=a
2016-08-01 22:57:00 +00:00
mkdir -p ../pkg/vita/vpk
# CTR/3DS
elif [ $PLATFORM = "ctr" ] ; then
platform=ctr
EXT=a
mkdir -p ../pkg/3ds/cia
mkdir -p ../pkg/3ds/rom
mkdir -p ../pkg/3ds/3ds
# Emscripten
elif [ $PLATFORM = "emscripten" ] ; then
platform=emscripten
EXT=bc
if [ -z "$EMSCRIPTEN" ] ; then
echo "run this script with emmake. Ex: emmake $0"
exit 1
fi
# Wii
elif [ $PLATFORM = "wii" ] ; then
platform=wii
MAKEFILE_GRIFFIN=yes
SALAMANDER=yes
2015-09-02 10:34:05 +00:00
EXT=a
# NGC
elif [ $PLATFORM = "ngc" ] ; then
platform=ngc
MAKEFILE_GRIFFIN=yes
2015-09-02 10:34:05 +00:00
EXT=a
2015-09-01 15:14:14 +00:00
# DEX PS3
2015-09-01 15:31:34 +00:00
elif [ $PLATFORM = "dex-ps3" ] ; then
platform=ps3
2015-09-01 15:31:34 +00:00
SALAMANDER=yes
2015-09-02 10:34:05 +00:00
EXT=a
2016-08-11 04:57:22 +00:00
EXE_PATH=${CELL_SDK}/host-win32/bin
MAKE_FSELF_NPDRM=${EXE_PATH}/make_fself_npdrm.exe
MAKE_PACKAGE_NPDRM=${EXE_PATH}/make_package_npdrm.exe
2015-09-01 15:31:34 +00:00
2015-09-01 15:14:14 +00:00
# CEX PS3
2015-09-01 15:31:34 +00:00
elif [ $PLATFORM = "cex-ps3" ]; then
2016-08-13 11:56:18 +00:00
#For this script to work correctly, you must place scetool.exe and the "data" folder containing your ps3 keys for scetool to use in the dist-scripts folder.
platform=ps3
2015-09-01 15:31:34 +00:00
SALAMANDER=yes
2015-09-02 10:34:05 +00:00
EXT=a
2016-08-11 04:57:22 +00:00
EXE_PATH=${CELL_SDK}/host-win32/bin
SCETOOL_PATH=${PS3TOOLS_PATH}/scetool/scetool.exe
SCETOOL_FLAGS_CORE="--sce-type=SELF --compress-data=TRUE --skip-sections=TRUE --key-revision=04 --self-auth-id=1010000001000003 --self-vendor-id=01000002 --self-type=APP --self-app-version=0001000000000000 --self-fw-version=0003004100000000 --encrypt"
SCETOOL_FLAGS_EBOOT="--sce-type=SELF --compress-data=TRUE --skip-sections=TRUE --key-revision=04 --self-auth-id=1010000001000003 --self-vendor-id=01000002 --self-type=NPDRM --self-fw-version=0003004100000000 --np-license-type=FREE --np-content-id=UP0001-SSNE10000_00-0000000000000001 --np-app-type=EXEC --self-app-version=0001000000000000 --np-real-fname=EBOOT.BIN --encrypt"
2015-09-01 15:31:34 +00:00
2015-09-01 15:14:14 +00:00
# ODE PS3
2015-09-01 15:31:34 +00:00
elif [ $PLATFORM = "ode-ps3" ]; then
2016-08-13 11:56:18 +00:00
#For this script to work correctly, you must place scetool.exe and the "data" folder containing your ps3 keys for scetool to use in the dist-scripts folder.
2015-09-01 15:07:13 +00:00
platform=ps3
2015-09-01 15:31:34 +00:00
SALAMANDER=yes
2015-09-02 10:34:05 +00:00
EXT=a
2015-09-01 15:07:13 +00:00
2016-08-11 04:57:22 +00:00
EXE_PATH=${CELL_SDK}/host-win32/bin
GENPS3ISO_PATH=${PS3TOOLS_PATH}/ODE/genps3iso_v2.5
SCETOOL_PATH=${PS3TOOLS_PATH}/scetool/scetool.exe
2016-08-09 17:41:55 +00:00
SCETOOL_FLAGS_ODE="--sce-type=SELF --compress-data=TRUE --self-type=APP --key-revision=04 --self-fw-version=0003004100000000 --self-app-version=0001000000000000 --self-auth-id=1010000001000003 --self-vendor-id=01000002 --self-cap-flags=00000000000000000000000000000000000000000000003b0000000100040000 --encrypt"
2015-09-01 15:07:13 +00:00
fi
# Cleanup Salamander core if it exists
2015-09-01 15:31:34 +00:00
if [ $SALAMANDER = "yes" ]; then
make -C ../ -f Makefile.${platform}.salamander clean || exit 1
2015-09-01 15:31:34 +00:00
fi
# Cleanup existing core if it exists
2015-09-01 15:07:13 +00:00
if [ $PLATFORM = "ode-ps3" ]; then
make -C ../ -f Makefile.${platform}.cobra clean || exit 1
2015-09-01 15:31:34 +00:00
elif [ $MAKEFILE_GRIFFIN = "yes" ]; then
make -C ../ -f Makefile.griffin platform=${platform} clean || exit 1
elif [ $PLATFORM = "unix" ]; then
LINK=g++ make -C ../ -f Makefile clean || exit 1
2015-09-01 15:07:13 +00:00
else
make -C ../ -f Makefile.${platform} clean || exit 1
fi
2015-09-01 15:31:34 +00:00
# Compile Salamander core
if [ $SALAMANDER = "yes" ]; then
make -C ../ -f Makefile.${platform}.salamander || exit 1
if [ $PLATFORM = "psp1" ] ; then
mv -f ../EBOOT.PBP ../pkg/${platform}/EBOOT.PBP
fi
2015-09-28 01:05:11 +00:00
if [ $PLATFORM = "wii" ] ; then
mv -f ../retroarch-salamander_wii.dol ../pkg/${platform}/boot.dol
fi
2015-09-01 15:31:34 +00:00
fi
2016-08-02 04:28:23 +00:00
COUNTER=0
2016-08-01 22:57:00 +00:00
#for f in *_${platform}.${EXT} ; do
2016-08-02 13:27:09 +00:00
for f in `ls -v *_${platform}.${EXT}`; do
2015-09-02 10:34:05 +00:00
name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).${EXT}$//"`
lto=0
whole_archive=
2015-09-01 16:27:49 +00:00
big_stack=
if [ $name = "nxengine" ] ; then
echo "Applying whole archive linking..."
whole_archive="WHOLE_ARCHIVE_LINK=1"
2015-09-01 15:31:34 +00:00
elif [ $name = "tyrquake" ] ; then
echo "Applying big stack..."
lto=0
big_stack="BIG_STACK=1"
fi
echo "-- Building core: $name --"
if [ $PLATFORM = "unix" ]; then
cp -f "$f" ../libretro.${EXT}
else
cp -f "$f" ../libretro_${platform}.${EXT}
fi
2015-09-01 15:14:14 +00:00
2015-09-01 15:31:34 +00:00
# Do cleanup if this is a big stack core
if [ "$big_stack" = "BIG_STACK=1" ] ; then
2015-09-01 15:31:34 +00:00
if [ $MAKEFILE_GRIFFIN = "yes" ]; then
make -C ../ -f Makefile.griffin platform=${platform} clean || exit 1
elif [ $PLATFORM = "emscripten" ]; then
make -C ../ -f Makefile.emscripten LTO=$lto -j7 clean || exit 1
elif [ $PLATFORM = "unix" ]; then
make -C ../ -f Makefile LINK=g++ LTO=$lto -j7 clean || exit 1
2015-09-01 15:31:34 +00:00
else
make -C ../ -f Makefile.${platform} clean || exit 1
fi
2015-09-01 15:14:14 +00:00
fi
2015-09-01 15:31:34 +00:00
# Compile core
2016-08-09 17:47:29 +00:00
if [ $MAKEFILE_GRIFFIN = "yes" ]; then
2015-09-01 15:31:34 +00:00
make -C ../ -f Makefile.griffin platform=${platform} $whole_archive $big_stack -j3 || exit 1
elif [ $PLATFORM = "emscripten" ]; then
make -C ../ -f Makefile.emscripten LTO=$lto -j7 || exit 1
elif [ $PLATFORM = "unix" ]; then
make -C ../ -f Makefile LINK=g++ $whole_archive $big_stack -j3 || exit 1
elif [ $PLATFORM = "ctr" ]; then
make -C ../ -f Makefile.${platform} LIBRETRO=$name $whole_archive $big_stack -j3 || exit 1
2015-09-01 15:07:13 +00:00
else
make -C ../ -f Makefile.${platform} $whole_archive $big_stack -j3 || exit 1
fi
# Do manual executable step
if [ $PLATFORM = "dex-ps3" ] ; then
2016-07-23 10:05:02 +00:00
$MAKE_FSELF_NPDRM -c ../retroarch_${platform}.elf ../CORE.SELF
2015-09-01 15:31:34 +00:00
elif [ $PLATFORM = "cex-ps3" ] ; then
2016-08-09 15:22:45 +00:00
$SCETOOL_PATH $SCETOOL_FLAGS_CORE ../retroarch_${platform}.elf ../CORE.SELF
2015-09-01 15:31:34 +00:00
elif [ $PLATFORM = "ode-ps3" ] ; then
2016-08-09 18:01:01 +00:00
$SCETOOL_PATH $SCETOOL_FLAGS_ODE ../retroarch_${platform}.elf ../CORE.SELF
2015-09-01 15:07:13 +00:00
fi
2015-09-01 15:31:34 +00:00
# Move executable files
if [ $platform = "ps3" ] ; then
2015-09-01 15:07:13 +00:00
if [ $PLATFORM = "ode-ps3" ] ; then
mv -fv ../CORE.SELF ../pkg/${platform}_iso/PS3_GAME/USRDIR/cores/"${name}_libretro_${platform}.SELF"
2016-08-10 00:05:38 +00:00
if [ -d ../../dist/info ]; then
mkdir -p ../pkg/${platform}_iso/PS3_GAME/USRDIR/cores/info
cp -fv ../../dist/info/"${name}_libretro.info" ../pkg/${platform}_iso/PS3_GAME/USRDIR/cores/info/"${name}_libretro.info"
2016-08-10 00:05:38 +00:00
fi
2015-09-01 16:27:49 +00:00
else
mv -fv ../CORE.SELF ../pkg/${platform}/USRDIR/cores/"${name}_libretro_${platform}.SELF"
2016-08-10 00:05:38 +00:00
if [ -d ../../dist/info ]; then
mkdir -p ../pkg/${platform}/USRDIR/cores/info
cp -fv ../../dist/info/"${name}_libretro.info" ../pkg/${platform}/USRDIR/cores/info/"${name}_libretro.info"
2016-08-10 00:05:38 +00:00
fi
2015-09-01 15:07:13 +00:00
fi
2015-09-01 15:31:34 +00:00
elif [ $PLATFORM = "psp1" ] ; then
mv -f ../EBOOT.PBP ../pkg/${platform}/cores/${name}_libretro.PBP
elif [ $PLATFORM = "vita" ] ; then
2016-08-02 04:28:23 +00:00
COUNTER=$((COUNTER + 1))
2016-08-02 23:45:41 +00:00
COUNTER_ID=`printf "%05d" ${COUNTER}`
2016-08-02 00:21:43 +00:00
mkdir -p ../pkg/${platform}/${name}_libretro.vpk/vpk/sce_sys/
2016-08-11 17:09:22 +00:00
mkdir -p ../pkg/${platform}/${name}_libretro.vpk/vpk/sce_sys/livearea
mkdir -p ../pkg/${platform}/${name}_libretro.vpk/vpk/sce_sys/livearea/contents
2016-08-02 00:21:43 +00:00
vita-make-fself ../retroarch_${platform}.velf ../pkg/${platform}/${name}_libretro.vpk/vpk/eboot.bin
2016-08-02 22:21:55 +00:00
vita-mksfoex -s TITLE_ID=RETR${COUNTER_ID} "RetroArch ${name}" ../pkg/${platform}/${name}_libretro.vpk/vpk/sce_sys/param.sfo
cp ../pkg/${platform}/assets/ICON0.PNG ../pkg/${platform}/${name}_libretro.vpk/vpk/sce_sys/icon0.png
2016-08-11 17:09:22 +00:00
cp ../pkg/${platform}/assets/livearea/contents/bg.png ../pkg/${platform}/${name}_libretro.vpk/vpk/sce_sys/livearea/contents/bg.png
cp ../pkg/${platform}/assets/livearea/contents/startup.png ../pkg/${platform}/${name}_libretro.vpk/vpk/sce_sys/livearea/contents/startup.png
cp ../pkg/${platform}/assets/livearea/contents/website.png ../pkg/${platform}/${name}_libretro.vpk/vpk/sce_sys/livearea/contents/website.png
cp ../pkg/${platform}/assets/livearea/contents/template.xml ../pkg/${platform}/${name}_libretro.vpk/vpk/sce_sys/livearea/contents/template.xml
elif [ $PLATFORM = "ctr" ] ; then
mv -f ../retroarch_3ds.cia ../pkg/3ds/cia/${name}_libretro.cia
mv -f ../retroarch_3ds.3ds ../pkg/3ds/rom/${name}_libretro.3ds
mkdir -p ../pkg/3ds/3ds/${name}_libretro
mv -f ../retroarch_3ds.3dsx ../pkg/3ds/3ds/${name}_libretro/${name}_libretro.3dsx
mv -f ../retroarch_3ds.smdh ../pkg/3ds/3ds/${name}_libretro/${name}_libretro.smdh
mv -f ../retroarch_3ds.xml ../pkg/3ds/3ds/${name}_libretro/${name}_libretro.xml
elif [ $PLATFORM = "unix" ] ; then
mv -f ../retroarch ../pkg/${platform}/${name}_libretro.elf
elif [ $PLATFORM = "ngc" ] ; then
mv -f ../retroarch_${platform}.dol ../pkg/${platform}/${name}_libretro_${platform}.dol
elif [ $PLATFORM = "wii" ] ; then
mv -f ../retroarch_${platform}.dol ../pkg/${platform}/${name}_libretro_${platform}.dol
elif [ $PLATFORM = "emscripten" ] ; then
mv -f ../retroarch.js ../emscripten/$name.js
2015-09-01 15:31:34 +00:00
fi
# Remove executable files
if [ $platform = "ps3" ] ; then
rm -f ../retroarch_${platform}.elf ../retroarch_${platform}.self ../CORE.SELF
2015-09-01 15:31:34 +00:00
elif [ $PLATFORM = "psp1" ] ; then
rm -f ../retroarchpsp.elf
elif [ $PLATFORM = "vita" ] ; then
2016-08-01 22:57:00 +00:00
rm -f ../retroarch_${platform}.velf ../retroarch_${platform}.elf ../eboot.bin
elif [ $PLATFORM = "ctr" ] ; then
rm -f ../retroarch_3ds.elf
rm -f ../retroarch_3ds.bnr
rm -f ../retroarch_3ds.icn
elif [ $PLATFORM = "unix" ] ; then
rm -f ../retroarch
elif [ $PLATFORM = "ngc" ] ; then
rm -f ../retroarch_${platform}.dol ../retroarch_${platform}.elf ../retroarch_${platform}.elf.map
elif [ $PLATFORM = "wii" ] ; then
rm -f ../retroarch_${platform}.dol ../retroarch_${platform}.elf ../retroarch_${platform}.elf.map
elif [ $platform = "emscripten" ] ; then
rm -f ../retroarch.js
fi
2015-09-01 15:14:14 +00:00
2015-09-01 15:31:34 +00:00
# Do cleanup if this is a big stack core
if [ "$big_stack" = "BIG_STACK=1" ] ; then
2015-09-01 15:31:34 +00:00
if [ $MAKEFILE_GRIFFIN = "yes" ]; then
make -C ../ -f Makefile.griffin platform=${platform} clean || exit 1
elif [ $PLATFORM = "emscripten" ]; then
make -C ../ -f Makefile.emscripten LTO=$lto -j7 clean || exit 1
elif [ $PLATFORM = "unix" ]; then
make -C ../ -f Makefile LTO=$lto -j7 clean || exit 1
2015-09-01 15:31:34 +00:00
else
make -C ../ -f Makefile.${platform} clean || exit 1
fi
2015-09-01 15:14:14 +00:00
fi
done
2015-09-01 15:31:34 +00:00
# Additional build step
if [ $platform = "ps3" ] ; then
if [ $PLATFORM = "ode-ps3" ] ; then
echo Deploy : Assets...
2016-08-10 00:05:38 +00:00
if [ -d ../media/assets ]; then
mkdir -p ../pkg/${platform}_iso/PS3_GAME/USRDIR/cores/assets
cp -r ../media/assets/* ../pkg/${platform}_iso/PS3_GAME/USRDIR/cores/assets
fi
2016-08-10 00:17:55 +00:00
echo Deploy : Databases...
2016-08-10 00:05:38 +00:00
if [ -d ../media/libretrodb/rdb ]; then
mkdir -p ../pkg/${platform}_iso/PS3_GAME/USRDIR/cores/database/rdb
cp -r ../media/libretrodb/rdb/* ../pkg/${platform}_iso/PS3_GAME/USRDIR/cores/database/rdb
2016-08-10 05:40:21 +00:00
fi
if [ -d ../media/libretrodb/cursors ]; then
mkdir -p ../pkg/${platform}_iso/PS3_GAME/USRDIR/cores/database/cursors
cp -r ../media/libretrodb/cursors/* ../pkg/${platform}_iso/PS3_GAME/USRDIR/cores/database/cursors
2016-08-10 00:05:38 +00:00
fi
2016-08-10 00:17:55 +00:00
echo Deploy : Overlays...
2016-08-10 00:05:38 +00:00
if [ -d ../media/overlays ]; then
mkdir -p ../pkg/${platform}_iso/PS3_GAME/USRDIR/cores/overlays
cp -r ../media/overlays/* ../pkg/${platform}_iso/PS3_GAME/USRDIR/cores/overlays
fi
2016-08-10 00:17:55 +00:00
echo Deploy : Shaders...
2016-08-10 00:05:38 +00:00
if [ -d ../media/shaders_cg ]; then
mkdir -p ../pkg/${platform}_iso/PS3_GAME/USRDIR/cores/shaders_cg
cp -r ../media/shaders_cg/* ../pkg/${platform}_iso/PS3_GAME/USRDIR/cores/shaders_cg
fi
else
echo Deploy : Assets...
2016-08-10 00:05:38 +00:00
if [ -d ../media/assets ]; then
mkdir -p ../pkg/${platform}/USRDIR/cores/assets
cp -r ../media/assets/* ../pkg/${platform}/USRDIR/cores/assets
fi
echo Deploy : Databases...
2016-08-10 00:05:38 +00:00
if [ -d ../media/libretrodb/rdb ]; then
mkdir -p ../pkg/${platform}/USRDIR/cores/database/rdb
cp -r ../media/libretrodb/rdb/* ../pkg/${platform}/USRDIR/cores/database/rdb
2016-08-10 05:40:21 +00:00
fi
if [ -d ../media/libretrodb/cursors ]; then
mkdir -p ../pkg/${platform}/USRDIR/cores/database/cursors
cp -r ../media/libretrodb/cursors/* ../pkg/${platform}/USRDIR/cores/database/cursors
2016-08-10 00:05:38 +00:00
fi
echo Deploy : Overlays...
2016-08-10 00:05:38 +00:00
if [ -d ../media/overlays ]; then
mkdir -p ../pkg/${platform}/USRDIR/cores/overlays
cp -r ../media/overlays/* ../pkg/${platform}/USRDIR/cores/overlays
fi
echo Deploy : Shaders...
2016-08-10 00:05:38 +00:00
if [ -d ../media/shaders_cg ]; then
mkdir -p ../pkg/${platform}/USRDIR/cores/shaders_cg
cp -r ../media/shaders_cg/* ../pkg/${platform}/USRDIR/cores/shaders_cg
fi
2016-08-10 00:17:55 +00:00
fi
fi
2015-09-01 15:31:34 +00:00
# Packaging
if [ $PLATFORM = "dex-ps3" ] ; then
2016-07-23 10:05:02 +00:00
$MAKE_FSELF_NPDRM -c ../retroarch-salamander_${platform}.elf ../pkg/${platform}/USRDIR/EBOOT.BIN
rm -rf ../retroarch-salamander_${platform}.elf
2016-08-09 17:09:11 +00:00
$MAKE_PACKAGE_NPDRM ../pkg/${platform}_dex/package.conf ../pkg/${platform}
2016-08-11 19:13:55 +00:00
mv UP0001-SSNE10000_00-0000000000000001.pkg ../pkg/${platform}/RetroArch.PS3.DEX.PS3.pkg
2015-09-01 15:31:34 +00:00
elif [ $PLATFORM = "cex-ps3" ] ; then
2016-08-09 15:22:45 +00:00
$SCETOOL_PATH $SCETOOL_FLAGS_EBOOT ../retroarch-salamander_${platform}.elf ../pkg/${platform}/USRDIR/EBOOT.BIN
rm -rf ../retroarch-salamander_${platform}.elf
2016-08-13 11:52:35 +00:00
../tools/ps3/ps3py/pkg.py --contentid UP0001-SSNE10000_00-0000000000000001 ../pkg/${platform}/SSNE10000/ ../pkg/${platform}/RetroArch.PS3.CEX.PS3.pkg
2015-09-01 15:31:34 +00:00
elif [ $PLATFORM = "ode-ps3" ] ; then
2016-08-09 18:01:01 +00:00
$SCETOOL_PATH $SCETOOL_FLAGS_ODE ../retroarch-salamander_${platform}.elf ../pkg/${platform}_iso/PS3_GAME/USRDIR/EBOOT.BIN
2015-09-01 15:07:13 +00:00
rm -rf ../retroarch-salamander_${platform}.elf
2016-08-11 19:13:55 +00:00
$GENPS3ISO_PATH ../pkg/${platform}_iso ../pkg/${platform}/RetroArch.PS3.ODE.PS3.iso
2015-09-01 15:07:13 +00:00
fi