build: add Neptune and backends

Bump minimum version to macOS 13.0 and iOS 16.0 due to D3D renderer minimum
requirements.
This commit is contained in:
osy
2026-07-30 18:15:11 -07:00
parent c7ea7b0731
commit 530fd96f0d
4 changed files with 86 additions and 40 deletions
+4 -4
View File
@@ -4925,13 +4925,13 @@
"$(PROJECT_DIR)/$(QUOTED_SYSROOT_DIR)/include/spice-1",
"$(PROJECT_DIR)/$(QUOTED_SYSROOT_DIR)/include/libusb-1.0",
);
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LIBRARY_SEARCH_PATHS = (
"$(PROJECT_DIR)/$(QUOTED_SYSROOT_DIR)/lib",
"$(PROJECT_DIR)/$(QUOTED_SYSROOT_DIR)/lib/gstreamer-1.0",
"$(PROJECT_DIR)/$(QUOTED_SYSROOT_DIR)/lib",
);
MACOSX_DEPLOYMENT_TARGET = 11.3;
MACOSX_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
@@ -5008,13 +5008,13 @@
"$(PROJECT_DIR)/$(QUOTED_SYSROOT_DIR)/include/spice-1",
"$(PROJECT_DIR)/$(QUOTED_SYSROOT_DIR)/include/libusb-1.0",
);
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LIBRARY_SEARCH_PATHS = (
"$(PROJECT_DIR)/$(QUOTED_SYSROOT_DIR)/lib",
"$(PROJECT_DIR)/$(QUOTED_SYSROOT_DIR)/lib/gstreamer-1.0",
"$(PROJECT_DIR)/$(QUOTED_SYSROOT_DIR)/lib",
);
MACOSX_DEPLOYMENT_TARGET = 11.3;
MACOSX_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
QUOTED_SYSROOT_DIR = "\"$(SYSROOT_DIR)\"";
+8 -3
View File
@@ -42,15 +42,20 @@ WEBKIT_REPO="https://github.com/utmapp/WebKit.git"
WEBKIT_COMMIT="ed78ab6e1a37f4f11583a0bd038f22ec91f3ff10"
WEBKIT_SUBDIRS="Source/ThirdParty/ANGLE Configurations Tools/ccache"
EPOXY_REPO="https://github.com/utmapp/libepoxy.git"
EPOXY_COMMIT="5014658f79e4d6872a1ad6754da9098ccd9d4fc5"
EPOXY_COMMIT="bf98587477fe68d07b93319ece7b40a7d0e2eabe"
VULKAN_LOADER_REPO="https://github.com/osy/Vulkan-Loader.git"
VULKAN_LOADER_COMMIT="6df86907be582927507637f3f6003ea58bc34517"
VIRGLRENDERER_REPO="https://github.com/utmapp/virglrenderer.git"
VIRGLRENDERER_COMMIT="d48a2d0d9a722fffd3f92c83e71d9426a4892a66"
VIRGLRENDERER_COMMIT="9499d3e53edbf356fb3e8f5ab68b27e208003022"
MESA_REPO="https://gitlab.freedesktop.org/osy/mesa.git"
MESA_COMMIT="79bc850d884a1307356ff61c017e58901b90c7e2"
MOLTENVK_REPO="https://github.com/utmapp/MoltenVK.git"
MOLTENVK_COMMIT="111c14f3abf5c00118fc7a5b00c92d7abbf40f62"
MOLTENVK_COMMIT="ef1c5461774f5fbd224ddcfd91fd2c0ea23f0384"
LLVM15_SRC="https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.7/llvm-project-15.0.7.src.tar.xz"
DXMT_REPO="https://github.com/utmapp/dxmt.git"
DXMT_COMMIT="be80e14c07613cd558036a576b82dc6d78acdfce"
D3DMETAL_REPO="https://github.com/utmapp/d3dmetal-native.git"
D3DMETAL_COMMIT="edd2e386c25a2039eca0f6ce8f794b3b165841eb"
# Decompiled Hypervisor for iOS
HYPERVISOR_REPO="https://github.com/utmapp/Hypervisor.git"
+73 -33
View File
@@ -21,8 +21,8 @@ RED='\033[0;31m'
NC='\033[0m'
# Knobs
IOS_SDKMINVER="14.0"
MAC_SDKMINVER="11.0"
IOS_SDKMINVER="16.0"
MAC_SDKMINVER="13.0"
VISIONOS_SDKMINVER="1.0"
# Build environment
@@ -139,6 +139,7 @@ clone () {
fi
fi
git -C "$DIR" checkout "$COMMIT"
git -C "$DIR" submodule update --init --recursive --filter=tree:0
}
download_all () {
@@ -182,6 +183,9 @@ download_all () {
clone $LIBUCONTEXT_REPO $LIBUCONTEXT_COMMIT
clone $MESA_REPO $MESA_COMMIT
clone $MOLTENVK_REPO $MOLTENVK_COMMIT
download $LLVM15_SRC
clone $DXMT_REPO $DXMT_COMMIT
clone $D3DMETAL_REPO $D3DMETAL_COMMIT
}
copy_private_headers() {
@@ -225,13 +229,16 @@ generate_meson_cross() {
echo "c_args = [${CFLAGS:+$(meson_quote $CFLAGS)}]" >> $cross
echo "cpp_args = [${CXXFLAGS:+$(meson_quote $CXXFLAGS)}]" >> $cross
echo "objc_args = [${OBJCFLAGS:+$(meson_quote $OBJCFLAGS)}]" >> $cross
echo "objcpp_args = [${OBJCFLAGS:+$(meson_quote $OBJCFLAGS)}]" >> $cross
echo "c_link_args = [${LDFLAGS:+$(meson_quote $LDFLAGS)}]" >> $cross
echo "cpp_link_args = [${LDFLAGS:+$(meson_quote $LDFLAGS)}]" >> $cross
echo "objc_link_args = [${LDFLAGS:+$(meson_quote $LDFLAGS)}]" >> $cross
echo "objcpp_link_args = [${LDFLAGS:+$(meson_quote $LDFLAGS)}]" >> $cross
echo "[binaries]" >> $cross
echo "c = [$(meson_quote $CC)]" >> $cross
echo "cpp = [$(meson_quote $CXX)]" >> $cross
echo "objc = [$(meson_quote $OBJCC)]" >> $cross
echo "objcpp = [$(meson_quote $OBJCC)]" >> $cross
echo "ar = [$(meson_quote $AR)]" >> $cross
echo "nm = [$(meson_quote $NM)]" >> $cross
echo "pkgconfig = ['$PREFIX/host/bin/pkg-config']" >> $cross
@@ -293,19 +300,19 @@ generate_cmake_toolchain() {
case $PLATFORM in
ios_simulator* )
echo "set(CMAKE_SYSTEM_NAME iOS)" >> "$toolchain"
echo "set(CMAKE_OSX_SYSROOT iphonesimulator)" >> "$toolchain"
echo "set(CMAKE_OSX_SYSROOT iphonesimulator CACHE STRING \"\" FORCE)" >> "$toolchain"
;;
ios* )
echo "set(CMAKE_SYSTEM_NAME iOS)" >> "$toolchain"
echo "set(CMAKE_OSX_SYSROOT iphoneos)" >> "$toolchain"
echo "set(CMAKE_OSX_SYSROOT iphoneos CACHE STRING \"\" FORCE)" >> "$toolchain"
;;
visionos_simulator* )
echo "set(CMAKE_SYSTEM_NAME visionOS)" >> "$toolchain"
echo "set(CMAKE_OSX_SYSROOT xrsimulator)" >> "$toolchain"
echo "set(CMAKE_OSX_SYSROOT xrsimulator CACHE STRING \"\" FORCE)" >> "$toolchain"
;;
visionos* )
echo "set(CMAKE_SYSTEM_NAME visionOS)" >> "$toolchain"
echo "set(CMAKE_OSX_SYSROOT xros)" >> "$toolchain"
echo "set(CMAKE_OSX_SYSROOT xros CACHE STRING \"\" FORCE)" >> "$toolchain"
;;
macos )
echo "set(CMAKE_SYSTEM_NAME Darwin)" >> "$toolchain"
@@ -317,7 +324,7 @@ generate_cmake_toolchain() {
# Architecture
#
echo "set(CMAKE_SYSTEM_PROCESSOR \"$ARCH\")" >> "$toolchain"
echo "set(CMAKE_OSX_ARCHITECTURES \"$ARCH\")" >> "$toolchain"
echo "set(CMAKE_OSX_ARCHITECTURES \"$ARCH\" CACHE STRING \"\" FORCE)" >> "$toolchain"
echo "set(CMAKE_MACOSX_BUNDLE OFF CACHE BOOL \"\")" >> "$toolchain"
echo "" >> "$toolchain"
@@ -343,6 +350,7 @@ generate_cmake_toolchain() {
echo "set(CMAKE_C_COMPILER \"$CC_BIN\")" >> "$toolchain"
echo "set(CMAKE_CXX_COMPILER \"$CXX_BIN\")" >> "$toolchain"
echo "set(CMAKE_OBJC_COMPILER \"$OBJC_BIN\")" >> "$toolchain"
echo "set(CMAKE_ASM_COMPILER \"$CC_BIN\")" >> "$toolchain"
echo "" >> "$toolchain"
#
@@ -359,6 +367,7 @@ generate_cmake_toolchain() {
#
if [ -n "$CFLAGS" ]; then
echo "set(CMAKE_C_FLAGS \"$CFLAGS\" CACHE STRING \"\" FORCE)" >> "$toolchain"
echo "set(CMAKE_ASM_FLAGS \"$CFLAGS\" CACHE STRING \"\" FORCE)" >> "$toolchain"
fi
if [ -n "$OBJCFLAGS" ]; then
@@ -695,7 +704,12 @@ build_qemu_dependencies () {
# strip the minor versions
VULKAN_DYLIB="$PREFIX/lib/libvulkan.1.dylib"
mv "$(dirname $VULKAN_DYLIB)/$(readlink $VULKAN_DYLIB)" "$VULKAN_DYLIB"
meson_darwin_build $VIRGLRENDERER_REPO -Dtests=false -Dcheck-gl-errors=false -Dvenus=true -Dvulkan-dload=false -Drender-server-worker=thread
if [ "$PLATFORM" == "macos" ]; then
VIRGL_RENDER_SERVER_MODE="process"
else
VIRGL_RENDER_SERVER_MODE="thread"
fi
meson_darwin_build $VIRGLRENDERER_REPO -Dtests=false -Dcheck-gl-errors=false -Dvenus=true -Dneptune=true -Dvulkan-dload=false -Drender-server-mode="$VIRGL_RENDER_SERVER_MODE"
# Hypervisor for iOS
if [ "$PLATFORM" == "ios" ] || [ "$PLATFORM" == "ios_simulator" ]; then
build_hypervisor
@@ -785,7 +799,39 @@ build_vulkan_drivers () {
patch_vulkan_icd "$PREFIX/share/vulkan/icd.d/MoltenVK_icd.json"
}
fixup () {
build_d3d_drivers () {
LLVM15_NAME=$(basename "${LLVM15_SRC%.tar.*}")
cmake_build "$BUILD_DIR/$LLVM15_NAME/llvm" -DLLVM_ENABLE_ZSTD=Off -DLLVM_TARGETS_TO_BUILD="" -DLLVM_BUILD_TOOLS=Off -DLLVM_VERSION_PRINTER_SHOW_HOST_TARGET_INFO=Off
meson_build $DXMT_REPO -Dnative_llvm_path="$PREFIX"
if [ "$ARCH" == "x86_64" ]; then
meson_build $D3DMETAL_REPO -Dtests=disabled
else
# empty placeholder file
$CC -dynamiclib -x c /dev/null -o "$PREFIX/lib/libd3dmetal-native.dylib"
fi
}
fixup_imports() {
_file=$1
_list=$(otool -L "$_file" | tail -n +2 | cut -d ' ' -f 1 | awk '{$1=$1};1')
for g in $_list
do
base=$(basename "$g")
basefilename=${base%.*}
libname=${basefilename#lib*}
dir=$(dirname "$g")
if [ "$dir" == "$PREFIX/lib" ] || [ "$dir" == "@rpath" ]; then
if [ "$PLATFORM" == "macos" ]; then
newname="@rpath/$libname.framework/Versions/A/$libname"
else
newname="@rpath/$libname.framework/$libname"
fi
install_name_tool -change "$g" "$newname" "$_file"
fi
done
}
fixup_dylib () {
FILE=$1
BASE=$(basename "$FILE")
BASEFILENAME=${BASE%.*}
@@ -801,18 +847,16 @@ fixup () {
INFOPATH="$FRAMEWORKPATH"
fi
NEWFILE="$FRAMEWORKPATH/$LIBNAME"
LIST=$(otool -L "$FILE" | tail -n +2 | cut -d ' ' -f 1 | awk '{$1=$1};1')
OLDIFS=$IFS
IFS=$'\n'
echo "${GREEN}Fixing up $FILE...${NC}"
mkdir -p "$FRAMEWORKPATH"
mkdir -p "$INFOPATH"
cp -a "$FILE" "$NEWFILE"
/usr/libexec/PlistBuddy -c "Add :CFBundleExecutable string $LIBNAME" "$INFOPATH/Info.plist"
/usr/libexec/PlistBuddy -c "Add :CFBundleIdentifier string $BUNDLE_ID" "$INFOPATH/Info.plist"
/usr/libexec/PlistBuddy -c "Add :MinimumOSVersion string $SDKMINVER" "$INFOPATH/Info.plist"
/usr/libexec/PlistBuddy -c "Add :CFBundleVersion string 1" "$INFOPATH/Info.plist"
/usr/libexec/PlistBuddy -c "Add :CFBundleShortVersionString string 1.0" "$INFOPATH/Info.plist"
/usr/libexec/PlistBuddy -c "Add :CFBundleExecutable string $LIBNAME" "$INFOPATH/Info.plist" || true
/usr/libexec/PlistBuddy -c "Add :CFBundleIdentifier string $BUNDLE_ID" "$INFOPATH/Info.plist" || true
/usr/libexec/PlistBuddy -c "Add :MinimumOSVersion string $SDKMINVER" "$INFOPATH/Info.plist" || true
/usr/libexec/PlistBuddy -c "Add :CFBundleVersion string 1" "$INFOPATH/Info.plist" || true
/usr/libexec/PlistBuddy -c "Add :CFBundleShortVersionString string 1.0" "$INFOPATH/Info.plist" || true
if [ "$PLATFORM" == "macos" ]; then
ln -sf "A" "$BASEFRAMEWORKPATH/Versions/Current"
ln -sf "Versions/Current/Resources" "$BASEFRAMEWORKPATH/Resources"
@@ -820,21 +864,7 @@ fixup () {
fi
newname="@rpath/$FRAMEWORKNAME/$LIBNAME"
install_name_tool -id "$newname" "$NEWFILE"
for g in $LIST
do
base=$(basename "$g")
basefilename=${base%.*}
libname=${basefilename#lib*}
dir=$(dirname "$g")
if [ "$dir" == "$PREFIX/lib" ] || [ "$dir" == "@rpath" ]; then
if [ "$PLATFORM" == "macos" ]; then
newname="@rpath/$libname.framework/Versions/A/$libname"
else
newname="@rpath/$libname.framework/$libname"
fi
install_name_tool -change "$g" "$newname" "$NEWFILE"
fi
done
fixup_imports "$NEWFILE"
IFS=$OLDIFS
}
@@ -844,7 +874,14 @@ fixup_all () {
FILES=$(find "$SYSROOT_DIR/lib" -type f -maxdepth 1 -name "*.dylib")
for f in $FILES
do
fixup $f
echo "${GREEN}Fixing up $f...${NC}"
fixup_dylib $f
done
FILES=$(find "$SYSROOT_DIR/libexec" -type f -maxdepth 1 -perm +111)
for f in $FILES
do
echo "${GREEN}Fixing up $f...${NC}"
fixup_imports $f
done
IFS=$OLDIFS
}
@@ -1089,7 +1126,7 @@ fi
echo "${GREEN}Deleting old sysroot!${NC}"
rm -rf "$PREFIX/"*
rm -f "$BUILD_DIR/BUILD_SUCCESS"
rm -f "$BUILD_DIR/meson*.cross"
rm -f "$BUILD_DIR"/meson*.cross
rm -f "$BUILD_DIR/cross.cmake"
mkdir -p "$PREFIX/Frameworks"
copy_private_headers
@@ -1098,6 +1135,9 @@ build_qemu_dependencies
build $QEMU_DIR --cross-prefix="" $QEMU_PLATFORM_BUILD_FLAGS $QEMU_DEBUG_FLAGS
build_spice_client
build_vulkan_drivers
if [ "$PLATFORM" == "macos" ]; then
build_d3d_drivers
fi
fixup_all
remove_shared_gst_plugins # another hack...
echo "${GREEN}All done!${NC}"
+1
View File
@@ -72,6 +72,7 @@ pack_dir() {
cp -a "$SRC/$DIR" "$TGT/$DIR"
}
pack_all_objs "$BASEDIR" "*/libexec/virgl_render_server"
pack_all_objs "$BASEDIR" "*/bin/qemu-*"
pack_all_objs "$BASEDIR" "*/lib/*.dylib"
pack_all_objs "$BASEDIR" "*/lib/*.a"