Improve support for iOS App Store rules by using dynamic XCFramework.
Apple's iOS App Store does not permit an app to link to naked dylibs. Instead, these must be placed in frameworks, which are embedded in a dynamic version of MoltenVK.xcframework. - Use Xcode to directly generate a MoltenVK.framework for each platform, and remove create_dylib*.sh scripts. - Move static XCFramework, containing libMoltenVK.a static libraries, to Package/Latest/MoltenVK/static/MoltenVK.xcframework. - Generate dynamic XCFramework, containing MoltenVK.framework dynamic libraries, in Package/Latest/MoltenVK/dynamic/MoltenVK.xcframework. - Add macro MVK_VERSION_STRING to create version string at compile time, use it to validate the CURRENT_PROJECT_VERSION build setting at compile time, and use it at runtime instead of mvkGetMoltenVKVersionString() function. - Add -w to OTHER_LDFLAGS to dynamic framework builds to suppress spurious linker warnings of the type "ld: warning: no platform load command found in '...', assuming: iOS" issued from the new linker introduced in Xcode 15. - Add MoltenVK-MacCat Xcode target and MoltenVK Package (MacCat only) Xcode scheme to avoid building dynamic MoltenVK.framework for the Mac Catalyst platform, because Xcode does not support doing so. - Always run MoltenVK build scripts, to ensure all components are added to the XCFrameworks, and MoltenVK/Package is always refreshed, even if code compilation is not required. - Cube demo link to dynamic MoltenVK.framework through dynamic/MoltenVK.xcframework, instead of to naked libMoltenVK.dylib. - Update the version of Volk used by the Cube demo, to support loading MoltenVK from dynamic frameworks inside Volk. - Update README.md and MoltenVK_Runtime_UserGuide.md documents. - Update MVK_PRIVATE_API_VERSION to 40. - Fix make install to install /usr/local/lib/libMoltenVK.dylib on macOS (unrelated). - Remove unused MTLAttributeStrideStatic declaration prior to Xcode 15 (unrelated).
This commit is contained in:
parent
b56c152a12
commit
0d62ff8fb7
@ -7,9 +7,6 @@
|
|||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
A90998A02B4EE8C3002CEF67 /* libMoltenVK.dylib in Copy MoltenVK Library */ = {isa = PBXBuildFile; fileRef = A909989F2B4EE8C3002CEF67 /* libMoltenVK.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
|
||||||
A90998A32B4EFB51002CEF67 /* libMoltenVK.dylib in Copy MoltenVK Library */ = {isa = PBXBuildFile; fileRef = A90998A22B4EFB51002CEF67 /* libMoltenVK.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
|
||||||
A90998A62B4EFBAA002CEF67 /* libMoltenVK.dylib in Copy MoltenVK Library */ = {isa = PBXBuildFile; fileRef = A90998A52B4EFBAA002CEF67 /* libMoltenVK.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
|
||||||
A93DBF3C24A2A4D500079F64 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B761C3AAE9800373FFD /* Icon.png */; };
|
A93DBF3C24A2A4D500079F64 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B761C3AAE9800373FFD /* Icon.png */; };
|
||||||
A93DBF3E24A2A4D500079F64 /* Default~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B751C3AAE9800373FFD /* Default~ipad.png */; };
|
A93DBF3E24A2A4D500079F64 /* Default~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B751C3AAE9800373FFD /* Default~ipad.png */; };
|
||||||
A93DBF3F24A2A4D500079F64 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B741C3AAE9800373FFD /* Default-568h@2x.png */; };
|
A93DBF3F24A2A4D500079F64 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B741C3AAE9800373FFD /* Default-568h@2x.png */; };
|
||||||
@ -29,40 +26,46 @@
|
|||||||
A9B53B341C3AC15200ABC6F6 /* DemoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B6F1C3AAE9800373FFD /* DemoViewController.m */; };
|
A9B53B341C3AC15200ABC6F6 /* DemoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B6F1C3AAE9800373FFD /* DemoViewController.m */; };
|
||||||
A9B53B351C3AC15200ABC6F6 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B6C1C3AAE9800373FFD /* AppDelegate.m */; };
|
A9B53B351C3AC15200ABC6F6 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B6C1C3AAE9800373FFD /* AppDelegate.m */; };
|
||||||
A9B53B361C3AC15200ABC6F6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B711C3AAE9800373FFD /* main.m */; };
|
A9B53B361C3AC15200ABC6F6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B711C3AAE9800373FFD /* main.m */; };
|
||||||
|
A9F4D8772B8590F2004AD576 /* MoltenVK.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9F4D8702B858DDE004AD576 /* MoltenVK.xcframework */; };
|
||||||
|
A9F4D8782B8590F2004AD576 /* MoltenVK.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A9F4D8702B858DDE004AD576 /* MoltenVK.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||||
|
A9F4D87F2B88F7B1004AD576 /* MoltenVK.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9F4D8702B858DDE004AD576 /* MoltenVK.xcframework */; };
|
||||||
|
A9F4D8802B88F7B1004AD576 /* MoltenVK.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A9F4D8702B858DDE004AD576 /* MoltenVK.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||||
|
A9F4D88A2B8A9C11004AD576 /* MoltenVK.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9F4D8702B858DDE004AD576 /* MoltenVK.xcframework */; };
|
||||||
|
A9F4D88B2B8A9C11004AD576 /* MoltenVK.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A9F4D8702B858DDE004AD576 /* MoltenVK.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXCopyFilesBuildPhase section */
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
A909989E2B4EE849002CEF67 /* Copy MoltenVK Library */ = {
|
A9F4D87A2B8590F2004AD576 /* Embed Frameworks */ = {
|
||||||
isa = PBXCopyFilesBuildPhase;
|
isa = PBXCopyFilesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
dstPath = "";
|
dstPath = "";
|
||||||
dstSubfolderSpec = 10;
|
dstSubfolderSpec = 10;
|
||||||
files = (
|
files = (
|
||||||
A90998A02B4EE8C3002CEF67 /* libMoltenVK.dylib in Copy MoltenVK Library */,
|
A9F4D8782B8590F2004AD576 /* MoltenVK.xcframework in Embed Frameworks */,
|
||||||
);
|
);
|
||||||
name = "Copy MoltenVK Library";
|
name = "Embed Frameworks";
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
A90998A12B4EFA78002CEF67 /* Copy MoltenVK Library */ = {
|
A9F4D8822B88F7B1004AD576 /* Embed Frameworks */ = {
|
||||||
isa = PBXCopyFilesBuildPhase;
|
isa = PBXCopyFilesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
dstPath = "";
|
dstPath = "";
|
||||||
dstSubfolderSpec = 10;
|
dstSubfolderSpec = 10;
|
||||||
files = (
|
files = (
|
||||||
A90998A32B4EFB51002CEF67 /* libMoltenVK.dylib in Copy MoltenVK Library */,
|
A9F4D8802B88F7B1004AD576 /* MoltenVK.xcframework in Embed Frameworks */,
|
||||||
);
|
);
|
||||||
name = "Copy MoltenVK Library";
|
name = "Embed Frameworks";
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
A90998A42B4EFB81002CEF67 /* Copy MoltenVK Library */ = {
|
A9F4D88C2B8A9C11004AD576 /* Embed Frameworks */ = {
|
||||||
isa = PBXCopyFilesBuildPhase;
|
isa = PBXCopyFilesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
dstPath = "";
|
dstPath = "";
|
||||||
dstSubfolderSpec = 10;
|
dstSubfolderSpec = 10;
|
||||||
files = (
|
files = (
|
||||||
A90998A62B4EFBAA002CEF67 /* libMoltenVK.dylib in Copy MoltenVK Library */,
|
A9F4D88B2B8A9C11004AD576 /* MoltenVK.xcframework in Embed Frameworks */,
|
||||||
);
|
);
|
||||||
name = "Copy MoltenVK Library";
|
name = "Embed Frameworks";
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
/* End PBXCopyFilesBuildPhase section */
|
/* End PBXCopyFilesBuildPhase section */
|
||||||
@ -100,27 +103,32 @@
|
|||||||
A9B67B8A1C3AAEA200373FFD /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
|
A9B67B8A1C3AAEA200373FFD /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
|
||||||
A9B67B8B1C3AAEA200373FFD /* macOS.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = macOS.xcassets; sourceTree = "<group>"; };
|
A9B67B8B1C3AAEA200373FFD /* macOS.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = macOS.xcassets; sourceTree = "<group>"; };
|
||||||
A9B734FE2576E04000455E2A /* Cube.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Cube.entitlements; sourceTree = "<group>"; };
|
A9B734FE2576E04000455E2A /* Cube.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Cube.entitlements; sourceTree = "<group>"; };
|
||||||
|
A9F4D8702B858DDE004AD576 /* MoltenVK.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = MoltenVK.xcframework; path = ../../Package/Latest/MoltenVK/dynamic/MoltenVK.xcframework; sourceTree = "<group>"; };
|
||||||
|
A9F4D8862B8A9BD8004AD576 /* MoltenVK.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = MoltenVK.xcframework; path = ../../Package/Latest/MoltenVK/dynamic/MoltenVK.xcframework; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
A93DBF4424A2A4D500079F64 /* Frameworks */ = {
|
A9F4D8792B8590F2004AD576 /* Frameworks */ = {
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
A9F4D8772B8590F2004AD576 /* MoltenVK.xcframework in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
A9B53B1B1C3AC0BE00ABC6F6 /* Frameworks */ = {
|
A9F4D87D2B88F771004AD576 /* Frameworks */ = {
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
A9F4D88A2B8A9C11004AD576 /* MoltenVK.xcframework in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
A9B53B371C3AC15200ABC6F6 /* Frameworks */ = {
|
A9F4D8812B88F7B1004AD576 /* Frameworks */ = {
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
A9F4D87F2B88F7B1004AD576 /* MoltenVK.xcframework in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -216,6 +224,8 @@
|
|||||||
A9C2ABA82185085B00DDBC03 /* Frameworks */ = {
|
A9C2ABA82185085B00DDBC03 /* Frameworks */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
A9F4D8702B858DDE004AD576 /* MoltenVK.xcframework */,
|
||||||
|
A9F4D8862B8A9BD8004AD576 /* MoltenVK.xcframework */,
|
||||||
A90998A52B4EFBAA002CEF67 /* libMoltenVK.dylib */,
|
A90998A52B4EFBAA002CEF67 /* libMoltenVK.dylib */,
|
||||||
A909989F2B4EE8C3002CEF67 /* libMoltenVK.dylib */,
|
A909989F2B4EE8C3002CEF67 /* libMoltenVK.dylib */,
|
||||||
A90998A22B4EFB51002CEF67 /* libMoltenVK.dylib */,
|
A90998A22B4EFB51002CEF67 /* libMoltenVK.dylib */,
|
||||||
@ -232,8 +242,8 @@
|
|||||||
buildPhases = (
|
buildPhases = (
|
||||||
A93DBF3B24A2A4D500079F64 /* Resources */,
|
A93DBF3B24A2A4D500079F64 /* Resources */,
|
||||||
A93DBF4024A2A4D500079F64 /* Sources */,
|
A93DBF4024A2A4D500079F64 /* Sources */,
|
||||||
A90998A42B4EFB81002CEF67 /* Copy MoltenVK Library */,
|
A9F4D8812B88F7B1004AD576 /* Frameworks */,
|
||||||
A93DBF4424A2A4D500079F64 /* Frameworks */,
|
A9F4D8822B88F7B1004AD576 /* Embed Frameworks */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@ -250,8 +260,8 @@
|
|||||||
buildPhases = (
|
buildPhases = (
|
||||||
A9B53B141C3AC0BE00ABC6F6 /* Resources */,
|
A9B53B141C3AC0BE00ABC6F6 /* Resources */,
|
||||||
A9B53B171C3AC0BE00ABC6F6 /* Sources */,
|
A9B53B171C3AC0BE00ABC6F6 /* Sources */,
|
||||||
A909989E2B4EE849002CEF67 /* Copy MoltenVK Library */,
|
A9F4D8792B8590F2004AD576 /* Frameworks */,
|
||||||
A9B53B1B1C3AC0BE00ABC6F6 /* Frameworks */,
|
A9F4D87A2B8590F2004AD576 /* Embed Frameworks */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@ -268,9 +278,8 @@
|
|||||||
buildPhases = (
|
buildPhases = (
|
||||||
A9B53B2E1C3AC15200ABC6F6 /* Resources */,
|
A9B53B2E1C3AC15200ABC6F6 /* Resources */,
|
||||||
A9B53B331C3AC15200ABC6F6 /* Sources */,
|
A9B53B331C3AC15200ABC6F6 /* Sources */,
|
||||||
A90998A12B4EFA78002CEF67 /* Copy MoltenVK Library */,
|
A9F4D87D2B88F771004AD576 /* Frameworks */,
|
||||||
A90998AE2B602480002CEF67 /* Copy MoltenVK Simulator Library */,
|
A9F4D88C2B8A9C11004AD576 /* Embed Frameworks */,
|
||||||
A9B53B371C3AC15200ABC6F6 /* Frameworks */,
|
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@ -353,28 +362,6 @@
|
|||||||
};
|
};
|
||||||
/* End PBXResourcesBuildPhase section */
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXShellScriptBuildPhase section */
|
|
||||||
A90998AE2B602480002CEF67 /* Copy MoltenVK Simulator Library */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
alwaysOutOfDate = 1;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputFileListPaths = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
);
|
|
||||||
name = "Copy MoltenVK Simulator Library";
|
|
||||||
outputFileListPaths = (
|
|
||||||
);
|
|
||||||
outputPaths = (
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "#!/bin/bash\n\n# If running on the simulator, we need to overwrite the \n# iOS build of MoltenVK with the iOS Simulator build.\n# We can't use this script to copy the iOS build itself, \n# because it needs to be signed to run on an actual device.\n# The simulator build does not need to be signed.\nif [[ \"${PLATFORM_NAME}\" == \"iphonesimulator\" ]]; then \n\tmvk_lib_file=\"libMoltenVK.dylib\"\n\tmvk_lib_dir=\"${PROJECT_DIR}/../../MoltenVK/dylib/iOS-simulator\"\n\tapp_fwk_dir=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Frameworks\"\n\tcp -af \"${mvk_lib_dir}/${mvk_lib_file}\" \"${app_fwk_dir}/${mvk_lib_file}\"\nfi\n";
|
|
||||||
};
|
|
||||||
/* End PBXShellScriptBuildPhase section */
|
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
A93DBF4024A2A4D500079F64 /* Sources */ = {
|
A93DBF4024A2A4D500079F64 /* Sources */ = {
|
||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
@ -421,7 +408,10 @@
|
|||||||
MVK_SAMP_CUBE,
|
MVK_SAMP_CUBE,
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = "$(SRCROOT)/iOS/InfoTV.plist";
|
INFOPLIST_FILE = "$(SRCROOT)/iOS/InfoTV.plist";
|
||||||
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"@executable_path/Frameworks",
|
||||||
|
"@executable_path/Frameworks/MoltenVK.framework",
|
||||||
|
);
|
||||||
MARKETING_VERSION = 1;
|
MARKETING_VERSION = 1;
|
||||||
PRODUCT_NAME = Cube;
|
PRODUCT_NAME = Cube;
|
||||||
SDKROOT = appletvos;
|
SDKROOT = appletvos;
|
||||||
@ -441,7 +431,10 @@
|
|||||||
MVK_SAMP_CUBE,
|
MVK_SAMP_CUBE,
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = "$(SRCROOT)/iOS/InfoTV.plist";
|
INFOPLIST_FILE = "$(SRCROOT)/iOS/InfoTV.plist";
|
||||||
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"@executable_path/Frameworks",
|
||||||
|
"@executable_path/Frameworks/MoltenVK.framework",
|
||||||
|
);
|
||||||
MARKETING_VERSION = 1;
|
MARKETING_VERSION = 1;
|
||||||
PRODUCT_NAME = Cube;
|
PRODUCT_NAME = Cube;
|
||||||
SDKROOT = appletvos;
|
SDKROOT = appletvos;
|
||||||
@ -458,13 +451,17 @@
|
|||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
|
"DEVELOPMENT_TEAM[sdk=macosx*]" = "";
|
||||||
GCC_PREFIX_HEADER = "$(SRCROOT)/macOS/Prefix.pch";
|
GCC_PREFIX_HEADER = "$(SRCROOT)/macOS/Prefix.pch";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
MVK_SAMP_CUBE,
|
MVK_SAMP_CUBE,
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = "$(SRCROOT)/macOS/Info.plist";
|
INFOPLIST_FILE = "$(SRCROOT)/macOS/Info.plist";
|
||||||
LD_RUNPATH_SEARCH_PATHS = "@executable_path/../Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"@executable_path/../Frameworks",
|
||||||
|
"@executable_path/../Frameworks/MoltenVK.framework",
|
||||||
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
||||||
PRODUCT_NAME = Cube;
|
PRODUCT_NAME = Cube;
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@ -481,13 +478,17 @@
|
|||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
|
"DEVELOPMENT_TEAM[sdk=macosx*]" = "";
|
||||||
GCC_PREFIX_HEADER = "$(SRCROOT)/macOS/Prefix.pch";
|
GCC_PREFIX_HEADER = "$(SRCROOT)/macOS/Prefix.pch";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
MVK_SAMP_CUBE,
|
MVK_SAMP_CUBE,
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = "$(SRCROOT)/macOS/Info.plist";
|
INFOPLIST_FILE = "$(SRCROOT)/macOS/Info.plist";
|
||||||
LD_RUNPATH_SEARCH_PATHS = "@executable_path/../Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"@executable_path/../Frameworks",
|
||||||
|
"@executable_path/../Frameworks/MoltenVK.framework",
|
||||||
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
||||||
PRODUCT_NAME = Cube;
|
PRODUCT_NAME = Cube;
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@ -500,6 +501,7 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = Cube.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Cube.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
@ -511,7 +513,10 @@
|
|||||||
INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist";
|
INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||||
"IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2;
|
"IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"@executable_path/Frameworks",
|
||||||
|
"@executable_path/Frameworks/MoltenVK.framework",
|
||||||
|
);
|
||||||
MARKETING_VERSION = 1;
|
MARKETING_VERSION = 1;
|
||||||
PRODUCT_NAME = Cube;
|
PRODUCT_NAME = Cube;
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@ -526,6 +531,7 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = Cube.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Cube.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
@ -537,7 +543,10 @@
|
|||||||
INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist";
|
INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||||
"IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2;
|
"IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"@executable_path/Frameworks",
|
||||||
|
"@executable_path/Frameworks/MoltenVK.framework",
|
||||||
|
);
|
||||||
MARKETING_VERSION = 1;
|
MARKETING_VERSION = 1;
|
||||||
PRODUCT_NAME = Cube;
|
PRODUCT_NAME = Cube;
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
@ -21,8 +21,8 @@ Table of Contents
|
|||||||
- [About **MoltenVK**](#about_moltenvk)
|
- [About **MoltenVK**](#about_moltenvk)
|
||||||
- [Installing **MoltenVK** in Your *Vulkan* Application](#install)
|
- [Installing **MoltenVK** in Your *Vulkan* Application](#install)
|
||||||
- [Install *MoltenVK* as a Universal `XCFramework`](#install_xcfwk)
|
- [Install *MoltenVK* as a Universal `XCFramework`](#install_xcfwk)
|
||||||
- [Install *MoltenVK* as a Dynamic Library](#install_dylib)
|
- [Install *MoltenVK* as a Dynamic Library on _macOS_](#install_dylib)
|
||||||
- [Install *MoltenVK* replacing the Vulkan SDK `libMoltenVK.dylib`](#install_vksdk)
|
- [Optionally Link to Required System Libraries](#system_libs)
|
||||||
- [Build and Runtime Requirements](#requirements)
|
- [Build and Runtime Requirements](#requirements)
|
||||||
- [Interacting with the **MoltenVK** Runtime](#interaction)
|
- [Interacting with the **MoltenVK** Runtime](#interaction)
|
||||||
- [MoltenVK Header Files](#moltenvk_headers)
|
- [MoltenVK Header Files](#moltenvk_headers)
|
||||||
@ -79,11 +79,7 @@ Installing **MoltenVK** in Your *Vulkan* Application
|
|||||||
Installation of **MoltenVK** in your application is straightforward and easy!
|
Installation of **MoltenVK** in your application is straightforward and easy!
|
||||||
|
|
||||||
Depending on your build and deployment needs, you can link **MoltenVK** to your application either
|
Depending on your build and deployment needs, you can link **MoltenVK** to your application either
|
||||||
as a universal `XCFramework` or as a *dynamic library* (`.dylib`). Distributing an app containing
|
as either a static or dynamic universal `XCFramework`, or on _macOS_, as a *dynamic library* (`.dylib`).
|
||||||
a dynamic library via the *iOS App Store* or *tvOS App Store* can require specialized bundling.
|
|
||||||
If you are unsure about which linking and deployment option you need, or on *iOS* or *tvOS*,
|
|
||||||
unless you have specific needs for dynamic libraries, follow the steps for linking **MoltenVK**
|
|
||||||
as an `XCFramework`, as it is the simpler option, and encompasses the largest set of supported platforms.
|
|
||||||
|
|
||||||
|
|
||||||
<a name="install_xcfwk"></a>
|
<a name="install_xcfwk"></a>
|
||||||
@ -96,54 +92,49 @@ also use *Xcode 14* or later to link it to your app or game.
|
|||||||
> If you need to use *Xcode 13* or earlier to link `MoltenVK.xcframework` to your app or game,
|
> If you need to use *Xcode 13* or earlier to link `MoltenVK.xcframework` to your app or game,
|
||||||
first [build](../README.md#building) **MoltenVK** with *Xcode 13* or earlier.
|
first [build](../README.md#building) **MoltenVK** with *Xcode 13* or earlier.
|
||||||
>
|
>
|
||||||
> Or, if you want to use *Xcode 14* or later to [build](../README.md#building) **MoltenVK**, in order to be able to use the latest
|
> Or, if you want to use *Xcode 14* or later to [build](../README.md#building) **MoltenVK**, in order to be able
|
||||||
*Metal* capabilities, but need to use *Xcode 13* or earlier to link `MoltenVK.xcframework` to your
|
to use the latest *Metal* capabilities, but need to use *Xcode 13* or earlier to link `MoltenVK.xcframework`
|
||||||
app or game, first add the value `-fno-objc-msgsend-selector-stubs` to the `OTHER_CFLAGS`
|
to your app or game, first add the value `-fno-objc-msgsend-selector-stubs` to the `OTHER_CFLAGS` *Xcode* build
|
||||||
*Xcode* build setting in the `MoltenVK.xcodeproj` and `MoltenVKShaderConverter.xcodeproj` *Xcode*
|
setting in the `MoltenVK.xcodeproj` and `MoltenVKShaderConverter.xcodeproj` *Xcode* projects, [build](../README.md#building)
|
||||||
projects, [build](../README.md#building) **MoltenVK** with *Xcode 14* or later, and then link `MoltenVK.xcframework`
|
**MoltenVK** with *Xcode 14* or later, and then link `MoltenVK.xcframework`to your app or game using *Xcode 13* or earlier.
|
||||||
to your app or game using *Xcode 13* or earlier.
|
|
||||||
|
|
||||||
To link **MoltenVK** to your application as an `XCFramework`, follow these steps:
|
To link **MoltenVK** to your application as either a static or dynamic `XCFramework`, follow these steps:
|
||||||
|
|
||||||
1. Open your application in *Xcode* and select your application's target in the
|
1. Open your application in *Xcode* and select your application's target in the *Project Navigator* panel.
|
||||||
*Project Navigator* panel.
|
|
||||||
|
|
||||||
2. Open the *Build Settings* tab.
|
2. Open the *Build Settings* tab.
|
||||||
|
|
||||||
1. In the **Header Search Paths** (aka `HEADER_SEARCH_PATHS`) setting,
|
1. In the **Header Search Paths** (aka `HEADER_SEARCH_PATHS`) setting,
|
||||||
add an entry that points to the `MoltenVK/include` folder.
|
add an entry that points to the `MoltenVK/include` folder.
|
||||||
|
|
||||||
2. If using `IOSurfaces` on *iOS*, open the **iOS Deployment Target** (aka `IPHONEOS_DEPLOYMENT_TARGET`)
|
2. _(**Note:** This step is not required if linking to the static XCFramework)_ If linking to the _dynamic XCFramework_,
|
||||||
setting, and ensure it is set to a value of `iOS 11.0` or greater, or if using `IOSurfaces` on *tvOS*,
|
in the **Runpath Search Paths** (aka `LD_RUNPATH_SEARCH_PATHS`) setting, add entries that match where the
|
||||||
open the **tvOS Deployment Target** (aka `TVOS_DEPLOYMENT_TARGET`) setting, and ensure it is set to a
|
framework will be located in your runtime environment. If the dynamic library is to be embedded within your
|
||||||
value of `tvOS 11.0` or greater.
|
application, you would typically add one or both of the following entries for a _macOS_ platform target:
|
||||||
|
|
||||||
3. Open the *Build Phases* tab and open the *Link Binary With Libraries* list.
|
```
|
||||||
|
@executable_path/../Frameworks
|
||||||
|
@executable_path/../Frameworks/MoltenVK.framework
|
||||||
|
```
|
||||||
|
|
||||||
1. Drag `MoltenVK/MoltenVK.xcframework` to the *Link Binary With Libraries* list.
|
or for a platform target other than _macOS_ add one or both of the following entries:
|
||||||
|
|
||||||
2. If your application does **_not_** use use `C++`, click the **+** button,
|
```
|
||||||
and add `libc++.tbd` by selecting it from the list of system frameworks.
|
@executable_path/Frameworks
|
||||||
This is needed because **MoltenVK** uses `C++` system libraries internally.
|
@executable_path/Frameworks/MoltenVK.framework
|
||||||
|
```
|
||||||
|
|
||||||
3. If you do **_not_** have the **Link Frameworks Automatically** (aka `CLANG_MODULES_AUTOLINK`) and
|
`MoltenVK.framework` is internally configured to be located at `@rpath/MoltenVK.framework/MoltenVK`.
|
||||||
**Enable Modules (C and Objective-C)** (aka `CLANG_ENABLE_MODULES`) settings enabled, click the
|
|
||||||
**+** button, and add the following items by selecting them from the list of system frameworks:
|
|
||||||
- `libc++.tbd` *(if not already done in Step 2)*
|
|
||||||
- `Metal.framework`
|
|
||||||
- `Foundation.framework`.
|
|
||||||
- `QuartzCore.framework`
|
|
||||||
- `IOKit.framework` (*macOS*)
|
|
||||||
- `UIKit.framework` (*iOS* or *tvOS*)
|
|
||||||
- `IOSurface.framework` (*macOS*, or *iOS* if `IPHONEOS_DEPLOYMENT_TARGET` is at least `iOS 11.0`,
|
|
||||||
or *tvOS* if `TVOS_DEPLOYMENT_TARGET` is at least `tvOS 11.0`)
|
|
||||||
|
|
||||||
|
3. Open the *General* tab and drag either `Package/Latest/MoltenVK/static/MoltenVK.xcframework` or
|
||||||
|
`Package/Latest/MoltenVK/dynamic/MoltenVK.xcframework` to the *Embed Frameworks* (sometimes labeled
|
||||||
|
*Frameworks, Libraries, and Embedded Content*) list, and ensure the _Embed & Sign_ options is selected.
|
||||||
|
|
||||||
|
|
||||||
<a name="install_dylib"></a>
|
<a name="install_dylib"></a>
|
||||||
### Install *MoltenVK* as a Dynamic Library
|
### Install *MoltenVK* as a Dynamic Library on _macOS_
|
||||||
|
|
||||||
To link **MoltenVK** to your application as a dynamic library (`.dylib`), follow these steps:
|
To link **MoltenVK** to your _macOS_ application as a dynamic library (`.dylib`), follow these steps:
|
||||||
|
|
||||||
1. Open your application in *Xcode* and select your application's target in the
|
1. Open your application in *Xcode* and select your application's target in the
|
||||||
*Project Navigator* panel.
|
*Project Navigator* panel.
|
||||||
@ -154,106 +145,39 @@ To link **MoltenVK** to your application as a dynamic library (`.dylib`), follow
|
|||||||
1. In the **Header Search Paths** (aka `HEADER_SEARCH_PATHS`) setting,
|
1. In the **Header Search Paths** (aka `HEADER_SEARCH_PATHS`) setting,
|
||||||
add an entry that points to the `MoltenVK/include` folder.
|
add an entry that points to the `MoltenVK/include` folder.
|
||||||
|
|
||||||
2. In the **Library Search Paths** (aka `LIBRARY_SEARCH_PATHS`) setting,
|
2. In the **Runpath Search Paths** (aka `LD_RUNPATH_SEARCH_PATHS`) setting,
|
||||||
add an entry that points to **_one_** of the following folders:
|
|
||||||
- `MoltenVK/dylib/macOS` *(macOS)*
|
|
||||||
- `MoltenVK/dylib/iOS` *(iOS)*
|
|
||||||
- `MoltenVK/dylib/tvOS` *(tvOS)*
|
|
||||||
|
|
||||||
3. In the **Runpath Search Paths** (aka `LD_RUNPATH_SEARCH_PATHS`) setting,
|
|
||||||
add an entry that matches where the dynamic library will be located in your runtime
|
add an entry that matches where the dynamic library will be located in your runtime
|
||||||
environment. If the dynamic library is to be embedded within your application,
|
environment. If the dynamic library is to be embedded within your application,
|
||||||
you would typically set this to **_one_** of these values:
|
you would typically set this to `@executable_path/../Frameworks`.
|
||||||
|
|
||||||
- `@executable_path/../Frameworks` *(macOS)*
|
The `libMoltenVK.dylib` library in `MoltenVK.framework` is internally configured
|
||||||
- `@executable_path/Frameworks` *(iOS or tvOS)*
|
to be located at `@rpath/libMoltenVK.dylib`.
|
||||||
|
|
||||||
The `libMoltenVK.dylib` library is internally configured to be located at
|
3. Open the *General* tab and drag `Package/Latest/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib`
|
||||||
`@rpath/libMoltenVK.dylib`.
|
to the *Embed Frameworks* (sometimes labeled *Frameworks, Libraries, and Embedded Content*) list,
|
||||||
|
and ensure the _Embed & Sign_ options is selected.
|
||||||
3. If using `IOSurfaces` on *iOS*, open the **iOS Deployment Target** (aka `IPHONEOS_DEPLOYMENT_TARGET`)
|
|
||||||
setting, and ensure it is set to a value of `iOS 11.0` or greater, or if using `IOSurfaces` on *tvOS*,
|
|
||||||
open the **tvOS Deployment Target** (aka `TVOS_DEPLOYMENT_TARGET`) setting, and ensure it is set to a
|
|
||||||
value of `tvOS 11.0` or greater.
|
|
||||||
|
|
||||||
3. Open the *Build Phases* tab and open the *Link Binary With Libraries* list.
|
|
||||||
|
|
||||||
1. Drag **_one_** of the following files to the *Link Binary With Libraries* list:
|
|
||||||
- `MoltenVK/dylib/macOS/libMoltenVK.dylib` *(macOS)*
|
|
||||||
- `MoltenVK/dylib/iOS/libMoltenVK.dylib` *(iOS)*
|
|
||||||
- `MoltenVK/dylib/tvOS/libMoltenVK.dylib` *(tvOS)*
|
|
||||||
|
|
||||||
2. If your application does **_not_** use use `C++`, click the **+** button,
|
|
||||||
and add `libc++.tbd` by selecting it from the list of system frameworks.
|
|
||||||
This is needed because **MoltenVK** uses `C++` system libraries internally.
|
|
||||||
|
|
||||||
3. If you do **_not_** have the **Link Frameworks Automatically** (aka `CLANG_MODULES_AUTOLINK`) and
|
|
||||||
**Enable Modules (C and Objective-C)** (aka `CLANG_ENABLE_MODULES`) settings enabled, click the
|
|
||||||
**+** button, and add the following items by selecting them from the list of system frameworks:
|
|
||||||
- `libc++.tbd` *(if not already done in Step 2)*
|
|
||||||
- `Metal.framework`
|
|
||||||
- `Foundation.framework`.
|
|
||||||
- `QuartzCore.framework`
|
|
||||||
- `IOKit.framework` (*macOS*)
|
|
||||||
- `UIKit.framework` (*iOS* or *tvOS*)
|
|
||||||
- `IOSurface.framework` (*macOS*, or *iOS* if `IPHONEOS_DEPLOYMENT_TARGET` is at least `iOS 11.0`,
|
|
||||||
or *tvOS* if `TVOS_DEPLOYMENT_TARGET` is at least `tvOS 11.0`)
|
|
||||||
|
|
||||||
4. Arrange to install the `libMoltenVK.dylib` file in your application environment:
|
|
||||||
|
|
||||||
- To copy the `libMoltenVK.dylib` file into your application or component library:
|
|
||||||
|
|
||||||
1. On the *Build Phases* tab, add a new *Copy Files* build phase.
|
|
||||||
|
|
||||||
2. Set the *Destination* into which you want to place the `libMoltenVK.dylib` file.
|
|
||||||
Typically this will be *Frameworks* (and it should match the **Runpath Search Paths**
|
|
||||||
(aka `LD_RUNPATH_SEARCH_PATHS`) build setting you added above).
|
|
||||||
|
|
||||||
3. Drag **_one_** of the following files to the *Copy Files* list in this new build phase:
|
|
||||||
- `MoltenVK/dylib/macOS/libMoltenVK.dylib` *(macOS)*
|
|
||||||
- `MoltenVK/dylib/iOS/libMoltenVK.dylib` *(iOS)*
|
|
||||||
- `MoltenVK/dylib/tvOS/libMoltenVK.dylib` *(tvOS)*
|
|
||||||
|
|
||||||
- Alternately, you may create your own installation mechanism to install one of the following
|
|
||||||
files into a standard *macOS*, *iOS*, or *tvOS* system library folder on the user's device:
|
|
||||||
- `MoltenVK/dylib/macOS/libMoltenVK.dylib` *(macOS)*
|
|
||||||
- `MoltenVK/dylib/iOS/libMoltenVK.dylib` *(iOS)*
|
|
||||||
- `MoltenVK/dylib/tvOS/libMoltenVK.dylib` *(tvOS)*
|
|
||||||
|
|
||||||
|
|
||||||
<a name="install_vksdk"></a>
|
<a name="system_libs"></a>
|
||||||
### Install *MoltenVK* replacing the Vulkan SDK `libMoltenVK.dylib`
|
### Optionally Link to Required System Libraries
|
||||||
|
|
||||||
There are a few potential issues when building **MoltenVK** to replace the version installed via
|
Open the *Build Phases* tab and open the *Link Binary With Libraries* list.
|
||||||
the *[Vulkan SDK](https://vulkan.lunarg.com/sdk/home)* standard install process, which lives in
|
|
||||||
`/usr/local/lib/libMoltenVK.dylib`.
|
|
||||||
|
|
||||||
1. You must *remove* the existing `.dylib` file before copying the new one, because of the way
|
1. If your application does **_not_** use use `C++`, click the **+** button,
|
||||||
that the gatekeeper system works to prevent malicious overwriting of files in standard locations
|
and add `libc++.tbd` by selecting it from the list of system frameworks.
|
||||||
such as `/usr/local`:
|
This is needed because **MoltenVK** uses `C++` system libraries internally.
|
||||||
|
|
||||||
```bash
|
2. If you do **_not_** have the **Link Frameworks Automatically** (aka `CLANG_MODULES_AUTOLINK`) and
|
||||||
$ sudo rm /usr/local/lib/libMoltenVK.dylib
|
**Enable Modules (C and Objective-C)** (aka `CLANG_ENABLE_MODULES`) settings enabled, click the
|
||||||
$ sudo cp Package/Release/MoltenVK/dylib/macOS/libMoltenVK.dylib /usr/local/lib
|
**+** button, and add the following items by selecting them from the list of system frameworks:
|
||||||
```
|
- `Metal.framework`
|
||||||
|
- `Foundation.framework`.
|
||||||
|
- `QuartzCore.framework`
|
||||||
|
- `IOKit.framework` (*macOS*)
|
||||||
|
- `UIKit.framework` (*iOS* or *tvOS*)
|
||||||
|
- `IOSurface.framework` (*macOS*, or *iOS* if `IPHONEOS_DEPLOYMENT_TARGET` is at least `iOS 11.0`,
|
||||||
|
or *tvOS* if `TVOS_DEPLOYMENT_TARGET` is at least `tvOS 11.0`)
|
||||||
|
|
||||||
If you do not do the remove first, your application will terminate immediately with a
|
|
||||||
singularly unhelpful `Killed: 9` message. Alternatively, moving the existing `.dylib` to a
|
|
||||||
backup name and making a symbolic link to the Package location above is particularly useful
|
|
||||||
for repeated building and testing.
|
|
||||||
|
|
||||||
2. Do *not* copy the `MoltenVK_icd.json` file from the newly-built package to
|
|
||||||
`/usr/local/share/vulkan/icd.d` -- it will not work and will result in errors about not being
|
|
||||||
able to initialize the instance. The one installed by Vulkan SDK uses a relative path to
|
|
||||||
specify the location of the `.dylib`, whereas the one in the package specifies it in the same
|
|
||||||
directory.
|
|
||||||
|
|
||||||
3. The default config for command-line build has verbose logging info turned on -- if you want
|
|
||||||
it to be like the original, use this command for building:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ make macos MVK_CONFIG_LOG_LEVEL=1
|
|
||||||
```
|
|
||||||
|
|
||||||
<a name="requirements"></a>
|
<a name="requirements"></a>
|
||||||
### Build and Runtime Requirements
|
### Build and Runtime Requirements
|
||||||
|
@ -18,6 +18,10 @@ MoltenVK 1.2.8
|
|||||||
|
|
||||||
Released TBD
|
Released TBD
|
||||||
|
|
||||||
|
- Improve support for _iOS App Store_ rules by using dynamic _XCFramework_, instead of naked `dylib`.
|
||||||
|
- Static _XCFramework_ now available in `Package/Latest/MoltenVK/static/MoltenVK.xcframework`.
|
||||||
|
- Dynamic _XCFramework_ now available in `Package/Latest/MoltenVK/dynamic/MoltenVK.xcframework`.
|
||||||
|
- _macOS_ dynamic library now available in `Package/Latest/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib`.
|
||||||
- Add `MVK_USE_METAL_PRIVATE_API` build setting to allow **MoltenVK** to be built with access to _Metal_ private API calls.
|
- Add `MVK_USE_METAL_PRIVATE_API` build setting to allow **MoltenVK** to be built with access to _Metal_ private API calls.
|
||||||
- `VkPhysicalDeviceFeatures::wideLines` enabled when `MVK_USE_METAL_PRIVATE_API` is enabled in a **MoltenVK** build.
|
- `VkPhysicalDeviceFeatures::wideLines` enabled when `MVK_USE_METAL_PRIVATE_API` is enabled in a **MoltenVK** build.
|
||||||
- `VkPhysicalDeviceFeatures::logicOp` enabled when `MVK_USE_METAL_PRIVATE_API` is enabled in a **MoltenVK** build.
|
- `VkPhysicalDeviceFeatures::logicOp` enabled when `MVK_USE_METAL_PRIVATE_API` is enabled in a **MoltenVK** build.
|
||||||
@ -26,8 +30,6 @@ Released TBD
|
|||||||
- _Metal_ native pipeline sample masks supported when `MVK_USE_METAL_PRIVATE_API` is enabled in a **MoltenVK** build.
|
- _Metal_ native pipeline sample masks supported when `MVK_USE_METAL_PRIVATE_API` is enabled in a **MoltenVK** build.
|
||||||
- Fix potential crash when using multi-planar images.
|
- Fix potential crash when using multi-planar images.
|
||||||
- Ensure buffers available for buffer addresses in push constants.
|
- Ensure buffers available for buffer addresses in push constants.
|
||||||
- Support `libMoltenVK.dylib` for _iOS Simulator_ architecture.
|
|
||||||
- Restore support for _iOS Simulator_ destination in recent update to _Cube_ demo that uses dynamic-linking.
|
|
||||||
- Don't update `currentExtent` of headless surface when swapchain attached.
|
- Don't update `currentExtent` of headless surface when swapchain attached.
|
||||||
- `runcts` script also output a file containing a list of the failed CTS tests.
|
- `runcts` script also output a file containing a list of the failed CTS tests.
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
f2a16e3e19c2349b873343b2dc38a1d4c25af23a
|
fdf78c22c3e66a3c7ff62d8dcdcb5fcad023bec7
|
||||||
|
30
Makefile
30
Makefile
@ -71,11 +71,11 @@ iossim-debug:
|
|||||||
|
|
||||||
.PHONY: maccat
|
.PHONY: maccat
|
||||||
maccat:
|
maccat:
|
||||||
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (iOS only)" -destination "generic/platform=macOS,variant=Mac Catalyst" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
|
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (MacCat only)" -destination "generic/platform=macOS,variant=Mac Catalyst" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
|
||||||
|
|
||||||
.PHONY: maccat-debug
|
.PHONY: maccat-debug
|
||||||
maccat-debug:
|
maccat-debug:
|
||||||
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (iOS only)" -destination "generic/platform=macOS,variant=Mac Catalyst" -configuration "Debug" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
|
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (MacCat only)" -destination "generic/platform=macOS,variant=Mac Catalyst" -configuration "Debug" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
|
||||||
|
|
||||||
.PHONY: tvos
|
.PHONY: tvos
|
||||||
tvos:
|
tvos:
|
||||||
@ -117,27 +117,5 @@ clean:
|
|||||||
# Usually requires 'sudo make install'
|
# Usually requires 'sudo make install'
|
||||||
.PHONY: install
|
.PHONY: install
|
||||||
install:
|
install:
|
||||||
rm -rf /Library/Frameworks/MoltenVK.framework
|
$ rm -f /usr/local/lib/libMoltenVK.dylib
|
||||||
rm -rf /Library/Frameworks/MoltenVK.xcframework
|
$ cp -p Package/Latest/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib /usr/local/lib
|
||||||
cp -a Package/Latest/MoltenVK/MoltenVK.xcframework /Library/Frameworks/
|
|
||||||
|
|
||||||
# Deprecated target names
|
|
||||||
.PHONY: iosfat
|
|
||||||
iosfat:
|
|
||||||
@$(MAKE) ios
|
|
||||||
@$(MAKE) iossim
|
|
||||||
|
|
||||||
.PHONY: iosfat-debug
|
|
||||||
iosfat-debug:
|
|
||||||
@$(MAKE) ios-debug
|
|
||||||
@$(MAKE) iossim-debug
|
|
||||||
|
|
||||||
.PHONY: tvosfat
|
|
||||||
tvosfat:
|
|
||||||
@$(MAKE) tvos
|
|
||||||
@$(MAKE) tvossim
|
|
||||||
|
|
||||||
.PHONY: tvosfat-debug
|
|
||||||
tvosfat-debug:
|
|
||||||
@$(MAKE) tvos-debug
|
|
||||||
@$(MAKE) tvossim-debug
|
|
||||||
|
@ -1 +0,0 @@
|
|||||||
../Package/Latest/MoltenVK/MoltenVK.xcframework
|
|
File diff suppressed because it is too large
Load Diff
@ -14,9 +14,9 @@
|
|||||||
buildForAnalyzing = "YES">
|
buildForAnalyzing = "YES">
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "A9B8EE091A98D796009C5A02"
|
BlueprintIdentifier = "A9F4D96A2B8E7366004AD576"
|
||||||
BuildableName = "libMoltenVK.a"
|
BuildableName = "MoltenVK.framework"
|
||||||
BlueprintName = "MoltenVK-iOS"
|
BlueprintName = "MoltenVK-iOS-dynamic"
|
||||||
ReferencedContainer = "container:MoltenVK.xcodeproj">
|
ReferencedContainer = "container:MoltenVK.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildActionEntry>
|
</BuildActionEntry>
|
||||||
@ -45,15 +45,6 @@
|
|||||||
enableGPUValidationMode = "1"
|
enableGPUValidationMode = "1"
|
||||||
allowLocationSimulation = "NO"
|
allowLocationSimulation = "NO"
|
||||||
queueDebuggingEnabled = "No">
|
queueDebuggingEnabled = "No">
|
||||||
<MacroExpansion>
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "A9B8EE091A98D796009C5A02"
|
|
||||||
BuildableName = "libMoltenVK.a"
|
|
||||||
BlueprintName = "MoltenVK-iOS"
|
|
||||||
ReferencedContainer = "container:MoltenVK.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</MacroExpansion>
|
|
||||||
</LaunchAction>
|
</LaunchAction>
|
||||||
<ProfileAction
|
<ProfileAction
|
||||||
buildConfiguration = "Release"
|
buildConfiguration = "Release"
|
||||||
@ -61,15 +52,6 @@
|
|||||||
savedToolIdentifier = ""
|
savedToolIdentifier = ""
|
||||||
useCustomWorkingDirectory = "NO"
|
useCustomWorkingDirectory = "NO"
|
||||||
debugDocumentVersioning = "YES">
|
debugDocumentVersioning = "YES">
|
||||||
<MacroExpansion>
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "A9B8EE091A98D796009C5A02"
|
|
||||||
BuildableName = "libMoltenVK.a"
|
|
||||||
BlueprintName = "MoltenVK-iOS"
|
|
||||||
ReferencedContainer = "container:MoltenVK.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</MacroExpansion>
|
|
||||||
</ProfileAction>
|
</ProfileAction>
|
||||||
<AnalyzeAction
|
<AnalyzeAction
|
||||||
buildConfiguration = "Debug">
|
buildConfiguration = "Debug">
|
||||||
|
@ -14,9 +14,9 @@
|
|||||||
buildForAnalyzing = "YES">
|
buildForAnalyzing = "YES">
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "A9CBED861B6299D800E45FDC"
|
BlueprintIdentifier = "A9F4D9D92B8EC112004AD576"
|
||||||
BuildableName = "libMoltenVK.a"
|
BuildableName = "MoltenVK.framework"
|
||||||
BlueprintName = "MoltenVK-macOS"
|
BlueprintName = "MoltenVK-macOS-dynamic"
|
||||||
ReferencedContainer = "container:MoltenVK.xcodeproj">
|
ReferencedContainer = "container:MoltenVK.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildActionEntry>
|
</BuildActionEntry>
|
||||||
@ -45,15 +45,6 @@
|
|||||||
enableGPUValidationMode = "1"
|
enableGPUValidationMode = "1"
|
||||||
allowLocationSimulation = "NO"
|
allowLocationSimulation = "NO"
|
||||||
queueDebuggingEnabled = "No">
|
queueDebuggingEnabled = "No">
|
||||||
<MacroExpansion>
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "A9CBED861B6299D800E45FDC"
|
|
||||||
BuildableName = "libMoltenVK.a"
|
|
||||||
BlueprintName = "MoltenVK-macOS"
|
|
||||||
ReferencedContainer = "container:MoltenVK.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</MacroExpansion>
|
|
||||||
</LaunchAction>
|
</LaunchAction>
|
||||||
<ProfileAction
|
<ProfileAction
|
||||||
buildConfiguration = "Release"
|
buildConfiguration = "Release"
|
||||||
@ -61,15 +52,6 @@
|
|||||||
savedToolIdentifier = ""
|
savedToolIdentifier = ""
|
||||||
useCustomWorkingDirectory = "NO"
|
useCustomWorkingDirectory = "NO"
|
||||||
debugDocumentVersioning = "YES">
|
debugDocumentVersioning = "YES">
|
||||||
<MacroExpansion>
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "A9CBED861B6299D800E45FDC"
|
|
||||||
BuildableName = "libMoltenVK.a"
|
|
||||||
BlueprintName = "MoltenVK-macOS"
|
|
||||||
ReferencedContainer = "container:MoltenVK.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</MacroExpansion>
|
|
||||||
</ProfileAction>
|
</ProfileAction>
|
||||||
<AnalyzeAction
|
<AnalyzeAction
|
||||||
buildConfiguration = "Debug">
|
buildConfiguration = "Debug">
|
||||||
|
@ -14,9 +14,9 @@
|
|||||||
buildForAnalyzing = "YES">
|
buildForAnalyzing = "YES">
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "2FEA0A3B24902F9F00EEF3AD"
|
BlueprintIdentifier = "A9F4D99E2B8EB2FC004AD576"
|
||||||
BuildableName = "libMoltenVK.a"
|
BuildableName = "MoltenVK.framework"
|
||||||
BlueprintName = "MoltenVK-tvOS"
|
BlueprintName = "MoltenVK-tvOS-dynamic"
|
||||||
ReferencedContainer = "container:MoltenVK.xcodeproj">
|
ReferencedContainer = "container:MoltenVK.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildActionEntry>
|
</BuildActionEntry>
|
||||||
@ -40,15 +40,6 @@
|
|||||||
debugDocumentVersioning = "YES"
|
debugDocumentVersioning = "YES"
|
||||||
debugServiceExtension = "internal"
|
debugServiceExtension = "internal"
|
||||||
allowLocationSimulation = "YES">
|
allowLocationSimulation = "YES">
|
||||||
<MacroExpansion>
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "2FEA0A3B24902F9F00EEF3AD"
|
|
||||||
BuildableName = "libMoltenVK.a"
|
|
||||||
BlueprintName = "MoltenVK-tvOS"
|
|
||||||
ReferencedContainer = "container:MoltenVK.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</MacroExpansion>
|
|
||||||
</LaunchAction>
|
</LaunchAction>
|
||||||
<ProfileAction
|
<ProfileAction
|
||||||
buildConfiguration = "Release"
|
buildConfiguration = "Release"
|
||||||
@ -56,15 +47,6 @@
|
|||||||
savedToolIdentifier = ""
|
savedToolIdentifier = ""
|
||||||
useCustomWorkingDirectory = "NO"
|
useCustomWorkingDirectory = "NO"
|
||||||
debugDocumentVersioning = "YES">
|
debugDocumentVersioning = "YES">
|
||||||
<MacroExpansion>
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "2FEA0A3B24902F9F00EEF3AD"
|
|
||||||
BuildableName = "libMoltenVK.a"
|
|
||||||
BlueprintName = "MoltenVK-tvOS"
|
|
||||||
ReferencedContainer = "container:MoltenVK.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</MacroExpansion>
|
|
||||||
</ProfileAction>
|
</ProfileAction>
|
||||||
<AnalyzeAction
|
<AnalyzeAction
|
||||||
buildConfiguration = "Debug">
|
buildConfiguration = "Debug">
|
||||||
|
@ -14,9 +14,9 @@
|
|||||||
buildForAnalyzing = "YES">
|
buildForAnalyzing = "YES">
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "DCFD7EDF2A45BC6E007BBBF7"
|
BlueprintIdentifier = "A9F4D9BA2B8EB6DC004AD576"
|
||||||
BuildableName = "libMoltenVK.a"
|
BuildableName = "MoltenVK.framework"
|
||||||
BlueprintName = "MoltenVK-xrOS"
|
BlueprintName = "MoltenVK-xrOS-dynamic"
|
||||||
ReferencedContainer = "container:MoltenVK.xcodeproj">
|
ReferencedContainer = "container:MoltenVK.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildActionEntry>
|
</BuildActionEntry>
|
||||||
@ -46,15 +46,6 @@
|
|||||||
savedToolIdentifier = ""
|
savedToolIdentifier = ""
|
||||||
useCustomWorkingDirectory = "NO"
|
useCustomWorkingDirectory = "NO"
|
||||||
debugDocumentVersioning = "YES">
|
debugDocumentVersioning = "YES">
|
||||||
<MacroExpansion>
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "DCFD7EDF2A45BC6E007BBBF7"
|
|
||||||
BuildableName = "libMoltenVK.a"
|
|
||||||
BlueprintName = "MoltenVK-xrOS"
|
|
||||||
ReferencedContainer = "container:MoltenVK.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</MacroExpansion>
|
|
||||||
</ProfileAction>
|
</ProfileAction>
|
||||||
<AnalyzeAction
|
<AnalyzeAction
|
||||||
buildConfiguration = "Debug">
|
buildConfiguration = "Debug">
|
||||||
|
@ -44,7 +44,7 @@ typedef unsigned long MTLArgumentBuffersTier;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#define MVK_PRIVATE_API_VERSION 39
|
#define MVK_PRIVATE_API_VERSION 40
|
||||||
|
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
@ -66,9 +66,12 @@ typedef unsigned long MTLArgumentBuffersTier;
|
|||||||
#define MVK_VERSION_MINOR 2
|
#define MVK_VERSION_MINOR 2
|
||||||
#define MVK_VERSION_PATCH 8
|
#define MVK_VERSION_PATCH 8
|
||||||
|
|
||||||
#define MVK_MAKE_VERSION(major, minor, patch) (((major) * 10000) + ((minor) * 100) + (patch))
|
#define MVK_MAKE_VERSION(major, minor, patch) (((major) * 10000) + ((minor) * 100) + (patch))
|
||||||
#define MVK_VERSION MVK_MAKE_VERSION(MVK_VERSION_MAJOR, MVK_VERSION_MINOR, MVK_VERSION_PATCH)
|
#define MVK_VERSION MVK_MAKE_VERSION(MVK_VERSION_MAJOR, MVK_VERSION_MINOR, MVK_VERSION_PATCH)
|
||||||
|
|
||||||
|
#define MVK_STRINGIFY_IMPL(val) #val
|
||||||
|
#define MVK_STRINGIFY(val) MVK_STRINGIFY_IMPL(val)
|
||||||
|
#define MVK_VERSION_STRING (MVK_STRINGIFY(MVK_VERSION_MAJOR) "." MVK_STRINGIFY(MVK_VERSION_MINOR) "." MVK_STRINGIFY(MVK_VERSION_PATCH))
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark MoltenVK configuration
|
#pragma mark MoltenVK configuration
|
||||||
|
@ -946,10 +946,6 @@ void MVKGraphicsResourcesCommandEncoderState::markDirty() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !MVK_XCODE_15
|
|
||||||
static const NSUInteger MTLAttributeStrideStatic = NSUIntegerMax;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void MVKGraphicsResourcesCommandEncoderState::encodeImpl(uint32_t stage) {
|
void MVKGraphicsResourcesCommandEncoderState::encodeImpl(uint32_t stage) {
|
||||||
|
|
||||||
auto* pipeline = _cmdEncoder->getGraphicsPipeline();
|
auto* pipeline = _cmdEncoder->getGraphicsPipeline();
|
||||||
|
@ -539,7 +539,7 @@ void MVKPhysicalDevice::getProperties(VkPhysicalDeviceProperties2* properties) {
|
|||||||
supportedProps12.pNext = nullptr;
|
supportedProps12.pNext = nullptr;
|
||||||
supportedProps12.driverID = VK_DRIVER_ID_MOLTENVK;
|
supportedProps12.driverID = VK_DRIVER_ID_MOLTENVK;
|
||||||
strcpy(supportedProps12.driverName, kMVKMoltenVKDriverLayerName);
|
strcpy(supportedProps12.driverName, kMVKMoltenVKDriverLayerName);
|
||||||
strcpy(supportedProps12.driverInfo, mvkGetMoltenVKVersionString(MVK_VERSION).c_str());
|
strcpy(supportedProps12.driverInfo, MVK_VERSION_STRING);
|
||||||
supportedProps12.conformanceVersion.major = 0;
|
supportedProps12.conformanceVersion.major = 0;
|
||||||
supportedProps12.conformanceVersion.minor = 0;
|
supportedProps12.conformanceVersion.minor = 0;
|
||||||
supportedProps12.conformanceVersion.subminor = 0;
|
supportedProps12.conformanceVersion.subminor = 0;
|
||||||
|
@ -24,6 +24,8 @@
|
|||||||
#include "MVKOSExtensions.h"
|
#include "MVKOSExtensions.h"
|
||||||
#include "mvk_deprecated_api.h"
|
#include "mvk_deprecated_api.h"
|
||||||
|
|
||||||
|
#include <string_view>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
@ -769,9 +771,11 @@ void MVKInstance::initProcAddrs() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MVKInstance::logVersions() {
|
void MVKInstance::logVersions() {
|
||||||
|
static_assert(string_view(MVK_STRINGIFY(MVK_FRAMEWORK_VERSION)) == MVK_VERSION_STRING, "Xcode build setting CURRENT_PROJECT_VERSION must be identical to the MoltenVK version (MVK_VERSION_STRING).");
|
||||||
|
|
||||||
MVKExtensionList allExtns(this, true);
|
MVKExtensionList allExtns(this, true);
|
||||||
MVKLogInfo("MoltenVK version %s, supporting Vulkan version %s.\n\tThe following %d Vulkan extensions are supported:%s",
|
MVKLogInfo("MoltenVK version %s, supporting Vulkan version %s.\n\tThe following %d Vulkan extensions are supported:%s",
|
||||||
mvkGetMoltenVKVersionString(MVK_VERSION).c_str(),
|
MVK_VERSION_STRING,
|
||||||
mvkGetVulkanVersionString(getMVKConfig().apiVersionToAdvertise).c_str(),
|
mvkGetVulkanVersionString(getMVKConfig().apiVersionToAdvertise).c_str(),
|
||||||
allExtns.getEnabledCount(),
|
allExtns.getEnabledCount(),
|
||||||
allExtns.enabledNamesString("\n\t\t", true).c_str());
|
allExtns.enabledNamesString("\n\t\t", true).c_str());
|
||||||
|
@ -127,17 +127,6 @@ static inline std::string mvkGetVulkanVersionString(uint32_t vkVersion) {
|
|||||||
return verStr;
|
return verStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns the MoltenVK API version number as a string. */
|
|
||||||
static inline std::string mvkGetMoltenVKVersionString(uint32_t mvkVersion) {
|
|
||||||
std::string verStr;
|
|
||||||
verStr += std::to_string(mvkVersion / 10000);
|
|
||||||
verStr += ".";
|
|
||||||
verStr += std::to_string((mvkVersion % 10000) / 100);
|
|
||||||
verStr += ".";
|
|
||||||
verStr += std::to_string(mvkVersion % 100);
|
|
||||||
return verStr;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Alignment functions
|
#pragma mark Alignment functions
|
||||||
|
@ -106,7 +106,7 @@ MVK_PUBLIC_VULKAN_SYMBOL void vkGetVersionStringsMVK(
|
|||||||
|
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
string mvkVer = mvkGetMoltenVKVersionString(MVK_VERSION);
|
string mvkVer = MVK_VERSION_STRING;
|
||||||
len = mvkVer.copy(pMoltenVersionStringBuffer, moltenVersionStringBufferLength - 1);
|
len = mvkVer.copy(pMoltenVersionStringBuffer, moltenVersionStringBufferLength - 1);
|
||||||
pMoltenVersionStringBuffer[len] = 0; // terminator
|
pMoltenVersionStringBuffer[len] = 0; // terminator
|
||||||
|
|
||||||
|
@ -1 +0,0 @@
|
|||||||
../Package/Latest/MoltenVK/dylib
|
|
@ -3,7 +3,7 @@
|
|||||||
archiveVersion = 1;
|
archiveVersion = 1;
|
||||||
classes = {
|
classes = {
|
||||||
};
|
};
|
||||||
objectVersion = 48;
|
objectVersion = 54;
|
||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXAggregateTarget section */
|
/* Begin PBXAggregateTarget section */
|
||||||
@ -14,11 +14,23 @@
|
|||||||
2FEA0A3424902F5E00EEF3AD /* Package MoltenVK */,
|
2FEA0A3424902F5E00EEF3AD /* Package MoltenVK */,
|
||||||
);
|
);
|
||||||
dependencies = (
|
dependencies = (
|
||||||
2FEA0AC32490303F00EEF3AD /* PBXTargetDependency */,
|
A9F4D9B62B8EB63E004AD576 /* PBXTargetDependency */,
|
||||||
);
|
);
|
||||||
name = "MoltenVK-tvOS";
|
name = "MoltenVK-tvOS";
|
||||||
productName = Package;
|
productName = Package;
|
||||||
};
|
};
|
||||||
|
A91170FD2B9110050057AD37 /* MoltenVK-MacCat */ = {
|
||||||
|
isa = PBXAggregateTarget;
|
||||||
|
buildConfigurationList = A91171012B9110050057AD37 /* Build configuration list for PBXAggregateTarget "MoltenVK-MacCat" */;
|
||||||
|
buildPhases = (
|
||||||
|
A91171002B9110050057AD37 /* Package MoltenVK */,
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
A911710D2B9110380057AD37 /* PBXTargetDependency */,
|
||||||
|
);
|
||||||
|
name = "MoltenVK-MacCat";
|
||||||
|
productName = Package;
|
||||||
|
};
|
||||||
A975D5782140585200D4834F /* MoltenVK-iOS */ = {
|
A975D5782140585200D4834F /* MoltenVK-iOS */ = {
|
||||||
isa = PBXAggregateTarget;
|
isa = PBXAggregateTarget;
|
||||||
buildConfigurationList = A975D5882140585200D4834F /* Build configuration list for PBXAggregateTarget "MoltenVK-iOS" */;
|
buildConfigurationList = A975D5882140585200D4834F /* Build configuration list for PBXAggregateTarget "MoltenVK-iOS" */;
|
||||||
@ -26,7 +38,7 @@
|
|||||||
A975D5872140585200D4834F /* Package MoltenVK */,
|
A975D5872140585200D4834F /* Package MoltenVK */,
|
||||||
);
|
);
|
||||||
dependencies = (
|
dependencies = (
|
||||||
A975D5792140585200D4834F /* PBXTargetDependency */,
|
A9F4D99B2B8E8E1D004AD576 /* PBXTargetDependency */,
|
||||||
);
|
);
|
||||||
name = "MoltenVK-iOS";
|
name = "MoltenVK-iOS";
|
||||||
productName = Package;
|
productName = Package;
|
||||||
@ -38,7 +50,7 @@
|
|||||||
A975D59A2140586700D4834F /* Package MoltenVK */,
|
A975D59A2140586700D4834F /* Package MoltenVK */,
|
||||||
);
|
);
|
||||||
dependencies = (
|
dependencies = (
|
||||||
A975D58E2140586700D4834F /* PBXTargetDependency */,
|
A9F4D9F12B8EC210004AD576 /* PBXTargetDependency */,
|
||||||
);
|
);
|
||||||
name = "MoltenVK-macOS";
|
name = "MoltenVK-macOS";
|
||||||
productName = Package;
|
productName = Package;
|
||||||
@ -62,9 +74,9 @@
|
|||||||
A9B1008824F84BE400EADC6E /* Package MoltenVK */,
|
A9B1008824F84BE400EADC6E /* Package MoltenVK */,
|
||||||
);
|
);
|
||||||
dependencies = (
|
dependencies = (
|
||||||
A9B1008124F84BA700EADC6E /* PBXTargetDependency */,
|
A9F4D9F82B8EC22E004AD576 /* PBXTargetDependency */,
|
||||||
A9B1008324F84BA700EADC6E /* PBXTargetDependency */,
|
A9F4D9F62B8EC22E004AD576 /* PBXTargetDependency */,
|
||||||
A9B1008524F84BA700EADC6E /* PBXTargetDependency */,
|
A9F4D9FA2B8EC22E004AD576 /* PBXTargetDependency */,
|
||||||
);
|
);
|
||||||
name = MoltenVK;
|
name = MoltenVK;
|
||||||
productName = Package;
|
productName = Package;
|
||||||
@ -76,7 +88,7 @@
|
|||||||
DCFD7ED82A45BC56007BBBF7 /* Package MoltenVK */,
|
DCFD7ED82A45BC56007BBBF7 /* Package MoltenVK */,
|
||||||
);
|
);
|
||||||
dependencies = (
|
dependencies = (
|
||||||
DCFD7F682A45BC81007BBBF7 /* PBXTargetDependency */,
|
A9F4D9D52B8EBA14004AD576 /* PBXTargetDependency */,
|
||||||
);
|
);
|
||||||
name = "MoltenVK-xrOS";
|
name = "MoltenVK-xrOS";
|
||||||
productName = Package;
|
productName = Package;
|
||||||
@ -91,12 +103,12 @@
|
|||||||
remoteGlobalIDString = 2FEA0ABA24902F9F00EEF3AD;
|
remoteGlobalIDString = 2FEA0ABA24902F9F00EEF3AD;
|
||||||
remoteInfo = "MoltenVK-tvOS";
|
remoteInfo = "MoltenVK-tvOS";
|
||||||
};
|
};
|
||||||
2FEA0AC22490303F00EEF3AD /* PBXContainerItemProxy */ = {
|
A911710C2B9110380057AD37 /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
||||||
proxyType = 1;
|
proxyType = 1;
|
||||||
remoteGlobalIDString = 2FEA0A3B24902F9F00EEF3AD;
|
remoteGlobalIDString = A9B8EE091A98D796009C5A02;
|
||||||
remoteInfo = "MoltenVK-tvOS";
|
remoteInfo = "MoltenVK-iOS-static";
|
||||||
};
|
};
|
||||||
A92DB3F41CE0F72500FBC835 /* PBXContainerItemProxy */ = {
|
A92DB3F41CE0F72500FBC835 /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
@ -112,20 +124,6 @@
|
|||||||
remoteGlobalIDString = A9CBEE011B6299D800E45FDC;
|
remoteGlobalIDString = A9CBEE011B6299D800E45FDC;
|
||||||
remoteInfo = "MoltenVK-macOS";
|
remoteInfo = "MoltenVK-macOS";
|
||||||
};
|
};
|
||||||
A975D57A2140585200D4834F /* PBXContainerItemProxy */ = {
|
|
||||||
isa = PBXContainerItemProxy;
|
|
||||||
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
|
||||||
proxyType = 1;
|
|
||||||
remoteGlobalIDString = A9B8EE091A98D796009C5A02;
|
|
||||||
remoteInfo = "MoltenVK-iOS";
|
|
||||||
};
|
|
||||||
A975D58F2140586700D4834F /* PBXContainerItemProxy */ = {
|
|
||||||
isa = PBXContainerItemProxy;
|
|
||||||
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
|
||||||
proxyType = 1;
|
|
||||||
remoteGlobalIDString = A9CBED861B6299D800E45FDC;
|
|
||||||
remoteInfo = "MoltenVK-macOS";
|
|
||||||
};
|
|
||||||
A97D77552B24FBDF00E36932 /* PBXContainerItemProxy */ = {
|
A97D77552B24FBDF00E36932 /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = A92DB40E1CE0F89600FBC835 /* MoltenVKShaderConverter.xcodeproj */;
|
containerPortal = A92DB40E1CE0F89600FBC835 /* MoltenVKShaderConverter.xcodeproj */;
|
||||||
@ -161,26 +159,82 @@
|
|||||||
remoteGlobalIDString = A9092A8C1A81717B00051823;
|
remoteGlobalIDString = A9092A8C1A81717B00051823;
|
||||||
remoteInfo = MoltenVKShaderConverter;
|
remoteInfo = MoltenVKShaderConverter;
|
||||||
};
|
};
|
||||||
A9B1008024F84BA700EADC6E /* PBXContainerItemProxy */ = {
|
A9F4D9982B8E8CE0004AD576 /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
||||||
proxyType = 1;
|
proxyType = 2;
|
||||||
remoteGlobalIDString = A9B8EE091A98D796009C5A02;
|
remoteGlobalIDString = A9F4D96B2B8E7366004AD576;
|
||||||
remoteInfo = "MoltenVK-iOS";
|
remoteInfo = "MoltenVK-iOS-dynamic";
|
||||||
};
|
};
|
||||||
A9B1008224F84BA700EADC6E /* PBXContainerItemProxy */ = {
|
A9F4D99A2B8E8E1D004AD576 /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
||||||
proxyType = 1;
|
proxyType = 1;
|
||||||
remoteGlobalIDString = A9CBED861B6299D800E45FDC;
|
remoteGlobalIDString = A9F4D96A2B8E7366004AD576;
|
||||||
remoteInfo = "MoltenVK-macOS";
|
remoteInfo = "MoltenVK-iOS-dynamic";
|
||||||
};
|
};
|
||||||
A9B1008424F84BA700EADC6E /* PBXContainerItemProxy */ = {
|
A9F4D9B52B8EB63E004AD576 /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
||||||
proxyType = 1;
|
proxyType = 1;
|
||||||
remoteGlobalIDString = 2FEA0A3B24902F9F00EEF3AD;
|
remoteGlobalIDString = A9F4D99E2B8EB2FC004AD576;
|
||||||
remoteInfo = "MoltenVK-tvOS";
|
remoteInfo = "MoltenVK-tvOS-dynamic";
|
||||||
|
};
|
||||||
|
A9F4D9B82B8EB63E004AD576 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
||||||
|
proxyType = 2;
|
||||||
|
remoteGlobalIDString = A9F4D9B22B8EB2FC004AD576;
|
||||||
|
remoteInfo = "MoltenVK-tvOS-dynamic";
|
||||||
|
};
|
||||||
|
A9F4D9D42B8EBA14004AD576 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = A9F4D9BA2B8EB6DC004AD576;
|
||||||
|
remoteInfo = "MoltenVK-xrOS-dynamic";
|
||||||
|
};
|
||||||
|
A9F4D9D72B8EBA14004AD576 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
||||||
|
proxyType = 2;
|
||||||
|
remoteGlobalIDString = A9F4D9CE2B8EB6DC004AD576;
|
||||||
|
remoteInfo = "MoltenVK-xrOS-dynamic";
|
||||||
|
};
|
||||||
|
A9F4D9F02B8EC210004AD576 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = A9F4D9D92B8EC112004AD576;
|
||||||
|
remoteInfo = "MoltenVK-macOS-dynamic";
|
||||||
|
};
|
||||||
|
A9F4D9F32B8EC210004AD576 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
||||||
|
proxyType = 2;
|
||||||
|
remoteGlobalIDString = A9F4D9ED2B8EC112004AD576;
|
||||||
|
remoteInfo = "MoltenVK-macOS-dynamic";
|
||||||
|
};
|
||||||
|
A9F4D9F52B8EC22E004AD576 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = A9F4D96A2B8E7366004AD576;
|
||||||
|
remoteInfo = "MoltenVK-iOS-dynamic";
|
||||||
|
};
|
||||||
|
A9F4D9F72B8EC22E004AD576 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = A9F4D9D92B8EC112004AD576;
|
||||||
|
remoteInfo = "MoltenVK-macOS-dynamic";
|
||||||
|
};
|
||||||
|
A9F4D9F92B8EC22E004AD576 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = A9F4D99E2B8EB2FC004AD576;
|
||||||
|
remoteInfo = "MoltenVK-tvOS-dynamic";
|
||||||
};
|
};
|
||||||
A9FC5F5C249D2547003CB086 /* PBXContainerItemProxy */ = {
|
A9FC5F5C249D2547003CB086 /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
@ -196,13 +250,6 @@
|
|||||||
remoteGlobalIDString = DCFD7F622A45BC6E007BBBF7;
|
remoteGlobalIDString = DCFD7F622A45BC6E007BBBF7;
|
||||||
remoteInfo = "MoltenVK-xrOS";
|
remoteInfo = "MoltenVK-xrOS";
|
||||||
};
|
};
|
||||||
DCFD7F672A45BC81007BBBF7 /* PBXContainerItemProxy */ = {
|
|
||||||
isa = PBXContainerItemProxy;
|
|
||||||
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
|
|
||||||
proxyType = 1;
|
|
||||||
remoteGlobalIDString = DCFD7EDF2A45BC6E007BBBF7;
|
|
||||||
remoteInfo = "MoltenVK-xrOS";
|
|
||||||
};
|
|
||||||
/* End PBXContainerItemProxy section */
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
@ -218,20 +265,16 @@
|
|||||||
A92EF7CB21856EA300C8B91B /* package_shader_converter_xcframework.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_shader_converter_xcframework.sh; sourceTree = "<group>"; };
|
A92EF7CB21856EA300C8B91B /* package_shader_converter_xcframework.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_shader_converter_xcframework.sh; sourceTree = "<group>"; };
|
||||||
A92EF7DE2186451700C8B91B /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; name = Makefile; path = ../Makefile; sourceTree = "<group>"; };
|
A92EF7DE2186451700C8B91B /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; name = Makefile; path = ../Makefile; sourceTree = "<group>"; };
|
||||||
A93ED4DE24F59CDB00FEB018 /* copy_lib_to_staging.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = copy_lib_to_staging.sh; sourceTree = "<group>"; };
|
A93ED4DE24F59CDB00FEB018 /* copy_lib_to_staging.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = copy_lib_to_staging.sh; sourceTree = "<group>"; };
|
||||||
A93ED4E324F59CDB00FEB018 /* copy_to_staging.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = copy_to_staging.sh; sourceTree = "<group>"; };
|
|
||||||
A975D55C213F25D700D4834F /* create_dylib.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = create_dylib.sh; sourceTree = "<group>"; };
|
|
||||||
A97D77502B24FBDF00E36932 /* MoltenVK_Configuration_Parameters.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; name = MoltenVK_Configuration_Parameters.md; path = Docs/MoltenVK_Configuration_Parameters.md; sourceTree = "<group>"; };
|
A97D77502B24FBDF00E36932 /* MoltenVK_Configuration_Parameters.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; name = MoltenVK_Configuration_Parameters.md; path = Docs/MoltenVK_Configuration_Parameters.md; sourceTree = "<group>"; };
|
||||||
A980A25F24C628F3007A8F6F /* gen_moltenvk_rev_hdr.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = gen_moltenvk_rev_hdr.sh; sourceTree = "<group>"; };
|
A980A25F24C628F3007A8F6F /* gen_moltenvk_rev_hdr.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = gen_moltenvk_rev_hdr.sh; sourceTree = "<group>"; };
|
||||||
A98149E51FB78829005F00B4 /* MoltenVK_Runtime_UserGuide.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; name = MoltenVK_Runtime_UserGuide.md; path = Docs/MoltenVK_Runtime_UserGuide.md; sourceTree = "<group>"; };
|
A98149E51FB78829005F00B4 /* MoltenVK_Runtime_UserGuide.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; name = MoltenVK_Runtime_UserGuide.md; path = Docs/MoltenVK_Runtime_UserGuide.md; sourceTree = "<group>"; };
|
||||||
A9A15AA625D6D884004EEBE9 /* CI.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; name = CI.yml; path = .github/workflows/CI.yml; sourceTree = "<group>"; };
|
A9A15AA625D6D884004EEBE9 /* CI.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; name = CI.yml; path = .github/workflows/CI.yml; sourceTree = "<group>"; };
|
||||||
A9B1007A24F837AF00EADC6E /* create_xcframework_func.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = create_xcframework_func.sh; sourceTree = "<group>"; };
|
A9B1007A24F837AF00EADC6E /* create_xcframework_func.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = create_xcframework_func.sh; sourceTree = "<group>"; };
|
||||||
A9C70F41221B04C800FBA31A /* create_dylib_macos.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = create_dylib_macos.sh; sourceTree = "<group>"; };
|
|
||||||
A9C70F45221B04C800FBA31A /* create_dylib_ios.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = create_dylib_ios.sh; sourceTree = "<group>"; };
|
|
||||||
A9CBBFF924F8A1EB006D41EF /* package_moltenvk_xcframework.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_moltenvk_xcframework.sh; sourceTree = "<group>"; };
|
A9CBBFF924F8A1EB006D41EF /* package_moltenvk_xcframework.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_moltenvk_xcframework.sh; sourceTree = "<group>"; };
|
||||||
A9DA8341218A198C002AA662 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = "<group>"; };
|
A9DA8341218A198C002AA662 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = "<group>"; };
|
||||||
A9DDBF8C26827F02005DD991 /* runcts */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = runcts; sourceTree = "<group>"; };
|
A9DDBF8C26827F02005DD991 /* runcts */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = runcts; sourceTree = "<group>"; };
|
||||||
|
A9F4D8942B8D4F81004AD576 /* copy_to_staging.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = copy_to_staging.sh; sourceTree = "<group>"; };
|
||||||
A9FC5F60249D2ED3003CB086 /* package_all.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_all.sh; sourceTree = "<group>"; };
|
A9FC5F60249D2ED3003CB086 /* package_all.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_all.sh; sourceTree = "<group>"; };
|
||||||
A9FC5F64249D3778003CB086 /* create_dylib_tvos.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = create_dylib_tvos.sh; sourceTree = "<group>"; };
|
|
||||||
A9FE05632B697AE400208814 /* get_failing_cts_tests.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = get_failing_cts_tests.py; sourceTree = "<group>"; };
|
A9FE05632B697AE400208814 /* get_failing_cts_tests.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = get_failing_cts_tests.py; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
@ -244,6 +287,7 @@
|
|||||||
A975D55B213F25AD00D4834F /* Scripts */,
|
A975D55B213F25AD00D4834F /* Scripts */,
|
||||||
A92DB3E11CE0F34500FBC835 /* Docs */,
|
A92DB3E11CE0F34500FBC835 /* Docs */,
|
||||||
A9DA833F218A193F002AA662 /* Git */,
|
A9DA833F218A193F002AA662 /* Git */,
|
||||||
|
A9F4D9582B8E7345004AD576 /* Products */,
|
||||||
);
|
);
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
@ -262,10 +306,14 @@
|
|||||||
A92DB3EF1CE0F72500FBC835 /* Products */ = {
|
A92DB3EF1CE0F72500FBC835 /* Products */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
A92DB3F51CE0F72500FBC835 /* libMoltenVK.a */,
|
|
||||||
2FEA0ABE2490302F00EEF3AD /* libMoltenVK.a */,
|
|
||||||
A92DB3F71CE0F72500FBC835 /* libMoltenVK.a */,
|
A92DB3F71CE0F72500FBC835 /* libMoltenVK.a */,
|
||||||
|
A9F4D9F42B8EC210004AD576 /* MoltenVK.framework */,
|
||||||
|
A92DB3F51CE0F72500FBC835 /* libMoltenVK.a */,
|
||||||
|
A9F4D9992B8E8CE0004AD576 /* MoltenVK.framework */,
|
||||||
|
2FEA0ABE2490302F00EEF3AD /* libMoltenVK.a */,
|
||||||
|
A9F4D9B92B8EB63E004AD576 /* MoltenVK.framework */,
|
||||||
DCFD7F662A45BC7D007BBBF7 /* libMoltenVK.a */,
|
DCFD7F662A45BC7D007BBBF7 /* libMoltenVK.a */,
|
||||||
|
A9F4D9D82B8EBA14004AD576 /* MoltenVK.framework */,
|
||||||
);
|
);
|
||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -273,12 +321,8 @@
|
|||||||
A975D55B213F25AD00D4834F /* Scripts */ = {
|
A975D55B213F25AD00D4834F /* Scripts */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
A93ED4E324F59CDB00FEB018 /* copy_to_staging.sh */,
|
A9F4D8942B8D4F81004AD576 /* copy_to_staging.sh */,
|
||||||
A93ED4DE24F59CDB00FEB018 /* copy_lib_to_staging.sh */,
|
A93ED4DE24F59CDB00FEB018 /* copy_lib_to_staging.sh */,
|
||||||
A9C70F45221B04C800FBA31A /* create_dylib_ios.sh */,
|
|
||||||
A9C70F41221B04C800FBA31A /* create_dylib_macos.sh */,
|
|
||||||
A9FC5F64249D3778003CB086 /* create_dylib_tvos.sh */,
|
|
||||||
A975D55C213F25D700D4834F /* create_dylib.sh */,
|
|
||||||
A9B1007A24F837AF00EADC6E /* create_xcframework_func.sh */,
|
A9B1007A24F837AF00EADC6E /* create_xcframework_func.sh */,
|
||||||
A980A25F24C628F3007A8F6F /* gen_moltenvk_rev_hdr.sh */,
|
A980A25F24C628F3007A8F6F /* gen_moltenvk_rev_hdr.sh */,
|
||||||
A9FE05632B697AE400208814 /* get_failing_cts_tests.py */,
|
A9FE05632B697AE400208814 /* get_failing_cts_tests.py */,
|
||||||
@ -316,6 +360,13 @@
|
|||||||
name = Git;
|
name = Git;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
A9F4D9582B8E7345004AD576 /* Products */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
);
|
||||||
|
name = Products;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXProject section */
|
/* Begin PBXProject section */
|
||||||
@ -338,6 +389,7 @@
|
|||||||
Base,
|
Base,
|
||||||
);
|
);
|
||||||
mainGroup = A90B2B1C1A9B6170008EE819;
|
mainGroup = A90B2B1C1A9B6170008EE819;
|
||||||
|
productRefGroup = A9F4D9582B8E7345004AD576 /* Products */;
|
||||||
projectDirPath = "";
|
projectDirPath = "";
|
||||||
projectReferences = (
|
projectReferences = (
|
||||||
{
|
{
|
||||||
@ -355,8 +407,9 @@
|
|||||||
A975D5782140585200D4834F /* MoltenVK-iOS */,
|
A975D5782140585200D4834F /* MoltenVK-iOS */,
|
||||||
2FEA0A2F24902F5E00EEF3AD /* MoltenVK-tvOS */,
|
2FEA0A2F24902F5E00EEF3AD /* MoltenVK-tvOS */,
|
||||||
A975D58B2140586700D4834F /* MoltenVK-macOS */,
|
A975D58B2140586700D4834F /* MoltenVK-macOS */,
|
||||||
A9AD700D2440ED3B00B9E254 /* MVKShaderConverterTool */,
|
|
||||||
DCFD7ED52A45BC56007BBBF7 /* MoltenVK-xrOS */,
|
DCFD7ED52A45BC56007BBBF7 /* MoltenVK-xrOS */,
|
||||||
|
A91170FD2B9110050057AD37 /* MoltenVK-MacCat */,
|
||||||
|
A9AD700D2440ED3B00B9E254 /* MVKShaderConverterTool */,
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
/* End PBXProject section */
|
/* End PBXProject section */
|
||||||
@ -411,6 +464,34 @@
|
|||||||
remoteRef = A98149921FB6B566005F00B4 /* PBXContainerItemProxy */;
|
remoteRef = A98149921FB6B566005F00B4 /* PBXContainerItemProxy */;
|
||||||
sourceTree = BUILT_PRODUCTS_DIR;
|
sourceTree = BUILT_PRODUCTS_DIR;
|
||||||
};
|
};
|
||||||
|
A9F4D9992B8E8CE0004AD576 /* MoltenVK.framework */ = {
|
||||||
|
isa = PBXReferenceProxy;
|
||||||
|
fileType = wrapper.framework;
|
||||||
|
path = MoltenVK.framework;
|
||||||
|
remoteRef = A9F4D9982B8E8CE0004AD576 /* PBXContainerItemProxy */;
|
||||||
|
sourceTree = BUILT_PRODUCTS_DIR;
|
||||||
|
};
|
||||||
|
A9F4D9B92B8EB63E004AD576 /* MoltenVK.framework */ = {
|
||||||
|
isa = PBXReferenceProxy;
|
||||||
|
fileType = wrapper.framework;
|
||||||
|
path = MoltenVK.framework;
|
||||||
|
remoteRef = A9F4D9B82B8EB63E004AD576 /* PBXContainerItemProxy */;
|
||||||
|
sourceTree = BUILT_PRODUCTS_DIR;
|
||||||
|
};
|
||||||
|
A9F4D9D82B8EBA14004AD576 /* MoltenVK.framework */ = {
|
||||||
|
isa = PBXReferenceProxy;
|
||||||
|
fileType = wrapper.framework;
|
||||||
|
path = MoltenVK.framework;
|
||||||
|
remoteRef = A9F4D9D72B8EBA14004AD576 /* PBXContainerItemProxy */;
|
||||||
|
sourceTree = BUILT_PRODUCTS_DIR;
|
||||||
|
};
|
||||||
|
A9F4D9F42B8EC210004AD576 /* MoltenVK.framework */ = {
|
||||||
|
isa = PBXReferenceProxy;
|
||||||
|
fileType = wrapper.framework;
|
||||||
|
path = MoltenVK.framework;
|
||||||
|
remoteRef = A9F4D9F32B8EC210004AD576 /* PBXContainerItemProxy */;
|
||||||
|
sourceTree = BUILT_PRODUCTS_DIR;
|
||||||
|
};
|
||||||
A9FC5F5D249D2547003CB086 /* libMoltenVKShaderConverter.a */ = {
|
A9FC5F5D249D2547003CB086 /* libMoltenVKShaderConverter.a */ = {
|
||||||
isa = PBXReferenceProxy;
|
isa = PBXReferenceProxy;
|
||||||
fileType = archive.ar;
|
fileType = archive.ar;
|
||||||
@ -430,11 +511,29 @@
|
|||||||
/* Begin PBXShellScriptBuildPhase section */
|
/* Begin PBXShellScriptBuildPhase section */
|
||||||
2FEA0A3424902F5E00EEF3AD /* Package MoltenVK */ = {
|
2FEA0A3424902F5E00EEF3AD /* Package MoltenVK */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
alwaysOutOfDate = 1;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${BUILT_PRODUCTS_DIR}/../XCFrameworkStaging",
|
"${BUILD_DIR}/XCFrameworkStaging",
|
||||||
|
);
|
||||||
|
name = "Package MoltenVK";
|
||||||
|
outputPaths = (
|
||||||
|
"$(DERIVED_FILE_DIR)/$(TARGET_NAME)/PackagePhaseDummyOutputFile",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = ". \"${SRCROOT}/Scripts/package_all.sh\"\n";
|
||||||
|
};
|
||||||
|
A91171002B9110050057AD37 /* Package MoltenVK */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
alwaysOutOfDate = 1;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${BUILD_DIR}/XCFrameworkStaging",
|
||||||
);
|
);
|
||||||
name = "Package MoltenVK";
|
name = "Package MoltenVK";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
@ -446,11 +545,12 @@
|
|||||||
};
|
};
|
||||||
A975D5872140585200D4834F /* Package MoltenVK */ = {
|
A975D5872140585200D4834F /* Package MoltenVK */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
alwaysOutOfDate = 1;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${BUILT_PRODUCTS_DIR}/../XCFrameworkStaging",
|
"${BUILD_DIR}/XCFrameworkStaging",
|
||||||
);
|
);
|
||||||
name = "Package MoltenVK";
|
name = "Package MoltenVK";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
@ -462,11 +562,12 @@
|
|||||||
};
|
};
|
||||||
A975D59A2140586700D4834F /* Package MoltenVK */ = {
|
A975D59A2140586700D4834F /* Package MoltenVK */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
alwaysOutOfDate = 1;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${BUILT_PRODUCTS_DIR}/../XCFrameworkStaging",
|
"${BUILD_DIR}/XCFrameworkStaging",
|
||||||
);
|
);
|
||||||
name = "Package MoltenVK";
|
name = "Package MoltenVK";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
@ -478,11 +579,12 @@
|
|||||||
};
|
};
|
||||||
A9AD70122440ED3B00B9E254 /* Package MoltenVK */ = {
|
A9AD70122440ED3B00B9E254 /* Package MoltenVK */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
alwaysOutOfDate = 1;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${BUILT_PRODUCTS_DIR}/../XCFrameworkStaging",
|
"${BUILD_DIR}/XCFrameworkStaging",
|
||||||
);
|
);
|
||||||
name = "Package MoltenVK";
|
name = "Package MoltenVK";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
@ -494,13 +596,14 @@
|
|||||||
};
|
};
|
||||||
A9B1008824F84BE400EADC6E /* Package MoltenVK */ = {
|
A9B1008824F84BE400EADC6E /* Package MoltenVK */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
alwaysOutOfDate = 1;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputFileListPaths = (
|
inputFileListPaths = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${BUILT_PRODUCTS_DIR}/../XCFrameworkStaging",
|
"${BUILD_DIR}/XCFrameworkStaging",
|
||||||
);
|
);
|
||||||
name = "Package MoltenVK";
|
name = "Package MoltenVK";
|
||||||
outputFileListPaths = (
|
outputFileListPaths = (
|
||||||
@ -514,11 +617,12 @@
|
|||||||
};
|
};
|
||||||
DCFD7ED82A45BC56007BBBF7 /* Package MoltenVK */ = {
|
DCFD7ED82A45BC56007BBBF7 /* Package MoltenVK */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
alwaysOutOfDate = 1;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${BUILT_PRODUCTS_DIR}/../XCFrameworkStaging",
|
"${BUILD_DIR}/XCFrameworkStaging",
|
||||||
);
|
);
|
||||||
name = "Package MoltenVK";
|
name = "Package MoltenVK";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
@ -531,45 +635,50 @@
|
|||||||
/* End PBXShellScriptBuildPhase section */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXTargetDependency section */
|
/* Begin PBXTargetDependency section */
|
||||||
2FEA0AC32490303F00EEF3AD /* PBXTargetDependency */ = {
|
A911710D2B9110380057AD37 /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
name = "MoltenVK-tvOS";
|
name = "MoltenVK-iOS-static";
|
||||||
targetProxy = 2FEA0AC22490303F00EEF3AD /* PBXContainerItemProxy */;
|
targetProxy = A911710C2B9110380057AD37 /* PBXContainerItemProxy */;
|
||||||
};
|
|
||||||
A975D5792140585200D4834F /* PBXTargetDependency */ = {
|
|
||||||
isa = PBXTargetDependency;
|
|
||||||
name = "MoltenVK-iOS";
|
|
||||||
targetProxy = A975D57A2140585200D4834F /* PBXContainerItemProxy */;
|
|
||||||
};
|
|
||||||
A975D58E2140586700D4834F /* PBXTargetDependency */ = {
|
|
||||||
isa = PBXTargetDependency;
|
|
||||||
name = "MoltenVK-macOS";
|
|
||||||
targetProxy = A975D58F2140586700D4834F /* PBXContainerItemProxy */;
|
|
||||||
};
|
};
|
||||||
A9AD70102440ED3B00B9E254 /* PBXTargetDependency */ = {
|
A9AD70102440ED3B00B9E254 /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
name = MoltenVKShaderConverter;
|
name = MoltenVKShaderConverter;
|
||||||
targetProxy = A9AD70112440ED3B00B9E254 /* PBXContainerItemProxy */;
|
targetProxy = A9AD70112440ED3B00B9E254 /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
A9B1008124F84BA700EADC6E /* PBXTargetDependency */ = {
|
A9F4D99B2B8E8E1D004AD576 /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
name = "MoltenVK-iOS";
|
name = "MoltenVK-iOS-dynamic";
|
||||||
targetProxy = A9B1008024F84BA700EADC6E /* PBXContainerItemProxy */;
|
targetProxy = A9F4D99A2B8E8E1D004AD576 /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
A9B1008324F84BA700EADC6E /* PBXTargetDependency */ = {
|
A9F4D9B62B8EB63E004AD576 /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
name = "MoltenVK-macOS";
|
name = "MoltenVK-tvOS-dynamic";
|
||||||
targetProxy = A9B1008224F84BA700EADC6E /* PBXContainerItemProxy */;
|
targetProxy = A9F4D9B52B8EB63E004AD576 /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
A9B1008524F84BA700EADC6E /* PBXTargetDependency */ = {
|
A9F4D9D52B8EBA14004AD576 /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
name = "MoltenVK-tvOS";
|
name = "MoltenVK-xrOS-dynamic";
|
||||||
targetProxy = A9B1008424F84BA700EADC6E /* PBXContainerItemProxy */;
|
targetProxy = A9F4D9D42B8EBA14004AD576 /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
DCFD7F682A45BC81007BBBF7 /* PBXTargetDependency */ = {
|
A9F4D9F12B8EC210004AD576 /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
name = "MoltenVK-xrOS";
|
name = "MoltenVK-macOS-dynamic";
|
||||||
targetProxy = DCFD7F672A45BC81007BBBF7 /* PBXContainerItemProxy */;
|
targetProxy = A9F4D9F02B8EC210004AD576 /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
|
A9F4D9F62B8EC22E004AD576 /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
name = "MoltenVK-iOS-dynamic";
|
||||||
|
targetProxy = A9F4D9F52B8EC22E004AD576 /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
|
A9F4D9F82B8EC22E004AD576 /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
name = "MoltenVK-macOS-dynamic";
|
||||||
|
targetProxy = A9F4D9F72B8EC22E004AD576 /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
|
A9F4D9FA2B8EC22E004AD576 /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
name = "MoltenVK-tvOS-dynamic";
|
||||||
|
targetProxy = A9F4D9F92B8EC22E004AD576 /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
/* End PBXTargetDependency section */
|
/* End PBXTargetDependency section */
|
||||||
|
|
||||||
@ -602,6 +711,20 @@
|
|||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
A91171022B9110050057AD37 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
A91171032B9110050057AD37 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
A975D5892140585200D4834F /* Debug */ = {
|
A975D5892140585200D4834F /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
@ -693,6 +816,15 @@
|
|||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = Release;
|
||||||
};
|
};
|
||||||
|
A91171012B9110050057AD37 /* Build configuration list for PBXAggregateTarget "MoltenVK-MacCat" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
A91171022B9110050057AD37 /* Debug */,
|
||||||
|
A91171032B9110050057AD37 /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
A975D5882140585200D4834F /* Build configuration list for PBXAggregateTarget "MoltenVK-iOS" */ = {
|
A975D5882140585200D4834F /* Build configuration list for PBXAggregateTarget "MoltenVK-iOS" */ = {
|
||||||
isa = XCConfigurationList;
|
isa = XCConfigurationList;
|
||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
|
@ -0,0 +1,63 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Scheme
|
||||||
|
LastUpgradeVersion = "1410"
|
||||||
|
version = "2.0">
|
||||||
|
<BuildAction
|
||||||
|
parallelizeBuildables = "YES"
|
||||||
|
buildImplicitDependencies = "YES">
|
||||||
|
<BuildActionEntries>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "A91170FD2B9110050057AD37"
|
||||||
|
BuildableName = "MoltenVK-MacCat"
|
||||||
|
BlueprintName = "MoltenVK-MacCat"
|
||||||
|
ReferencedContainer = "container:MoltenVKPackaging.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
</BuildActionEntries>
|
||||||
|
</BuildAction>
|
||||||
|
<TestAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||||
|
<Testables>
|
||||||
|
</Testables>
|
||||||
|
</TestAction>
|
||||||
|
<LaunchAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
disableMainThreadChecker = "YES"
|
||||||
|
launchStyle = "0"
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
debugDocumentVersioning = "NO"
|
||||||
|
debugXPCServices = "NO"
|
||||||
|
debugServiceExtension = "internal"
|
||||||
|
enableGPUFrameCaptureMode = "3"
|
||||||
|
enableGPUValidationMode = "1"
|
||||||
|
allowLocationSimulation = "NO"
|
||||||
|
queueDebuggingEnabled = "No">
|
||||||
|
</LaunchAction>
|
||||||
|
<ProfileAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
savedToolIdentifier = ""
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
debugDocumentVersioning = "YES">
|
||||||
|
</ProfileAction>
|
||||||
|
<AnalyzeAction
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
</AnalyzeAction>
|
||||||
|
<ArchiveAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
revealArchiveInOrganizer = "YES">
|
||||||
|
</ArchiveAction>
|
||||||
|
</Scheme>
|
@ -1 +0,0 @@
|
|||||||
../Package/Latest/MoltenVKShaderConverter/MoltenVKShaderConverter.xcframework
|
|
@ -114,6 +114,7 @@
|
|||||||
A9546B232672A3B8004BA3E6 /* SPIRVSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SPIRVSupport.cpp; sourceTree = "<group>"; };
|
A9546B232672A3B8004BA3E6 /* SPIRVSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SPIRVSupport.cpp; sourceTree = "<group>"; };
|
||||||
A9546B242672A3B8004BA3E6 /* SPIRVSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPIRVSupport.h; sourceTree = "<group>"; };
|
A9546B242672A3B8004BA3E6 /* SPIRVSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPIRVSupport.h; sourceTree = "<group>"; };
|
||||||
A964BD5F1C57EFBD00D930D8 /* MoltenVKShaderConverter */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = MoltenVKShaderConverter; sourceTree = BUILT_PRODUCTS_DIR; };
|
A964BD5F1C57EFBD00D930D8 /* MoltenVKShaderConverter */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = MoltenVKShaderConverter; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
A979A9152B9174EA00F69E67 /* libMoltenVKShaderConverter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libMoltenVKShaderConverter.a; path = "/Users/bill/Documents/Dev/iOSProjects/Molten/MoltenVK-bh/MoltenVKShaderConverter/build/Debug-xros/libMoltenVKShaderConverter.a"; sourceTree = "<absolute>"; };
|
||||||
A97CC73D1C7527F3004A5C7E /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
|
A97CC73D1C7527F3004A5C7E /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
|
||||||
A97CC73E1C7527F3004A5C7E /* MoltenVKShaderConverterTool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MoltenVKShaderConverterTool.cpp; sourceTree = "<group>"; };
|
A97CC73E1C7527F3004A5C7E /* MoltenVKShaderConverterTool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MoltenVKShaderConverterTool.cpp; sourceTree = "<group>"; };
|
||||||
A97CC73F1C7527F3004A5C7E /* MoltenVKShaderConverterTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MoltenVKShaderConverterTool.h; sourceTree = "<group>"; };
|
A97CC73F1C7527F3004A5C7E /* MoltenVKShaderConverterTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MoltenVKShaderConverterTool.h; sourceTree = "<group>"; };
|
||||||
@ -125,7 +126,6 @@
|
|||||||
A9B51BDB225E98BB00AC74D2 /* MVKOSExtensions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MVKOSExtensions.mm; sourceTree = "<group>"; };
|
A9B51BDB225E98BB00AC74D2 /* MVKOSExtensions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MVKOSExtensions.mm; sourceTree = "<group>"; };
|
||||||
A9B51BDC225E98BB00AC74D2 /* MVKOSExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MVKOSExtensions.h; sourceTree = "<group>"; };
|
A9B51BDC225E98BB00AC74D2 /* MVKOSExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MVKOSExtensions.h; sourceTree = "<group>"; };
|
||||||
A9F042AA1FB4D060009FCCB8 /* MVKCommonEnvironment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MVKCommonEnvironment.h; sourceTree = "<group>"; };
|
A9F042AA1FB4D060009FCCB8 /* MVKCommonEnvironment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MVKCommonEnvironment.h; sourceTree = "<group>"; };
|
||||||
DCFD7F882A45BDA0007BBBF7 /* libMoltenVKShaderConverter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMoltenVKShaderConverter.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@ -256,7 +256,6 @@
|
|||||||
A9F042A81FB4D060009FCCB8 /* Common */,
|
A9F042A81FB4D060009FCCB8 /* Common */,
|
||||||
A964B28D1C57EBC400D930D8 /* Products */,
|
A964B28D1C57EBC400D930D8 /* Products */,
|
||||||
A972AD2921CEE6A80013AB25 /* Frameworks */,
|
A972AD2921CEE6A80013AB25 /* Frameworks */,
|
||||||
DCFD7F882A45BDA0007BBBF7 /* libMoltenVKShaderConverter.a */,
|
|
||||||
);
|
);
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
@ -412,7 +411,7 @@
|
|||||||
);
|
);
|
||||||
name = "MoltenVKShaderConverter-xrOS";
|
name = "MoltenVKShaderConverter-xrOS";
|
||||||
productName = "MetalGLShaderConverter-macOS";
|
productName = "MetalGLShaderConverter-macOS";
|
||||||
productReference = DCFD7F882A45BDA0007BBBF7 /* libMoltenVKShaderConverter.a */;
|
productReference = A979A9152B9174EA00F69E67 /* libMoltenVKShaderConverter.a */;
|
||||||
productType = "com.apple.product-type.library.static";
|
productType = "com.apple.product-type.library.static";
|
||||||
};
|
};
|
||||||
/* End PBXNativeTarget section */
|
/* End PBXNativeTarget section */
|
||||||
@ -477,7 +476,7 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = ". \"${SRCROOT}/../Scripts/copy_to_staging.sh\"\n";
|
shellScript = ". \"${SRCROOT}/../Scripts/copy_to_staging.sh\" \"lib${PRODUCT_NAME}.a\"\n";
|
||||||
};
|
};
|
||||||
A93ED4E824F59E1100FEB018 /* Copy to Staging */ = {
|
A93ED4E824F59E1100FEB018 /* Copy to Staging */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
@ -497,7 +496,7 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = ". \"${SRCROOT}/../Scripts/copy_to_staging.sh\"\n";
|
shellScript = ". \"${SRCROOT}/../Scripts/copy_to_staging.sh\" \"lib${PRODUCT_NAME}.a\"\n";
|
||||||
};
|
};
|
||||||
A93ED4E924F59E1800FEB018 /* Copy to Staging */ = {
|
A93ED4E924F59E1800FEB018 /* Copy to Staging */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
@ -517,7 +516,7 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = ". \"${SRCROOT}/../Scripts/copy_to_staging.sh\"\n";
|
shellScript = ". \"${SRCROOT}/../Scripts/copy_to_staging.sh\" \"lib${PRODUCT_NAME}.a\"\n";
|
||||||
};
|
};
|
||||||
DCFD7F842A45BDA0007BBBF7 /* Copy to Staging */ = {
|
DCFD7F842A45BDA0007BBBF7 /* Copy to Staging */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
@ -537,7 +536,7 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = ". \"${SRCROOT}/../Scripts/copy_to_staging.sh\"\n";
|
shellScript = ". \"${SRCROOT}/../Scripts/copy_to_staging.sh\" \"lib${PRODUCT_NAME}.a\"\n";
|
||||||
};
|
};
|
||||||
/* End PBXShellScriptBuildPhase section */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
@ -708,6 +707,7 @@
|
|||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
ENABLE_TESTABILITY = YES;
|
ENABLE_TESTABILITY = YES;
|
||||||
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
@ -767,6 +767,7 @@
|
|||||||
COPY_PHASE_STRIP = YES;
|
COPY_PHASE_STRIP = YES;
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
|
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
|
||||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
53
README.md
53
README.md
@ -24,9 +24,11 @@ Table of Contents
|
|||||||
- [Using MoltenVK Directly](#download)
|
- [Using MoltenVK Directly](#download)
|
||||||
- [Fetching **MoltenVK** Source Code](#install)
|
- [Fetching **MoltenVK** Source Code](#install)
|
||||||
- [Building **MoltenVK**](#building)
|
- [Building **MoltenVK**](#building)
|
||||||
- [Building from the Command Line](#command_line_build)
|
- [Building With _Xcode_](#xcode_build)
|
||||||
|
- [Building From the Command Line](#command_line_build)
|
||||||
- [Hiding _Vulkan_ API Symbols](#hiding_vulkan_symbols)
|
- [Hiding _Vulkan_ API Symbols](#hiding_vulkan_symbols)
|
||||||
- [Accessing _Metal_ Private API calls](#metal_private_api)
|
- [Accessing _Metal_ Private API Calls](#metal_private_api)
|
||||||
|
- [Install *MoltenVK* to Replace The _Vulkan SDK_ `libMoltenVK.dylib`](#install_vksdk)
|
||||||
- [Running **MoltenVK** Demo Applications](#demos)
|
- [Running **MoltenVK** Demo Applications](#demos)
|
||||||
- [Using **MoltenVK** in Your Application](#using)
|
- [Using **MoltenVK** in Your Application](#using)
|
||||||
- [**MoltenVK** and *Vulkan* Compliance](#compliance)
|
- [**MoltenVK** and *Vulkan* Compliance](#compliance)
|
||||||
@ -210,6 +212,10 @@ that support *Metal*,or on the *Xcode* *iOS Simulator*, *tvOS Simulator*, or *vi
|
|||||||
- Information on *iOS* devices that are compatible with *Metal* can be found in
|
- Information on *iOS* devices that are compatible with *Metal* can be found in
|
||||||
[this article](https://developer.apple.com/library/content/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/HardwareGPUInformation/HardwareGPUInformation.html).
|
[this article](https://developer.apple.com/library/content/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/HardwareGPUInformation/HardwareGPUInformation.html).
|
||||||
|
|
||||||
|
|
||||||
|
<a name="xcode_build"></a>
|
||||||
|
### Building With _Xcode_
|
||||||
|
|
||||||
The `MoltenVKPackaging.xcodeproj` *Xcode* project contains targets and schemes to build
|
The `MoltenVKPackaging.xcodeproj` *Xcode* project contains targets and schemes to build
|
||||||
and package the entire **MoltenVK** runtime distribution package, or to build individual
|
and package the entire **MoltenVK** runtime distribution package, or to build individual
|
||||||
**MoltenVK** or **MoltenVKShaderConverter** components.
|
**MoltenVK** or **MoltenVKShaderConverter** components.
|
||||||
@ -230,6 +236,9 @@ Each of these`MoltenVKPackaging.xcodeproj` *Xcode* project *Schemes* puts the re
|
|||||||
`Package` directory, creating it if necessary. This directory contains separate `Release` and `Debug`
|
`Package` directory, creating it if necessary. This directory contains separate `Release` and `Debug`
|
||||||
directories, holding the most recent **_Release_** and **_Debug_** builds, respectively.
|
directories, holding the most recent **_Release_** and **_Debug_** builds, respectively.
|
||||||
|
|
||||||
|
_**Note:**_ Due to technical limitations in the dynamic library build tools, dynamic frameworks and libraries cannot be created
|
||||||
|
for the _tvOS Simulator_, or _MacCatalyst_ platforms. Static frameworks are created for these, and all other, platforms.
|
||||||
|
|
||||||
A separate `Latest` directory links to the most recent build, regardless of whether it was a **_Release_**
|
A separate `Latest` directory links to the most recent build, regardless of whether it was a **_Release_**
|
||||||
or **_Debug_** build. Effectively, the `Package/Latest` directory points to whichever of the `Package/Release`
|
or **_Debug_** build. Effectively, the `Package/Latest` directory points to whichever of the `Package/Release`
|
||||||
or `Package/Debug` directories was most recently updated.
|
or `Package/Debug` directories was most recently updated.
|
||||||
@ -240,7 +249,7 @@ to test your app with either a **_Debug_** build, or a higher-performance **_Rel
|
|||||||
|
|
||||||
|
|
||||||
<a name="command_line_build"></a>
|
<a name="command_line_build"></a>
|
||||||
### Building from the Command Line
|
### Building From the Command Line
|
||||||
|
|
||||||
If you prefer to build **MoltenVK** from the command line, or to include the activity in a larger build script,
|
If you prefer to build **MoltenVK** from the command line, or to include the activity in a larger build script,
|
||||||
you can do so by executing a command similar to the following command within the `MoltenVK` repository folder,
|
you can do so by executing a command similar to the following command within the `MoltenVK` repository folder,
|
||||||
@ -276,14 +285,15 @@ from the command line. The following `make` targets are provided:
|
|||||||
- The `all` target executes all platform targets.
|
- The `all` target executes all platform targets.
|
||||||
- The `all` target is the default target. Running `make` with no arguments is the same as running `make all`.
|
- The `all` target is the default target. Running `make` with no arguments is the same as running `make all`.
|
||||||
- The `*-debug` targets build the binaries using the **_Debug_** configuration.
|
- The `*-debug` targets build the binaries using the **_Debug_** configuration.
|
||||||
- The `install` target will copy the most recently built `MoltenVK.xcframework` into the
|
- The `install` target will copy the most recently built `Package/Latest/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib`
|
||||||
`/Library/Frameworks` folder of your computer. Since `/Library/Frameworks` is protected,
|
into the `/usr/local/lib` system directory on your computer. Since `/usr/local/lib` is protected, you will generally
|
||||||
you will generally need to run it as `sudo make install` and enter your password.
|
need to run it as `sudo make install` and enter your password. The `install` target does not build **MoltenVK**,
|
||||||
The `install` target just installs the built framework, it does not first build the framework.
|
and you need to run `make macos` or `make macos-debug` first.
|
||||||
You will first need to at least run `make macos` first.
|
|
||||||
|
|
||||||
The `make` targets all require that *Xcode* is installed on your system.
|
The `make` targets all require that *Xcode* is installed on your system.
|
||||||
|
|
||||||
|
_**Note:**_ Due to technical limitations within _Xcode_, a dynamic framework is not created for the _MacCatalyst_ platform.
|
||||||
|
|
||||||
Building from the command line creates the same `Package` folder structure described above when
|
Building from the command line creates the same `Package` folder structure described above when
|
||||||
building from within *Xcode*.
|
building from within *Xcode*.
|
||||||
|
|
||||||
@ -315,7 +325,7 @@ _Vulkan_ API calls as function pointers.
|
|||||||
|
|
||||||
|
|
||||||
<a name="metal_private_api"></a>
|
<a name="metal_private_api"></a>
|
||||||
### Accessing _Metal_ Private API calls
|
### Accessing _Metal_ Private API Calls
|
||||||
|
|
||||||
You can optionally build **MoltenVK** with access to private _Metal_ API calls, also known
|
You can optionally build **MoltenVK** with access to private _Metal_ API calls, also known
|
||||||
as "Service Provider Interfaces" (SPIs). Doing so will allow **MoltenVK** to extend its
|
as "Service Provider Interfaces" (SPIs). Doing so will allow **MoltenVK** to extend its
|
||||||
@ -334,6 +344,31 @@ Functionality added with `MVK_USE_METAL_PRIVATE_API` enabled includes:
|
|||||||
- `VkGraphicsPipelineRasterizationCreateInfo::sampleMask`, using `MTLRenderPipelineDescriptor.sampleMask` instead of emulating it in the fragment shader
|
- `VkGraphicsPipelineRasterizationCreateInfo::sampleMask`, using `MTLRenderPipelineDescriptor.sampleMask` instead of emulating it in the fragment shader
|
||||||
|
|
||||||
|
|
||||||
|
<a name="install_vksdk"></a>
|
||||||
|
### Install **MoltenVK** to Replace the _Vulkan SDK_ `libMoltenVK.dylib`
|
||||||
|
|
||||||
|
To replace the version of the **MoltenVK** installed on _macOS_ via the
|
||||||
|
*[Vulkan SDK](https://vulkan.lunarg.com/sdk/home)* standard install process,
|
||||||
|
perform the following steps:
|
||||||
|
|
||||||
|
1. Build a _macOS_ version of **MoltenVK**, as described [above](#building).
|
||||||
|
The default config for command-line **MoltenVK** build has verbose logging info turned on.
|
||||||
|
If you want **MoltenVK** to log like the original _Vulkan SDK_ install, use this command when building **MoltenVK**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ make macos MVK_CONFIG_LOG_LEVEL=1
|
||||||
|
```
|
||||||
|
|
||||||
|
2. From a command line terminal, execute the following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ sudo make install
|
||||||
|
```
|
||||||
|
|
||||||
|
This will copy your latest _macOS_ build of **MoltenVK** into `/usr/local/lib/libMoltenVK.dylib`,
|
||||||
|
overwriting the file installed by the _Vulkan SDK_ install process.
|
||||||
|
|
||||||
|
|
||||||
<a name="demos"></a>
|
<a name="demos"></a>
|
||||||
Running **MoltenVK** Demo Applications
|
Running **MoltenVK** Demo Applications
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
export MVK_XCFWK_STAGING_DIR="${PROJECT_DIR}/External/build/Intermediates/XCFrameworkStaging/${CONFIGURATION}"
|
. "${SRCROOT}/Scripts/copy_lib_to_staging.sh" "lib${PRODUCT_NAME}.a" "${PROJECT_DIR}/External/build/Intermediates"
|
||||||
. "${SRCROOT}/Scripts/copy_lib_to_staging.sh"
|
|
||||||
|
@ -1,15 +1,17 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Copy the static library file to its own directory within the XCFrameworkStaging directory.
|
# Copy the static library file to its own directory within the XCFrameworkStaging directory.
|
||||||
|
# and mark the XCFrameworkStaging directory as changed, to trigger packaging dependencies.
|
||||||
#
|
#
|
||||||
# Requires the variable MVK_XCFWK_STAGING_DIR.
|
# Takes 2 parameters:
|
||||||
#
|
# 1 - prod_file_name
|
||||||
export MVK_PROD_FILENAME="lib${PRODUCT_NAME}.a"
|
# 2 - xcfwk_dst_dir, destiation directory in which to create XCFramework
|
||||||
export MVK_BUILT_PROD_FILE="${BUILT_PRODUCTS_DIR}/${MVK_PROD_FILENAME}"
|
|
||||||
|
prod_file_name=${1}
|
||||||
|
xcfwk_dst_dir=${2}
|
||||||
|
built_prod_file="${BUILT_PRODUCTS_DIR}/${prod_file_name}"
|
||||||
|
staging_dir="${xcfwk_dst_dir}/XCFrameworkStaging/${CONFIGURATION}/Platform${EFFECTIVE_PLATFORM_NAME}"
|
||||||
|
|
||||||
staging_dir="${MVK_XCFWK_STAGING_DIR}/Platform${EFFECTIVE_PLATFORM_NAME}"
|
|
||||||
mkdir -p "${staging_dir}"
|
mkdir -p "${staging_dir}"
|
||||||
cp -a "${MVK_BUILT_PROD_FILE}" "${staging_dir}/${MVK_PROD_FILENAME}"
|
cp -a "${built_prod_file}" "${staging_dir}/"
|
||||||
|
touch "${staging_dir}/.."
|
||||||
# Mark the XCFrameworkStaging directory as changed, to trigger packaging dependencies.
|
|
||||||
touch "${MVK_XCFWK_STAGING_DIR}/.."
|
|
||||||
|
@ -1,4 +1,10 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
export MVK_XCFWK_STAGING_DIR="${BUILT_PRODUCTS_DIR}/../XCFrameworkStaging/${CONFIGURATION}"
|
# Copy the static library file to its own directory within the XCFrameworkStaging directory.
|
||||||
. "${SRCROOT}/../Scripts/copy_lib_to_staging.sh"
|
# and mark the XCFrameworkStaging directory as changed, to trigger packaging dependencies.
|
||||||
|
#
|
||||||
|
# Takes 1 parameter:
|
||||||
|
# 1 - prod_file_name
|
||||||
|
|
||||||
|
prod_file_name=${1}
|
||||||
|
. "${SRCROOT}/../Scripts/copy_lib_to_staging.sh" ${prod_file_name} "${BUILD_DIR}"
|
||||||
|
@ -1,66 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Allow dylib building to be skipped based on bulid setting.
|
|
||||||
# For example, skipping the build of a dylib for Simulator builds
|
|
||||||
# because Xcode cannot currently handle creating a Simulator dylib
|
|
||||||
# containing both x86_64 and arm64 (Apple Silicon) architectures.
|
|
||||||
if [ "${MVK_SKIP_DYLIB}" == "YES" ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
export MVK_BUILT_PROD_DIR="${BUILT_PRODUCTS_DIR}"
|
|
||||||
export MVK_DYLIB_NAME="lib${PRODUCT_NAME}.dylib"
|
|
||||||
export MVK_SYS_FWK_DIR="${SDK_DIR}/System/Library/Frameworks"
|
|
||||||
export MVK_USR_LIB_DIR="${SDK_DIR}/usr/lib"
|
|
||||||
|
|
||||||
mkdir -p "${MVK_BUILT_PROD_DIR}/dynamic"
|
|
||||||
|
|
||||||
export MVK_EMBED_BITCODE=""
|
|
||||||
if test x"${ENABLE_BITCODE}" == xYES; then
|
|
||||||
if test x"${BITCODE_GENERATION_MODE}" == xbitcode; then
|
|
||||||
MVK_EMBED_BITCODE="-fembed-bitcode"
|
|
||||||
else
|
|
||||||
MVK_EMBED_BITCODE="-fembed-bitcode-marker"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test x"${ENABLE_THREAD_SANITIZER}" = xYES; then
|
|
||||||
MVK_SAN="-fsanitize=thread"
|
|
||||||
elif test x"${ENABLE_ADDRESS_SANITIZER}" = xYES; then
|
|
||||||
MVK_SAN="-fsanitize=address"
|
|
||||||
fi
|
|
||||||
if test x"${ENABLE_UNDEFINED_BEHAVIOR_SANITIZER}" = xYES; then
|
|
||||||
if test x"$MVK_SAN" = x; then
|
|
||||||
MVK_SAN="-fsanitize=undefined"
|
|
||||||
else
|
|
||||||
MVK_SAN="$MVK_SAN,undefined"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Suppress visibility warning spam when linking in Release or Debug mode
|
|
||||||
# and external libraries built in the other mode.
|
|
||||||
MVK_LINK_WARN="-Xlinker -w"
|
|
||||||
|
|
||||||
clang++ \
|
|
||||||
-stdlib=${CLANG_CXX_LIBRARY} \
|
|
||||||
-dynamiclib \
|
|
||||||
$(printf -- "-arch %s " ${ARCHS}) \
|
|
||||||
${MVK_CLANG_OS_MIN_VERSION} \
|
|
||||||
-compatibility_version 1.0.0 -current_version 1.0.0 \
|
|
||||||
-install_name "@rpath/${MVK_DYLIB_NAME}" \
|
|
||||||
-Wno-incompatible-sysroot \
|
|
||||||
${MVK_EMBED_BITCODE} \
|
|
||||||
${MVK_SAN} \
|
|
||||||
${MVK_LINK_WARN} \
|
|
||||||
-isysroot ${SDK_DIR} \
|
|
||||||
-iframework ${MVK_SYS_FWK_DIR} \
|
|
||||||
-framework Metal ${MVK_IOSURFACE_FWK} -framework ${MVK_UX_FWK} -framework QuartzCore -framework CoreGraphics ${MVK_IOKIT_FWK} -framework Foundation \
|
|
||||||
--library-directory ${MVK_USR_LIB_DIR} \
|
|
||||||
-o "${MVK_BUILT_PROD_DIR}/dynamic/${MVK_DYLIB_NAME}" \
|
|
||||||
-force_load "${MVK_BUILT_PROD_DIR}/lib${PRODUCT_NAME}.a"
|
|
||||||
|
|
||||||
if test "$CONFIGURATION" = Debug; then
|
|
||||||
mkdir -p "${MVK_BUILT_PROD_DIR}/dynamic"
|
|
||||||
dsymutil "${MVK_BUILT_PROD_DIR}/dynamic/${MVK_DYLIB_NAME}" \
|
|
||||||
-o "${MVK_BUILT_PROD_DIR}/dynamic/${MVK_DYLIB_NAME}.dSYM"
|
|
||||||
fi
|
|
@ -1,21 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# We don't support dylib for Mac Catalyst yet
|
|
||||||
if [ "${IS_MACCATALYST}" == "YES" ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
export MVK_UX_FWK="UIKit"
|
|
||||||
export MVK_MIN_OS_VERSION=${IPHONEOS_DEPLOYMENT_TARGET}
|
|
||||||
export MVK_IOSURFACE_FWK="-framework IOSurface"
|
|
||||||
export MVK_IOKIT_FWK="-framework IOKit"
|
|
||||||
|
|
||||||
# Do not link to IOSurface if deploying to iOS versions below 11.0, doing so will
|
|
||||||
# link IOSurface as a private framework, which will trigger App Store rejection.
|
|
||||||
if [ $(echo "${MVK_MIN_OS_VERSION} < 11.0" | bc) -eq 1 ]; then
|
|
||||||
MVK_IOSURFACE_FWK=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
. "${SRCROOT}/../Scripts/create_dylib.sh"
|
|
@ -1,11 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
export MVK_UX_FWK="AppKit"
|
|
||||||
export MVK_MIN_OS_VERSION=${MACOSX_DEPLOYMENT_TARGET}
|
|
||||||
export MVK_CLANG_OS_MIN_VERSION="-mmacosx-version-min=${MVK_MIN_OS_VERSION}"
|
|
||||||
export MVK_IOSURFACE_FWK="-framework IOSurface"
|
|
||||||
export MVK_IOKIT_FWK="-framework IOKit"
|
|
||||||
|
|
||||||
. "${SRCROOT}/../Scripts/create_dylib.sh"
|
|
@ -1,17 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
export MVK_UX_FWK="UIKit"
|
|
||||||
export MVK_MIN_OS_VERSION=${TVOS_DEPLOYMENT_TARGET}
|
|
||||||
export MVK_CLANG_OS_MIN_VERSION="-mtvos-version-min=${MVK_MIN_OS_VERSION}"
|
|
||||||
export MVK_IOSURFACE_FWK="-framework IOSurface"
|
|
||||||
export MVK_IOKIT_FWK=""
|
|
||||||
|
|
||||||
# Do not link to IOSurface if deploying to tvOS versions below 11.0, doing so will
|
|
||||||
# link IOSurface as a private framework, which will trigger App Store rejection.
|
|
||||||
if [ $(echo "${MVK_MIN_OS_VERSION} < 11.0" | bc) -eq 1 ]; then
|
|
||||||
MVK_IOSURFACE_FWK=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
. "${SRCROOT}/../Scripts/create_dylib.sh"
|
|
@ -17,6 +17,6 @@ ln -sfn "${abs_ext_dir}/SPIRV-Cross" "${hdr_dir}/SPIRVCross"
|
|||||||
ln -sfn "${abs_ext_dir}/glslang/External/spirv-tools/include/spirv-tools" "${hdr_dir}/SPIRVTools"
|
ln -sfn "${abs_ext_dir}/glslang/External/spirv-tools/include/spirv-tools" "${hdr_dir}/SPIRVTools"
|
||||||
ln -sfn "${abs_ext_dir}/glslang" "${hdr_dir}/glslang"
|
ln -sfn "${abs_ext_dir}/glslang" "${hdr_dir}/glslang"
|
||||||
|
|
||||||
create_xcframework "SPIRVCross"
|
create_xcframework "SPIRVCross" "library"
|
||||||
create_xcframework "SPIRVTools"
|
create_xcframework "SPIRVTools" "library"
|
||||||
create_xcframework "glslang"
|
create_xcframework "glslang" "library"
|
||||||
|
@ -2,13 +2,22 @@
|
|||||||
|
|
||||||
# Creates a universal XCFramework for a product from any libraries that can be found for the product.
|
# Creates a universal XCFramework for a product from any libraries that can be found for the product.
|
||||||
#
|
#
|
||||||
# Takes one parameter:
|
# Takes 2 parameters:
|
||||||
# 1 - product_name
|
# 1 - product_name
|
||||||
|
# 2 - lib_type (either "library" or "framework")
|
||||||
#
|
#
|
||||||
# Requires the variables MVK_XCFWK_STAGING_DIR and MVK_XCFWK_DEST_DIR.
|
# Requires the variables MVK_XCFWK_STAGING_DIR and MVK_XCFWK_DEST_DIR.
|
||||||
#
|
|
||||||
function create_xcframework() {
|
function create_xcframework() {
|
||||||
prod_name=${1}
|
prod_name=${1}
|
||||||
|
lib_type=${2}
|
||||||
|
has_content=""
|
||||||
|
|
||||||
|
prod_file="lib${prod_name}.a"
|
||||||
|
if [[ "${lib_type}" == "framework" ]]; then
|
||||||
|
prod_file="${prod_name}.framework"
|
||||||
|
fi
|
||||||
|
|
||||||
xcfwk_path="${MVK_XCFWK_DEST_DIR}/${prod_name}.xcframework"
|
xcfwk_path="${MVK_XCFWK_DEST_DIR}/${prod_name}.xcframework"
|
||||||
hdr_path="${MVK_XCFWK_STAGING_DIR}/Headers/${prod_name}"
|
hdr_path="${MVK_XCFWK_STAGING_DIR}/Headers/${prod_name}"
|
||||||
|
|
||||||
@ -17,15 +26,19 @@ function create_xcframework() {
|
|||||||
# For each platform directory in the staging directory, add the library to the
|
# For each platform directory in the staging directory, add the library to the
|
||||||
# XCFramework if it exists, and for each library, add headers if they exist.
|
# XCFramework if it exists, and for each library, add headers if they exist.
|
||||||
for prod_staging_dir in "${MVK_XCFWK_STAGING_DIR}/${CONFIGURATION}"/*; do
|
for prod_staging_dir in "${MVK_XCFWK_STAGING_DIR}/${CONFIGURATION}"/*; do
|
||||||
prod_lib_path="${prod_staging_dir}/lib${prod_name}.a"
|
prod_lib_path="${prod_staging_dir}/${prod_file}"
|
||||||
if [[ -e "${prod_lib_path}" ]]; then
|
if [[ -e "${prod_lib_path}" ]]; then
|
||||||
xcfwk_cmd+=" -library \"${prod_lib_path}\""
|
xcfwk_cmd+=" -${lib_type} \"${prod_lib_path}\""
|
||||||
# if [[ -e "${hdr_path}" ]]; then
|
# if [[ -e "${hdr_path}" ]]; then
|
||||||
# xcfwk_cmd+=" -headers \"${hdr_path}\"" # Headers currently break build due to Xcode 12 ProcessXCFramework bug: https://developer.apple.com/forums/thread/651043?answerId=628400022#628400022
|
# xcfwk_cmd+=" -headers \"${hdr_path}\"" # Headers currently break build due to Xcode 12 ProcessXCFramework bug: https://developer.apple.com/forums/thread/651043?answerId=628400022#628400022
|
||||||
# fi
|
# fi
|
||||||
|
has_content="Y"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
rm -rf "${xcfwk_path}"
|
if [ "$has_content" != "" ]; then
|
||||||
eval "${xcfwk_cmd}"
|
mkdir -p "${MVK_XCFWK_DEST_DIR}"
|
||||||
|
rm -rf "${xcfwk_path}"
|
||||||
|
eval "${xcfwk_cmd}"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
@ -2,27 +2,34 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# Copy dylibs only if the source directory exists.
|
# Copy dylibs only if the source file exists.
|
||||||
# Takes two args: source build path OS suffix and destination path OS directory name
|
#
|
||||||
|
# Takes 2 parameters:
|
||||||
|
# 1 - source build path OS suffix (aka EFFECTIVE_PLATFORM_NAME during build)
|
||||||
|
# 2 - destination path OS directory name
|
||||||
|
|
||||||
function copy_dylib() {
|
function copy_dylib() {
|
||||||
src_dir="${BUILD_DIR}/${CONFIGURATION}${1}/dynamic"
|
src_dir="${BUILD_DIR}/XCFrameworkStaging/${CONFIGURATION}/Platform${1}/${MVK_PROD_NAME}.framework"
|
||||||
dst_dir="${MVK_PKG_PROD_PATH}/dylib/${2}"
|
src_file_name="${MVK_PROD_NAME}"
|
||||||
|
dst_dir="${MVK_PKG_PROD_PATH}/dynamic/dylib/${2}"
|
||||||
|
dst_file_name="lib${MVK_PROD_NAME}.dylib"
|
||||||
|
|
||||||
# If dylib file exists, copy it, any debug symbol file, and the Vulkan layer JSON file
|
# If dylib file exists, copy it, any debug symbol file, and the Vulkan layer JSON file
|
||||||
src_file="${src_dir}/lib${MVK_PROD_NAME}.dylib"
|
src_file="${src_dir}/${src_file_name}"
|
||||||
|
|
||||||
if [[ -e "${src_file}" ]]; then
|
if [[ -e "${src_file}" ]]; then
|
||||||
rm -rf "${dst_dir}"
|
rm -rf "${dst_dir}"
|
||||||
mkdir -p "${dst_dir}"
|
mkdir -p "${dst_dir}"
|
||||||
|
|
||||||
cp -a "${src_file}" "${dst_dir}"
|
cp -p "${src_file}" "${dst_dir}/${dst_file_name}"
|
||||||
|
install_name_tool -id "@rpath/${dst_file_name}" "${dst_dir}/${dst_file_name}"
|
||||||
|
|
||||||
src_file+=".dSYM"
|
src_file+=".dSYM"
|
||||||
if [[ -e "${src_file}" ]]; then
|
if [[ -e "${src_file}" ]]; then
|
||||||
cp -a "${src_file}" "${dst_dir}"
|
cp -a "${src_file}" "${dst_dir}/${dst_file_name}.dSYM"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cp -a "${MVK_PROD_PROJ_PATH}/icd/${MVK_PROD_NAME}_icd.json" "${dst_dir}"
|
cp -a "${MVK_PROD_PROJ_PATH}/icd/${MVK_PROD_NAME}_icd.json" "${dst_dir}"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,13 +40,14 @@ export MVK_PKG_PROD_PATH="${PROJECT_DIR}/Package/${CONFIGURATION}/${MVK_PROD_NAM
|
|||||||
# Make sure directory is there in case no dylibs are created for this platform
|
# Make sure directory is there in case no dylibs are created for this platform
|
||||||
mkdir -p "${MVK_PKG_PROD_PATH}"
|
mkdir -p "${MVK_PKG_PROD_PATH}"
|
||||||
|
|
||||||
|
# App store distribution does not support naked dylibs, so only include a naked dylib for macOS.
|
||||||
copy_dylib "" "macOS"
|
copy_dylib "" "macOS"
|
||||||
copy_dylib "-iphoneos" "iOS"
|
#copy_dylib "-iphoneos" "iOS"
|
||||||
copy_dylib "-iphonesimulator" "iOS-simulator"
|
#copy_dylib "-iphonesimulator" "iOS-simulator"
|
||||||
copy_dylib "-appletvos" "tvOS"
|
#copy_dylib "-appletvos" "tvOS"
|
||||||
copy_dylib "-appletvsimulator" "tvOS-simulator"
|
#copy_dylib "-appletvsimulator" "tvOS-simulator"
|
||||||
copy_dylib "-xrvos" "xrOS"
|
#copy_dylib "-xrvos" "xrOS"
|
||||||
copy_dylib "-xrsimulator" "xrOS-simulator"
|
#copy_dylib "-xrsimulator" "xrOS-simulator"
|
||||||
|
|
||||||
# Remove and replace header include folder
|
# Remove and replace header include folder
|
||||||
rm -rf "${MVK_PKG_PROD_PATH}/include"
|
rm -rf "${MVK_PKG_PROD_PATH}/include"
|
||||||
|
@ -4,14 +4,17 @@ set -e
|
|||||||
|
|
||||||
. "${PROJECT_DIR}/Scripts/create_xcframework_func.sh"
|
. "${PROJECT_DIR}/Scripts/create_xcframework_func.sh"
|
||||||
|
|
||||||
export MVK_PROD_BASE_NAME="MoltenVK"
|
export prod_name="MoltenVK"
|
||||||
export MVK_XCFWK_STAGING_DIR="${BUILD_DIR}/XCFrameworkStaging"
|
export MVK_XCFWK_STAGING_DIR="${BUILD_DIR}/XCFrameworkStaging"
|
||||||
export MVK_XCFWK_DEST_DIR="${PROJECT_DIR}/Package/${CONFIGURATION}/${MVK_PROD_BASE_NAME}"
|
|
||||||
|
|
||||||
# Assemble the headers
|
# Assemble the headers
|
||||||
hdr_dir="${MVK_XCFWK_STAGING_DIR}/Headers"
|
hdr_dir="${MVK_XCFWK_STAGING_DIR}/Headers"
|
||||||
mkdir -p "${hdr_dir}"
|
mkdir -p "${hdr_dir}"
|
||||||
rm -rf "${hdr_dir}/${MVK_PROD_BASE_NAME}"
|
rm -rf "${hdr_dir}/${prod_name}"
|
||||||
cp -pRL "${PROJECT_DIR}/${MVK_PROD_BASE_NAME}/include/${MVK_PROD_BASE_NAME}" "${hdr_dir}"
|
cp -pRL "${PROJECT_DIR}/${prod_name}/include/${prod_name}" "${hdr_dir}"
|
||||||
|
|
||||||
create_xcframework "MoltenVK"
|
export MVK_XCFWK_DEST_DIR="${PROJECT_DIR}/Package/${CONFIGURATION}/${prod_name}/static"
|
||||||
|
create_xcframework "${prod_name}" "library"
|
||||||
|
|
||||||
|
export MVK_XCFWK_DEST_DIR="${PROJECT_DIR}/Package/${CONFIGURATION}/${prod_name}/dynamic"
|
||||||
|
create_xcframework "${prod_name}" "framework"
|
||||||
|
@ -4,19 +4,19 @@ set -e
|
|||||||
|
|
||||||
. "${PROJECT_DIR}/Scripts/create_xcframework_func.sh"
|
. "${PROJECT_DIR}/Scripts/create_xcframework_func.sh"
|
||||||
|
|
||||||
export MVK_PROD_BASE_NAME="MoltenVKShaderConverter"
|
prod_name="MoltenVKShaderConverter"
|
||||||
export MVK_XCFWK_STAGING_DIR="${BUILD_DIR}/XCFrameworkStaging"
|
export MVK_XCFWK_STAGING_DIR="${BUILD_DIR}/XCFrameworkStaging"
|
||||||
export MVK_XCFWK_DEST_DIR="${PROJECT_DIR}/Package/${CONFIGURATION}/${MVK_PROD_BASE_NAME}"
|
export MVK_XCFWK_DEST_DIR="${PROJECT_DIR}/Package/${CONFIGURATION}/${prod_name}"
|
||||||
|
|
||||||
# Assemble the headers for the shader frameworks
|
# Assemble the headers for the shader frameworks
|
||||||
hdr_dir="${MVK_XCFWK_STAGING_DIR}/Headers"
|
hdr_dir="${MVK_XCFWK_STAGING_DIR}/Headers"
|
||||||
mkdir -p "${hdr_dir}"
|
mkdir -p "${hdr_dir}"
|
||||||
rm -rf "${hdr_dir}/MoltenVKShaderConverter"
|
rm -rf "${hdr_dir}/${prod_name}"
|
||||||
cp -pRL "${PROJECT_DIR}/${MVK_PROD_BASE_NAME}/include/MoltenVKShaderConverter" "${hdr_dir}"
|
cp -pRL "${PROJECT_DIR}/${prod_name}/include/${prod_name}" "${hdr_dir}"
|
||||||
|
|
||||||
# Also copy headers to an include directory in the package.
|
# Also copy headers to an include directory in the package.
|
||||||
# This will not be needed once the XCFramework can be created with a Headers directory.
|
# This will not be needed once the XCFramework can be created with a Headers directory.
|
||||||
mkdir -p "${MVK_XCFWK_DEST_DIR}"
|
mkdir -p "${MVK_XCFWK_DEST_DIR}"
|
||||||
cp -pRL "${PROJECT_DIR}/${MVK_PROD_BASE_NAME}/include/" "${MVK_XCFWK_DEST_DIR}/include"
|
cp -pRL "${PROJECT_DIR}/${prod_name}/include/" "${MVK_XCFWK_DEST_DIR}/include"
|
||||||
|
|
||||||
create_xcframework "MoltenVKShaderConverter"
|
create_xcframework "${prod_name}" "library"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user