From dffc94678602a9b9be0e960ba4dfdd6d5e2cff4c Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Fri, 11 Jul 2025 13:02:16 -0700 Subject: [PATCH 1/2] gccNGPackages_15.gfortran: fix missing spec file --- .../compilers/gcc/ng/common/default.nix | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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 { From 6b03c5677a2cd71a27f7fb1643f8c395beba3be9 Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Fri, 11 Jul 2025 13:02:51 -0700 Subject: [PATCH 2/2] cc-wrapper: fix including libstdcxx from GCC NG --- pkgs/build-support/cc-wrapper/default.nix | 9 +++++++++ 1 file changed, 9 insertions(+) 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