Files
nixpkgs/pkgs/by-name/bu/build2-bootstrap/nix-ldflags-sysdirs.patch
Ryan Burns 06746a162b build2 packages: 0.17 -> 0.18
These packages are all highly interdependent and have to be updated in
lockstep, so I'm just doing it all in one commit - there's no benefit to
having cherry-pickable commits as they wouldn't work individually.
2026-06-30 13:15:41 -07:00

38 lines
1.2 KiB
Diff

--- a/libbuild2/cc/common.cxx
+++ b/libbuild2/cc/common.cxx
@@ -1806,6 +1806,17 @@ namespace build2
void
msvc_extract_library_search_dirs (const strings&, dir_paths&); // msvc.cxx
+ static strings split (const string& s, const char delim) {
+ stringstream ss (s);
+ string item;
+ strings result;
+
+ while (getline (ss, item, delim)) {
+ result.push_back (item);
+ }
+ return result;
+ }
+
dir_paths common::
extract_library_search_dirs (const scope& bs) const
{
@@ -1829,6 +1840,16 @@ namespace build2
gcc_extract_library_search_dirs (v, r);
};
+ // NIX_LDFLAGS are implicitly used when linking,
+ // so its -L flags effectively specify system dirs.
+ // However, they are only enabled when actually linking and are thus
+ // not detected by build2, so we need to manually pick them up here.
+ if (auto s = getenv ("NIX_LDFLAGS")) {
+ // TODO: do we need more robust args splitting here? e.g. shlex.split
+ auto args = split (s.value (), ' ');
+ gcc_extract_library_search_dirs (args, r);
+ }
+
// Note that the compiler mode options are in sys_lib_dirs.
//
if (auto l = bs[c_loptions]) extract (*l, c_loptions);