|
91 | 91 | auditable = false; # Avoid cargo-auditable failures. |
92 | 92 | doCheck = false; # Disable test as it requires network access. |
93 | 93 | }; |
94 | | - mkWin64RustPackage = packageName: |
95 | | - let |
96 | | - pkgsWin64 = pkgs.pkgsCross.mingwW64; |
97 | | - rustTarget = pkgsWin64.stdenv.hostPlatform.rust.rustcTarget; |
98 | | - toolchainWin = fenixPkgs.combine [ |
99 | | - fenixPkgs.stable.rustc |
100 | | - fenixPkgs.stable.cargo |
101 | | - fenixPkgs.targets.${rustTarget}.stable.rust-std |
102 | | - ]; |
103 | | - naerskWin = pkgs.callPackage naersk { |
104 | | - cargo = toolchainWin; |
105 | | - rustc = toolchainWin; |
106 | | - }; |
107 | | - in |
108 | | - naerskWin.buildPackage rec { |
109 | | - pname = packageName; |
110 | | - cargoBuildOptions = x: x ++ [ "--package" packageName ]; |
111 | | - version = manifest.version; |
112 | | - strictDeps = true; |
113 | | - src = pkgs.lib.cleanSource ./.; |
114 | | - nativeBuildInputs = [ |
115 | | - pkgs.perl # Needed to build vendored OpenSSL. |
116 | | - ]; |
117 | | - depsBuildBuild = [ |
118 | | - pkgsWin64.stdenv.cc |
119 | | - ]; |
120 | | - buildInputs = [ |
121 | | - pkgsWin64.windows.pthreads |
122 | | - ]; |
123 | | - auditable = false; # Avoid cargo-auditable failures. |
124 | | - doCheck = false; # Disable test as it requires network access. |
125 | | - |
126 | | - CARGO_BUILD_TARGET = rustTarget; |
127 | | - TARGET_CC = "${pkgsWin64.stdenv.cc}/bin/${pkgsWin64.stdenv.cc.targetPrefix}cc"; |
128 | | - CARGO_BUILD_RUSTFLAGS = [ |
129 | | - "-C" |
130 | | - "linker=${TARGET_CC}" |
131 | | - "-L" |
132 | | - "native=${pkgsWin64.windows.pthreads}/lib" |
133 | | - ]; |
134 | | - |
135 | | - CC = "${pkgsWin64.stdenv.cc}/bin/${pkgsWin64.stdenv.cc.targetPrefix}cc"; |
136 | | - LD = "${pkgsWin64.stdenv.cc}/bin/${pkgsWin64.stdenv.cc.targetPrefix}cc"; |
137 | | - }; |
138 | | - |
139 | | - mkWin32RustPackage = packageName: |
140 | | - let |
141 | | - pkgsWin32 = pkgs.pkgsCross.mingw32; |
142 | | - rustTarget = pkgsWin32.stdenv.hostPlatform.rust.rustcTarget; |
143 | | - toolchainWin = fenixPkgs.combine [ |
144 | | - fenixPkgs.stable.rustc |
145 | | - fenixPkgs.stable.cargo |
146 | | - fenixPkgs.targets.${rustTarget}.stable.rust-std |
147 | | - ]; |
148 | | - naerskWin = pkgs.callPackage naersk { |
149 | | - cargo = toolchainWin; |
150 | | - rustc = toolchainWin; |
151 | | - }; |
152 | | - |
153 | | - # Get rid of MCF Gthread library. |
154 | | - # See <https://github.com/NixOS/nixpkgs/issues/156343> |
155 | | - # and <https://discourse.nixos.org/t/statically-linked-mingw-binaries/38395> |
156 | | - # for details. |
157 | | - # |
158 | | - # Use DWARF-2 instead of SJLJ for exception handling. |
159 | | - winCC = pkgsWin32.buildPackages.wrapCC ( |
160 | | - (pkgsWin32.buildPackages.gcc-unwrapped.override |
161 | | - ({ |
162 | | - threadsCross = { |
163 | | - model = "win32"; |
164 | | - package = null; |
165 | | - }; |
166 | | - })).overrideAttrs (oldAttr: { |
167 | | - configureFlags = oldAttr.configureFlags ++ [ |
168 | | - "--disable-sjlj-exceptions" |
169 | | - "--with-dwarf2" |
170 | | - ]; |
171 | | - }) |
172 | | - ); |
173 | | - in |
174 | | - naerskWin.buildPackage rec { |
175 | | - pname = packageName; |
176 | | - cargoBuildOptions = x: x ++ [ "--package" packageName ]; |
177 | | - version = manifest.version; |
178 | | - strictDeps = true; |
179 | | - src = pkgs.lib.cleanSource ./.; |
180 | | - nativeBuildInputs = [ |
181 | | - pkgs.perl # Needed to build vendored OpenSSL. |
182 | | - ]; |
183 | | - depsBuildBuild = [ |
184 | | - winCC |
185 | | - ]; |
186 | | - buildInputs = [ |
187 | | - pkgsWin32.windows.pthreads |
188 | | - ]; |
189 | | - auditable = false; # Avoid cargo-auditable failures. |
190 | | - doCheck = false; # Disable test as it requires network access. |
191 | | - |
192 | | - CARGO_BUILD_TARGET = rustTarget; |
193 | | - TARGET_CC = "${winCC}/bin/${winCC.targetPrefix}cc"; |
194 | | - CARGO_BUILD_RUSTFLAGS = [ |
195 | | - "-C" |
196 | | - "linker=${TARGET_CC}" |
197 | | - "-L" |
198 | | - "native=${pkgsWin32.windows.pthreads}/lib" |
199 | | - ]; |
| 94 | + mkWin64RustPackage = pkgs.callPackage ./nix/win64-package.nix { |
| 95 | + inherit naersk system fenixPkgs; |
| 96 | + version = manifest.version; |
| 97 | + }; |
200 | 98 |
|
201 | | - CC = "${winCC}/bin/${winCC.targetPrefix}cc"; |
202 | | - LD = "${winCC}/bin/${winCC.targetPrefix}cc"; |
203 | | - }; |
| 99 | + mkWin32RustPackage = pkgs.callPackage ./nix/win32-package.nix { |
| 100 | + inherit naersk system fenixPkgs; |
| 101 | + version = manifest.version; |
| 102 | + }; |
204 | 103 |
|
205 | 104 | mkCrossRustPackage = pkgs.callPackage ./nix/cross-rust-package.nix { |
206 | 105 | inherit nixpkgs arch2targets naersk fenixPkgs system rustSrc; |
|
0 commit comments