RetroArch/dist-scripts/wiiu-new-cores.sh
gblues 23f0a85446 Implement UDP broadcast network logging on Wii U
== DETAILS

The broadcast address is a standard part of TCP/IP that is used to
send messages to everyone on the subnet. This patch updates the
logging code to do the following:

1. Derive the broadcast address from the Wii U's own IP address
   and subnet mask. These can all be obtained at runtime, which
   means we can...
2. Remove the PC_DEVELOPMENT_IP_ADDRESS define from Wii U's
   Makefile, because compiling in an IP is no longer needed.
3. Rewrite the net_listen script to listen for broadcast packets
   and print them out with timestamps.

Since it's using the broadcast address, the only requirement is
that the PC be on the same network subnet as the Wii U.

Because of the low overhead of UDP, I've made logging on by
default. This will make it a ton easier to get useful bug
reports from users.
2018-05-06 14:39:48 -07:00

196 lines
4.4 KiB
Bash
Executable File

#!/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 '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' > $outFile
echo '<app version="1">' >> $outFile
echo ' <name>'$corename'</name>' >> $outFile
echo ' <coder>'$authors'</coder>' >> $outFile
echo ' <version>'$RARCH_VERSION' r'$build_hash'</version>' >> $outFile
echo ' <release_date>'$build_date'</release_date>' >> $outFile
echo ' <short_description>RetroArch</short_description>' >> $outFile
echo -e ' <long_description>'$display_name'\n\nSystem: '$systemname'\nLicense: '$license'</long_description>' >> $outFile
echo ' <category>emu</category>' >> $outFile
echo ' <url>https://github.com/libretro</url>' >> $outFile
echo '</app>' >> $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