project: remove QEMUKit dependency from iOS-Remote

This commit is contained in:
osy
2024-02-25 00:16:27 -08:00
parent 4fada3afa7
commit 67f127ad5f
20 changed files with 143 additions and 92 deletions
+10 -10
View File
@@ -424,20 +424,20 @@ extension QEMUArchitecture {
default: return true
}
}
var hasHypervisorSupport: Bool {
guard jb_has_hypervisor() else {
guard UTMCapabilities.current.contains(.hasHypervisorSupport) else {
return false
}
if UTMCapabilities.current.contains(.isAarch64) {
return self == .aarch64
} else if UTMCapabilities.current.contains(.isX86_64) {
return self == .x86_64
} else {
return false
}
#if arch(arm64)
return self == .aarch64
#elseif arch(x86_64)
return self == .x86_64
#else
return false
#endif
}
/// TSO is supported on jailbroken iOS devices with Hypervisor support
var hasTSOSupport: Bool {
#if os(iOS) || os(visionOS)
+5 -2
View File
@@ -15,7 +15,6 @@
//
import Foundation
import QEMUKitInternal
/// Settings for single disk device
protocol UTMConfigurationDrive: Codable, Hashable, Identifiable {
@@ -101,13 +100,17 @@ extension UTMConfigurationDrive {
try handle.close()
}.value
}
private func createQcow2Image(at newURL: URL, size sizeMib: Int) async throws {
#if WITH_REMOTE
fatalError("Not implemented")
#else
try await Task.detached {
if !QEMUGenerateDefaultQcow2File(newURL as CFURL, sizeMib) {
throw UTMConfigurationError.cannotCreateDiskImage
}
}.value
#endif
}
#if os(macOS)
@@ -362,7 +362,7 @@ import Virtualization // for getting network interfaces
"tb-size=\(tbSize)"
#if WITH_JIT
// use mirror mapping when we don't have JIT entitlements
if !jb_has_jit_entitlement() {
if !UTMCapabilities.current.contains(.hasJitEntitlements) {
"split-wx=on"
}
#endif
+1 -1
View File
@@ -97,7 +97,7 @@ struct ContentView: View {
#endif
// ignore error when we are running on a HV only build
if !jb_has_hypervisor() {
if !UTMCapabilities.current.contains(.hasHypervisorSupport) {
throw NSLocalizedString("Your version of iOS does not support running VMs while unmodified. You must either run UTM while jailbroken or with a remote debugger attached. See https://getutm.app/install/ for more details.", comment: "ContentView")
}
}
+1 -1
View File
@@ -101,7 +101,7 @@ struct VMConfigSystemView: View {
}
#endif
let actualJitSizeMib = jitSizeMib == 0 ? memorySizeMib / 4 : jitSizeMib
let jitMirrorMultiplier = jb_has_jit_entitlement() ? 1 : 2;
let jitMirrorMultiplier = UTMCapabilities.current.contains(.hasJitEntitlements) ? 1 : 2;
let estMemoryUsage = UInt64(memorySizeMib + jitMirrorMultiplier*actualJitSizeMib + baseUsageMib) * bytesInMib
if Double(estMemoryUsage) > Double(totalDeviceMemory) * warningThreshold {
warningMessage = WarningMessage.overallocatedRam(totalMib: totalDeviceMemory / bytesInMib, estimatedMib: estMemoryUsage / bytesInMib)
+3 -1
View File
@@ -122,7 +122,7 @@ private struct VMListModifier: ViewModifier {
ToolbarItem(placement: .navigationBarLeading) {
newButton
}
#if !os(visionOS)
#if !os(visionOS) && !WITH_REMOTE
ToolbarItem(placement: .navigationBarTrailing) {
Button("Settings") {
settingsPresented.toggle()
@@ -140,7 +140,9 @@ private struct VMListModifier: ViewModifier {
if data.showNewVMSheet {
VMWizardView()
} else if settingsPresented {
#if !WITH_REMOTE
UTMSettingsView()
#endif
}
}
.onChange(of: data.showNewVMSheet) { newValue in
+1 -1
View File
@@ -26,7 +26,7 @@ struct VMWizardStartView: View {
#if os(macOS)
VZVirtualMachine.isSupported && !processIsTranslated()
#else
jb_has_hypervisor()
UTMCapabilities.current.contains(.hasHypervisorSupport)
#endif
}
+40
View File
@@ -1033,6 +1033,43 @@ extension UTMDataError: LocalizedError {
}
// MARK: - Remote Client
/// Declare host capabilities to any remote client
struct UTMCapabilities: OptionSet, Codable {
let rawValue: UInt
/// If set, no trick is needed to get JIT working as the process is entitled.
static let hasJitEntitlements = Self(rawValue: 1 << 0)
/// If set, virtualization is supported by this host.
static let hasHypervisorSupport = Self(rawValue: 1 << 1)
/// If set, host is aarch64
static let isAarch64 = Self(rawValue: 1 << 2)
/// If set, host is x86_64
static let isX86_64 = Self(rawValue: 1 << 3)
static fileprivate(set) var current: Self = {
var current = Self()
#if WITH_JIT
if jb_has_jit_entitlement() {
current.insert(.hasJitEntitlements)
}
if jb_has_hypervisor() {
current.insert(.hasHypervisorSupport)
}
#endif
#if arch(arm64)
current.insert(.isAarch64)
#endif
#if arch(x86_64)
current.insert(.isX86_64)
#endif
return current
}()
}
#if WITH_REMOTE
@MainActor
class UTMRemoteData: UTMData {
@@ -1050,6 +1087,9 @@ class UTMRemoteData: UTMData {
override func listRefresh() async {
busyWorkAsync {
if let capabilities = await self.remoteClient.server.capabilities {
UTMCapabilities.current = capabilities
}
try await self.listRefreshFromRemote()
}
}
@@ -55,7 +55,7 @@ public extension VMDisplayViewController {
parent.setChildViewControllerForPointerLock(self)
UIPress.pressResponderOverride = self
}
#if !os(visionOS)
#if !os(visionOS) && !WITH_REMOTE
if runInBackground {
logger.info("Start location tracking to enable running in background")
UTMLocationManager.sharedInstance().startUpdatingLocation()
+9 -1
View File
@@ -19,12 +19,20 @@ import SwiftUI
struct UTMSettingsView: View {
@Environment(\.presentationMode) private var presentationMode: Binding<PresentationMode>
private var hasContainer: Bool {
#if WITH_JIT
jb_has_container()
#else
true
#endif
}
var body: some View {
NavigationView {
IASKAppSettings()
.navigationTitle("Settings")
.navigationBarTitleDisplayMode(.inline)
.appSettingsShowPrivacyLink(jb_has_container())
.appSettingsShowPrivacyLink(hasContainer)
.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
Button("Close") {
+5 -2
View File
@@ -202,7 +202,7 @@ extension UTMRemoteClient {
}
private func _handshake(parameters: M.ClientHandshake.Request) async throws -> M.ClientHandshake.Reply {
return .init(version: UTMRemoteMessageClient.version)
return .init(version: UTMRemoteMessageClient.version, capabilities: .current)
}
private func _virtualMachineDidTransition(parameters: M.VirtualMachineDidTransition.Request) async throws -> M.VirtualMachineDidTransition.Reply {
@@ -222,6 +222,7 @@ extension UTMRemoteClient {
typealias M = UTMRemoteMessageServer
private let peer: Peer<UTMRemoteMessageClient>
let host: String
private(set) var capabilities: UTMCapabilities?
init(peer: Peer<UTMRemoteMessageClient>, host: String) {
self.peer = peer
@@ -233,9 +234,11 @@ extension UTMRemoteClient {
}
func handshake() async throws {
guard try await _handshake(parameters: .init(version: UTMRemoteMessageServer.version)).version == UTMRemoteMessageServer.version else {
let reply = try await _handshake(parameters: .init(version: UTMRemoteMessageServer.version))
guard reply.version == UTMRemoteMessageServer.version else {
throw ClientError.versionMismatch
}
capabilities = reply.capabilities
}
func listVirtualMachines() async throws -> [M.ListVirtualMachines.Information] {
+3
View File
@@ -56,6 +56,7 @@ extension UTMRemoteMessageServer {
struct Reply: Serializable, Codable {
let version: Int
let capabilities: UTMCapabilities
}
}
@@ -71,6 +72,7 @@ extension UTMRemoteMessageServer {
let isShortcut: Bool
let isSuspended: Bool
let backend: UTMBackend
let state: UTMVirtualMachineState
}
struct Reply: Serializable, Codable {
@@ -233,6 +235,7 @@ extension UTMRemoteMessageClient {
struct Reply: Serializable, Codable {
let version: Int
let capabilities: UTMCapabilities
}
}
+1 -1
View File
@@ -588,7 +588,7 @@ extension UTMRemoteServer {
}
private func _handshake(parameters: M.ServerHandshake.Request) async throws -> M.ServerHandshake.Reply {
return .init(version: UTMRemoteMessageServer.version)
return .init(version: UTMRemoteMessageServer.version, capabilities: .current)
}
private func _listVirtualMachines(parameters: M.ListVirtualMachines.Request) async throws -> M.ListVirtualMachines.Reply {
+7 -1
View File
@@ -25,15 +25,21 @@
#include "UTMLegacyQemuConfiguration+Sharing.h"
#include "UTMLegacyQemuConfiguration+System.h"
#include "UTMLegacyQemuConfigurationPortForward.h"
#include "UTMLogging.h"
#if !defined(WITH_REMOTE)
#include "UTMProcess.h"
#include "UTMQemuSystem.h"
#include "UTMJailbreak.h"
#include "UTMLogging.h"
#else
#include "UTMQemuSystemBackends.h"
#endif
#include "UTMLegacyViewState.h"
#include "UTMSpiceIO.h"
#include "GenerateKey.h"
#if TARGET_OS_IPHONE
#if !defined(WITH_REMOTE)
#include "UTMLocationManager.h"
#endif
#include "VMDisplayViewController.h"
//#if !defined(TARGET_OS_VISION) || !TARGET_OS_VISION
#include "VMDisplayMetalViewController.h"
+6
View File
@@ -15,7 +15,9 @@
//
#import "UTMLogging.h"
#if !defined(WITH_REMOTE)
@import QEMUKitInternal;
#endif
static UTMLogging *gLoggingInstance;
@@ -42,7 +44,11 @@ void UTMLog(NSString *format, ...) {
}
- (void)writeLine:(NSString *)line {
#if defined(WITH_REMOTE)
NSLog(@"%@", line);
#else
[QEMULogging.sharedInstance writeLine:line];
#endif
}
@end
+1 -16
View File
@@ -15,24 +15,9 @@
//
#import "UTMProcess.h"
#import "UTMQemuSystemBackends.h"
@import QEMUKitInternal;
/// Specify the backend renderer for this VM
typedef NS_ENUM(NSInteger, UTMQEMURendererBackend) {
kQEMURendererBackendDefault = 0,
kQEMURendererBackendAngleGL = 1,
kQEMURendererBackendAngleMetal = 2,
kQEMURendererBackendMax = 3,
};
/// Specify the sound backend for this VM
typedef NS_ENUM(NSInteger, UTMQEMUSoundBackend) {
kQEMUSoundBackendDefault = 0,
kQEMUSoundBackendSPICE = 1,
kQEMUSoundBackendCoreAudio = 2,
kQEMUSoundBackendMax = 3,
};
NS_ASSUME_NONNULL_BEGIN
@interface UTMQemuSystem : UTMProcess <QEMULauncher>
+36
View File
@@ -0,0 +1,36 @@
//
// Copyright © 2024 osy. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#ifndef UTMQemuSystemBackends_h
#define UTMQemuSystemBackends_h
/// Specify the backend renderer for this VM
typedef NS_ENUM(NSInteger, UTMQEMURendererBackend) {
kQEMURendererBackendDefault = 0,
kQEMURendererBackendAngleGL = 1,
kQEMURendererBackendAngleMetal = 2,
kQEMURendererBackendMax = 3,
};
/// Specify the sound backend for this VM
typedef NS_ENUM(NSInteger, UTMQEMUSoundBackend) {
kQEMUSoundBackendDefault = 0,
kQEMUSoundBackendSPICE = 1,
kQEMUSoundBackendCoreAudio = 2,
kQEMUSoundBackendMax = 3,
};
#endif /* UTMQemuSystemBackends_h */
+2 -2
View File
@@ -241,14 +241,14 @@ NSString *const kUTMErrorDomain = @"com.utmapp.utm";
- (void)spiceForwardedPortOpened:(CSConnection *)connection port:(CSPort *)port {
if ([port.name isEqualToString:@"org.qemu.monitor.qmp.0"]) {
UTMQemuPort *qemuPort = [[UTMQemuPort alloc] initFrom:port];
#if !defined(WITH_REMOTE)
UTMQemuPort *qemuPort = [[UTMQemuPort alloc] initFrom:port];
[self.connectDelegate qemuInterface:self didCreateMonitorPort:qemuPort];
#endif
}
if ([port.name isEqualToString:@"org.qemu.guest_agent.0"]) {
UTMQemuPort *qemuPort = [[UTMQemuPort alloc] initFrom:port];
#if !defined(WITH_REMOTE)
UTMQemuPort *qemuPort = [[UTMQemuPort alloc] initFrom:port];
[self.connectDelegate qemuInterface:self didCreateGuestAgentPort:qemuPort];
#endif
}
+4 -1
View File
@@ -15,7 +15,6 @@
//
import Foundation
import QEMUKit
/// Common methods for all SPICE virtual machines
protocol UTMSpiceVirtualMachine: UTMVirtualMachine where Configuration == UTMQemuConfiguration {
@@ -61,7 +60,11 @@ protocol UTMSpiceVirtualMachine: UTMVirtualMachine where Configuration == UTMQem
// MARK: - USB redirection
extension UTMSpiceVirtualMachine {
var hasUsbRedirection: Bool {
#if HAS_USB
return jb_has_usb_entitlement()
#else
return false
#endif
}
}
+6 -50
View File
@@ -709,7 +709,6 @@
CEA45ED1263519B5002FA97D /* UTMLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CE059DC7243E9E3400338317 /* UTMLocationManager.m */; platformFilter = ios; };
CEA45ED3263519B5002FA97D /* VMSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE2D954C24AD4F980059923A /* VMSettingsView.swift */; };
CEA45ED8263519B5002FA97D /* VMKeyboardButton.m in Sources */ = {isa = PBXBuildFile; fileRef = CEEB66452284B942002737B2 /* VMKeyboardButton.m */; };
CEA45EDF263519B5002FA97D /* UTMJailbreak.m in Sources */ = {isa = PBXBuildFile; fileRef = CEB63A7924F469E300CAF323 /* UTMJailbreak.m */; };
CEA45EE8263519B5002FA97D /* VMDisplayMetalViewController+Keyboard.m in Sources */ = {isa = PBXBuildFile; fileRef = CE3ADD66240EFBCA002D6A5F /* VMDisplayMetalViewController+Keyboard.m */; };
CEA45EEA263519B5002FA97D /* UTMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE2D954624AD4F980059923A /* UTMExtensions.swift */; };
CEA45EEC263519B5002FA97D /* UTMData.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE020BA224AEDC7C00B44AB6 /* UTMData.swift */; };
@@ -891,6 +890,8 @@
CEE7E936287CFDB100282049 /* UTMLegacyQemuConfiguration+Constants.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE7E934287CFDB100282049 /* UTMLegacyQemuConfiguration+Constants.m */; };
CEE7E937287CFDB100282049 /* UTMLegacyQemuConfiguration+Constants.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE7E934287CFDB100282049 /* UTMLegacyQemuConfiguration+Constants.m */; };
CEE7E938287CFDB100282049 /* UTMLegacyQemuConfiguration+Constants.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE7E934287CFDB100282049 /* UTMLegacyQemuConfiguration+Constants.m */; };
CEE8B4C22B71E0FB0035AE86 /* UTMLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = CE6EDCE1241DA0E900A719DC /* UTMLogging.m */; };
CEE8B4C32B71E2BA0035AE86 /* UTMLoggingSwift.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE020BAA24AEE00000B44AB6 /* UTMLoggingSwift.swift */; };
CEEC811B24E48EC700ACB0B3 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEEC811A24E48EC600ACB0B3 /* SettingsView.swift */; };
CEECE13C25E47D9500A2AAB8 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEECE13B25E47D9500A2AAB8 /* AppDelegate.swift */; };
CEF01DB22B6724A300725A0F /* UTMSpiceVirtualMachine.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEF01DB12B6724A300725A0F /* UTMSpiceVirtualMachine.swift */; };
@@ -900,7 +901,6 @@
CEF01DB72B674BF000725A0F /* UTMPipeInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEF01DB62B674BF000725A0F /* UTMPipeInterface.swift */; };
CEF01DB82B674BF000725A0F /* UTMPipeInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEF01DB62B674BF000725A0F /* UTMPipeInterface.swift */; };
CEF01DB92B674BF000725A0F /* UTMPipeInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEF01DB62B674BF000725A0F /* UTMPipeInterface.swift */; };
CEF01DCD2B67985100725A0F /* UTMPipeInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEF01DB62B674BF000725A0F /* UTMPipeInterface.swift */; };
CEF0300826A25A6900667B63 /* VMWizardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEF0300526A25A6900667B63 /* VMWizardView.swift */; };
CEF0304E26A2AFBE00667B63 /* BigButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEF0304C26A2AFBE00667B63 /* BigButtonStyle.swift */; };
CEF0304F26A2AFBF00667B63 /* BigButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEF0304C26A2AFBE00667B63 /* BigButtonStyle.swift */; };
@@ -949,7 +949,6 @@
CEF7F59D2AEEDCC400E34952 /* VMData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847BF9A92A49C783000BD9AA /* VMData.swift */; };
CEF7F59E2AEEDCC400E34952 /* UTMLegacyQemuConfiguration+System.m in Sources */ = {isa = PBXBuildFile; fileRef = CE5425332437C22A00E520F7 /* UTMLegacyQemuConfiguration+System.m */; };
CEF7F59F2AEEDCC400E34952 /* UTMQemuConfigurationNetwork.swift in Sources */ = {isa = PBXBuildFile; fileRef = 843BF82F2844853E0029D60D /* UTMQemuConfigurationNetwork.swift */; };
CEF7F5A02AEEDCC400E34952 /* UTMProcess.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9D197B226542FE00355E14 /* UTMProcess.m */; };
CEF7F5A12AEEDCC400E34952 /* VMWizardDrivesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEBE820226A4C1B5007AAB12 /* VMWizardDrivesView.swift */; };
CEF7F5A22AEEDCC400E34952 /* VMWindowState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84018688288A44C20050AC51 /* VMWindowState.swift */; };
CEF7F5A42AEEDCC400E34952 /* UTMLegacyQemuConfigurationPortForward.m in Sources */ = {isa = PBXBuildFile; fileRef = CE54252D2436E48D00E520F7 /* UTMLegacyQemuConfigurationPortForward.m */; };
@@ -978,7 +977,6 @@
CEF7F5BB2AEEDCC400E34952 /* UTMReleaseHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE611BE629F50CAD001817BC /* UTMReleaseHelper.swift */; };
CEF7F5BC2AEEDCC400E34952 /* VMConfigNetworkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE2D955024AD4F980059923A /* VMConfigNetworkView.swift */; };
CEF7F5BD2AEEDCC400E34952 /* UTMLegacyViewState.m in Sources */ = {isa = PBXBuildFile; fileRef = CE6EDCDE241C4A6800A719DC /* UTMLegacyViewState.m */; };
CEF7F5BE2AEEDCC400E34952 /* UTMLoggingSwift.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE020BAA24AEE00000B44AB6 /* UTMLoggingSwift.swift */; };
CEF7F5BF2AEEDCC400E34952 /* VMWizardOSLinuxView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEF0305726A2AFDE00667B63 /* VMWizardOSLinuxView.swift */; };
CEF7F5C02AEEDCC400E34952 /* VMWizardSummaryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEBE820A26A4C8E0007AAB12 /* VMWizardSummaryView.swift */; };
CEF7F5C12AEEDCC400E34952 /* VMConfigQEMUView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE2D953924AD4F980059923A /* VMConfigQEMUView.swift */; };
@@ -1021,13 +1019,10 @@
CEF7F5E62AEEDCC400E34952 /* VMWizardHardwareView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEF0307326A2B40B00667B63 /* VMWizardHardwareView.swift */; };
CEF7F5E72AEEDCC400E34952 /* UTMRegistry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 841E997428AA1191003C6CB6 /* UTMRegistry.swift */; };
CEF7F5E82AEEDCC400E34952 /* VMDisplayViewControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8401868E288A50B90050AC51 /* VMDisplayViewControllerDelegate.swift */; };
CEF7F5E92AEEDCC400E34952 /* UTMLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = CE6EDCE1241DA0E900A719DC /* UTMLogging.m */; };
CEF7F5EA2AEEDCC400E34952 /* VMConfigConstantPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848D99A7285DB5550055C215 /* VMConfigConstantPicker.swift */; };
CEF7F5EB2AEEDCC400E34952 /* UTMQemuImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8453DCB3278CE5410037A0DA /* UTMQemuImage.swift */; };
CEF7F5EC2AEEDCC400E34952 /* VMToolbarModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE2D953824AD4F980059923A /* VMToolbarModifier.swift */; };
CEF7F5ED2AEEDCC400E34952 /* VMCursor.m in Sources */ = {isa = PBXBuildFile; fileRef = CE3ADD692411C661002D6A5F /* VMCursor.m */; };
CEF7F5EE2AEEDCC400E34952 /* VMConfigDriveDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE9375A024BBDDD10074066F /* VMConfigDriveDetailsView.swift */; };
CEF7F5EF2AEEDCC400E34952 /* UTMQemuSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = CE03D05024D90B4E00F76B84 /* UTMQemuSystem.m */; };
CEF7F5F02AEEDCC400E34952 /* NumberTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = CED234EC254796E500ED0A57 /* NumberTextField.swift */; };
CEF7F5F12AEEDCC400E34952 /* VMToolbarOrnamentModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEA51F862A81EAB700DDD7FA /* VMToolbarOrnamentModifier.swift */; platformFilters = (xros, ); };
CEF7F5F22AEEDCC400E34952 /* VMCommands.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE772AB225C8B7B500E4E379 /* VMCommands.swift */; };
@@ -1035,7 +1030,6 @@
CEF7F5F42AEEDCC400E34952 /* VMConfirmActionModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE6D21DB2553A6ED001D29C5 /* VMConfirmActionModifier.swift */; };
CEF7F5F52AEEDCC400E34952 /* QEMUConstant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 841619B52843226B000034B2 /* QEMUConstant.swift */; };
CEF7F5F62AEEDCC400E34952 /* VMConfigPortForwardForm.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE2D955224AD4F980059923A /* VMConfigPortForwardForm.swift */; };
CEF7F5F72AEEDCC400E34952 /* UTMLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CE059DC7243E9E3400338317 /* UTMLocationManager.m */; platformFilter = ios; };
CEF7F5F82AEEDCC400E34952 /* DetailedSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8471772727CD3CAB00D3A50B /* DetailedSection.swift */; };
CEF7F5F92AEEDCC400E34952 /* VMToolbarDriveMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84CF5DF4288F558400D01721 /* VMToolbarDriveMenuView.swift */; };
CEF7F5FA2AEEDCC400E34952 /* VMSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE2D954C24AD4F980059923A /* VMSettingsView.swift */; };
@@ -1045,29 +1039,24 @@
CEF7F5FE2AEEDCC400E34952 /* VMKeyboardButton.m in Sources */ = {isa = PBXBuildFile; fileRef = CEEB66452284B942002737B2 /* VMKeyboardButton.m */; };
CEF7F5FF2AEEDCC400E34952 /* UTMDownloadVMTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B36D2427B704C200C22685 /* UTMDownloadVMTask.swift */; };
CEF7F6002AEEDCC400E34952 /* GlobalFileImporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8432329728C3017F00CFBC97 /* GlobalFileImporter.swift */; };
CEF7F6012AEEDCC400E34952 /* IASKAppSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84CE3DAD2904C17C00FF068B /* IASKAppSettings.swift */; platformFilter = ios; };
CEF7F6022AEEDCC400E34952 /* VMWizardContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C2E8642AA429E800B17308 /* VMWizardContent.swift */; };
CEF7F6032AEEDCC400E34952 /* UTMExternalSceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 841E58CA28937EE200137A20 /* UTMExternalSceneDelegate.swift */; platformFilter = ios; };
CEF7F6042AEEDCC400E34952 /* UTMJailbreak.m in Sources */ = {isa = PBXBuildFile; fileRef = CEB63A7924F469E300CAF323 /* UTMJailbreak.m */; };
CEF7F6052AEEDCC400E34952 /* UTMQemuConfigurationQEMU.swift in Sources */ = {isa = PBXBuildFile; fileRef = 841619B128431DA5000034B2 /* UTMQemuConfigurationQEMU.swift */; };
CEF7F6062AEEDCC400E34952 /* UTMQemuConfigurationDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 843BF82328441EAD0029D60D /* UTMQemuConfigurationDisplay.swift */; };
CEF7F6072AEEDCC400E34952 /* UTMApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE80111F2AD4E9E8009001C2 /* UTMApp.swift */; platformFilters = (xros, ); };
CEF7F6082AEEDCC400E34952 /* VMConfigDisplayConsoleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8401FDA5269D44E400265F0D /* VMConfigDisplayConsoleView.swift */; };
CEF7F6092AEEDCC400E34952 /* UTMQemuPort.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84A0A8822A47D52E0038F329 /* UTMQemuPort.swift */; };
CEF7F60A2AEEDCC400E34952 /* VMConfigSerialView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848D99B728630A780055C215 /* VMConfigSerialView.swift */; };
CEF7F60B2AEEDCC400E34952 /* VMWizardState.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEF0305526A2AFDD00667B63 /* VMWizardState.swift */; };
CEF7F60C2AEEDCC400E34952 /* UTMQemuConfigurationInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 843BF82B284482C10029D60D /* UTMQemuConfigurationInput.swift */; };
CEF7F60D2AEEDCC400E34952 /* VMDisplayMetalViewController+Keyboard.m in Sources */ = {isa = PBXBuildFile; fileRef = CE3ADD66240EFBCA002D6A5F /* VMDisplayMetalViewController+Keyboard.m */; };
CEF7F60E2AEEDCC400E34952 /* UTMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE2D954624AD4F980059923A /* UTMExtensions.swift */; };
CEF7F60F2AEEDCC400E34952 /* UTMData.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE020BA224AEDC7C00B44AB6 /* UTMData.swift */; };
CEF7F6102AEEDCC400E34952 /* UTMSerialPortDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848F71EB277A2F47006A0240 /* UTMSerialPortDelegate.swift */; };
CEF7F6112AEEDCC400E34952 /* VMConfigSoundView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE2D953A24AD4F980059923A /* VMConfigSoundView.swift */; };
CEF7F6122AEEDCC400E34952 /* UTMLegacyQemuConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = CE31C244225E555600A965DD /* UTMLegacyQemuConfiguration.m */; };
CEF7F6142AEEDCC400E34952 /* VMDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE2D954B24AD4F980059923A /* VMDetailsView.swift */; };
CEF7F6152AEEDCC400E34952 /* VMDisplayMetalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5286EC94243748C3007E6CBC /* VMDisplayMetalViewController.m */; };
CEF7F6162AEEDCC400E34952 /* UTMQemuConfiguration+Arguments.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848D99C328670F650055C215 /* UTMQemuConfiguration+Arguments.swift */; };
CEF7F6172AEEDCC400E34952 /* Main.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEB63A7524F4654400CAF323 /* Main.swift */; };
CEF7F6182AEEDCC400E34952 /* UTMSerialPort.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848F71E7277A2A4E006A0240 /* UTMSerialPort.swift */; };
CEF7F6192AEEDCC400E34952 /* VMCardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE2D954324AD4F980059923A /* VMCardView.swift */; };
CEF7F61A2AEEDCC400E34952 /* VMNavigationListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8432328F28C2CDAD00CFBC97 /* VMNavigationListView.swift */; };
CEF7F61B2AEEDCC400E34952 /* UTMSingleWindowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 841E58CD28937FED00137A20 /* UTMSingleWindowView.swift */; };
@@ -1081,8 +1070,6 @@
CEF7F6232AEEDCC400E34952 /* VMPlaceholderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE2D954224AD4F980059923A /* VMPlaceholderView.swift */; };
CEF7F6242AEEDCC400E34952 /* VMDisplayMetalViewController+Pointer.m in Sources */ = {isa = PBXBuildFile; fileRef = 83FBDD55242FA7BC00D2C5D7 /* VMDisplayMetalViewController+Pointer.m */; };
CEF7F6252AEEDCC400E34952 /* VMDisplayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CE72B4AC2463579D00716A11 /* VMDisplayViewController.m */; };
CEF7F6262AEEDCC400E34952 /* UTMSWTPM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 845F95E22A57628400A016D7 /* UTMSWTPM.swift */; };
CEF7F6272AEEDCC400E34952 /* UTMSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84CE3DB02904C7A100FF068B /* UTMSettingsView.swift */; platformFilter = ios; };
CEF7F6282AEEDCC400E34952 /* UTMQemuConfigurationSound.swift in Sources */ = {isa = PBXBuildFile; fileRef = 843BF83328450C0B0029D60D /* UTMQemuConfigurationSound.swift */; };
CEF7F6292AEEDCC400E34952 /* VMScroll.m in Sources */ = {isa = PBXBuildFile; fileRef = CE20FAE72448D2BE0059AE11 /* VMScroll.m */; };
CEF7F62A2AEEDCC400E34952 /* VMConfigNetworkPortForwardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE2D954D24AD4F980059923A /* VMConfigNetworkPortForwardView.swift */; };
@@ -1101,7 +1088,6 @@
CEF7F6382AEEDCC400E34952 /* libgstjpeg.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE9D195A2265425900355E14 /* libgstjpeg.a */; };
CEF7F6392AEEDCC400E34952 /* libgstaudioresample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE9D195B2265425900355E14 /* libgstaudioresample.a */; };
CEF7F63A2AEEDCC400E34952 /* libgstplayback.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE9D195C2265425900355E14 /* libgstplayback.a */; };
CEF7F63B2AEEDCC400E34952 /* QEMUKit in Frameworks */ = {isa = PBXBuildFile; productRef = CEF7F5942AEEDCC400E34952 /* QEMUKit */; };
CEF7F63C2AEEDCC400E34952 /* libgstadder.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE9D195D2265425900355E14 /* libgstadder.a */; };
CEF7F63D2AEEDCC400E34952 /* libgstaudiorate.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE9D195F2265425900355E14 /* libgstaudiorate.a */; };
CEF7F63F2AEEDCC400E34952 /* libgstvideofilter.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE9D19602265425900355E14 /* libgstvideofilter.a */; };
@@ -1190,7 +1176,6 @@
CEF7F6BE2AEEDCC400E34952 /* spice-client-glib-2.0.8.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63FE22653C7500FC7E63 /* spice-client-glib-2.0.8.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
CEF7F6BF2AEEDCC400E34952 /* opus.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D640322653C7500FC7E63 /* opus.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
CEF7F6C02AEEDCC400E34952 /* gstsdp-1.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D641622653C7500FC7E63 /* gstsdp-1.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
CEF7F6C12AEEDCC400E34952 /* swtpm.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE064C642A563F4A003C833D /* swtpm.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
CEF7F6C42AEEDCC400E34952 /* gstaudio-1.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63EF22653C7400FC7E63 /* gstaudio-1.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
CEF7F6C52AEEDCC400E34952 /* gstcheck-1.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D641422653C7500FC7E63 /* gstcheck-1.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
CEF7F6C72AEEDCC400E34952 /* iconv.2.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D641522653C7500FC7E63 /* iconv.2.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
@@ -1212,7 +1197,6 @@
CEF83F8F250094EE00557D15 /* gcrypt.20.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63F322653C7400FC7E63 /* gcrypt.20.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
CEFE96722B699954000F00C9 /* UTMSocketUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEFE96712B699954000F00C9 /* UTMSocketUtils.swift */; };
CEFE96732B699954000F00C9 /* UTMSocketUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEFE96712B699954000F00C9 /* UTMSocketUtils.swift */; };
CEFE96742B699954000F00C9 /* UTMSocketUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEFE96712B699954000F00C9 /* UTMSocketUtils.swift */; };
CEFE96752B699954000F00C9 /* UTMSocketUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEFE96712B699954000F00C9 /* UTMSocketUtils.swift */; };
CEFE96772B69A7CC000F00C9 /* VMRemoteSessionState.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEFE96762B69A7CC000F00C9 /* VMRemoteSessionState.swift */; };
CEFE98DF29485237007CB7A8 /* UTM.sdef in Resources */ = {isa = PBXBuildFile; fileRef = CEFE98DE29485237007CB7A8 /* UTM.sdef */; };
@@ -1570,7 +1554,6 @@
CEF7F6BE2AEEDCC400E34952 /* spice-client-glib-2.0.8.framework in Embed Libraries */,
CEF7F6BF2AEEDCC400E34952 /* opus.0.framework in Embed Libraries */,
CEF7F6C02AEEDCC400E34952 /* gstsdp-1.0.0.framework in Embed Libraries */,
CEF7F6C12AEEDCC400E34952 /* swtpm.0.framework in Embed Libraries */,
CEF7F6C42AEEDCC400E34952 /* gstaudio-1.0.0.framework in Embed Libraries */,
CEF7F6C52AEEDCC400E34952 /* gstcheck-1.0.0.framework in Embed Libraries */,
CEF7F6C72AEEDCC400E34952 /* iconv.2.framework in Embed Libraries */,
@@ -2015,6 +1998,7 @@
CEE7E934287CFDB100282049 /* UTMLegacyQemuConfiguration+Constants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UTMLegacyQemuConfiguration+Constants.m"; sourceTree = "<group>"; };
CEE7E935287CFDB100282049 /* UTMLegacyQemuConfiguration+Constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UTMLegacyQemuConfiguration+Constants.h"; sourceTree = "<group>"; };
CEE7ED472A90256100E6B4AB /* VMDisplayMetalViewController+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "VMDisplayMetalViewController+Private.h"; sourceTree = "<group>"; };
CEE8B4C12B71DF4C0035AE86 /* UTMQemuSystemBackends.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UTMQemuSystemBackends.h; sourceTree = "<group>"; };
CEEB66442284B942002737B2 /* VMKeyboardButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VMKeyboardButton.h; sourceTree = "<group>"; };
CEEB66452284B942002737B2 /* VMKeyboardButton.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VMKeyboardButton.m; sourceTree = "<group>"; };
CEEC811A24E48EC600ACB0B3 /* SettingsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; };
@@ -2356,7 +2340,6 @@
CEF7F6382AEEDCC400E34952 /* libgstjpeg.a in Frameworks */,
CEF7F6392AEEDCC400E34952 /* libgstaudioresample.a in Frameworks */,
CEF7F63A2AEEDCC400E34952 /* libgstplayback.a in Frameworks */,
CEF7F63B2AEEDCC400E34952 /* QEMUKit in Frameworks */,
CEF7F63C2AEEDCC400E34952 /* libgstadder.a in Frameworks */,
CEF7F63D2AEEDCC400E34952 /* libgstaudiorate.a in Frameworks */,
CEF7F63F2AEEDCC400E34952 /* libgstvideofilter.a in Frameworks */,
@@ -2785,6 +2768,7 @@
84A0A8822A47D52E0038F329 /* UTMQemuPort.swift */,
CE03D05424D90BE000F76B84 /* UTMQemuSystem.h */,
CE03D05024D90B4E00F76B84 /* UTMQemuSystem.m */,
CEE8B4C12B71DF4C0035AE86 /* UTMQemuSystemBackends.h */,
841E997428AA1191003C6CB6 /* UTMRegistry.swift */,
841E997828AA119B003C6CB6 /* UTMRegistryEntry.swift */,
848F71E7277A2A4E006A0240 /* UTMSerialPort.swift */,
@@ -3178,7 +3162,6 @@
CEF7F58E2AEEDCC400E34952 /* SwiftTerm */,
CEF7F5902AEEDCC400E34952 /* SwiftUIVisualEffects */,
CEF7F5922AEEDCC400E34952 /* InAppSettingsKit */,
CEF7F5942AEEDCC400E34952 /* QEMUKit */,
CEF7F6D52AEEEF7D00E34952 /* CocoaSpiceNoUsb */,
CE9B153B2B11A4B4003A32DD /* SwiftConnect */,
);
@@ -3922,7 +3905,6 @@
CEA45ED8263519B5002FA97D /* VMKeyboardButton.m in Sources */,
CEF0307526A2B40B00667B63 /* VMWizardHardwareView.swift in Sources */,
CE8011212AD4E9E8009001C2 /* UTMApp.swift in Sources */,
CEA45EDF263519B5002FA97D /* UTMJailbreak.m in Sources */,
CE611BEC29F50D3E001817BC /* VMReleaseNotesView.swift in Sources */,
CE611BE829F50CAD001817BC /* UTMReleaseHelper.swift in Sources */,
CEA45EE8263519B5002FA97D /* VMDisplayMetalViewController+Keyboard.m in Sources */,
@@ -3983,11 +3965,9 @@
CEE06B292B30013500A811AE /* UTMRemoteConnectView.swift in Sources */,
CEF7F59B2AEEDCC400E34952 /* UTMQemuConfigurationSharing.swift in Sources */,
CEF7F59C2AEEDCC400E34952 /* ContentView.swift in Sources */,
CEFE96742B699954000F00C9 /* UTMSocketUtils.swift in Sources */,
CEF7F59D2AEEDCC400E34952 /* VMData.swift in Sources */,
CEF7F59E2AEEDCC400E34952 /* UTMLegacyQemuConfiguration+System.m in Sources */,
CEF7F59F2AEEDCC400E34952 /* UTMQemuConfigurationNetwork.swift in Sources */,
CEF7F5A02AEEDCC400E34952 /* UTMProcess.m in Sources */,
CE70E8D52B648FBE007FA787 /* UTMRemoteSpiceVirtualMachine.swift in Sources */,
CEF7F5A12AEEDCC400E34952 /* VMWizardDrivesView.swift in Sources */,
CEF7F5A22AEEDCC400E34952 /* VMWindowState.swift in Sources */,
@@ -4019,7 +3999,6 @@
CEF7F5BB2AEEDCC400E34952 /* UTMReleaseHelper.swift in Sources */,
CEF7F5BC2AEEDCC400E34952 /* VMConfigNetworkView.swift in Sources */,
CEF7F5BD2AEEDCC400E34952 /* UTMLegacyViewState.m in Sources */,
CEF7F5BE2AEEDCC400E34952 /* UTMLoggingSwift.swift in Sources */,
CEF7F5BF2AEEDCC400E34952 /* VMWizardOSLinuxView.swift in Sources */,
CEF7F5C02AEEDCC400E34952 /* VMWizardSummaryView.swift in Sources */,
CEF7F5C12AEEDCC400E34952 /* VMConfigQEMUView.swift in Sources */,
@@ -4037,6 +4016,7 @@
CEF7F5CD2AEEDCC400E34952 /* UTMConfigurationTerminal.swift in Sources */,
CEF7F5CE2AEEDCC400E34952 /* VMWindowView.swift in Sources */,
CEF7F5CF2AEEDCC400E34952 /* UTMPendingVMView.swift in Sources */,
CEE8B4C32B71E2BA0035AE86 /* UTMLoggingSwift.swift in Sources */,
CEF7F5D02AEEDCC400E34952 /* UTMSpiceIO.m in Sources */,
CEF7F5D12AEEDCC400E34952 /* UTMUnavailableVMView.swift in Sources */,
CEF7F5D22AEEDCC400E34952 /* VMDrivesSettingsView.swift in Sources */,
@@ -4062,14 +4042,10 @@
CEF7F5E62AEEDCC400E34952 /* VMWizardHardwareView.swift in Sources */,
CEF7F5E72AEEDCC400E34952 /* UTMRegistry.swift in Sources */,
CEF7F5E82AEEDCC400E34952 /* VMDisplayViewControllerDelegate.swift in Sources */,
CEF7F5E92AEEDCC400E34952 /* UTMLogging.m in Sources */,
CEF7F5EA2AEEDCC400E34952 /* VMConfigConstantPicker.swift in Sources */,
CEF7F5EB2AEEDCC400E34952 /* UTMQemuImage.swift in Sources */,
CEF7F5EC2AEEDCC400E34952 /* VMToolbarModifier.swift in Sources */,
CEF01DCD2B67985100725A0F /* UTMPipeInterface.swift in Sources */,
CEF7F5ED2AEEDCC400E34952 /* VMCursor.m in Sources */,
CEF7F5EE2AEEDCC400E34952 /* VMConfigDriveDetailsView.swift in Sources */,
CEF7F5EF2AEEDCC400E34952 /* UTMQemuSystem.m in Sources */,
CEF7F5F02AEEDCC400E34952 /* NumberTextField.swift in Sources */,
CEF7F5F12AEEDCC400E34952 /* VMToolbarOrnamentModifier.swift in Sources */,
CEF01DB42B6724A300725A0F /* UTMSpiceVirtualMachine.swift in Sources */,
@@ -4078,7 +4054,6 @@
CEF7F5F42AEEDCC400E34952 /* VMConfirmActionModifier.swift in Sources */,
CEF7F5F52AEEDCC400E34952 /* QEMUConstant.swift in Sources */,
CEF7F5F62AEEDCC400E34952 /* VMConfigPortForwardForm.swift in Sources */,
CEF7F5F72AEEDCC400E34952 /* UTMLocationManager.m in Sources */,
CEF7F5F82AEEDCC400E34952 /* DetailedSection.swift in Sources */,
CEF7F5F92AEEDCC400E34952 /* VMToolbarDriveMenuView.swift in Sources */,
CEF7F5FA2AEEDCC400E34952 /* VMSettingsView.swift in Sources */,
@@ -4088,15 +4063,13 @@
CEF7F5FE2AEEDCC400E34952 /* VMKeyboardButton.m in Sources */,
CEF7F5FF2AEEDCC400E34952 /* UTMDownloadVMTask.swift in Sources */,
CEF7F6002AEEDCC400E34952 /* GlobalFileImporter.swift in Sources */,
CEF7F6012AEEDCC400E34952 /* IASKAppSettings.swift in Sources */,
CEF7F6022AEEDCC400E34952 /* VMWizardContent.swift in Sources */,
CEF7F6032AEEDCC400E34952 /* UTMExternalSceneDelegate.swift in Sources */,
CEF7F6042AEEDCC400E34952 /* UTMJailbreak.m in Sources */,
CEF7F6052AEEDCC400E34952 /* UTMQemuConfigurationQEMU.swift in Sources */,
CEF7F6062AEEDCC400E34952 /* UTMQemuConfigurationDisplay.swift in Sources */,
CEE8B4C22B71E0FB0035AE86 /* UTMLogging.m in Sources */,
CEF7F6072AEEDCC400E34952 /* UTMApp.swift in Sources */,
CEF7F6082AEEDCC400E34952 /* VMConfigDisplayConsoleView.swift in Sources */,
CEF7F6092AEEDCC400E34952 /* UTMQemuPort.swift in Sources */,
CEF7F60A2AEEDCC400E34952 /* VMConfigSerialView.swift in Sources */,
CE38EC692B5DB3AE008B324B /* UTMRemoteClient.swift in Sources */,
CEF7F60B2AEEDCC400E34952 /* VMWizardState.swift in Sources */,
@@ -4104,14 +4077,12 @@
CEF7F60D2AEEDCC400E34952 /* VMDisplayMetalViewController+Keyboard.m in Sources */,
CEF7F60E2AEEDCC400E34952 /* UTMExtensions.swift in Sources */,
CEF7F60F2AEEDCC400E34952 /* UTMData.swift in Sources */,
CEF7F6102AEEDCC400E34952 /* UTMSerialPortDelegate.swift in Sources */,
CEF7F6112AEEDCC400E34952 /* VMConfigSoundView.swift in Sources */,
CEF7F6122AEEDCC400E34952 /* UTMLegacyQemuConfiguration.m in Sources */,
CEF7F6142AEEDCC400E34952 /* VMDetailsView.swift in Sources */,
CEF7F6152AEEDCC400E34952 /* VMDisplayMetalViewController.m in Sources */,
CEF7F6162AEEDCC400E34952 /* UTMQemuConfiguration+Arguments.swift in Sources */,
CEF7F6172AEEDCC400E34952 /* Main.swift in Sources */,
CEF7F6182AEEDCC400E34952 /* UTMSerialPort.swift in Sources */,
CEF7F6192AEEDCC400E34952 /* VMCardView.swift in Sources */,
CEF7F61A2AEEDCC400E34952 /* VMNavigationListView.swift in Sources */,
CEF7F61B2AEEDCC400E34952 /* UTMSingleWindowView.swift in Sources */,
@@ -4126,8 +4097,6 @@
CEF7F6232AEEDCC400E34952 /* VMPlaceholderView.swift in Sources */,
CEF7F6242AEEDCC400E34952 /* VMDisplayMetalViewController+Pointer.m in Sources */,
CEF7F6252AEEDCC400E34952 /* VMDisplayViewController.m in Sources */,
CEF7F6262AEEDCC400E34952 /* UTMSWTPM.swift in Sources */,
CEF7F6272AEEDCC400E34952 /* UTMSettingsView.swift in Sources */,
CEF7F6282AEEDCC400E34952 /* UTMQemuConfigurationSound.swift in Sources */,
CEF7F6292AEEDCC400E34952 /* VMScroll.m in Sources */,
CEF7F62A2AEEDCC400E34952 /* VMConfigNetworkPortForwardView.swift in Sources */,
@@ -5189,14 +5158,6 @@
minimumVersion = 3.0.0;
};
};
CEF7F5952AEEDCC400E34952 /* XCRemoteSwiftPackageReference "QEMUKit" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/utmapp/QEMUKit.git";
requirement = {
branch = main;
kind = branch;
};
};
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
@@ -5379,11 +5340,6 @@
package = CEF7F5932AEEDCC400E34952 /* XCRemoteSwiftPackageReference "InAppSettingsKit" */;
productName = InAppSettingsKit;
};
CEF7F5942AEEDCC400E34952 /* QEMUKit */ = {
isa = XCSwiftPackageProductDependency;
package = CEF7F5952AEEDCC400E34952 /* XCRemoteSwiftPackageReference "QEMUKit" */;
productName = QEMUKit;
};
CEF7F6D52AEEEF7D00E34952 /* CocoaSpiceNoUsb */ = {
isa = XCSwiftPackageProductDependency;
package = 84B36D1C27B3261E00C22685 /* XCRemoteSwiftPackageReference "CocoaSpice" */;