mirror of
https://github.com/utmapp/UTM.git
synced 2026-10-12 02:24:01 +00:00
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:
@@ -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
@@ -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"
|
||||
|
||||
@@ -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}"
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user