You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

113 lines
3.1 KiB

#!/usr/bin/env bash
set -euo pipefail
declare -r PACKAGING_DIR=`cd -- "$(dirname "$0")" >/dev/null 2>&1; pwd -P`
declare -r CFLAGS="-O3 -marm -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -march=armv7ve -Wall"
declare -r LDFLAGS="-lSDL -lmi_sys -lmi_gfx -s -lSDL -lSDL_image"
declare -r BUILD_DIR="build-miyoo-mini"
declare -r MIYOO_CUSTOM_SDL_REPO="https://github.com/Brocky/SDL-1.2-miyoo-mini.git"
declare -r MIYOO_CUSTOM_SDL_BRANCH="miniui-miyoomini"
main() {
# ensure we are in devilutionx root
cd "$PACKAGING_DIR/../.."
rm -f "$BUILD_DIR/CMakeCache.txt"
cmake_configure -DCMAKE_BUILD_TYPE=Release
cmake_build
package_onion
package_miniui
}
cmake_configure() {
cmake -S. -B"$BUILD_DIR" \
-DTARGET_PLATFORM=miyoo_mini \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE="${PACKAGING_DIR}/toolchainfile.cmake" \
-DBUILD_TESTING=OFF \
"$@"
}
cmake_build() {
cmake --build "$BUILD_DIR" -j $(getconf _NPROCESSORS_ONLN)
}
build_custom_sdl() {
# make clean folder for custom SDL build
rm -rf $BUILD_DIR/CustomSDL
mkdir $BUILD_DIR/CustomSDL
# clone the repo and build the lib
cd $BUILD_DIR/CustomSDL
git clone $MIYOO_CUSTOM_SDL_REPO --branch $MIYOO_CUSTOM_SDL_BRANCH --single-branch .
PATH="/opt/miyoomini-toolchain/usr/bin:${PATH}:/opt/miyoomini-toolchain/usr/arm-linux-gnueabihf/sysroot/bin" \
CROSS_COMPILE=/opt/miyoomini-toolchain/usr/bin/arm-linux-gnueabihf- \
PREFIX=/opt/miyoomini-toolchain/usr/arm-linux-gnueabihf/sysroot/usr \
UNION_PLATFORM=miyoomini \
./make.sh
# change back to devilutionx root
cd "$PACKAGING_DIR/../.."
cp -rfL "$BUILD_DIR/CustomSDL/build/.libs/libSDL-1.2.so.0" "$BUILD_DIR/OnionOS/Roms/PORTS/Binaries/Diablo.port/lib/libSDL-1.2.so.0"
}
prepare_onion_skeleton() {
mkdir -p $BUILD_DIR/OnionOS
# Copy basic skeleton
cp -rf Packaging/miyoo_mini/skeleton_OnionOS/* $BUILD_DIR/OnionOS
# ensure devilutionx asset dir
mkdir -p $BUILD_DIR/OnionOS/Roms/PORTS/Binaries/Diablo.port/assets
# ensure lib dir for custom SDL
mkdir -p $BUILD_DIR/OnionOS/Roms/PORTS/Binaries/Diablo.port/lib
# ensure config dir
mkdir -p $BUILD_DIR/OnionOS/Saves/CurrentProfile/config/DevilutionX
# ensure save dir
mkdir -p $BUILD_DIR/OnionOS/Saves/CurrentProfile/saves/DevilutionX
}
package_onion() {
prepare_onion_skeleton
build_custom_sdl
# copy assets
cp -rf $BUILD_DIR/assets/* $BUILD_DIR/OnionOS/Roms/PORTS/Binaries/Diablo.port/assets
# copy executable
cp -f $BUILD_DIR/devilutionx $BUILD_DIR/OnionOS/Roms/PORTS/Binaries/Diablo.port/devilutionx
rm -f $BUILD_DIR/onion.zip
cd $BUILD_DIR/OnionOS
zip -r ../devilutionx-miyoo-mini-onion-os.zip .
cd "$PACKAGING_DIR/../.."
}
prepare_miniui_skeleton() {
mkdir -p $BUILD_DIR/MiniUI
# copy basic skeleton
cp -rf Packaging/miyoo_mini/skeleton_MiniUI/* $BUILD_DIR/MiniUI
# ensure devilutionx asset dir
mkdir -p $BUILD_DIR/MiniUI/Diablo/assets
}
package_miniui() {
prepare_miniui_skeleton
# copy assets
cp -rf $BUILD_DIR/assets/* $BUILD_DIR/MiniUI/Diablo/assets
# copy executable
cp -f $BUILD_DIR/devilutionx $BUILD_DIR/MiniUI/Diablo/devilutionx
rm -f $BUILD_DIR/miniui.zip
cd $BUILD_DIR/MiniUI
zip -r ../devilutionx-miyoo-mini-miniui.zip .
cd "$PACKAGING_DIR/../.."
}
main