diff options
author | Someone Serge <sergei.kozlukov@aalto.fi> | 2024-01-11 00:25:59 +0000 |
---|---|---|
committer | Someone Serge <sergei.kozlukov@aalto.fi> | 2024-01-12 17:38:00 +0000 |
commit | e6e279913c70268c149dbee9f20ffc215fcb037c (patch) | |
tree | a63c2c50a310e3f027b7892dcc5e6c9bd2707d73 /pkgs/stdenv/adapters.nix | |
parent | c45e1b6459b90142c78c38cdc44b7e865cf4dcec (diff) |
stdenvAdapters.useLibsFrom: init
Diffstat (limited to 'pkgs/stdenv/adapters.nix')
-rw-r--r-- | pkgs/stdenv/adapters.nix | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index 463fd7e4847dd..84d3258949ebb 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -237,6 +237,30 @@ rec { }); }); + useLibsFrom = modelStdenv: targetStdenv: + let + ccForLibs = modelStdenv.cc.cc; + cc = pkgs.wrapCCWith { + /* NOTE: cc.cc is the unwrapped compiler. Should we respect the old + * wrapper instead? */ + cc = targetStdenv.cc.cc; + + /* NOTE(originally by rrbutani): + * Normally the `useCcForLibs`/`gccForLibs` mechanism is used to get a + * clang based `cc` to use `libstdc++` (from gcc). + * + * Here we (ab)use it to use a `libstdc++` from a different `gcc` than our + * `cc`. + * + * Note that this does not inhibit our `cc`'s lib dir from being added to + * cflags/ldflags (see `cc_solib` in `cc-wrapper`) but this is okay: our + * `gccForLibs`'s paths should take precedence. */ + useCcForLibs = true; + gccForLibs = ccForLibs; + }; + in + overrideCC targetStdenv cc; + useMoldLinker = stdenv: let bintools = stdenv.cc.bintools.override { extraBuildCommands = '' |