1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
|
#!/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_IP_ADDRESS=$PC_DEVELOPMENT_IP_ADDRESS \
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
|