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
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
|
|
|