gnu: cross-base: Fix C++ cross-compilation problems with GCC 7.
authorMarius Bakke <mbakke@fastmail.com>
Thu, 6 Jun 2019 17:33:05 +0000 (19:33 +0200)
committerMarius Bakke <mbakke@fastmail.com>
Sun, 16 Jun 2019 07:34:39 +0000 (09:34 +0200)
* gnu/packages/cross-base.scm (cross-gcc-arguments)[#:configure-flags]: Add
"--with-sysroot=/".

gnu/packages/cross-base.scm

index 3d36dc6..3fc9ba6 100644 (file)
@@ -121,7 +121,15 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
                        ,@(if libc
                              `( ;; Disable libcilkrts because it is not
                                 ;; ported to GNU/Hurd.
-                               "--disable-libcilkrts")
+                               "--disable-libcilkrts"
+                               ;; When building a cross compiler, --with-sysroot is
+                               ;; implicitly set to "$gcc_tooldir/sys-root".  This does
+                               ;; not work for us, because --with-native-system-header-dir
+                               ;; is searched for relative to this location.  Thus, we set
+                               ;; it to "/" so GCC is able to find the target libc headers.
+                               ;; This is safe because in practice GCC uses CROSS_CPATH
+                               ;; & co to separate target and host libraries.
+                               "--with-sysroot=/")
                              `( ;; Disable features not needed at this stage.
                                "--disable-shared" "--enable-static"
                                "--enable-languages=c,c++"