git.iko.soy/typeable/nixpkgs
on master help sign in
Merge pull request #158534 from reckenrode/moltenvk
commit59e6eceb2e5b61038c17371426e0ae6aec504d8e authorSandro <sandro.jaeckel@gmail.com> dateThu 17 Feb 2022, 13:42 (5 years ago) parentc687360f609108
11 files changed+579−10
maintainers/maintainer-list.nix+14 pkgs/development/libraries/vulkan-headers/default.nix+1−1 pkgs/development/libraries/vulkan-loader/default.nix+7−7 pkgs/development/tools/spirv-tools/default.nix+1−1 pkgs/os-specific/darwin/moltenvk/MoltenVK.xcodeproj.patch+146 pkgs/os-specific/darwin/moltenvk/MoltenVKShaderConverter.xcodeproj.patch+180 pkgs/os-specific/darwin/moltenvk/createDylib.patch+13 pkgs/os-specific/darwin/moltenvk/default.nix+200 pkgs/os-specific/darwin/moltenvk/gitRevHeaderStability.patch+14 pkgs/top-level/all-packages.nix+1−1 pkgs/top-level/darwin-packages.nix+2
maintainers/maintainer-list.nix+14
@@ -10121,6 +10121,20 @@
1012110121 githubId = 16624;
1012210122 name = "Maxim Ivanov";
1012310123 };
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+ };
1012410138 redfish64 = {
1012510139 email = "engler@gmail.com";
1012610140 github = "redfish64";
pkgs/development/libraries/vulkan-headers/default.nix+1−1
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
1515 meta = with lib; {
1616 description = "Vulkan Header files and API registry";
1717 homepage = "https://www.lunarg.com";
18− platforms = platforms.linux;
18+ platforms = platforms.unix;
1919 license = licenses.asl20;
2020 maintainers = [ maintainers.ralith ];
2121 };
pkgs/development/libraries/vulkan-loader/default.nix+7−7
@@ -1,5 +1,5 @@
11{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, libX11, libxcb
2−, libXrandr, wayland, vulkan-headers, addOpenGLRunpath }:
2+, libXrandr, wayland, moltenvk, vulkan-headers, addOpenGLRunpath }:
33
44stdenv.mkDerivation rec {
55 pname = "vulkan-loader";
@@ -14,12 +14,12 @@ stdenv.mkDerivation rec {
1414 });
1515
1616 nativeBuildInputs = [ cmake pkg-config ];
17− buildInputs = [ libX11 libxcb libXrandr vulkan-headers wayland ];
17+ buildInputs = [ vulkan-headers ]
18+ ++ lib.optionals (!stdenv.isDarwin) [ libX11 libxcb libXrandr wayland ];
1819
19− cmakeFlags = [
20− "-DSYSCONFDIR=${addOpenGLRunpath.driverLink}/share"
21− "-DCMAKE_INSTALL_INCLUDEDIR=${vulkan-headers}/include"
22− ];
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";
2323
2424 outputs = [ "out" "dev" ];
2525
@@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
3535 meta = with lib; {
3636 description = "LunarG Vulkan loader";
3737 homepage = "https://www.lunarg.com";
38− platforms = platforms.linux;
38+ platforms = platforms.unix;
3939 license = licenses.asl20;
4040 maintainers = [ maintainers.ralith ];
4141 };
pkgs/development/tools/spirv-tools/default.nix+1−1
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
1919 inherit (src.meta) homepage;
2020 description = "The SPIR-V Tools project provides an API and commands for processing SPIR-V modules";
2121 license = licenses.asl20;
22− platforms = platforms.linux;
22+ platforms = platforms.unix;
2323 maintainers = [ maintainers.ralith ];
2424 };
2525}
pkgs/os-specific/darwin/moltenvk/MoltenVK.xcodeproj.patchnew file+146
@@ -0,0 +1,146 @@
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;
pkgs/os-specific/darwin/moltenvk/MoltenVKShaderConverter.xcodeproj.patchnew file+180
@@ -0,0 +1,180 @@
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;
pkgs/os-specific/darwin/moltenvk/createDylib.patchnew file+13
@@ -0,0 +1,13 @@
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
pkgs/os-specific/darwin/moltenvk/default.nixnew file+200
@@ -0,0 +1,200 @@
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+}
pkgs/os-specific/darwin/moltenvk/gitRevHeaderStability.patchnew file+14
@@ -0,0 +1,14 @@
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+-
pkgs/top-level/all-packages.nix+1−1
@@ -20402,7 +20402,7 @@ with pkgs;
2040220402
2040320403 vulkan-extension-layer = callPackage ../tools/graphics/vulkan-extension-layer { };
2040420404 vulkan-headers = callPackage ../development/libraries/vulkan-headers { };
20405− vulkan-loader = callPackage ../development/libraries/vulkan-loader { };
20405+ vulkan-loader = callPackage ../development/libraries/vulkan-loader { inherit (darwin) moltenvk; };
2040620406 vulkan-tools = callPackage ../tools/graphics/vulkan-tools { };
2040720407 vulkan-tools-lunarg = callPackage ../tools/graphics/vulkan-tools-lunarg { };
2040820408 vulkan-validation-layers = callPackage ../development/tools/vulkan-validation-layers { };
pkgs/top-level/darwin-packages.nix+2
@@ -148,6 +148,8 @@ impure-cmds // appleSourcePackages // chooseLibs // {
148148
149149 lsusb = callPackage ../os-specific/darwin/lsusb { };
150150
151+ moltenvk = callPackage ../os-specific/darwin/moltenvk { };
152+
151153 opencflite = callPackage ../os-specific/darwin/opencflite { };
152154
153155 stubs = pkgs.callPackages ../os-specific/darwin/stubs { };