mirror of
https://github.com/raz0red/wii7800.git
synced 2024-05-15 19:34:43 -04:00
28816bd98d
Avoids any issues from building via mount
101 lines
3.1 KiB
Bash
Executable file
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.'; }
|