forked from mirrors/nixpkgs
3332be9a8b
Build2's dependency libraries and helper programs bpkg/bdep are all built and installed separately. Adds a build2 setup hook for packaging purposes, based on those of cmake and ninja. Two small patches are applied to build2's source: one to remove store references from the stored config, and one to help build2 detect library dirs from NIX_LDFLAGS.
43 lines
1.4 KiB
Diff
43 lines
1.4 KiB
Diff
diff --git a/libbuild2/cc/common.cxx b/libbuild2/cc/common.cxx
|
|
index f848003c..0f14f9a5 100644
|
|
--- a/libbuild2/cc/common.cxx
|
|
+++ b/libbuild2/cc/common.cxx
|
|
@@ -966,6 +966,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
|
|
{
|
|
@@ -987,8 +998,19 @@ namespace build2
|
|
msvc_extract_library_search_dirs (v, r);
|
|
else
|
|
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);
|