Some checks failed
Build Horizon OC Zeus / build (push) Failing after 3s
Clean stale absolute dependency paths when the tree moved, and fail the script instead of copying an old binary.
69 lines
2.1 KiB
Bash
Executable File
69 lines
2.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
DIST_DIR="$ROOT_DIR/dist"
|
|
|
|
ATMOSPHERE_DIR="$ROOT_DIR/build/atmosphere"
|
|
ATMOSPHERE_URL="https://github.com/NaGaa95/Atmosphere-Pro.git"
|
|
ATMOSPHERE_BRANCH="boot-storage"
|
|
|
|
EXO_SRC="$ROOT_DIR/Source/Atmosphere-Patches"
|
|
EXO_DEST="$ATMOSPHERE_DIR/exosphere/program/source/smc"
|
|
LIBEXO_DEST="$ATMOSPHERE_DIR/libraries/libexosphere/include/exosphere/secmon"
|
|
EXO_OUT="$ATMOSPHERE_DIR/exosphere/out/nintendo_nx_arm64_armv8a/release/exosphere.bin"
|
|
|
|
if command -v nproc >/dev/null 2>&1; then
|
|
CORES="$(nproc --all)"
|
|
else
|
|
CORES="$(sysctl -n hw.ncpu)"
|
|
fi
|
|
|
|
echo "CORES: $CORES"
|
|
|
|
mkdir -p "$ROOT_DIR/build"
|
|
|
|
if [ ! -d "$ATMOSPHERE_DIR" ]; then
|
|
echo
|
|
echo "*** Cloning Atmosphere-Pro ***"
|
|
git clone --depth=1 --single-branch -b "$ATMOSPHERE_BRANCH" "$ATMOSPHERE_URL" "$ATMOSPHERE_DIR"
|
|
fi
|
|
|
|
echo
|
|
echo "*** Patching exosphere ***"
|
|
cp -v "$EXO_SRC/secmon_emc_access_table_data.inc" "$EXO_DEST/"
|
|
cp -v "$EXO_SRC/secmon_define_emc_access_table.inc" "$EXO_DEST/"
|
|
cp -v "$EXO_SRC/secmon_rtc_pmc_access_table_data.inc" "$EXO_DEST/"
|
|
cp -v "$EXO_SRC/secmon_define_rtc_pmc_access_table.inc" "$EXO_DEST/"
|
|
cp -v "$EXO_SRC/secmon_smc_register_access.cpp" "$EXO_DEST/"
|
|
cp -v "$EXO_SRC/secmon_smc_handler.cpp" "$EXO_DEST/"
|
|
cp -v "$EXO_SRC/secmon_memory_layout.hpp" "$LIBEXO_DEST/"
|
|
|
|
echo
|
|
echo "*** Compiling exosphere ***"
|
|
cd "$ATMOSPHERE_DIR/exosphere" || exit 1
|
|
|
|
# .d files store absolute source paths. If this checkout moved (e.g. renamed
|
|
# Horizon-OC -> Horizon-OC-pro), those deps point at a dead tree and make fails.
|
|
if grep -Rql --include='*.d' '/Desktop/Horizon-OC/' "$ATMOSPHERE_DIR" 2>/dev/null; then
|
|
echo "*** Cleaning stale build deps (old Horizon-OC absolute paths) ***"
|
|
make clean || true
|
|
fi
|
|
|
|
make -j"$CORES" || {
|
|
echo "*** Build failed ***" >&2
|
|
exit 1
|
|
}
|
|
cd "$ROOT_DIR" || exit 1
|
|
|
|
if [ ! -f "$EXO_OUT" ]; then
|
|
echo "*** Missing output: $EXO_OUT ***" >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$DIST_DIR/atmosphere"
|
|
cp -v "$EXO_OUT" "$DIST_DIR/atmosphere/exosphere.bin"
|
|
|
|
echo
|
|
echo "*** Done: $EXO_OUT ***"
|
|
echo "*** Copied to: $DIST_DIR/atmosphere/exosphere.bin ***"
|