aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2023-09-07 09:36:02 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2023-09-07 09:36:02 +0200
commitf221ca94a304abaa79239cf2cbaf3ffafbbc092c (patch)
tree36bc86f6b4fa2bb1903491f616a82b2571bb663a
parent7ab5526b3b669291b1a06b1d9c9cf651908a3457 (diff)
Add implied .../MacOSX*.sdk/usr/lib/ to system library search directories
-rw-r--r--libbuild2/cc/module.cxx29
1 files changed, 22 insertions, 7 deletions
diff --git a/libbuild2/cc/module.cxx b/libbuild2/cc/module.cxx
index 3e756c4..e0bdf25 100644
--- a/libbuild2/cc/module.cxx
+++ b/libbuild2/cc/module.cxx
@@ -357,6 +357,8 @@ namespace build2
# ifdef __APPLE__
static const dir_path a_usr_inc (
"/Library/Developer/CommandLineTools/SDKs/MacOSX*.sdk/usr/include");
+ static const dir_path a_usr_lib (
+ "/Library/Developer/CommandLineTools/SDKs/MacOSX*.sdk/usr/lib");
# endif
#endif
@@ -693,15 +695,28 @@ namespace build2
//
// Is Apple's /usr/include.
//
- if (!ui && !uli)
+ // Also, it appears neither Clang nor GCC report MacOSX*.sdk/usr/lib
+ // with -print-search-dirs but they do search in there. So we add it
+ // to our list if we see MacOSX*.sdk/usr/include.
+ //
+ auto aui (find_if (hs.begin (), hs.end (),
+ [] (const dir_path& d)
+ {
+ return path_match (d, a_usr_inc);
+ }));
+
+ if (aui != hs.end ())
{
- for (const dir_path& d: hs)
+ if (!ui)
+ ui = true;
+
+ if (find_if (ls.begin (), ls.end (),
+ [] (const dir_path& d)
+ {
+ return path_match (d, a_usr_lib);
+ }) == ls.end ())
{
- if (path_match (d, a_usr_inc))
- {
- ui = true;
- break;
- }
+ ls.push_back (aui->directory () /= "lib");
}
}
#endif