#!/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