From 802470b5a8779b37f75e0880fb8fb5667e0cf769 Mon Sep 17 00:00:00 2001 From: Bill Hollings Date: Thu, 7 Mar 2024 14:50:26 -0500 Subject: [PATCH 1/2] Create macOS libMoltenVK.dylib directly from Xcode. Previously, libMoltenVK.dylib was created by copying and renaming the binary from MoltenVK.framework, but this resulted in an unsigned dylib that was not loadable. - Create signed macOS libMoltenVK.dylib directly from Xcode. - Refactor package_moltenvk.sh into package_dylibs.sh & package_headers.sh. - Remove unused non-packaging Xcode schemes (unrelated). --- MoltenVK/MoltenVK.xcodeproj/project.pbxproj | 135 ++++++++++++++++-- .../xcschemes/MoltenVK-iOS.xcscheme | 63 -------- .../xcschemes/MoltenVK-macOS.xcscheme | 63 -------- .../xcschemes/MoltenVK-tvOS.xcscheme | 58 -------- .../xcschemes/MoltenVK-xrOS.xcscheme | 57 -------- MoltenVKPackaging.xcodeproj/project.pbxproj | 48 ++++++- .../MoltenVKShaderConverter-iOS.xcscheme | 81 ----------- .../MoltenVKShaderConverter-macOS.xcscheme | 81 ----------- .../MoltenVKShaderConverter-tvOS.xcscheme | 67 --------- .../MoltenVKShaderConverter-xrOS.xcscheme | 67 --------- Scripts/package_all.sh | 3 +- Scripts/package_dylibs.sh | 47 ++++++ Scripts/package_headers.sh | 14 ++ Scripts/package_moltenvk.sh | 54 ------- Scripts/package_moltenvk_xcframework.sh | 2 +- 15 files changed, 234 insertions(+), 606 deletions(-) delete mode 100644 MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-iOS.xcscheme delete mode 100644 MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-macOS.xcscheme delete mode 100644 MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-tvOS.xcscheme delete mode 100644 MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-xrOS.xcscheme delete mode 100644 MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter-iOS.xcscheme delete mode 100644 MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter-macOS.xcscheme delete mode 100644 MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter-tvOS.xcscheme delete mode 100644 MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter-xrOS.xcscheme create mode 100755 Scripts/package_dylibs.sh create mode 100755 Scripts/package_headers.sh delete mode 100755 Scripts/package_moltenvk.sh diff --git a/MoltenVK/MoltenVK.xcodeproj/project.pbxproj b/MoltenVK/MoltenVK.xcodeproj/project.pbxproj index 93fb42f12..7bda57910 100644 --- a/MoltenVK/MoltenVK.xcodeproj/project.pbxproj +++ b/MoltenVK/MoltenVK.xcodeproj/project.pbxproj @@ -285,6 +285,15 @@ A966A5E023C535D000BBF9B4 /* MVKDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A966A5DC23C535D000BBF9B4 /* MVKDescriptor.h */; }; A966A5E123C535D000BBF9B4 /* MVKDescriptor.mm in Sources */ = {isa = PBXBuildFile; fileRef = A966A5DE23C535D000BBF9B4 /* MVKDescriptor.mm */; }; A966A5E223C535D000BBF9B4 /* MVKDescriptor.mm in Sources */ = {isa = PBXBuildFile; fileRef = A966A5DE23C535D000BBF9B4 /* MVKDescriptor.mm */; }; + A979A9562B9A22CB00F69E67 /* libMoltenVK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9CBEE011B6299D800E45FDC /* libMoltenVK.a */; }; + A979A9672B9A277000F69E67 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9F4D9FB2B8ECACF004AD576 /* AppKit.framework */; }; + A979A9682B9A277000F69E67 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9F4D9892B8E7D18004AD576 /* CoreGraphics.framework */; }; + A979A9692B9A277000F69E67 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9F4D98B2B8E7D3A004AD576 /* Foundation.framework */; }; + A979A96A2B9A277000F69E67 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9F4D98F2B8E7D66004AD576 /* IOKit.framework */; }; + A979A96B2B9A277000F69E67 /* IOSurface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9F4D98D2B8E7D5D004AD576 /* IOSurface.framework */; }; + A979A96C2B9A277000F69E67 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = A9F4D9932B8E7E8A004AD576 /* libc++.tbd */; }; + A979A96D2B9A277000F69E67 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9F4D9852B8E7CDB004AD576 /* Metal.framework */; }; + A979A96E2B9A277000F69E67 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9F4D9872B8E7D10004AD576 /* QuartzCore.framework */; }; A981494D1FB6A3F7005F00B4 /* MVKBaseObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = A98149411FB6A3F7005F00B4 /* MVKBaseObject.mm */; }; A981494E1FB6A3F7005F00B4 /* MVKBaseObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = A98149411FB6A3F7005F00B4 /* MVKBaseObject.mm */; }; A981494F1FB6A3F7005F00B4 /* MVKBaseObject.h in Headers */ = {isa = PBXBuildFile; fileRef = A98149421FB6A3F7005F00B4 /* MVKBaseObject.h */; }; @@ -558,13 +567,20 @@ remoteGlobalIDString = 2FEA0D142490381A00EEF3AD; remoteInfo = "MoltenVKSPIRVToMSLConverter-tvOS"; }; - A979A9172B924B9700F69E67 /* PBXContainerItemProxy */ = { + A979A9532B9A215200F69E67 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = A9C86CB61C55B8350096CAF2 /* MoltenVKShaderConverter.xcodeproj */; proxyType = 2; - remoteGlobalIDString = A979A9152B9174EA00F69E67; + remoteGlobalIDString = A979A9412B9A200400F69E67; remoteInfo = "MoltenVKShaderConverter-xrOS"; }; + A979A9572B9A22CB00F69E67 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A9F55D25198BE6A7004EC31B /* Project object */; + proxyType = 1; + remoteGlobalIDString = A9CBED861B6299D800E45FDC; + remoteInfo = "MoltenVK-macOS-static"; + }; A981497B1FB6B566005F00B4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = A9C86CB61C55B8350096CAF2 /* MoltenVKShaderConverter.xcodeproj */; @@ -723,6 +739,7 @@ A9653FB924129C84005999D7 /* MVKPixelFormats.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MVKPixelFormats.mm; sourceTree = ""; }; A966A5DC23C535D000BBF9B4 /* MVKDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MVKDescriptor.h; sourceTree = ""; }; A966A5DE23C535D000BBF9B4 /* MVKDescriptor.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MVKDescriptor.mm; sourceTree = ""; }; + A979A94F2B9A215200F69E67 /* libMoltenVK.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libMoltenVK.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; A98149411FB6A3F7005F00B4 /* MVKBaseObject.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MVKBaseObject.mm; sourceTree = ""; }; A98149421FB6A3F7005F00B4 /* MVKBaseObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MVKBaseObject.h; sourceTree = ""; }; A98149431FB6A3F7005F00B4 /* MVKEnvironment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MVKEnvironment.h; sourceTree = ""; }; @@ -791,6 +808,22 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + A979A94D2B9A215200F69E67 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A979A96B2B9A277000F69E67 /* IOSurface.framework in Frameworks */, + A979A96C2B9A277000F69E67 /* libc++.tbd in Frameworks */, + A979A9682B9A277000F69E67 /* CoreGraphics.framework in Frameworks */, + A979A9562B9A22CB00F69E67 /* libMoltenVK.a in Frameworks */, + A979A9672B9A277000F69E67 /* AppKit.framework in Frameworks */, + A979A96A2B9A277000F69E67 /* IOKit.framework in Frameworks */, + A979A96D2B9A277000F69E67 /* Metal.framework in Frameworks */, + A979A9692B9A277000F69E67 /* Foundation.framework in Frameworks */, + A979A96E2B9A277000F69E67 /* QuartzCore.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; A9F4D9682B8E7366004AD576 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1026,7 +1059,7 @@ A98149821FB6B566005F00B4 /* libMoltenVKShaderConverter.a */, 2FEA0D1C249040CA00EEF3AD /* libMoltenVKShaderConverter.a */, A98149841FB6B566005F00B4 /* libMoltenVKShaderConverter.a */, - A979A9182B924B9700F69E67 /* libMoltenVKShaderConverter.a */, + A979A9542B9A215200F69E67 /* libMoltenVKShaderConverter.a */, ); name = Products; sourceTree = ""; @@ -1118,6 +1151,7 @@ A9F4D9B22B8EB2FC004AD576 /* MoltenVK.framework */, A9F4D9CE2B8EB6DC004AD576 /* MoltenVK.framework */, A9F4D9ED2B8EC112004AD576 /* MoltenVK.framework */, + A979A94F2B9A215200F69E67 /* libMoltenVK.dylib */, ); name = Products; sourceTree = ""; @@ -1203,6 +1237,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + A979A94B2B9A215200F69E67 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; A9B8EE071A98D796009C5A02 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -1489,6 +1530,24 @@ productReference = 2FEA0ABA24902F9F00EEF3AD /* libMoltenVK.a */; productType = "com.apple.product-type.library.static"; }; + A979A94E2B9A215200F69E67 /* MoltenVK-macOS-dylib */ = { + isa = PBXNativeTarget; + buildConfigurationList = A979A9552B9A215200F69E67 /* Build configuration list for PBXNativeTarget "MoltenVK-macOS-dylib" */; + buildPhases = ( + A979A94B2B9A215200F69E67 /* Headers */, + A979A94C2B9A215200F69E67 /* Sources */, + A979A94D2B9A215200F69E67 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + A979A9582B9A22CB00F69E67 /* PBXTargetDependency */, + ); + name = "MoltenVK-macOS-dylib"; + productName = "MoltenVK-macOS-dylib"; + productReference = A979A94F2B9A215200F69E67 /* libMoltenVK.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; A9B8EE091A98D796009C5A02 /* MoltenVK-iOS-static */ = { isa = PBXNativeTarget; buildConfigurationList = A9B8EE1D1A98D796009C5A02 /* Build configuration list for PBXNativeTarget "MoltenVK-iOS-static" */; @@ -1635,6 +1694,9 @@ LastUpgradeCheck = 1410; ORGANIZATIONNAME = "The Brenwill Workshop Ltd."; TargetAttributes = { + A979A94E2B9A215200F69E67 = { + CreatedOnToolsVersion = 15.2; + }; A9B8EE091A98D796009C5A02 = { CreatedOnToolsVersion = 6.1.1; DevelopmentTeam = VU3TCKU48B; @@ -1667,6 +1729,7 @@ projectRoot = ""; targets = ( A9CBED861B6299D800E45FDC /* MoltenVK-macOS-static */, + A979A94E2B9A215200F69E67 /* MoltenVK-macOS-dylib */, A9F4D9D92B8EC112004AD576 /* MoltenVK-macOS-dynamic */, A9B8EE091A98D796009C5A02 /* MoltenVK-iOS-static */, A9F4D96A2B8E7366004AD576 /* MoltenVK-iOS-dynamic */, @@ -1686,13 +1749,12 @@ remoteRef = 2FEA0D1B249040CA00EEF3AD /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - A979A9182B924B9700F69E67 /* libMoltenVKShaderConverter.a */ = { + A979A9542B9A215200F69E67 /* libMoltenVKShaderConverter.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - name = libMoltenVKShaderConverter.a; - path = "/Users/bill/Documents/Dev/iOSProjects/Molten/MoltenVK-bh/MoltenVKShaderConverter/build/Debug-xros/libMoltenVKShaderConverter.a"; - remoteRef = A979A9172B924B9700F69E67 /* PBXContainerItemProxy */; - sourceTree = ""; + path = libMoltenVKShaderConverter.a; + remoteRef = A979A9532B9A215200F69E67 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; }; A981497C1FB6B566005F00B4 /* MoltenVKShaderConverter */ = { isa = PBXReferenceProxy; @@ -2047,6 +2109,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + A979A94C2B9A215200F69E67 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; A9B8EE051A98D796009C5A02 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -2265,6 +2334,11 @@ name = "MoltenVKSPIRVToMSLConverter-tvOS"; targetProxy = 2F21D82E24983488009BEA5F /* PBXContainerItemProxy */; }; + A979A9582B9A22CB00F69E67 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A9CBED861B6299D800E45FDC /* MoltenVK-macOS-static */; + targetProxy = A979A9572B9A22CB00F69E67 /* PBXContainerItemProxy */; + }; A981499B1FB6B9CF005F00B4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "MVKSPIRVToMSLConverter-iOS"; @@ -2317,6 +2391,32 @@ }; name = Release; }; + A979A9502B9A215200F69E67 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + EXECUTABLE_PREFIX = lib; + LD_DYLIB_INSTALL_NAME = "@rpath/lib${PRODUCT_NAME}.dylib"; + OTHER_LDFLAGS = ( + "-all_load", + "-w", + ); + SDKROOT = macosx; + }; + name = Debug; + }; + A979A9512B9A215200F69E67 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + EXECUTABLE_PREFIX = lib; + LD_DYLIB_INSTALL_NAME = "@rpath/lib${PRODUCT_NAME}.dylib"; + OTHER_LDFLAGS = ( + "-all_load", + "-w", + ); + SDKROOT = macosx; + }; + name = Release; + }; A9B8EE1E1A98D796009C5A02 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2349,6 +2449,7 @@ isa = XCBuildConfiguration; buildSettings = { GENERATE_INFOPLIST_FILE = YES; + LD_DYLIB_INSTALL_NAME = "@rpath/${PRODUCT_NAME}.framework/${PRODUCT_NAME}"; OTHER_LDFLAGS = ( "-all_load", "-w", @@ -2361,6 +2462,7 @@ isa = XCBuildConfiguration; buildSettings = { GENERATE_INFOPLIST_FILE = YES; + LD_DYLIB_INSTALL_NAME = "@rpath/${PRODUCT_NAME}.framework/${PRODUCT_NAME}"; OTHER_LDFLAGS = ( "-all_load", "-w", @@ -2373,6 +2475,7 @@ isa = XCBuildConfiguration; buildSettings = { GENERATE_INFOPLIST_FILE = YES; + LD_DYLIB_INSTALL_NAME = "@rpath/${PRODUCT_NAME}.framework/${PRODUCT_NAME}"; OTHER_LDFLAGS = ( "-all_load", "-w", @@ -2385,6 +2488,7 @@ isa = XCBuildConfiguration; buildSettings = { GENERATE_INFOPLIST_FILE = YES; + LD_DYLIB_INSTALL_NAME = "@rpath/${PRODUCT_NAME}.framework/${PRODUCT_NAME}"; OTHER_LDFLAGS = ( "-all_load", "-w", @@ -2397,6 +2501,7 @@ isa = XCBuildConfiguration; buildSettings = { GENERATE_INFOPLIST_FILE = YES; + LD_DYLIB_INSTALL_NAME = "@rpath/${PRODUCT_NAME}.framework/${PRODUCT_NAME}"; OTHER_LDFLAGS = ( "-all_load", "-w", @@ -2409,6 +2514,7 @@ isa = XCBuildConfiguration; buildSettings = { GENERATE_INFOPLIST_FILE = YES; + LD_DYLIB_INSTALL_NAME = "@rpath/${PRODUCT_NAME}.framework/${PRODUCT_NAME}"; OTHER_LDFLAGS = ( "-all_load", "-w", @@ -2421,6 +2527,7 @@ isa = XCBuildConfiguration; buildSettings = { GENERATE_INFOPLIST_FILE = YES; + LD_DYLIB_INSTALL_NAME = "@rpath/${PRODUCT_NAME}.framework/${PRODUCT_NAME}"; OTHER_LDFLAGS = ( "-all_load", "-w", @@ -2433,6 +2540,7 @@ isa = XCBuildConfiguration; buildSettings = { GENERATE_INFOPLIST_FILE = YES; + LD_DYLIB_INSTALL_NAME = "@rpath/${PRODUCT_NAME}.framework/${PRODUCT_NAME}"; OTHER_LDFLAGS = ( "-all_load", "-w", @@ -2500,7 +2608,6 @@ "\"${BUILT_PRODUCTS_DIR}\"", ); IPHONEOS_DEPLOYMENT_TARGET = 12.0; - LD_DYLIB_INSTALL_NAME = "@rpath/${PRODUCT_NAME}.framework/${PRODUCT_NAME}"; MACOSX_DEPLOYMENT_TARGET = 10.13; MARKETING_VERSION = "${CURRENT_PROJECT_VERSION}"; MTL_ENABLE_DEBUG_INFO = YES; @@ -2576,7 +2683,6 @@ "\"${BUILT_PRODUCTS_DIR}\"", ); IPHONEOS_DEPLOYMENT_TARGET = 12.0; - LD_DYLIB_INSTALL_NAME = "@rpath/${PRODUCT_NAME}.framework/${PRODUCT_NAME}"; MACOSX_DEPLOYMENT_TARGET = 10.13; MARKETING_VERSION = "${CURRENT_PROJECT_VERSION}"; MTL_ENABLE_DEBUG_INFO = NO; @@ -2618,6 +2724,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + A979A9552B9A215200F69E67 /* Build configuration list for PBXNativeTarget "MoltenVK-macOS-dylib" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A979A9502B9A215200F69E67 /* Debug */, + A979A9512B9A215200F69E67 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; A9B8EE1D1A98D796009C5A02 /* Build configuration list for PBXNativeTarget "MoltenVK-iOS-static" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-iOS.xcscheme b/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-iOS.xcscheme deleted file mode 100644 index 9fcf34ef7..000000000 --- a/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-iOS.xcscheme +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-macOS.xcscheme b/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-macOS.xcscheme deleted file mode 100644 index 75bd1f3cb..000000000 --- a/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-macOS.xcscheme +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-tvOS.xcscheme b/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-tvOS.xcscheme deleted file mode 100644 index 29ee8f6ff..000000000 --- a/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-tvOS.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-xrOS.xcscheme b/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-xrOS.xcscheme deleted file mode 100644 index 51e9c9fa8..000000000 --- a/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-xrOS.xcscheme +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/MoltenVKPackaging.xcodeproj/project.pbxproj b/MoltenVKPackaging.xcodeproj/project.pbxproj index fe2f6788a..711ed96bb 100644 --- a/MoltenVKPackaging.xcodeproj/project.pbxproj +++ b/MoltenVKPackaging.xcodeproj/project.pbxproj @@ -50,6 +50,7 @@ A975D59A2140586700D4834F /* Package MoltenVK */, ); dependencies = ( + A979A95A2B9A232800F69E67 /* PBXTargetDependency */, A9F4D9F12B8EC210004AD576 /* PBXTargetDependency */, ); name = "MoltenVK-macOS"; @@ -74,6 +75,7 @@ A9B1008824F84BE400EADC6E /* Package MoltenVK */, ); dependencies = ( + A979A9662B9A233C00F69E67 /* PBXTargetDependency */, A9F4D9F82B8EC22E004AD576 /* PBXTargetDependency */, A9F4D9F62B8EC22E004AD576 /* PBXTargetDependency */, A9F4D9FA2B8EC22E004AD576 /* PBXTargetDependency */, @@ -124,6 +126,27 @@ remoteGlobalIDString = A9CBEE011B6299D800E45FDC; remoteInfo = "MoltenVK-macOS"; }; + A979A9592B9A232800F69E67 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = A979A94E2B9A215200F69E67; + remoteInfo = "MoltenVK-macOS-dylib"; + }; + A979A95F2B9A232800F69E67 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = A979A94F2B9A215200F69E67; + remoteInfo = "MoltenVK-macOS-dylib"; + }; + A979A9652B9A233C00F69E67 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = A979A94E2B9A215200F69E67; + remoteInfo = "MoltenVK-macOS-dylib"; + }; A97D77552B24FBDF00E36932 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = A92DB40E1CE0F89600FBC835 /* MoltenVKShaderConverter.xcodeproj */; @@ -253,19 +276,19 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 279BD8642B7FAE0A0021CE70 /* create_dylib_xros.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = create_dylib_xros.sh; sourceTree = ""; }; A92DB3E41CE0F37D00FBC835 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; A92DB3E51CE0F37D00FBC835 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; A92DB3E61CE0F37D00FBC835 /* Whats_New.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; name = Whats_New.md; path = Docs/Whats_New.md; sourceTree = ""; }; A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = MoltenVK.xcodeproj; path = MoltenVK/MoltenVK.xcodeproj; sourceTree = ""; }; A92DB40E1CE0F89600FBC835 /* MoltenVKShaderConverter.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = MoltenVKShaderConverter.xcodeproj; path = MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj; sourceTree = ""; }; - A92EF7C621856EA200C8B91B /* package_moltenvk.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_moltenvk.sh; sourceTree = ""; }; + A92EF7C621856EA200C8B91B /* package_headers.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_headers.sh; sourceTree = ""; }; A92EF7C721856EA200C8B91B /* package_shader_converter_tool.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_shader_converter_tool.sh; sourceTree = ""; }; A92EF7C921856EA200C8B91B /* package_docs.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_docs.sh; sourceTree = ""; }; A92EF7CA21856EA200C8B91B /* package_update_latest.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_update_latest.sh; sourceTree = ""; }; A92EF7CB21856EA300C8B91B /* package_shader_converter_xcframework.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_shader_converter_xcframework.sh; sourceTree = ""; }; A92EF7DE2186451700C8B91B /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; name = Makefile; path = ../Makefile; sourceTree = ""; }; A93ED4DE24F59CDB00FEB018 /* copy_lib_to_staging.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = copy_lib_to_staging.sh; sourceTree = ""; }; + A979A9702B9A3D7900F69E67 /* package_dylibs.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_dylibs.sh; sourceTree = ""; }; A97D77502B24FBDF00E36932 /* MoltenVK_Configuration_Parameters.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; name = MoltenVK_Configuration_Parameters.md; path = Docs/MoltenVK_Configuration_Parameters.md; sourceTree = ""; }; A980A25F24C628F3007A8F6F /* gen_moltenvk_rev_hdr.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = gen_moltenvk_rev_hdr.sh; sourceTree = ""; }; A98149E51FB78829005F00B4 /* MoltenVK_Runtime_UserGuide.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; name = MoltenVK_Runtime_UserGuide.md; path = Docs/MoltenVK_Runtime_UserGuide.md; sourceTree = ""; }; @@ -308,6 +331,7 @@ isa = PBXGroup; children = ( A92DB3F71CE0F72500FBC835 /* libMoltenVK.a */, + A979A9602B9A232800F69E67 /* libMoltenVK.dylib */, A9F4D9F42B8EC210004AD576 /* MoltenVK.framework */, A92DB3F51CE0F72500FBC835 /* libMoltenVK.a */, A9F4D9992B8E8CE0004AD576 /* MoltenVK.framework */, @@ -329,8 +353,9 @@ A9FE05632B697AE400208814 /* get_failing_cts_tests.py */, A9FC5F60249D2ED3003CB086 /* package_all.sh */, A92EF7C921856EA200C8B91B /* package_docs.sh */, + A979A9702B9A3D7900F69E67 /* package_dylibs.sh */, A9CBBFF924F8A1EB006D41EF /* package_moltenvk_xcframework.sh */, - A92EF7C621856EA200C8B91B /* package_moltenvk.sh */, + A92EF7C621856EA200C8B91B /* package_headers.sh */, A92EF7C721856EA200C8B91B /* package_shader_converter_tool.sh */, A92EF7CB21856EA300C8B91B /* package_shader_converter_xcframework.sh */, A92EF7CA21856EA200C8B91B /* package_update_latest.sh */, @@ -437,6 +462,13 @@ remoteRef = A92DB3F61CE0F72500FBC835 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + A979A9602B9A232800F69E67 /* libMoltenVK.dylib */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.dylib"; + path = libMoltenVK.dylib; + remoteRef = A979A95F2B9A232800F69E67 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; A97D77562B24FBDF00E36932 /* libMoltenVKShaderConverter.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -641,6 +673,16 @@ name = "MoltenVK-iOS-static"; targetProxy = A911710C2B9110380057AD37 /* PBXContainerItemProxy */; }; + A979A95A2B9A232800F69E67 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "MoltenVK-macOS-dylib"; + targetProxy = A979A9592B9A232800F69E67 /* PBXContainerItemProxy */; + }; + A979A9662B9A233C00F69E67 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "MoltenVK-macOS-dylib"; + targetProxy = A979A9652B9A233C00F69E67 /* PBXContainerItemProxy */; + }; A9AD70102440ED3B00B9E254 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = MoltenVKShaderConverter; diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter-iOS.xcscheme b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter-iOS.xcscheme deleted file mode 100644 index 4aca87470..000000000 --- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter-iOS.xcscheme +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter-macOS.xcscheme b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter-macOS.xcscheme deleted file mode 100644 index 1627a4450..000000000 --- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter-macOS.xcscheme +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter-tvOS.xcscheme b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter-tvOS.xcscheme deleted file mode 100644 index 45a2f81b7..000000000 --- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter-xrOS.xcscheme b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter-xrOS.xcscheme deleted file mode 100644 index b78877057..000000000 --- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter-xrOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Scripts/package_all.sh b/Scripts/package_all.sh index e8b65c261..c51fd438e 100755 --- a/Scripts/package_all.sh +++ b/Scripts/package_all.sh @@ -1,8 +1,9 @@ #!/bin/bash -. "${SRCROOT}/Scripts/package_moltenvk.sh" . "${SRCROOT}/Scripts/package_moltenvk_xcframework.sh" . "${SRCROOT}/Scripts/package_shader_converter_xcframework.sh" +. "${SRCROOT}/Scripts/package_dylibs.sh" +. "${SRCROOT}/Scripts/package_headers.sh" . "${SRCROOT}/Scripts/package_docs.sh" . "${SRCROOT}/Scripts/package_update_latest.sh" diff --git a/Scripts/package_dylibs.sh b/Scripts/package_dylibs.sh new file mode 100755 index 000000000..4080f3958 --- /dev/null +++ b/Scripts/package_dylibs.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +set -e + +# Copy dylibs only if the source file exists. +# +# Takes 2 parameters: +# 1 - source build path OS suffix (aka EFFECTIVE_PLATFORM_NAME during build) +# 2 - destination path OS directory name + +function copy_dylib() { + file_name="lib${mvk_prod_name}.dylib" + src_dir="${BUILT_PRODUCTS_DIR}" + src_file="${src_dir}/${file_name}" + dst_dir="${mvk_pkg_prod_path}/dynamic/dylib/${2}" + + # If dylib file exists, copy it, any debug symbol file, and the Vulkan layer JSON file + if [[ -e "${src_file}" ]]; then + rm -rf "${dst_dir}" + mkdir -p "${dst_dir}" + + cp -p "${src_file}" "${dst_dir}/" + + src_file+=".dSYM" + if [[ -e "${src_file}" ]]; then + cp -a "${src_file}" "${dst_dir}/" + fi + + cp -a "${mvk_prod_proj_path}/icd/${mvk_prod_name}_icd.json" "${dst_dir}" + fi +} + +mvk_prod_name="MoltenVK" +mvk_prod_proj_path="${PROJECT_DIR}/${mvk_prod_name}" +mvk_pkg_prod_path="${PROJECT_DIR}/Package/${CONFIGURATION}/${mvk_prod_name}" + +# Make sure directory is there +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 "-iphoneos" "iOS" +#copy_dylib "-iphonesimulator" "iOS-simulator" +#copy_dylib "-appletvos" "tvOS" +#copy_dylib "-appletvsimulator" "tvOS-simulator" +#copy_dylib "-xrvos" "xrOS" +#copy_dylib "-xrsimulator" "xrOS-simulator" diff --git a/Scripts/package_headers.sh b/Scripts/package_headers.sh new file mode 100755 index 000000000..d62eca993 --- /dev/null +++ b/Scripts/package_headers.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -e + +mvk_prod_name="MoltenVK" +mvk_prod_proj_path="${PROJECT_DIR}/${mvk_prod_name}" +mvk_pkg_prod_path="${PROJECT_DIR}/Package/${CONFIGURATION}/${mvk_prod_name}" + +# Make sure directory is there in case no dylibs are created for this platform +mkdir -p "${mvk_pkg_prod_path}" + +# Remove and replace header include folder +rm -rf "${mvk_pkg_prod_path}/include" +cp -pRL "${mvk_prod_proj_path}/include" "${mvk_pkg_prod_path}/" diff --git a/Scripts/package_moltenvk.sh b/Scripts/package_moltenvk.sh deleted file mode 100755 index 786faee5b..000000000 --- a/Scripts/package_moltenvk.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash - -set -e - -# Copy dylibs only if the source file exists. -# -# Takes 2 parameters: -# 1 - source build path OS suffix (aka EFFECTIVE_PLATFORM_NAME during build) -# 2 - destination path OS directory name - -function copy_dylib() { - src_dir="${BUILD_DIR}/XCFrameworkStaging/${CONFIGURATION}/Platform${1}/${MVK_PROD_NAME}.framework" - 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 - src_file="${src_dir}/${src_file_name}" - - if [[ -e "${src_file}" ]]; then - rm -rf "${dst_dir}" - mkdir -p "${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" - if [[ -e "${src_file}" ]]; then - cp -a "${src_file}" "${dst_dir}/${dst_file_name}.dSYM" - fi - - cp -a "${MVK_PROD_PROJ_PATH}/icd/${MVK_PROD_NAME}_icd.json" "${dst_dir}" - fi -} - -export MVK_PROD_NAME="MoltenVK" -export MVK_PROD_PROJ_PATH="${PROJECT_DIR}/${MVK_PROD_NAME}" -export MVK_PKG_PROD_PATH="${PROJECT_DIR}/Package/${CONFIGURATION}/${MVK_PROD_NAME}" - -# Make sure directory is there in case no dylibs are created for this platform -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 "-iphoneos" "iOS" -#copy_dylib "-iphonesimulator" "iOS-simulator" -#copy_dylib "-appletvos" "tvOS" -#copy_dylib "-appletvsimulator" "tvOS-simulator" -#copy_dylib "-xrvos" "xrOS" -#copy_dylib "-xrsimulator" "xrOS-simulator" - -# Remove and replace header include folder -rm -rf "${MVK_PKG_PROD_PATH}/include" -cp -pRL "${MVK_PROD_PROJ_PATH}/include" "${MVK_PKG_PROD_PATH}" diff --git a/Scripts/package_moltenvk_xcframework.sh b/Scripts/package_moltenvk_xcframework.sh index c9d69c4c3..15d299c83 100755 --- a/Scripts/package_moltenvk_xcframework.sh +++ b/Scripts/package_moltenvk_xcframework.sh @@ -4,7 +4,7 @@ set -e . "${PROJECT_DIR}/Scripts/create_xcframework_func.sh" -export prod_name="MoltenVK" +prod_name="MoltenVK" export MVK_XCFWK_STAGING_DIR="${BUILD_DIR}/XCFrameworkStaging" # Assemble the headers From 41f1808cea49e5bbabdb88498b1d309c2f5259c9 Mon Sep 17 00:00:00 2001 From: Bill Hollings Date: Thu, 7 Mar 2024 17:54:28 -0500 Subject: [PATCH 2/2] Suppress Xcode project build settings update warnings. Xcode validates project build settings with each new Xcode release and issues warnings to apply recommendations. We ignore these. This patch sets the validated Xcode version to the maximum so that Xcode will not longer issue these warnings. --- Demos/Cube/Cube.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/xcschemes/Cube-iOS.xcscheme | 2 +- .../xcshareddata/xcschemes/Cube-macOS.xcscheme | 2 +- .../xcshareddata/xcschemes/Cube-tvOS.xcscheme | 2 +- ExternalDependencies.xcodeproj/project.pbxproj | 2 +- .../xcschemes/ExternalDependencies (Debug).xcscheme | 2 +- .../xcschemes/ExternalDependencies-iOS.xcscheme | 2 +- .../xcschemes/ExternalDependencies-macOS.xcscheme | 2 +- .../xcschemes/ExternalDependencies-tvOS.xcscheme | 2 +- .../xcschemes/ExternalDependencies-xrOS.xcscheme | 2 +- .../xcshareddata/xcschemes/ExternalDependencies.xcscheme | 2 +- .../xcshareddata/xcschemes/SPIRV-Cross-iOS.xcscheme | 2 +- .../xcshareddata/xcschemes/SPIRV-Cross-macOS.xcscheme | 2 +- .../xcshareddata/xcschemes/SPIRV-Cross-tvOS.xcscheme | 2 +- .../xcshareddata/xcschemes/SPIRV-Cross-xrOS.xcscheme | 2 +- .../xcshareddata/xcschemes/SPIRV-Tools-iOS.xcscheme | 2 +- .../xcshareddata/xcschemes/SPIRV-Tools-macOS.xcscheme | 2 +- .../xcshareddata/xcschemes/SPIRV-Tools-tvOS.xcscheme | 2 +- .../xcshareddata/xcschemes/SPIRV-Tools-xrOS.xcscheme | 2 +- .../xcshareddata/xcschemes/glslang-iOS.xcscheme | 2 +- .../xcshareddata/xcschemes/glslang-macOS.xcscheme | 2 +- .../xcshareddata/xcschemes/glslang-tvOS.xcscheme | 2 +- .../xcshareddata/xcschemes/glslang-xrOS.xcscheme | 2 +- MoltenVK/MoltenVK.xcodeproj/project.pbxproj | 2 +- MoltenVKPackaging.xcodeproj/project.pbxproj | 2 +- .../xcschemes/MVKShaderConverterTool Package.xcscheme | 2 +- .../xcschemes/MoltenVK Package (Debug).xcscheme | 2 +- .../xcschemes/MoltenVK Package (MacCat only).xcscheme | 2 +- .../xcschemes/MoltenVK Package (iOS only).xcscheme | 2 +- .../xcschemes/MoltenVK Package (macOS only).xcscheme | 2 +- .../xcschemes/MoltenVK Package (tvOS only).xcscheme | 2 +- .../xcschemes/MoltenVK Package (visionOS only).xcscheme | 2 +- .../xcshareddata/xcschemes/MoltenVK Package.xcscheme | 2 +- .../MoltenVKShaderConverter.xcodeproj/project.pbxproj | 7 ++++--- .../xcschemes/MoltenVKShaderConverter.xcscheme | 2 +- 35 files changed, 38 insertions(+), 37 deletions(-) diff --git a/Demos/Cube/Cube.xcodeproj/project.pbxproj b/Demos/Cube/Cube.xcodeproj/project.pbxproj index a56ef1c67..471e762cf 100644 --- a/Demos/Cube/Cube.xcodeproj/project.pbxproj +++ b/Demos/Cube/Cube.xcodeproj/project.pbxproj @@ -296,7 +296,7 @@ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1410; + LastUpgradeCheck = 9999; TargetAttributes = { A9B53B0F1C3AC0BE00ABC6F6 = { ProvisioningStyle = Manual; diff --git a/Demos/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-iOS.xcscheme b/Demos/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-iOS.xcscheme index 194e4c08b..9d13f515a 100644 --- a/Demos/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-iOS.xcscheme +++ b/Demos/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-iOS.xcscheme @@ -1,6 +1,6 @@