mirror of
https://github.com/lucannez64/darling-lol.git
synced 2026-10-26 19:47:42 +00:00
Preserve floating-point arguments in GL resolvers, retain presentation across differently sized windows, export AppKit click and URL fixes, and guard nullable LaunchServices errors. Include compiler/build and installer corrections for the new PC. Reuse server receive buffers with descriptor-safe exception cleanup and avoid disabled debug-string allocation. Translate Darwin free/reuse memory hints, add atomic server/library installers with separate user-owned memory backups, and preserve active processes until a manual namespace restart. Remove automatic inspectors, client helpers and forced unlimited UI frames from normal launches. Retain historical hooks with offline mocks and document their exclusion, unresolved installer handoff, activation requirements and unmeasured FPS/RAM benefits. Validation: all 29 pinned patches apply; all 461 exported source files match; host receive and memory checks, launcher and JavaScript mocks, syntax and documentation-link checks pass. No live client/game was controlled or restarted.
177 lines
10 KiB
Bash
Executable File
177 lines
10 KiB
Bash
Executable File
#!/bin/sh
|
|
# Build/install the paired GPU, NV12 and display-clock runtime overrides.
|
|
set -eu
|
|
project_dir=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
|
|
guest_home=${RIOT_GUEST_HOME:-$HOME/.darling@GUEST_HOME@}
|
|
cd "$project_dir"
|
|
python3 tools/build-m58f333-iosurface.py
|
|
# Rebuild the native wrapper with floating-point-safe symbol resolvers.
|
|
make -C build/darling-src/build/src/native GL -j4
|
|
make -C build/darling-src/build/src/frameworks/CoreServices/src/LaunchServices LaunchServices -j4
|
|
python3 tools/build-m58f327-opengl.py
|
|
python3 tools/build-m58f336-quartzcore.py
|
|
python3 tools/build-m58f341-corevideo.py
|
|
python3 tools/build-riot-x11-runtime.py
|
|
python3 tools/build-riot-appkit-runtime.py
|
|
python3 tools/build-riot-coregraphics-runtime.py
|
|
python3 tools/build-riot-corefoundation-runtime.py
|
|
python3 tools/build-riot-kqueue-runtime.py
|
|
python3 tools/build-riot-malloc-runtime.py
|
|
python3 tools/build-riot-pthread-runtime.py
|
|
python3 tools/build-riot-audio-runtime.py
|
|
python3 tools/build-riot-objc-runtime.py
|
|
python3 tools/build-riot-cxxabi-runtime.py
|
|
python3 tools/build-riot-indium-runtime.py
|
|
python3 tools/build-riot-metal-runtime.py
|
|
python3 tools/build-riot-native-vpx-runtime.py
|
|
python3 tools/build-riot-server-runtime.py
|
|
build/riot-host-message-check
|
|
cc -shared -fPIC -O2 -Wall -Wextra -Wl,-soname,"$project_dir/build/libdarling-xshm.so" tools/m58f299-xshm.c -o build/libdarling-xshm.so.next -pthread $(pkg-config --cflags --libs x11 x11-xcb xcb-shm xext)
|
|
python3 tools/stop-darling-runtime.py
|
|
# Host fileports own SCM_RIGHTS descriptors and must die with their last sender.
|
|
sudo make -C "$project_dir/build/darling-src/build/src/external/darlingserver" install -j12
|
|
if [ -f "$HOME/.darling/Applications/Riot Client.app/Contents/Frameworks/Riot Client.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework" ]; then
|
|
python3 tools/patch-riot-electron-visibility.py
|
|
else
|
|
echo 'Riot is not installed yet; apply the guarded Electron visibility fix after installation.'
|
|
fi
|
|
install -m755 build/libRiotNativeVpx.dylib.next "$guest_home/libRiotNativeVpx.dylib.next"
|
|
mv "$guest_home/libRiotNativeVpx.dylib.next" "$guest_home/libRiotNativeVpx.dylib"
|
|
mv build/libriot-native-vpx.so.next build/libriot-native-vpx.so
|
|
for name in IOSurface OpenGL QuartzCore CoreVideo CoreAudio AudioToolbox CoreGraphics CoreFoundation Metal; do
|
|
framework="$guest_home/RuntimeFrameworks/$name.framework"
|
|
if [ ! -d "$framework" ]; then cp -a "@DARLING_SDK@/System/Library/Frameworks/$name.framework" "$framework"; fi
|
|
binary="$framework/Versions/A/$name"
|
|
if [ ! -f "$binary.before-gpu-direct" ]; then cp -p "$binary" "$binary.before-gpu-direct"; fi
|
|
case "$name" in
|
|
IOSurface) source=build/m333-IOSurface;;
|
|
OpenGL) source=build/m327-OpenGL;;
|
|
QuartzCore)
|
|
if [ -f build/riot-QuartzCore ]; then source=build/riot-QuartzCore;
|
|
else source=build/m336-QuartzCore; fi;;
|
|
CoreVideo) source=build/m341-CoreVideo;;
|
|
CoreAudio) source=build/riot-CoreAudio;;
|
|
AudioToolbox) source=build/riot-AudioToolbox;;
|
|
CoreGraphics) source=build/riot-CoreGraphics;;
|
|
CoreFoundation) source=build/riot-CoreFoundation;;
|
|
Metal) source=build/riot-Metal;;
|
|
esac
|
|
install -m755 "$source" "$binary.next"
|
|
mv "$binary.next" "$binary"
|
|
# Dyld resolves Versions/A. Preserve the standard outer symlink as well.
|
|
if [ ! -L "$framework/$name" ]; then rm -f "$framework/$name"; ln -s "Versions/Current/$name" "$framework/$name"; fi
|
|
done
|
|
# Re-exported GL symbols use the native library's absolute install name.
|
|
# DYLD_LIBRARY_PATH must see this rebuilt wrapper as well as the framework copy.
|
|
mkdir -p "$guest_home/RuntimeLibraries"
|
|
gl_wrapper="$guest_home/RuntimeLibraries/libGL.dylib"
|
|
if [ ! -f "$gl_wrapper.before-float-resolver" ]; then
|
|
if [ -f "$gl_wrapper" ]; then cp -p "$gl_wrapper" "$gl_wrapper.before-float-resolver"
|
|
else cp -p @DARLING_SDK@/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib "$gl_wrapper.before-float-resolver"; fi
|
|
fi
|
|
install -m755 build/darling-src/build/src/native/libGL.dylib "$gl_wrapper.next"
|
|
mv "$gl_wrapper.next" "$gl_wrapper"
|
|
install -m755 build/darling-src/build/src/native/libGL.dylib "$guest_home/RuntimeFrameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib.next"
|
|
mv "$guest_home/RuntimeFrameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib.next" "$guest_home/RuntimeFrameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib"
|
|
launchservices="$guest_home/RuntimeFrameworks/LaunchServices.framework"
|
|
if [ ! -d "$launchservices" ]; then
|
|
cp -a @DARLING_SDK@/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework "$launchservices"
|
|
fi
|
|
launchservices_binary="$launchservices/Versions/A/LaunchServices"
|
|
if [ ! -f "$launchservices_binary.before-null-error" ]; then cp -p "$launchservices_binary" "$launchservices_binary.before-null-error"; fi
|
|
install -m755 build/darling-src/build/src/frameworks/CoreServices/src/LaunchServices/LaunchServices "$launchservices_binary.next"
|
|
mv "$launchservices_binary.next" "$launchservices_binary"
|
|
# Electron opens this subframework by its absolute path, bypassing the
|
|
# framework search override. Replace the same binary in the stopped prefix.
|
|
prefix_dir="${DPREFIX:-$HOME/.darling}"
|
|
launchservices_prefix="$prefix_dir/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices"
|
|
mkdir -p "$(dirname "$launchservices_prefix")"
|
|
if [ ! -f "$launchservices_prefix.before-null-error" ]; then
|
|
if [ -f "$launchservices_prefix" ]; then cp -p "$launchservices_prefix" "$launchservices_prefix.before-null-error"
|
|
else cp -p @DARLING_SDK@/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices "$launchservices_prefix.before-null-error"; fi
|
|
fi
|
|
install -m755 build/darling-src/build/src/frameworks/CoreServices/src/LaunchServices/LaunchServices "$launchservices_prefix.next"
|
|
mv "$launchservices_prefix.next" "$launchservices_prefix"
|
|
|
|
component="$guest_home/Library/Audio/Plug-Ins/Components/DarlingRiotAudio.component"
|
|
if [ ! -d "$component" ]; then
|
|
mkdir -p "$(dirname "$component")"
|
|
cp -a @DARLING_SDK@/System/Library/Components/CoreAudio.component "$component"
|
|
fi
|
|
component_binary="$component/Contents/MacOS/CoreAudio"
|
|
if [ ! -f "$component_binary.before-gpu-direct" ]; then cp -p "$component_binary" "$component_binary.before-gpu-direct"; fi
|
|
install -m755 build/riot-CoreAudioComponent "$component_binary.next"
|
|
mv "$component_binary.next" "$component_binary"
|
|
python3 - "$component/Contents/Info.plist" <<'PY'
|
|
from pathlib import Path
|
|
import plistlib
|
|
import sys
|
|
p=Path(sys.argv[1])
|
|
info=plistlib.loads(Path('build/darling-src/src/CoreAudio/CoreAudioComponent/Info.plist').read_bytes())
|
|
for component in info['AudioComponents']:
|
|
component['version']=3
|
|
p.write_bytes(plistlib.dumps(info))
|
|
PY
|
|
x11="$guest_home/RuntimeFrameworks/AppKit.framework/Versions/C/Resources/Backends/X11.backend/Contents/MacOS/X11"
|
|
appkit="$guest_home/RuntimeFrameworks/AppKit.framework/Versions/C/AppKit"
|
|
if [ ! -f "$appkit.before-gpu-direct" ]; then cp -p "$appkit" "$appkit.before-gpu-direct"; fi
|
|
install -m755 build/riot-AppKit "$appkit.next"
|
|
mv "$appkit.next" "$appkit"
|
|
if [ ! -f "$x11.before-gpu-direct" ]; then cp -p "$x11" "$x11.before-gpu-direct"; fi
|
|
install -m755 build/riot-X11 "$x11.next"
|
|
mv "$x11.next" "$x11"
|
|
kernel="$guest_home/RuntimeLibraries/libsystem_kernel.dylib"
|
|
if [ ! -f "$kernel.before-gpu-direct" ]; then cp -p "$kernel" "$kernel.before-gpu-direct"; fi
|
|
install -m755 build/riot-libsystem_kernel.dylib "$kernel.next"
|
|
mv "$kernel.next" "$kernel"
|
|
allocator="$guest_home/RuntimeLibraries/libsystem_malloc.dylib"
|
|
if [ ! -f "$allocator.before-gpu-direct" ]; then
|
|
if [ -f "$allocator" ]; then cp -p "$allocator" "$allocator.before-gpu-direct"
|
|
else cp -p @DARLING_SDK@/usr/lib/system/libsystem_malloc.dylib "$allocator.before-gpu-direct"; fi
|
|
fi
|
|
install -m755 build/riot-libsystem_malloc.dylib "$allocator.next"
|
|
mv "$allocator.next" "$allocator"
|
|
if [ -f build/libdarling-xshm.so ] && [ ! -f build/libdarling-xshm.so.before-gpu-direct ]; then cp -p build/libdarling-xshm.so build/libdarling-xshm.so.before-gpu-direct; fi
|
|
mv build/libdarling-xshm.so.next build/libdarling-xshm.so
|
|
|
|
objc_library="$guest_home/RuntimeLibraries/libobjc.A.dylib"
|
|
if [ ! -f "$objc_library.before-m761" ]; then
|
|
if [ -f "$objc_library" ]; then cp -p "$objc_library" "$objc_library.before-m761"
|
|
else cp -p @DARLING_SDK@/usr/lib/libobjc.A.dylib "$objc_library.before-m761"; fi
|
|
fi
|
|
install -m755 build/riot-libobjc.A.dylib "$objc_library.next"
|
|
mv "$objc_library.next" "$objc_library"
|
|
|
|
cxxabi_library="$guest_home/RuntimeLibraries/libc++abi.dylib"
|
|
if [ ! -f "$cxxabi_library.before-m765" ]; then
|
|
if [ -f "$cxxabi_library" ]; then cp -p "$cxxabi_library" "$cxxabi_library.before-m765"
|
|
else cp -p @DARLING_SDK@/usr/lib/libc++abi.dylib "$cxxabi_library.before-m765"; fi
|
|
fi
|
|
install -m755 build/riot-libc++abi.dylib "$cxxabi_library.next"
|
|
mv "$cxxabi_library.next" "$cxxabi_library"
|
|
|
|
indium_library="$guest_home/RuntimeLibraries/libindium.dylib"
|
|
if [ ! -f "$indium_library.before-m766" ]; then
|
|
if [ -f "$indium_library" ]; then cp -p "$indium_library" "$indium_library.before-m766"
|
|
else cp -p @DARLING_SDK@/usr/lib/darling/libindium.dylib "$indium_library.before-m766"; fi
|
|
fi
|
|
install -m755 build/riot-libindium.dylib "$indium_library.next"
|
|
mv "$indium_library.next" "$indium_library"
|
|
|
|
# libindium loads libiridium (shader translation and reflection) from the library path
|
|
iridium_library="$guest_home/RuntimeLibraries/libiridium.dylib"
|
|
if [ ! -f "$iridium_library.before-m767" ]; then
|
|
if [ -f "$iridium_library" ]; then cp -p "$iridium_library" "$iridium_library.before-m767"
|
|
else cp -p @DARLING_SDK@/usr/lib/darling/libiridium.dylib "$iridium_library.before-m767"; fi
|
|
fi
|
|
install -m755 build/riot-libiridium.dylib "$iridium_library.next"
|
|
mv "$iridium_library.next" "$iridium_library"
|
|
|
|
pthread_library="$guest_home/RuntimeLibraries/libsystem_pthread.dylib"
|
|
if [ ! -f "$pthread_library.before-gpu-direct" ]; then
|
|
if [ -f "$pthread_library" ]; then cp -p "$pthread_library" "$pthread_library.before-gpu-direct"
|
|
else cp -p @DARLING_SDK@/usr/lib/system/libsystem_pthread.dylib "$pthread_library.before-gpu-direct"; fi
|
|
fi
|
|
install -m755 build/riot-libsystem_pthread.dylib "$pthread_library.next"
|
|
mv "$pthread_library.next" "$pthread_library"
|