wii7800/dist.sh
raz0red 28816bd98d Updated dist to build in specified directory
Avoids any issues from building via mount
2020-01-04 14:30:33 -08:00

101 lines
3.1 KiB
Bash
Executable file

#!/bin/bash
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
DATE="$( date '+%Y%m%d%H%S' )"
DIST_DIR=$SCRIPTPATH/dist
LAYOUT_DIR=$SCRIPTPATH/res/layout/
BOOT_DOL_SRC=$SCRIPTPATH/boot.dol
BOOT_DOL_DEST=$DIST_DIR/apps/wii7800
BOOT_ELF_SRC=$SCRIPTPATH/boot.elf
BOOT_ELF_DEST=$DIST_DIR
META_FILE=$DIST_DIR/apps/wii7800/meta.xml
EMUCOMMON_DIR=$SCRIPTPATH/wii-emucommon
#
# Function that is invoked when the script fails.
#
# $1 - The message to display prior to exiting.
#
function fail() {
echo $1
echo "Exiting."
exit 1
}
#
# Build in directory specified (if applicable)
#
if [ ! -z $1 ]; then
BUILD_DIR=$1
echo "Building in: $BUILD_DIR..."
rm -rf $BUILD_DIR \
|| { fail 'Unable to delete build directory.'; }
cp -R $SCRIPTPATH $BUILD_DIR \
|| { fail 'Unable to copy files to build directory.'; }
find $BUILD_DIR -type f \
\( -name "*.o" -or -name "*.a" -or -name "*.dol" -or -name "*.elf" \) \
-exec rm {} + \
|| { fail 'Unable to delete previous build output files.'; }
$BUILD_DIR/dist.sh \
|| { fail 'Error running dist script.'; }
rm -rf $DIST_DIR \
|| { fail 'Unable to remove dist directory.'; }
cp -R $BUILD_DIR/dist $DIST_DIR \
|| { fail 'Unable to copy files to final dist directory.'; }
exit 0
fi
# Build wii-emucommon
echo "Building wii-emucommon..."
$EMUCOMMON_DIR/dist.sh || { fail 'Error building wii-emucommon.'; }
# Change to script directory
echo "Changing to script directory..."
cd $SCRIPTPATH || { fail 'Error changing to script directory.'; }
# Build Wii7800
echo "Building Wii7800..."
make || { fail 'Error building Wii7800.'; }
# Clear dist directory
if [ -d $DIST_DIR ]; then
echo "Clearing dist directory..."
rm -rf $DIST_DIR || { fail 'Error clearing dist directory.'; }
fi
# Copy layout
echo "Copy layout..."
cp -R $LAYOUT_DIR $DIST_DIR || { fail 'Error copying layout.'; }
# Remove .gitignore
echo "Cleaning layout..."
find $DIST_DIR -name .gitignore -type f -delete \
|| { fail 'Error cleaning layout.'; }
# Copy boot files
echo "Copying boot files..."
cp $BOOT_DOL_SRC $BOOT_DOL_DEST || { fail 'Error copying boot.dol.'; }
# Update date in meta file
echo "Setting date in meta file..."
sed -i "s,000000000000,$DATE,g" $META_FILE \
|| { fail 'Error setting date in meta file.'; }
# Update version in meta-file (if SNAPSHOT)
echo "Updating version in meta file..."
sed -i "s,-SNAPSHOT,-SNAPSHOT-$DATE,g" $META_FILE \
|| { fail 'Error setting version in meta file.'; }
# Create the distribution (zip)
echo "Creating distribution..."
VERSION=$( sed -ne "s/.*version>\(.*\)<\/version.*/\1/p" $META_FILE )
VERSION_NO_DOTS="${VERSION//./_}"
DIST_FILE=wii7800-$VERSION_NO_DOTS.zip
cd $DIST_DIR || { fail 'Error changing to distribution directory.'; }
zip -r $DIST_FILE . || { fail 'Error creating zip file.'; }
rm -rf $DIST_DIR/wii7800 \
|| { fail 'Error deleting wii7800 directory in dist.'; }
rm -rf $DIST_DIR/apps \
|| { fail 'Error deleting apps directory in dist.'; }
cp $BOOT_ELF_SRC $BOOT_ELF_DEST || { fail 'Error copying boot.elf.'; }