diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2023-09-07 09:36:02 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2023-09-07 09:36:02 +0200 |
commit | f221ca94a304abaa79239cf2cbaf3ffafbbc092c (patch) | |
tree | 36bc86f6b4fa2bb1903491f616a82b2571bb663a | |
parent | 7ab5526b3b669291b1a06b1d9c9cf651908a3457 (diff) |
Add implied .../MacOSX*.sdk/usr/lib/ to system library search directories
-rw-r--r-- | libbuild2/cc/module.cxx | 29 |
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 |