Files
RMHook/scripts/build.sh

97 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
# Script to compile the reMarkable dylib with different build modes
# Build modes:
# rmfakecloud - Redirect reMarkable cloud to rmfakecloud server (default)
# qmldiff - Qt resource data registration hooking (WIP)
# dev - Development/reverse engineering mode with all hooks
PROJECT_DIR=$(cd "$(dirname "$0")/.." && pwd)
# Qt path detection
QT_PATH=${QT_PATH:-$(ls -d "$HOME/Qt/6."* 2>/dev/null | sort -V | tail -n1)}
# Parse build mode argument
BUILD_MODE=${1:-rmfakecloud}
# Determine final dylib name for the selected build mode
case "$BUILD_MODE" in
rmfakecloud)
DYLIB_NAME="rmfakecloud.dylib"
;;
qmldiff)
DYLIB_NAME="qmldiff.dylib"
;;
dev)
DYLIB_NAME="dev.dylib"
;;
all)
DYLIB_NAME="all.dylib"
;;
*)
DYLIB_NAME="reMarkable.dylib"
;;
esac
# Set CMake options based on build mode
CMAKE_OPTIONS=""
case "$BUILD_MODE" in
rmfakecloud)
CMAKE_OPTIONS="-DBUILD_MODE_RMFAKECLOUD=ON -DBUILD_MODE_QMLDIFF=OFF -DBUILD_MODE_DEV=OFF"
;;
qmldiff)
CMAKE_OPTIONS="-DBUILD_MODE_RMFAKECLOUD=OFF -DBUILD_MODE_QMLDIFF=ON -DBUILD_MODE_DEV=OFF"
;;
dev)
CMAKE_OPTIONS="-DBUILD_MODE_RMFAKECLOUD=OFF -DBUILD_MODE_QMLDIFF=OFF -DBUILD_MODE_DEV=ON"
;;
all)
CMAKE_OPTIONS="-DBUILD_MODE_RMFAKECLOUD=ON -DBUILD_MODE_QMLDIFF=ON -DBUILD_MODE_DEV=ON"
;;
*)
echo "❌ Unknown build mode: $BUILD_MODE"
echo "Available modes: rmfakecloud (default), qmldiff, dev, all"
exit 1
;;
esac
echo "🔨 Compiling reMarkable.dylib (mode: $BUILD_MODE)..."
echo "📦 Qt path: $QT_PATH"
# Create build directories if necessary
mkdir -p "$PROJECT_DIR/build"
cd "$PROJECT_DIR/build"
# Configure with CMake and compile
if [ -d "$QT_PATH" ]; then
cmake -DCMAKE_PREFIX_PATH="$QT_PATH" $CMAKE_OPTIONS ..
else
echo "⚠️ Qt not found at $QT_PATH, trying without specifying path..."
cmake $CMAKE_OPTIONS ..
fi
make reMarkable
if [ $? -eq 0 ]; then
# Rename the produced dylib so each build mode has a distinct file name
DYLIB_DIR="$PROJECT_DIR/build/dylibs"
DEFAULT_DYLIB="$DYLIB_DIR/reMarkable.dylib"
TARGET_DYLIB="$DYLIB_DIR/$DYLIB_NAME"
if [ -f "$DEFAULT_DYLIB" ]; then
mv "$DEFAULT_DYLIB" "$TARGET_DYLIB"
else
echo "⚠️ Expected dylib not found at $DEFAULT_DYLIB"
fi
echo ""
echo "✅ Compilation successful!"
echo "📍 Dylib: $TARGET_DYLIB"
echo ""
echo "🚀 To inject into the reMarkable application:"
echo " DYLD_INSERT_LIBRARIES=\"$TARGET_DYLIB\" /Applications/reMarkable.app/Contents/MacOS/reMarkable"
echo ""
else
echo "❌ Compilation failed"
exit 1
fi