#!/bin/bash . ../version.all platform=wiiu EXT=a scriptDir= pngDir= infoDir= original_pwd=$(pwd) setScriptDir() { scriptDir=$(dirname $(readlink -f $1)) } setInfoDir() { if [ -d ../../dist/info ]; then infoDir=$(readlink -f ../../dist/info) elif [ $(ls -1 *.info |wc -l) > 0 ]; then infoDir=$(pwd) fi if [ -z "$infoDir" ]; then echo "WARNING: Could not find your *.info files. meta.xml files will not be generated." fi } setPngDir() { pwd if [ -d ../media/assets/pkg/wiiu ]; then pngDir=$(readlink -f ../media/assets/pkg/wiiu) elif [ $(ls -1 *.png |wc -l) > 0 ]; then pngDir=$(pwd) fi if [ -z "$pngDir" ]; then echo "WARNING: Could not find your *.png files. icon.png files will not be generated." fi } getCores() { if [ -d ../../dist/wiiu ]; then ls -1 ../../dist/wiiu/*.a elif [ $(ls -1 *.a |wc -l) > 0 ]; then ls -1 *.a fi } clean() { local here=$(pwd) cd $scriptDir/.. make -f Makefile.wiiu clean || exit 1 for trash in libretro_wiiu.a libretro_wiiu.elf libretro_wiiu.rpx \ objs/wiiu pkg/wiiu/wiiu pkg/wiiu/retroarch pkg/wiiu/rpx do rm -rf $trash done cd $here } # $1 = core filename (e.g. ../../dist/wiiu/somecore_libretro_wiiu.a # $2 = desired package type, e.g. rpx or elf coreNameToPackageName() { local packageName=$(basename $1 |awk -F'\.a' '{print $1}' |sed 's/_wiiu//') echo "$packageName" } lookup() { cat | grep "$1 = " | sed "s/$1 = \"//" | sed s/\"// } generateMetaXml() { local infoFile=$1 local xmlDir=$2 local outFile=$xmlDir/meta.xml if [ ! -e $infoFile ]; then return 1 fi local display_name=$(cat $infoFile |lookup "display_name") local corename=$(cat $infoFile |lookup "corename") local authors=$(cat $infoFile |lookup "authors" |sed s/\|/\ -\ /g) local systemname=$(cat $infoFile |lookup "systemname") local license=$(cat $infoFile |lookup "license") local build_date=$(date +%Y%m%d%H%M%S) local build_hash=$(git rev-parse --short HEAD 2>/dev/null) mkdir -p $xmlDir echo '' > $outFile echo '' >> $outFile echo ' '$corename'' >> $outFile echo ' '$authors'' >> $outFile echo ' '$RARCH_VERSION' r'$build_hash'' >> $outFile echo ' '$build_date'' >> $outFile echo ' RetroArch' >> $outFile echo -e ' '$display_name'\n\nSystem: '$systemname'\nLicense: '$license'' >> $outFile echo ' emu' >> $outFile echo ' https://github.com/libretro' >> $outFile echo '' >> $outFile } copyPng() { local pngFilename=$(echo $1 |sed 's/_libretro//').png local destFilename=$2/icon.png if [ -e $pngDir/$pngFilename ]; then cp $pngDir/$pngFilename $destFilename fi } buildCore() { local core=$1 local distDir=$(pwd) local buildDir=$(dirname $(pwd)) local packageName=$(coreNameToPackageName $core) local rpxResult=$packageName.rpx local elfResult=$packageName.elf cd $buildDir if [ -f Makefile.wiiu ]; then echo "--- building core: $packageName ---" rm -f libretro_wiiu.a cp $distDir/$core libretro_wiiu.a make -f Makefile.wiiu \ PC_DEVELOPMENT_TCP_PORT=$PC_DEVELOPMENT_TCP_PORT \ -j3 || exit 1 if [ ! -z "$infoDir" ]; then for i in 'pkg/wiiu/retroarch/cores' 'pkg/wiiu/rpx/retroarch/cores'; do mkdir -p $i/info cp $infoDir/$packageName.info $i/info generateMetaXml $i/info/$packageName.info $i/../../wiiu/apps/$packageName done fi if [ ! -z "$pngDir" ]; then for i in 'pkg/wiiu/wiiu/apps' 'pkg/wiiu/rpx/wiiu/apps'; do copyPng $packageName $i/$packageName done fi for i in "pkg/wiiu/wiiu/apps/$packageName" 'pkg/wiiu/retroarch/cores'; do mkdir -p $i cp retroarch_wiiu.elf $i/$elfResult done for i in "pkg/wiiu/rpx/wiiu/apps/$packageName" 'pkg/wiiu/rpx/retroarch/cores'; do mkdir -p $i cp retroarch_wiiu.rpx $i/$rpxResult done else echo "ERROR: Something went wrong. Makefile.wiiu not found." exit 1 fi cd $distDir } setScriptDir $0 clean cd $scriptDir if [ -e ../wiiu-devel.properties ]; then . ../wiiu-devel.properties fi setInfoDir setPngDir cores=$(getCores) if [ -z "$cores" ]; then echo "ERROR: No cores found. Nothing to do." exit 1 fi for core in $cores; do buildCore $core done