mirror of
https://github.com/lucannez64/darling-lol.git
synced 2026-10-26 19:47:42 +00:00
190 lines
11 KiB
Bash
Executable File
190 lines
11 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)
|
|
. "$project_dir/tools/runtime-paths.sh"
|
|
cd "$project_dir"
|
|
mkdir -p build
|
|
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
|
|
# WebAudio gain, mixing, filters and FFTs need real vDSP kernels, not stubs.
|
|
make -C build/darling-src/build/src/frameworks/Accelerate/vecLib/vDSP vDSP -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-coretext-runtime.py
|
|
python3 tools/build-riot-carboncore-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-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
|
|
mkdir -p "$guest_home/RuntimeFrameworks"
|
|
# Host fileports own SCM_RIGHTS descriptors and must die with their last sender.
|
|
if sudo -n true 2>/dev/null; then
|
|
sudo make -C "$project_dir/build/darling-src/build/src/external/darlingserver" install -j12
|
|
else
|
|
echo 'Skipped the darlingserver install (needs sudo); the base install already ships it: sudo cmake --install build/darling-src/build' >&2
|
|
fi
|
|
# Electron's window-visibility correction lives in the AppKit overlay
|
|
# (NSWindow -occlusionState, cocotron.patch); no Riot binary is modified here.
|
|
for name in IOSurface OpenGL QuartzCore CoreVideo CoreAudio AudioToolbox CoreGraphics CoreText 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;;
|
|
# Use the artifact rebuilt by this invocation, not an older optional probe build.
|
|
QuartzCore) source=build/m336-QuartzCore;;
|
|
CoreVideo) source=build/m341-CoreVideo;;
|
|
CoreAudio) source=build/riot-CoreAudio;;
|
|
AudioToolbox) source=build/riot-AudioToolbox;;
|
|
CoreGraphics) source=build/riot-CoreGraphics;;
|
|
CoreText) source=build/riot-CoreText;;
|
|
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
|
|
# Legacy version queries must also reach the corrected absolute subframework.
|
|
sh tools/install-riot-carboncore-runtime.sh
|
|
# 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.
|
|
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"
|
|
# Accelerate re-exports libvDSP by absolute path, so replace it in the stopped prefix too.
|
|
vdsp_prefix="$prefix_dir/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib"
|
|
mkdir -p "$(dirname "$vdsp_prefix")"
|
|
if [ ! -f "$vdsp_prefix.before-vdsp" ]; then
|
|
if [ -f "$vdsp_prefix" ]; then cp -p "$vdsp_prefix" "$vdsp_prefix.before-vdsp"
|
|
else cp -p "@DARLING_SDK@"/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib "$vdsp_prefix.before-vdsp"; fi
|
|
fi
|
|
install -m755 build/darling-src/build/src/frameworks/Accelerate/vecLib/vDSP/libvDSP.dylib "$vdsp_prefix.next"
|
|
mv "$vdsp_prefix.next" "$vdsp_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"
|