Merge pull request #158534 from reckenrode/moltenvk

authored by Sandro and committed by GitHub 59e6eceb c6873609

+579 -10
+14
maintainers/maintainer-list.nix
··· 10121 githubId = 16624; 10122 name = "Maxim Ivanov"; 10123 }; 10124 redfish64 = { 10125 email = "engler@gmail.com"; 10126 github = "redfish64";
··· 10121 githubId = 16624; 10122 name = "Maxim Ivanov"; 10123 }; 10124 + reckenrode = { 10125 + name = "Randy Eckenrode"; 10126 + email = "randy@largeandhighquality.com"; 10127 + matrix = "@reckenrode:matrix.org"; 10128 + github = "reckenrode"; 10129 + githubId = 7413633; 10130 + keys = [ 10131 + # compare with https://keybase.io/reckenrode 10132 + { 10133 + longkeyid = "ed25519/0xFBF19A982CCE0048"; 10134 + fingerprint = "01D7 5486 3A6D 64EA AC77 0D26 FBF1 9A98 2CCE 0048"; 10135 + } 10136 + ]; 10137 + }; 10138 redfish64 = { 10139 email = "engler@gmail.com"; 10140 github = "redfish64";
+1 -1
pkgs/development/libraries/vulkan-headers/default.nix
··· 15 meta = with lib; { 16 description = "Vulkan Header files and API registry"; 17 homepage = "https://www.lunarg.com"; 18 - platforms = platforms.linux; 19 license = licenses.asl20; 20 maintainers = [ maintainers.ralith ]; 21 };
··· 15 meta = with lib; { 16 description = "Vulkan Header files and API registry"; 17 homepage = "https://www.lunarg.com"; 18 + platforms = platforms.unix; 19 license = licenses.asl20; 20 maintainers = [ maintainers.ralith ]; 21 };
+7 -7
pkgs/development/libraries/vulkan-loader/default.nix
··· 1 { lib, stdenv, fetchFromGitHub, cmake, pkg-config, libX11, libxcb 2 - , libXrandr, wayland, vulkan-headers, addOpenGLRunpath }: 3 4 stdenv.mkDerivation rec { 5 pname = "vulkan-loader"; ··· 14 }); 15 16 nativeBuildInputs = [ cmake pkg-config ]; 17 - buildInputs = [ libX11 libxcb libXrandr vulkan-headers wayland ]; 18 19 - cmakeFlags = [ 20 - "-DSYSCONFDIR=${addOpenGLRunpath.driverLink}/share" 21 - "-DCMAKE_INSTALL_INCLUDEDIR=${vulkan-headers}/include" 22 - ]; 23 24 outputs = [ "out" "dev" ]; 25 ··· 35 meta = with lib; { 36 description = "LunarG Vulkan loader"; 37 homepage = "https://www.lunarg.com"; 38 - platforms = platforms.linux; 39 license = licenses.asl20; 40 maintainers = [ maintainers.ralith ]; 41 };
··· 1 { lib, stdenv, fetchFromGitHub, cmake, pkg-config, libX11, libxcb 2 + , libXrandr, wayland, moltenvk, vulkan-headers, addOpenGLRunpath }: 3 4 stdenv.mkDerivation rec { 5 pname = "vulkan-loader"; ··· 14 }); 15 16 nativeBuildInputs = [ cmake pkg-config ]; 17 + buildInputs = [ vulkan-headers ] 18 + ++ lib.optionals (!stdenv.isDarwin) [ libX11 libxcb libXrandr wayland ]; 19 20 + cmakeFlags = [ "-DCMAKE_INSTALL_INCLUDEDIR=${vulkan-headers}/include" ] 21 + ++ lib.optional stdenv.isDarwin "-DSYSCONFDIR=${moltenvk}/share" 22 + ++ lib.optional stdenv.isLinux "-DSYSCONFDIR=${addOpenGLRunpath.driverLink}/share"; 23 24 outputs = [ "out" "dev" ]; 25 ··· 35 meta = with lib; { 36 description = "LunarG Vulkan loader"; 37 homepage = "https://www.lunarg.com"; 38 + platforms = platforms.unix; 39 license = licenses.asl20; 40 maintainers = [ maintainers.ralith ]; 41 };
+1 -1
pkgs/development/tools/spirv-tools/default.nix
··· 19 inherit (src.meta) homepage; 20 description = "The SPIR-V Tools project provides an API and commands for processing SPIR-V modules"; 21 license = licenses.asl20; 22 - platforms = platforms.linux; 23 maintainers = [ maintainers.ralith ]; 24 }; 25 }
··· 19 inherit (src.meta) homepage; 20 description = "The SPIR-V Tools project provides an API and commands for processing SPIR-V modules"; 21 license = licenses.asl20; 22 + platforms = platforms.unix; 23 maintainers = [ maintainers.ralith ]; 24 }; 25 }
+146
pkgs/os-specific/darwin/moltenvk/MoltenVK.xcodeproj.patch
···
··· 1 + diff --git a/MoltenVK/MoltenVK.xcodeproj/project.pbxproj b/MoltenVK/MoltenVK.xcodeproj/project.pbxproj 2 + index c23afce4..12ac12f4 100644 3 + --- a/MoltenVK/MoltenVK.xcodeproj/project.pbxproj 4 + +++ b/MoltenVK/MoltenVK.xcodeproj/project.pbxproj 5 + @@ -365,13 +365,6 @@ 6 + /* End PBXBuildFile section */ 7 + 8 + /* Begin PBXContainerItemProxy section */ 9 + - 2F21D82E24983488009BEA5F /* PBXContainerItemProxy */ = { 10 + - isa = PBXContainerItemProxy; 11 + - containerPortal = A9C86CB61C55B8350096CAF2 /* MoltenVKShaderConverter.xcodeproj */; 12 + - proxyType = 1; 13 + - remoteGlobalIDString = 2FEA0CFF2490381A00EEF3AD; 14 + - remoteInfo = "MoltenVKSPIRVToMSLConverter-tvOS"; 15 + - }; 16 + 2FEA0D1B249040CA00EEF3AD /* PBXContainerItemProxy */ = { 17 + isa = PBXContainerItemProxy; 18 + containerPortal = A9C86CB61C55B8350096CAF2 /* MoltenVKShaderConverter.xcodeproj */; 19 + @@ -400,20 +393,6 @@ 20 + remoteGlobalIDString = A93903C71C57E9ED00FE90DC; 21 + remoteInfo = "MVKSPIRVToMSLConverter-macOS"; 22 + }; 23 + - A981499A1FB6B9CF005F00B4 /* PBXContainerItemProxy */ = { 24 + - isa = PBXContainerItemProxy; 25 + - containerPortal = A9C86CB61C55B8350096CAF2 /* MoltenVKShaderConverter.xcodeproj */; 26 + - proxyType = 1; 27 + - remoteGlobalIDString = A93903B81C57E9D700FE90DC; 28 + - remoteInfo = "MVKSPIRVToMSLConverter-iOS"; 29 + - }; 30 + - A9B1C7F4251AA5AF001D12CC /* PBXContainerItemProxy */ = { 31 + - isa = PBXContainerItemProxy; 32 + - containerPortal = A9C86CB61C55B8350096CAF2 /* MoltenVKShaderConverter.xcodeproj */; 33 + - proxyType = 1; 34 + - remoteGlobalIDString = A9092A8C1A81717B00051823; 35 + - remoteInfo = MoltenVKShaderConverter; 36 + - }; 37 + /* End PBXContainerItemProxy section */ 38 + 39 + /* Begin PBXFileReference section */ 40 + @@ -1019,7 +998,6 @@ 41 + buildRules = ( 42 + ); 43 + dependencies = ( 44 + - 2F21D82F24983488009BEA5F /* PBXTargetDependency */, 45 + ); 46 + name = "MoltenVK-tvOS"; 47 + productName = MoltenVK; 48 + @@ -1039,7 +1017,6 @@ 49 + buildRules = ( 50 + ); 51 + dependencies = ( 52 + - A981499B1FB6B9CF005F00B4 /* PBXTargetDependency */, 53 + ); 54 + name = "MoltenVK-iOS"; 55 + productName = MoltenVK; 56 + @@ -1059,7 +1036,6 @@ 57 + buildRules = ( 58 + ); 59 + dependencies = ( 60 + - A9B1C7F5251AA5AF001D12CC /* PBXTargetDependency */, 61 + ); 62 + name = "MoltenVK-macOS"; 63 + productName = MoltenVK; 64 + @@ -1476,24 +1452,6 @@ 65 + }; 66 + /* End PBXSourcesBuildPhase section */ 67 + 68 + -/* Begin PBXTargetDependency section */ 69 + - 2F21D82F24983488009BEA5F /* PBXTargetDependency */ = { 70 + - isa = PBXTargetDependency; 71 + - name = "MoltenVKSPIRVToMSLConverter-tvOS"; 72 + - targetProxy = 2F21D82E24983488009BEA5F /* PBXContainerItemProxy */; 73 + - }; 74 + - A981499B1FB6B9CF005F00B4 /* PBXTargetDependency */ = { 75 + - isa = PBXTargetDependency; 76 + - name = "MVKSPIRVToMSLConverter-iOS"; 77 + - targetProxy = A981499A1FB6B9CF005F00B4 /* PBXContainerItemProxy */; 78 + - }; 79 + - A9B1C7F5251AA5AF001D12CC /* PBXTargetDependency */ = { 80 + - isa = PBXTargetDependency; 81 + - name = MoltenVKShaderConverter; 82 + - targetProxy = A9B1C7F4251AA5AF001D12CC /* PBXContainerItemProxy */; 83 + - }; 84 + -/* End PBXTargetDependency section */ 85 + - 86 + /* Begin XCBuildConfiguration section */ 87 + 2FEA0AB824902F9F00EEF3AD /* Debug */ = { 88 + isa = XCBuildConfiguration; 89 + @@ -1586,11 +1544,12 @@ 90 + GCC_WARN_UNUSED_VARIABLE = YES; 91 + GENERATE_MASTER_OBJECT_FILE = YES; 92 + HEADER_SEARCH_PATHS = ( 93 + - "\"$(SRCROOT)/include\"", 94 + - "\"$(SRCROOT)/../MoltenVKShaderConverter\"", 95 + - "\"$(SRCROOT)/../MoltenVKShaderConverter/SPIRV-Cross\"", 96 + - "\"$(SRCROOT)/../External/cereal/include\"", 97 + - "\"${BUILT_PRODUCTS_DIR}\"", 98 + + "@@sourceRoot@@/outputs/include", 99 + + "@@sourceRoot@@/outputs/include/simd_workaround", 100 + + "@@sourceRoot@@/MoltenVKShaderConverter", 101 + + "@@cereal@@/include", 102 + + "@@spirv-cross@@/include/spirv_cross", 103 + + "@@vulkan-headers@@/include", 104 + ); 105 + IPHONEOS_DEPLOYMENT_TARGET = 9.0; 106 + MACH_O_TYPE = staticlib; 107 + @@ -1600,6 +1559,10 @@ 108 + MVK_SKIP_DYLIB = ""; 109 + "MVK_SKIP_DYLIB[sdk=appletvsimulator*]" = YES; 110 + "MVK_SKIP_DYLIB[sdk=iphonesimulator*]" = YES; 111 + + OTHER_CFLAGS = ( 112 + + "-isystem", 113 + + "@@libcxx@@/include/c++/v1", 114 + + ); 115 + PRELINK_LIBS = "${CONFIGURATION_BUILD_DIR}/libMoltenVKShaderConverter.a"; 116 + PRODUCT_NAME = MoltenVK; 117 + SKIP_INSTALL = YES; 118 + @@ -1658,11 +1621,12 @@ 119 + GCC_WARN_UNUSED_VARIABLE = YES; 120 + GENERATE_MASTER_OBJECT_FILE = YES; 121 + HEADER_SEARCH_PATHS = ( 122 + - "\"$(SRCROOT)/include\"", 123 + - "\"$(SRCROOT)/../MoltenVKShaderConverter\"", 124 + - "\"$(SRCROOT)/../MoltenVKShaderConverter/SPIRV-Cross\"", 125 + - "\"$(SRCROOT)/../External/cereal/include\"", 126 + - "\"${BUILT_PRODUCTS_DIR}\"", 127 + + "@@sourceRoot@@/outputs/include", 128 + + "@@sourceRoot@@/outputs/include/simd_workaround", 129 + + "@@sourceRoot@@/MoltenVKShaderConverter", 130 + + "@@cereal@@/include", 131 + + "@@spirv-cross@@/include/spirv_cross", 132 + + "@@vulkan-headers@@/include", 133 + ); 134 + IPHONEOS_DEPLOYMENT_TARGET = 9.0; 135 + MACH_O_TYPE = staticlib; 136 + @@ -1672,6 +1636,10 @@ 137 + MVK_SKIP_DYLIB = ""; 138 + "MVK_SKIP_DYLIB[sdk=appletvsimulator*]" = YES; 139 + "MVK_SKIP_DYLIB[sdk=iphonesimulator*]" = YES; 140 + + OTHER_CFLAGS = ( 141 + + "-isystem", 142 + + "@@libcxx@@/include/c++/v1", 143 + + ); 144 + PRELINK_LIBS = "${CONFIGURATION_BUILD_DIR}/libMoltenVKShaderConverter.a"; 145 + PRODUCT_NAME = MoltenVK; 146 + SKIP_INSTALL = YES;
+180
pkgs/os-specific/darwin/moltenvk/MoltenVKShaderConverter.xcodeproj.patch
···
··· 1 + diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj 2 + index c7842b63..d55f73ed 100644 3 + --- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj 4 + +++ b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj 5 + @@ -3,7 +3,7 @@ 6 + archiveVersion = 1; 7 + classes = { 8 + }; 9 + - objectVersion = 52; 10 + + objectVersion = 48; 11 + objects = { 12 + 13 + /* Begin PBXBuildFile section */ 14 + @@ -33,9 +33,6 @@ 15 + A920A8AC251B75B70076851C /* GLSLToSPIRVConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = A920A8A2251B75B70076851C /* GLSLToSPIRVConverter.h */; }; 16 + A920A8AD251B75B80076851C /* GLSLToSPIRVConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = A920A8A2251B75B70076851C /* GLSLToSPIRVConverter.h */; }; 17 + A920A8AE251B75B80076851C /* GLSLToSPIRVConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = A920A8A2251B75B70076851C /* GLSLToSPIRVConverter.h */; }; 18 + - A920A8AF251B77900076851C /* glslang.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A98386FD24EEE93700199A05 /* glslang.xcframework */; }; 19 + - A920A8B0251B77910076851C /* glslang.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A98386FD24EEE93700199A05 /* glslang.xcframework */; }; 20 + - A920A8B1251B77920076851C /* glslang.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A98386FD24EEE93700199A05 /* glslang.xcframework */; }; 21 + A925B71B1C78DEB2006E7ECD /* libMoltenVKShaderConverter.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A93903C71C57E9ED00FE90DC /* libMoltenVKShaderConverter.a */; }; 22 + A928C9191D0488DC00071B88 /* SPIRVConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A928C9171D0488DC00071B88 /* SPIRVConversion.h */; }; 23 + A928C91A1D0488DC00071B88 /* SPIRVConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A928C9171D0488DC00071B88 /* SPIRVConversion.h */; }; 24 + @@ -55,12 +52,6 @@ 25 + A97CC7411C7527F3004A5C7E /* MoltenVKShaderConverterTool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97CC73E1C7527F3004A5C7E /* MoltenVKShaderConverterTool.cpp */; }; 26 + A98149681FB6A98A005F00B4 /* MVKStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = A98149651FB6A98A005F00B4 /* MVKStrings.h */; }; 27 + A98149691FB6A98A005F00B4 /* MVKStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = A98149651FB6A98A005F00B4 /* MVKStrings.h */; }; 28 + - A98386FA24EEE91A00199A05 /* SPIRVCross.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A98386F824EEE91A00199A05 /* SPIRVCross.xcframework */; }; 29 + - A98386FB24EEE91A00199A05 /* SPIRVCross.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A98386F824EEE91A00199A05 /* SPIRVCross.xcframework */; }; 30 + - A98386FC24EEE91A00199A05 /* SPIRVCross.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A98386F824EEE91A00199A05 /* SPIRVCross.xcframework */; }; 31 + - A983870724EEE94800199A05 /* SPIRVTools.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A983870224EEE94800199A05 /* SPIRVTools.xcframework */; }; 32 + - A983870824EEE94800199A05 /* SPIRVTools.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A983870224EEE94800199A05 /* SPIRVTools.xcframework */; }; 33 + - A983870924EEE94800199A05 /* SPIRVTools.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A983870224EEE94800199A05 /* SPIRVTools.xcframework */; }; 34 + A9A14E332244388700C080F3 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9A14E322244388700C080F3 /* Metal.framework */; }; 35 + A9B51BDD225E98BB00AC74D2 /* MVKOSExtensions.mm in Sources */ = {isa = PBXBuildFile; fileRef = A9B51BDB225E98BB00AC74D2 /* MVKOSExtensions.mm */; }; 36 + A9F042B21FB4D060009FCCB8 /* MVKCommonEnvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F042AA1FB4D060009FCCB8 /* MVKCommonEnvironment.h */; }; 37 + @@ -115,9 +106,6 @@ 38 + isa = PBXFrameworksBuildPhase; 39 + buildActionMask = 2147483647; 40 + files = ( 41 + - A983870824EEE94800199A05 /* SPIRVTools.xcframework in Frameworks */, 42 + - A98386FB24EEE91A00199A05 /* SPIRVCross.xcframework in Frameworks */, 43 + - A920A8B0251B77910076851C /* glslang.xcframework in Frameworks */, 44 + ); 45 + runOnlyForDeploymentPostprocessing = 0; 46 + }; 47 + @@ -134,9 +122,6 @@ 48 + isa = PBXFrameworksBuildPhase; 49 + buildActionMask = 2147483647; 50 + files = ( 51 + - A983870724EEE94800199A05 /* SPIRVTools.xcframework in Frameworks */, 52 + - A98386FA24EEE91A00199A05 /* SPIRVCross.xcframework in Frameworks */, 53 + - A920A8AF251B77900076851C /* glslang.xcframework in Frameworks */, 54 + ); 55 + runOnlyForDeploymentPostprocessing = 0; 56 + }; 57 + @@ -144,9 +129,6 @@ 58 + isa = PBXFrameworksBuildPhase; 59 + buildActionMask = 2147483647; 60 + files = ( 61 + - A983870924EEE94800199A05 /* SPIRVTools.xcframework in Frameworks */, 62 + - A98386FC24EEE91A00199A05 /* SPIRVCross.xcframework in Frameworks */, 63 + - A920A8B1251B77920076851C /* glslang.xcframework in Frameworks */, 64 + ); 65 + runOnlyForDeploymentPostprocessing = 0; 66 + }; 67 + @@ -313,7 +295,7 @@ 68 + A925B71D1C78DEBF006E7ECD /* PBXTargetDependency */, 69 + ); 70 + name = MoltenVKShaderConverter; 71 + - productName = MetalGLShaderConverterTool; 72 + + productName = MoltenVKShaderConverter; 73 + productReference = A964BD5F1C57EFBD00D930D8 /* MoltenVKShaderConverter */; 74 + productType = "com.apple.product-type.tool"; 75 + }; 76 + @@ -349,7 +331,7 @@ 77 + dependencies = ( 78 + ); 79 + name = "MoltenVKShaderConverter-macOS"; 80 + - productName = "MetalGLShaderConverter-macOS"; 81 + + productName = MoltenVKShaderConverter; 82 + productReference = A93903C71C57E9ED00FE90DC /* libMoltenVKShaderConverter.a */; 83 + productType = "com.apple.product-type.library.static"; 84 + }; 85 + @@ -536,6 +518,17 @@ 86 + OTHER_LDFLAGS = ( 87 + "-ObjC", 88 + "-w", 89 + + "-lMachineIndependent", 90 + + "-lGenericCodeGen", 91 + + "-lOGLCompiler", 92 + + "-lglslang", 93 + + "-lOSDependent", 94 + + "-lSPIRV", 95 + + "-lSPIRV-Tools", 96 + + "-lSPIRV-Tools-opt", 97 + + "-lspirv-cross-msl", 98 + + "-lspirv-cross-core", 99 + + "-lspirv-cross-glsl", 100 + ); 101 + SDKROOT = macosx; 102 + }; 103 + @@ -548,6 +541,17 @@ 104 + OTHER_LDFLAGS = ( 105 + "-ObjC", 106 + "-w", 107 + + "-lMachineIndependent", 108 + + "-lGenericCodeGen", 109 + + "-lOGLCompiler", 110 + + "-lglslang", 111 + + "-lOSDependent", 112 + + "-lSPIRV", 113 + + "-lSPIRV-Tools", 114 + + "-lSPIRV-Tools-opt", 115 + + "-lspirv-cross-msl", 116 + + "-lspirv-cross-core", 117 + + "-lspirv-cross-glsl", 118 + ); 119 + SDKROOT = macosx; 120 + }; 121 + @@ -624,15 +628,24 @@ 122 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 123 + GCC_WARN_UNUSED_FUNCTION = YES; 124 + HEADER_SEARCH_PATHS = ( 125 + - "$(inherited)", 126 + - "\"$(SRCROOT)\"", 127 + - "\"$(SRCROOT)/SPIRV-Cross\"", 128 + - "\"$(SRCROOT)/glslang\"", 129 + - "\"$(SRCROOT)/glslang/External/spirv-tools/include\"", 130 + + "@@sourceRoot@@/Common", 131 + + "@@glslang@@/include", 132 + + "@@spirv-cross@@/include/spirv_cross", 133 + + "@@spirv-tools@@/include", 134 + + "@@spirv-headers@@/include/spirv/unified1/", 135 + ); 136 + IPHONEOS_DEPLOYMENT_TARGET = 9.0; 137 + + LIBRARY_SEARCH_PATHS = ( 138 + + "@@glslang@@/lib", 139 + + "@@spirv-cross@@/lib", 140 + + "@@spirv-tools@@/lib", 141 + + ); 142 + MACH_O_TYPE = staticlib; 143 + MACOSX_DEPLOYMENT_TARGET = 10.11; 144 + + OTHER_CFLAGS = ( 145 + + "-isystem", 146 + + "@@libcxx@@/include/c++/v1", 147 + + ); 148 + PRODUCT_NAME = MoltenVKShaderConverter; 149 + SKIP_INSTALL = YES; 150 + TVOS_DEPLOYMENT_TARGET = 9.0; 151 + @@ -683,15 +696,24 @@ 152 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 153 + GCC_WARN_UNUSED_FUNCTION = YES; 154 + HEADER_SEARCH_PATHS = ( 155 + - "$(inherited)", 156 + - "\"$(SRCROOT)\"", 157 + - "\"$(SRCROOT)/SPIRV-Cross\"", 158 + - "\"$(SRCROOT)/glslang\"", 159 + - "\"$(SRCROOT)/glslang/External/spirv-tools/include\"", 160 + + "@@sourceRoot@@/Common", 161 + + "@@glslang@@/include", 162 + + "@@spirv-cross@@/include/spirv_cross", 163 + + "@@spirv-tools@@/include", 164 + + "@@spirv-headers@@/include/spirv/unified1/", 165 + ); 166 + IPHONEOS_DEPLOYMENT_TARGET = 9.0; 167 + + LIBRARY_SEARCH_PATHS = ( 168 + + "@@glslang@@/lib", 169 + + "@@spirv-cross@@/lib", 170 + + "@@spirv-tools@@/lib", 171 + + ); 172 + MACH_O_TYPE = staticlib; 173 + MACOSX_DEPLOYMENT_TARGET = 10.11; 174 + + OTHER_CFLAGS = ( 175 + + "-isystem", 176 + + "@@libcxx@@/include/c++/v1", 177 + + ); 178 + PRODUCT_NAME = MoltenVKShaderConverter; 179 + SKIP_INSTALL = YES; 180 + TVOS_DEPLOYMENT_TARGET = 9.0;
+13
pkgs/os-specific/darwin/moltenvk/createDylib.patch
···
··· 1 + diff --git a/Scripts/create_dylib.sh b/Scripts/create_dylib.sh 2 + index 5ba75f67..a0405067 100755 3 + --- a/Scripts/create_dylib.sh 4 + +++ b/Scripts/create_dylib.sh 5 + @@ -57,6 +57,8 @@ ${MVK_SAN} \ 6 + -framework Metal ${MVK_IOSURFACE_FWK} -framework ${MVK_UX_FWK} -framework QuartzCore -framework CoreGraphics ${MVK_IOKIT_FWK} -framework Foundation \ 7 + --library-directory ${MVK_USR_LIB_DIR} \ 8 + -o "${MVK_BUILT_PROD_DIR}/dynamic/${MVK_DYLIB_NAME}" \ 9 + +-L@@sourceRoot@@/outputs/lib -L@@glslang@@/lib -L@@spirv-tools@@/lib -L@@spirv-cross@@/lib \ 10 + +-lobjc -lMoltenVKShaderConverter -lGenericCodeGen -lMachineIndependent -lOGLCompiler -lOSDependent -lSPIRV -lSPIRV-Tools -lSPIRV-Tools-opt -lspirv-cross-core -lspirv-cross-glsl -lspirv-cross-msl -lspirv-cross-reflect \ 11 + -force_load "${MVK_BUILT_PROD_DIR}/lib${PRODUCT_NAME}.a" 12 + 13 + if test "$CONFIGURATION" = Debug; then
+200
pkgs/os-specific/darwin/moltenvk/default.nix
···
··· 1 + { lib 2 + , stdenv 3 + , stdenvNoCC 4 + , fetchurl 5 + , fetchFromGitHub 6 + , cctools 7 + , sigtool 8 + , cereal 9 + , glslang 10 + , spirv-cross 11 + , spirv-headers 12 + , spirv-tools 13 + , vulkan-headers 14 + , AppKit 15 + , Foundation 16 + , Metal 17 + , QuartzCore 18 + }: 19 + 20 + # Even though the derivation is currently impure, it is written to build successfully using 21 + # `xcbuild`. Once the SDK on x86_64-darwin is updated, it should be possible to switch from being 22 + # an impure derivation. 23 + # 24 + # The `sandboxProfile` was copied from the iTerm2 derivation. In order to build you at least need 25 + # the `sandbox` option set to `relaxed` or `false`. Xcode should be available in the default 26 + # location. 27 + let 28 + libcxx.dev = "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr"; 29 + in 30 + stdenvNoCC.mkDerivation rec { 31 + pname = "MoltenVK"; 32 + version = "1.1.7"; 33 + 34 + buildInputs = [ 35 + AppKit 36 + Foundation 37 + Metal 38 + QuartzCore 39 + ]; 40 + 41 + outputs = [ "out" "bin" ]; 42 + 43 + # MoltenVK requires specific versions of its dependencies. 44 + # Pin them here except for cereal, which is four years old and has several CVEs. 45 + passthru = { 46 + glslang = (glslang.overrideAttrs (old: { 47 + src = fetchFromGitHub { 48 + owner = "KhronosGroup"; 49 + repo = "glslang"; 50 + rev = "2742e959347ae2fac58acd0d022c92a0ff1f24bf"; 51 + hash = "sha256-Q0sk4bPj/skPat1n4GJyuXAlZqpfEn4Td8Bm2IBNUqE="; 52 + }; 53 + })).override { 54 + inherit (passthru) spirv-headers spirv-tools; 55 + }; 56 + spirv-cross = spirv-cross.overrideAttrs (old: { 57 + cmakeFlags = (old.cmakeFlags or [ ]) ++ [ 58 + "-DSPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross" 59 + ]; 60 + src = fetchFromGitHub { 61 + owner = "KhronosGroup"; 62 + repo = "SPIRV-Cross"; 63 + rev = "131278458ea8eebe6a6e9c476fbcf71278726e1a"; 64 + hash = "sha256-LrRYDFGv3Zxfy4qRNLwM2OOa8jbcq0ttPxDamCH21xU="; 65 + }; 66 + }); 67 + spirv-headers = spirv-headers.overrideAttrs (_: { 68 + src = fetchFromGitHub { 69 + owner = "KhronosGroup"; 70 + repo = "spirv-headers"; 71 + rev = "b42ba6d92faf6b4938e6f22ddd186dbdacc98d78"; 72 + hash = "sha256-ks9JCj5rj+Xu++7z5RiHDkU3/sFXhcScw8dATfB/ot0"; 73 + }; 74 + }); 75 + spirv-tools = (spirv-tools.overrideAttrs (old: { 76 + src = fetchFromGitHub { 77 + owner = "KhronosGroup"; 78 + repo = "spirv-tools"; 79 + rev = "45dd184c790d6bfc78a5a74a10c37e888b1823fa"; 80 + hash = "sha256-DSqZlwfNTbN4fyIrVBKltm5U2U4GthW3L+Ksw4lSVG8="; 81 + }; 82 + meta = old.meta // { 83 + platforms = old.meta.platforms ++ lib.platforms.darwin; 84 + }; 85 + })).override { 86 + inherit (passthru) spirv-headers; 87 + }; 88 + vulkan-headers = vulkan-headers.overrideAttrs (old: { 89 + src = fetchFromGitHub { 90 + owner = "KhronosGroup"; 91 + repo = "Vulkan-Headers"; 92 + rev = "1dace16d8044758d32736eb59802d171970e9448"; 93 + hash = "sha256-C6YgxWcinI3QumcWmoJaiTAf0u6jSDc8sCIarn2t04k"; 94 + }; 95 + meta = old.meta // { 96 + platforms = old.meta.platforms ++ lib.platforms.darwin; 97 + }; 98 + }); 99 + }; 100 + 101 + src = fetchFromGitHub { 102 + owner = "KhronosGroup"; 103 + repo = "MoltenVK"; 104 + rev = "v${version}"; 105 + hash = "sha256-I9QcjyE09qclWPCLAVfKEaifP89q1ftLh9cXWy9m7kw="; 106 + }; 107 + 108 + patches = [ 109 + # Specify the libraries to link directly since XCFrameworks are not being used. 110 + ./createDylib.patch 111 + # Move `mvkGitRevDerived.h` to a stable location 112 + ./gitRevHeaderStability.patch 113 + # Fix the Xcode projects to play nicely with `xcbuild`. 114 + ./MoltenVKShaderConverter.xcodeproj.patch 115 + ./MoltenVK.xcodeproj.patch 116 + ]; 117 + 118 + postPatch = '' 119 + substituteInPlace MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj \ 120 + --replace @@sourceRoot@@ $(pwd) \ 121 + --replace @@libcxx@@ "${libcxx.dev}" \ 122 + --replace @@glslang@@ "${passthru.glslang}" \ 123 + --replace @@spirv-cross@@ "${passthru.spirv-cross}" \ 124 + --replace @@spirv-tools@@ "${passthru.glslang.spirv-tools}" \ 125 + --replace @@spirv-headers@@ "${passthru.glslang.spirv-headers}" 126 + substituteInPlace MoltenVK/MoltenVK.xcodeproj/project.pbxproj \ 127 + --replace @@sourceRoot@@ $(pwd) \ 128 + --replace @@libcxx@@ "${libcxx.dev}" \ 129 + --replace @@cereal@@ "${cereal}" \ 130 + --replace @@spirv-cross@@ "${passthru.spirv-cross}" \ 131 + --replace @@vulkan-headers@@ "${passthru.vulkan-headers}" 132 + substituteInPlace Scripts/create_dylib.sh \ 133 + --replace @@sourceRoot@@ $(pwd) \ 134 + --replace @@glslang@@ "${passthru.glslang}" \ 135 + --replace @@spirv-tools@@ "${passthru.glslang.spirv-tools}" \ 136 + --replace @@spirv-cross@@ "${passthru.spirv-cross}" 137 + substituteInPlace Scripts/gen_moltenvk_rev_hdr.sh \ 138 + --replace @@sourceRoot@@ $(pwd) \ 139 + --replace '$(git rev-parse HEAD)' ${src.rev} 140 + ''; 141 + 142 + dontConfigure = true; 143 + 144 + buildPhase = '' 145 + # Build each project on its own because `xcbuild` fails to build `MoltenVKPackaging.xcodeproj`. 146 + derived_data_path=$(pwd)/DerivedData 147 + pushd MoltenVKShaderConverter 148 + /usr/bin/xcodebuild build \ 149 + -jobs $NIX_BUILD_CORES \ 150 + -derivedDataPath "$derived_data_path" \ 151 + -configuration Release \ 152 + -project MoltenVKShaderConverter.xcodeproj \ 153 + -scheme MoltenVKShaderConverter \ 154 + -arch ${stdenv.targetPlatform.darwinArch} 155 + popd 156 + mkdir -p outputs/bin outputs/lib 157 + declare -A outputs=( [MoltenVKShaderConverter]=bin [libMoltenVKShaderConverter.a]=lib ) 158 + for output in "''${!outputs[@]}"; do 159 + cp DerivedData/Build/Products/Release/$output "outputs/''${outputs[$output]}/$output" 160 + done 161 + 162 + pushd MoltenVK 163 + /usr/bin/xcodebuild build \ 164 + -jobs $NIX_BUILD_CORES \ 165 + -derivedDataPath "$derived_data_path" \ 166 + -configuration Release \ 167 + -project MoltenVK.xcodeproj \ 168 + -scheme MoltenVK-macOS \ 169 + -arch ${stdenv.targetPlatform.darwinArch} 170 + popd 171 + cp DerivedData/Build/Products/Release/dynamic/libMoltenVK.dylib outputs/lib/libMoltenVK.dylib 172 + ''; 173 + 174 + installPhase = '' 175 + mkdir -p "$out/lib" "$out/share/vulkan/icd.d" "$bin/bin" 176 + cp outputs/bin/MoltenVKShaderConverter "$bin/bin/" 177 + cp outputs/lib/libMoltenVK.dylib "$out/lib/" 178 + ${cctools}/bin/install_name_tool -id "$out/lib/libMoltenVK.dylib" "$out/lib/libMoltenVK.dylib" 179 + # FIXME: https://github.com/NixOS/nixpkgs/issues/148189 180 + /usr/bin/codesign -s - -f "$out/lib/libMoltenVK.dylib" 181 + install -m644 MoltenVK/icd/MoltenVK_icd.json "$out/share/vulkan/icd.d/MoltenVK_icd.json" 182 + substituteInPlace $out/share/vulkan/icd.d/MoltenVK_icd.json \ 183 + --replace ./libMoltenVK.dylib "$out/share/vulkan/icd.d/MoltenVK_icd.json" 184 + ''; 185 + 186 + sandboxProfile = '' 187 + (allow file-read* file-write* process-exec mach-lookup) 188 + ; block homebrew dependencies 189 + (deny file-read* file-write* process-exec mach-lookup (subpath "/usr/local") (with no-log)) 190 + ''; 191 + 192 + meta = { 193 + description = "A Vulkan Portability implementation built on top of Apple’s Metal API"; 194 + homepage = "https://github.com/KhronosGroup/MoltenVK"; 195 + changelog = "https://github.com/KhronosGroup/MoltenVK/releases"; 196 + maintainers = [ lib.maintainers.reckenrode ]; 197 + license = lib.licenses.asl20; 198 + platforms = lib.platforms.darwin; 199 + }; 200 + }
+14
pkgs/os-specific/darwin/moltenvk/gitRevHeaderStability.patch
···
··· 1 + diff --git a/Scripts/gen_moltenvk_rev_hdr.sh b/Scripts/gen_moltenvk_rev_hdr.sh 2 + index c49ea4e6..9b7d13d1 100755 3 + --- a/Scripts/gen_moltenvk_rev_hdr.sh 4 + +++ b/Scripts/gen_moltenvk_rev_hdr.sh 5 + @@ -2,7 +2,7 @@ 6 + 7 + # Record the MoltenVK GIT revision as a derived header file suitable for including in a build 8 + MVK_GIT_REV=$(git rev-parse HEAD) 9 + -MVK_HDR_FILE="${BUILT_PRODUCTS_DIR}/mvkGitRevDerived.h" 10 + +MVK_HDR_FILE="@@sourceRoot@@/outputs/include/mvkGitRevDerived.h" 11 + +mkdir -p $(dirname ${MVK_HDR_FILE}) 12 + echo "// Auto-generated by MoltenVK" > "${MVK_HDR_FILE}" 13 + echo "static const char* mvkRevString = \"${MVK_GIT_REV}\";" >> "${MVK_HDR_FILE}" 14 + -
+1 -1
pkgs/top-level/all-packages.nix
··· 20402 20403 vulkan-extension-layer = callPackage ../tools/graphics/vulkan-extension-layer { }; 20404 vulkan-headers = callPackage ../development/libraries/vulkan-headers { }; 20405 - vulkan-loader = callPackage ../development/libraries/vulkan-loader { }; 20406 vulkan-tools = callPackage ../tools/graphics/vulkan-tools { }; 20407 vulkan-tools-lunarg = callPackage ../tools/graphics/vulkan-tools-lunarg { }; 20408 vulkan-validation-layers = callPackage ../development/tools/vulkan-validation-layers { };
··· 20402 20403 vulkan-extension-layer = callPackage ../tools/graphics/vulkan-extension-layer { }; 20404 vulkan-headers = callPackage ../development/libraries/vulkan-headers { }; 20405 + vulkan-loader = callPackage ../development/libraries/vulkan-loader { inherit (darwin) moltenvk; }; 20406 vulkan-tools = callPackage ../tools/graphics/vulkan-tools { }; 20407 vulkan-tools-lunarg = callPackage ../tools/graphics/vulkan-tools-lunarg { }; 20408 vulkan-validation-layers = callPackage ../development/tools/vulkan-validation-layers { };
+2
pkgs/top-level/darwin-packages.nix
··· 148 149 lsusb = callPackage ../os-specific/darwin/lsusb { }; 150 151 opencflite = callPackage ../os-specific/darwin/opencflite { }; 152 153 stubs = pkgs.callPackages ../os-specific/darwin/stubs { };
··· 148 149 lsusb = callPackage ../os-specific/darwin/lsusb { }; 150 151 + moltenvk = callPackage ../os-specific/darwin/moltenvk { }; 152 + 153 opencflite = callPackage ../os-specific/darwin/opencflite { }; 154 155 stubs = pkgs.callPackages ../os-specific/darwin/stubs { };