1{ stdenv, fetchurl, noSysDirs
2, langC ? true, langCC ? true, langFortran ? false
3, langObjC ? stdenv.isDarwin
4, langObjCpp ? stdenv.isDarwin
5, langJava ? false
6, langAda ? false
7, langVhdl ? false
8, langGo ? false
9, profiledCompiler ? false
10, staticCompiler ? false
11, enableShared ? true
12, texinfo ? null
13, perl ? null # optional, for texi2pod (then pod2man); required for Java
14, gmp, mpfr, libmpc, gettext, which
15, libelf # optional, for link-time optimizations (LTO)
16, cloog ? null, isl ? null # optional, for the Graphite optimization framework.
17, zlib ? null, boehmgc ? null
18, zip ? null, unzip ? null, pkgconfig ? null
19, gtk ? null, libart_lgpl ? null
20, libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null
21, libXrender ? null, xproto ? null, renderproto ? null, xextproto ? null
22, libXrandr ? null, libXi ? null, inputproto ? null, randrproto ? null
23, x11Support ? langJava
24, gnatboot ? null
25, enableMultilib ? false
26, enablePlugin ? true # whether to support user-supplied plug-ins
27, name ? "gcc"
28, cross ? null
29, binutilsCross ? null
30, libcCross ? null
31, crossStageStatic ? true
32, gnat ? null
33, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
34, stripped ? true
35, gnused ? null
36}:
37
38assert langJava -> zip != null && unzip != null
39 && zlib != null && boehmgc != null
40 && perl != null; # for `--enable-java-home'
41assert langAda -> gnatboot != null;
42assert langVhdl -> gnat != null;
43
44# We enable the isl cloog backend.
45assert cloog != null -> isl != null;
46
47# LTO needs libelf and zlib.
48assert libelf != null -> zlib != null;
49
50# Make sure we get GNU sed.
51assert stdenv.isDarwin -> gnused != null;
52
53# The go frontend is written in c++
54assert langGo -> langCC;
55
56with stdenv.lib;
57with builtins;
58
59let version = "4.8.5";
60
61 # Whether building a cross-compiler for GNU/Hurd.
62 crossGNU = cross != null && cross.config == "i586-pc-gnu";
63
64 enableParallelBuilding = true;
65
66 patches = [ ]
67 ++ optional enableParallelBuilding ../parallel-bconfig.patch
68 ++ optional (cross != null) ../libstdc++-target.patch
69 ++ optional noSysDirs ../no-sys-dirs.patch
70 # The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its
71 # target libraries and tools.
72 ++ optional langAda ../gnat-cflags.patch
73 ++ optional langFortran ../gfortran-driving.patch;
74
75 javaEcj = fetchurl {
76 # The `$(top_srcdir)/ecj.jar' file is automatically picked up at
77 # `configure' time.
78
79 # XXX: Eventually we might want to take it from upstream.
80 url = "ftp://sourceware.org/pub/java/ecj-4.3.jar";
81 sha256 = "0jz7hvc0s6iydmhgh5h2m15yza7p2rlss2vkif30vm9y77m97qcx";
82 };
83
84 # Antlr (optional) allows the Java `gjdoc' tool to be built. We want a
85 # binary distribution here to allow the whole chain to be bootstrapped.
86 javaAntlr = fetchurl {
87 url = http://www.antlr.org/download/antlr-4.4-complete.jar;
88 sha256 = "02lda2imivsvsis8rnzmbrbp8rh1kb8vmq4i67pqhkwz7lf8y6dz";
89 };
90
91 xlibs = [
92 libX11 libXt libSM libICE libXtst libXrender libXrandr libXi
93 xproto renderproto xextproto inputproto randrproto
94 ];
95
96 javaAwtGtk = langJava && x11Support;
97
98 /* Platform flags */
99 platformFlags = let
100 gccArch = stdenv.platform.gcc.arch or null;
101 gccCpu = stdenv.platform.gcc.cpu or null;
102 gccAbi = stdenv.platform.gcc.abi or null;
103 gccFpu = stdenv.platform.gcc.fpu or null;
104 gccFloat = stdenv.platform.gcc.float or null;
105 gccMode = stdenv.platform.gcc.mode or null;
106 withArch = if gccArch != null then " --with-arch=${gccArch}" else "";
107 withCpu = if gccCpu != null then " --with-cpu=${gccCpu}" else "";
108 withAbi = if gccAbi != null then " --with-abi=${gccAbi}" else "";
109 withFpu = if gccFpu != null then " --with-fpu=${gccFpu}" else "";
110 withFloat = if gccFloat != null then " --with-float=${gccFloat}" else "";
111 withMode = if gccMode != null then " --with-mode=${gccMode}" else "";
112 in
113 withArch +
114 withCpu +
115 withAbi +
116 withFpu +
117 withFloat +
118 withMode;
119
120 /* Cross-gcc settings */
121 crossMingw = cross != null && cross.libc == "msvcrt";
122 crossDarwin = cross != null && cross.libc == "libSystem";
123 crossConfigureFlags = let
124 gccArch = stdenv.cross.gcc.arch or null;
125 gccCpu = stdenv.cross.gcc.cpu or null;
126 gccAbi = stdenv.cross.gcc.abi or null;
127 gccFpu = stdenv.cross.gcc.fpu or null;
128 gccFloat = stdenv.cross.gcc.float or null;
129 gccMode = stdenv.cross.gcc.mode or null;
130 withArch = if gccArch != null then " --with-arch=${gccArch}" else "";
131 withCpu = if gccCpu != null then " --with-cpu=${gccCpu}" else "";
132 withAbi = if gccAbi != null then " --with-abi=${gccAbi}" else "";
133 withFpu = if gccFpu != null then " --with-fpu=${gccFpu}" else "";
134 withFloat = if gccFloat != null then " --with-float=${gccFloat}" else "";
135 withMode = if gccMode != null then " --with-mode=${gccMode}" else "";
136 in
137 "--target=${cross.config}" +
138 withArch +
139 withCpu +
140 withAbi +
141 withFpu +
142 withFloat +
143 withMode +
144 (if crossMingw && crossStageStatic then
145 " --with-headers=${libcCross}/include" +
146 " --with-gcc" +
147 " --with-gnu-as" +
148 " --with-gnu-ld" +
149 " --with-gnu-ld" +
150 " --disable-shared" +
151 " --disable-nls" +
152 " --disable-debug" +
153 " --enable-sjlj-exceptions" +
154 " --enable-threads=win32" +
155 " --disable-win32-registry"
156 else if crossStageStatic then
157 " --disable-libssp --disable-nls" +
158 " --without-headers" +
159 " --disable-threads " +
160 " --disable-libmudflap " +
161 " --disable-libgomp " +
162 " --disable-libquadmath" +
163 " --disable-shared" +
164 " --disable-libatomic " + # libatomic requires libc
165 " --disable-decimal-float" # libdecnumber requires libc
166 else
167 (if crossDarwin then " --with-sysroot=${libcCross}/share/sysroot"
168 else " --with-headers=${libcCross}/include") +
169 # Ensure that -print-prog-name is able to find the correct programs.
170 (stdenv.lib.optionalString (crossMingw || crossDarwin) (
171 " --with-as=${binutilsCross}/bin/${cross.config}-as" +
172 " --with-ld=${binutilsCross}/bin/${cross.config}-ld"
173 )) +
174 " --enable-__cxa_atexit" +
175 " --enable-long-long" +
176 (if crossMingw then
177 " --enable-threads=win32" +
178 " --enable-sjlj-exceptions" +
179 " --enable-hash-synchronization" +
180 " --disable-libssp" +
181 " --disable-nls" +
182 " --with-dwarf2" +
183 # I think noone uses shared gcc libs in mingw, so we better do the same.
184 # In any case, mingw32 g++ linking is broken by default with shared libs,
185 # unless adding "-lsupc++" to any linking command. I don't know why.
186 " --disable-shared" +
187 # To keep ABI compatibility with upstream mingw-w64
188 " --enable-fully-dynamic-string"
189 else (if cross.libc == "uclibc" then
190 # In uclibc cases, libgomp needs an additional '-ldl'
191 # and as I don't know how to pass it, I disable libgomp.
192 " --disable-libgomp" else "") +
193 " --enable-threads=posix" +
194 " --enable-nls" +
195 " --disable-decimal-float") # No final libdecnumber (it may work only in 386)
196 );
197 stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
198 crossNameAddon = if cross != null then "-${cross.config}" + stageNameAddon else "";
199
200 bootstrap = cross == null && !stdenv.isArm && !stdenv.isMips;
201
202in
203
204# We need all these X libraries when building AWT with GTK+.
205assert x11Support -> (filter (x: x == null) ([ gtk libart_lgpl ] ++ xlibs)) == [];
206
207stdenv.mkDerivation ({
208 name = "${name}${if stripped then "" else "-debug"}-${version}" + crossNameAddon;
209
210 builder = ../builder.sh;
211
212 outputs = [ "out" "info" ];
213
214 src = fetchurl {
215 url = "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.bz2";
216 sha256 = "08yggr18v373a1ihj0rg2vd6psnic42b518xcgp3r9k81xz1xyr2";
217 };
218
219 inherit patches;
220
221 postPatch =
222 if (stdenv.isGNU
223 || (libcCross != null # e.g., building `gcc.crossDrv'
224 && libcCross ? crossConfig
225 && libcCross.crossConfig == "i586-pc-gnu")
226 || (crossGNU && libcCross != null))
227 then
228 # On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not
229 # in glibc, so add the right `-I' flags to the default spec string.
230 assert libcCross != null -> libpthreadCross != null;
231 let
232 libc = if libcCross != null then libcCross else stdenv.glibc;
233 gnu_h = "gcc/config/gnu.h";
234 extraCPPDeps =
235 libc.propagatedBuildInputs
236 ++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross
237 ++ stdenv.lib.optional (libpthread != null) libpthread;
238 extraCPPSpec =
239 concatStrings (intersperse " "
240 (map (x: "-I${x}/include") extraCPPDeps));
241 extraLibSpec =
242 if libpthreadCross != null
243 then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}"
244 else "-L${libpthread}/lib";
245 in
246 '' echo "augmenting \`CPP_SPEC' in \`${gnu_h}' with \`${extraCPPSpec}'..."
247 sed -i "${gnu_h}" \
248 -es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
249
250 echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..."
251 sed -i "${gnu_h}" \
252 -es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
253
254 echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc}/include'..."
255 sed -i "${gnu_h}" \
256 -es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc}/include"|g'
257 ''
258 else if cross != null || stdenv.cc.libc != null then
259 # On NixOS, use the right path to the dynamic linker instead of
260 # `/lib/ld*.so'.
261 let
262 libc = if libcCross != null then libcCross else stdenv.cc.libc;
263 in
264 '' echo "fixing the \`GLIBC_DYNAMIC_LINKER' and \`UCLIBC_DYNAMIC_LINKER' macros..."
265 for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h
266 do
267 grep -q LIBC_DYNAMIC_LINKER "$header" || continue
268 echo " fixing \`$header'..."
269 sed -i "$header" \
270 -e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc}\3"|g'
271 done
272 ''
273 else null;
274
275 inherit noSysDirs staticCompiler langJava crossStageStatic
276 libcCross crossMingw;
277
278 nativeBuildInputs = [ texinfo which gettext ]
279 ++ (optional (perl != null) perl)
280 ++ (optional javaAwtGtk pkgconfig);
281
282 buildInputs = [ gmp mpfr libmpc libelf ]
283 ++ (optional (cloog != null) cloog)
284 ++ (optional (isl != null) isl)
285 ++ (optional (zlib != null) zlib)
286 ++ (optionals langJava [ boehmgc zip unzip ])
287 ++ (optionals javaAwtGtk ([ gtk libart_lgpl ] ++ xlibs))
288 ++ (optionals (cross != null) [binutilsCross])
289 ++ (optionals langAda [gnatboot])
290 ++ (optionals langVhdl [gnat])
291
292 # The builder relies on GNU sed (for instance, Darwin's `sed' fails with
293 # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it.
294 ++ (optional stdenv.isDarwin gnused)
295 ;
296
297 NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isSunOS "-lm -ldl";
298
299 preConfigure = stdenv.lib.optionalString (stdenv.isSunOS && stdenv.is64bit) ''
300 export NIX_LDFLAGS=`echo $NIX_LDFLAGS | sed -e s~$prefix/lib~$prefix/lib/amd64~g`
301 export LDFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $LDFLAGS_FOR_TARGET"
302 export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET"
303 export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET"
304 '' + stdenv.lib.optionalString stdenv.isDarwin ''
305 if SDKROOT=$(/usr/bin/xcrun --show-sdk-path); then
306 configureFlagsArray+=(--with-native-system-header-dir=$SDKROOT/usr/include)
307 makeFlagsArray+=( \
308 CFLAGS_FOR_BUILD=-F$SDKROOT/System/Library/Frameworks \
309 CFLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
310 FLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
311 )
312 fi
313 '';
314
315 dontDisableStatic = true;
316
317 configureFlags = "
318 ${if stdenv.isSunOS then
319 " --enable-long-long --enable-libssp --enable-threads=posix --disable-nls --enable-__cxa_atexit " +
320 # On Illumos/Solaris GNU as is preferred
321 " --with-gnu-as --without-gnu-ld "
322 else ""}
323 --enable-lto
324 ${if enableMultilib then "--disable-libquadmath" else "--disable-multilib"}
325 ${if enableShared then "" else "--disable-shared"}
326 ${if enablePlugin then "--enable-plugin" else "--disable-plugin"}
327 ${optionalString (isl != null) "--with-isl=${isl}"}
328 ${optionalString (cloog != null) "--with-cloog=${cloog} --disable-cloog-version-check --enable-cloog-backend=isl"}
329 ${if langJava then
330 "--with-ecj-jar=${javaEcj} " +
331
332 # Follow Sun's layout for the convenience of IcedTea/OpenJDK. See
333 # <http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2010-April/008888.html>.
334 "--enable-java-home --with-java-home=\${prefix}/lib/jvm/jre "
335 else ""}
336 ${if javaAwtGtk then "--enable-java-awt=gtk" else ""}
337 ${if langJava && javaAntlr != null then "--with-antlr-jar=${javaAntlr}" else ""}
338 --with-gmp=${gmp}
339 --with-mpfr=${mpfr}
340 --with-mpc=${libmpc}
341 ${if libelf != null then "--with-libelf=${libelf}" else ""}
342 --disable-libstdcxx-pch
343 --without-included-gettext
344 --with-system-zlib
345 --enable-static
346 --enable-languages=${
347 concatStrings (intersperse ","
348 ( optional langC "c"
349 ++ optional langCC "c++"
350 ++ optional langFortran "fortran"
351 ++ optional langJava "java"
352 ++ optional langAda "ada"
353 ++ optional langVhdl "vhdl"
354 ++ optional langGo "go"
355 ++ optional langObjC "objc"
356 ++ optional langObjCpp "obj-c++"
357 ++ optionals crossDarwin [ "objc" "obj-c++" ]
358 )
359 )
360 }
361 ${if (stdenv ? glibc && cross == null)
362 then " --with-native-system-header-dir=${stdenv.glibc}/include"
363 else ""}
364 ${if langAda then " --enable-libada" else ""}
365 ${if cross == null && stdenv.isi686 then "--with-arch=i686" else ""}
366 ${if cross != null then crossConfigureFlags else ""}
367 ${if !bootstrap then "--disable-bootstrap" else ""}
368 ${if cross == null then platformFlags else ""}
369 ";
370
371 targetConfig = if cross != null then cross.config else null;
372
373 buildFlags = if bootstrap then
374 (if profiledCompiler then "profiledbootstrap" else "bootstrap")
375 else "";
376
377 installTargets =
378 if stripped
379 then "install-strip"
380 else "install";
381
382 crossAttrs = let
383 xgccArch = stdenv.cross.gcc.arch or null;
384 xgccCpu = stdenv.cross.gcc.cpu or null;
385 xgccAbi = stdenv.cross.gcc.abi or null;
386 xgccFpu = stdenv.cross.gcc.fpu or null;
387 xgccFloat = stdenv.cross.gcc.float or null;
388 xwithArch = if xgccArch != null then " --with-arch=${xgccArch}" else "";
389 xwithCpu = if xgccCpu != null then " --with-cpu=${xgccCpu}" else "";
390 xwithAbi = if xgccAbi != null then " --with-abi=${xgccAbi}" else "";
391 xwithFpu = if xgccFpu != null then " --with-fpu=${xgccFpu}" else "";
392 xwithFloat = if xgccFloat != null then " --with-float=${xgccFloat}" else "";
393 in {
394 AR = "${stdenv.cross.config}-ar";
395 LD = "${stdenv.cross.config}-ld";
396 CC = "${stdenv.cross.config}-gcc";
397 CXX = "${stdenv.cross.config}-gcc";
398 AR_FOR_TARGET = "${stdenv.cross.config}-ar";
399 LD_FOR_TARGET = "${stdenv.cross.config}-ld";
400 CC_FOR_TARGET = "${stdenv.cross.config}-gcc";
401 NM_FOR_TARGET = "${stdenv.cross.config}-nm";
402 CXX_FOR_TARGET = "${stdenv.cross.config}-g++";
403 # If we are making a cross compiler, cross != null
404 NIX_CC_CROSS = if cross == null then "${stdenv.ccCross}" else "";
405 dontStrip = true;
406 configureFlags = ''
407 ${if enableMultilib then "" else "--disable-multilib"}
408 ${if enableShared then "" else "--disable-shared"}
409 ${if cloog != null then "--with-cloog=${cloog.crossDrv} --enable-cloog-backend=isl" else ""}
410 ${if langJava then "--with-ecj-jar=${javaEcj.crossDrv}" else ""}
411 ${if javaAwtGtk then "--enable-java-awt=gtk" else ""}
412 ${if langJava && javaAntlr != null then "--with-antlr-jar=${javaAntlr.crossDrv}" else ""}
413 --with-gmp=${gmp.crossDrv}
414 --with-mpfr=${mpfr.crossDrv}
415 --disable-libstdcxx-pch
416 --without-included-gettext
417 --with-system-zlib
418 --enable-languages=${
419 concatStrings (intersperse ","
420 ( optional langC "c"
421 ++ optional langCC "c++"
422 ++ optional langFortran "fortran"
423 ++ optional langJava "java"
424 ++ optional langAda "ada"
425 ++ optional langVhdl "vhdl"
426 ++ optional langGo "go"
427 )
428 )
429 }
430 ${if langAda then " --enable-libada" else ""}
431 --target=${stdenv.cross.config}
432 ${xwithArch}
433 ${xwithCpu}
434 ${xwithAbi}
435 ${xwithFpu}
436 ${xwithFloat}
437 '';
438 buildFlags = "";
439 };
440
441
442 # Needed for the cross compilation to work
443 AR = "ar";
444 LD = "ld";
445 # http://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
446 CC = if stdenv.system == "x86_64-solaris" then "gcc -m64" else "gcc";
447
448 # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find
449 # the library headers and binaries, regarless of the language being
450 # compiled.
451
452 # Note: When building the Java AWT GTK+ peer, the build system doesn't
453 # honor `--with-gmp' et al., e.g., when building
454 # `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just
455 # add them to $CPATH and $LIBRARY_PATH in this case.
456 #
457 # Likewise, the LTO code doesn't find zlib.
458
459 CPATH = concatStrings
460 (intersperse ":" (map (x: x + "/include")
461 (optionals (zlib != null) [ zlib ]
462 ++ optionals langJava [ boehmgc ]
463 ++ optionals javaAwtGtk xlibs
464 ++ optionals javaAwtGtk [ gmp mpfr ]
465 ++ optional (libpthread != null) libpthread
466 ++ optional (libpthreadCross != null) libpthreadCross
467
468 # On GNU/Hurd glibc refers to Mach & Hurd
469 # headers.
470 ++ optionals (libcCross != null && libcCross ? "propagatedBuildInputs" )
471 libcCross.propagatedBuildInputs)));
472
473 LIBRARY_PATH = concatStrings
474 (intersperse ":" (map (x: x + "/lib")
475 (optionals (zlib != null) [ zlib ]
476 ++ optionals langJava [ boehmgc ]
477 ++ optionals javaAwtGtk xlibs
478 ++ optionals javaAwtGtk [ gmp mpfr ]
479 ++ optional (libpthread != null) libpthread)));
480
481 EXTRA_TARGET_CFLAGS =
482 if cross != null && libcCross != null
483 then "-idirafter ${libcCross}/include"
484 else null;
485
486 EXTRA_TARGET_LDFLAGS =
487 if cross != null && libcCross != null
488 then "-B${libcCross}/lib -Wl,-L${libcCross}/lib" +
489 (optionalString (libpthreadCross != null)
490 " -L${libpthreadCross}/lib -Wl,${libpthreadCross.TARGET_LDFLAGS}")
491 else null;
492
493 passthru =
494 { inherit langC langCC langObjC langObjCpp langAda langFortran langVhdl langGo version; isGNU = true; };
495
496 inherit enableParallelBuilding enableMultilib;
497
498 inherit (stdenv) is64bit;
499
500 meta = {
501 homepage = http://gcc.gnu.org/;
502 license = stdenv.lib.licenses.gpl3Plus; # runtime support libraries are typically LGPLv3+
503 description = "GNU Compiler Collection, version ${version}"
504 + (if stripped then "" else " (with debugging info)");
505
506 longDescription = ''
507 The GNU Compiler Collection includes compiler front ends for C, C++,
508 Objective-C, Fortran, OpenMP for C/C++/Fortran, Java, and Ada, as well
509 as libraries for these languages (libstdc++, libgcj, libgomp,...).
510
511 GCC development is a part of the GNU Project, aiming to improve the
512 compiler used in the GNU system including the GNU/Linux variant.
513 '';
514
515 maintainers = with stdenv.lib.maintainers; [ viric simons ];
516
517 # gnatboot is not available out of linux platforms, so we disable the darwin build
518 # for the gnat (ada compiler).
519 platforms =
520 stdenv.lib.platforms.linux ++
521 stdenv.lib.platforms.freebsd ++
522 optionals (langAda == false) stdenv.lib.platforms.darwin;
523 };
524}
525
526// optionalAttrs (cross != null && cross.libc == "msvcrt" && crossStageStatic) {
527 makeFlags = [ "all-gcc" "all-target-libgcc" ];
528 installTargets = "install-gcc install-target-libgcc";
529}
530
531# Strip kills static libs of other archs (hence cross != null)
532// optionalAttrs (!stripped || cross != null) { dontStrip = true; NIX_STRIP_DEBUG = 0; }
533
534// optionalAttrs (enableMultilib) { dontMoveLib64 = true; }
535)