diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix index a4b4573082f4..eecaacbd6fea 100644 --- a/pkgs/build-support/cc-wrapper/default.nix +++ b/pkgs/build-support/cc-wrapper/default.nix @@ -726,6 +726,15 @@ stdenvNoCC.mkDerivation { echo "-isystem ${getDev libcxx}/include/c++/v1" >> $out/nix-support/libcxx-cxxflags echo "-stdlib=libc++" >> $out/nix-support/libcxx-ldflags '' + # GCC NG friendly libc++ + + optionalString (libcxx != null && libcxx.isGNU or false) '' + for dir in ${getDev libcxx}/include/c++/*; do + echo "-isystem $dir" >> $out/nix-support/libcxx-cxxflags + done + for dir in ${getDev libcxx}/include/c++/*/${targetPlatform.config}; do + echo "-isystem $dir" >> $out/nix-support/libcxx-cxxflags + done + '' ## ## Initial CFLAGS diff --git a/pkgs/development/compilers/gcc/ng/common/default.nix b/pkgs/development/compilers/gcc/ng/common/default.nix index 1b83e75015f9..98ce3bb89c1e 100644 --- a/pkgs/development/compilers/gcc/ng/common/default.nix +++ b/pkgs/development/compilers/gcc/ng/common/default.nix @@ -121,6 +121,21 @@ makeScopeWithSplicing' { }; gfortran = wrapCCWith rec { + cc = gccPackages.gfortran-unwrapped; + libcxx = targetGccPackages.libstdcxx; + bintools = binutils; + extraPackages = [ + targetGccPackages.libgcc + ]; + nixSupport.cc-cflags = [ + "-B${targetGccPackages.libgcc}/lib" + "-B${targetGccPackages.libssp}/lib" + "-B${targetGccPackages.libatomic}/lib" + "-B${targetGccPackages.libgfortran}/lib/" + ]; + }; + + gfortranNoLibgfortran = wrapCCWith rec { cc = gccPackages.gfortran-unwrapped; libcxx = targetGccPackages.libstdcxx; bintools = binutils; @@ -211,7 +226,7 @@ makeScopeWithSplicing' { libgfortran = callPackage ./libgfortran { stdenv = overrideCC stdenv buildGccPackages.gcc; - inherit (buildGccPackages) gfortran; + gfortran = buildGccPackages.gfortranNoLibgfortran; }; libstdcxx = callPackage ./libstdcxx {