aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorQyriad <qyriad@qyriad.me>2024-05-30 17:10:10 -0600
committerQyriad <qyriad@qyriad.me>2024-05-31 21:47:16 -0600
commite54d4c9381492d44a69469a0e719fea50e9914f3 (patch)
tree626b3ddceaefd2c2d133845a0248c2d126624907 /src
parentc7ca87461dff6892b166e46203024cb82bd89e55 (diff)
build: fix static linking with a hack
This causes libstore, libexpr, libfetchers, and libutil to be linked with -Wl,--whole-archive to executables, when building statically. libstore for the store backends, libexpr for the primops, libfetchers for the fetcher backends I assume(?), and libutil for the nix::logger initializer (which notably shows in pre-main constructors when HOME is not owned by the user. cursed.). This workaround should be removed when #359 is fixed. Fixes #306. Change-Id: Ie9ef0154e09a6ed97920ee8ab23810ca5e2de84c
Diffstat (limited to 'src')
-rw-r--r--src/libexpr/meson.build10
-rw-r--r--src/libfetchers/meson.build10
-rw-r--r--src/libstore/meson.build10
-rw-r--r--src/libutil/meson.build10
-rw-r--r--src/nix/meson.build8
5 files changed, 44 insertions, 4 deletions
diff --git a/src/libexpr/meson.build b/src/libexpr/meson.build
index 9a18c7ab3..e60a85b5d 100644
--- a/src/libexpr/meson.build
+++ b/src/libexpr/meson.build
@@ -162,6 +162,16 @@ liblixexpr = declare_dependency(
link_with : libexpr,
)
+# FIXME: remove when https://git.lix.systems/lix-project/lix/issues/359 is fixed.
+if is_static
+ liblixexpr_mstatic = declare_dependency(
+ include_directories : include_directories('.'),
+ link_whole : libexpr,
+ )
+else
+ liblixexpr_mstatic = liblixexpr
+endif
+
# FIXME: not using the pkg-config module because it creates way too many deps
# while meson migration is in progress, and we want to not include boost here
configure_file(
diff --git a/src/libfetchers/meson.build b/src/libfetchers/meson.build
index 365bcd4a7..ee38b6cda 100644
--- a/src/libfetchers/meson.build
+++ b/src/libfetchers/meson.build
@@ -56,3 +56,13 @@ liblixfetchers = declare_dependency(
include_directories : include_directories('.'),
link_with : libfetchers,
)
+
+# FIXME: remove when https://git.lix.systems/lix-project/lix/issues/359 is fixed.
+if is_static
+ liblixfetchers_mstatic = declare_dependency(
+ include_directories : include_directories('.'),
+ link_whole : libfetchers,
+ )
+else
+ liblixfetchers_mstatic = liblixfetchers
+endif
diff --git a/src/libstore/meson.build b/src/libstore/meson.build
index 65ecacc20..7a129d22c 100644
--- a/src/libstore/meson.build
+++ b/src/libstore/meson.build
@@ -234,6 +234,16 @@ liblixstore = declare_dependency(
link_with : libstore,
)
+# FIXME: remove when https://git.lix.systems/lix-project/lix/issues/359 is fixed.
+if is_static
+ liblixstore_mstatic = declare_dependency(
+ include_directories : include_directories('.'),
+ link_whole : libstore,
+ )
+else
+ liblixstore_mstatic = liblixstore
+endif
+
# FIXME: not using the pkg-config module because it creates way too many deps
# while meson migration is in progress, and we want to not include boost here
configure_file(
diff --git a/src/libutil/meson.build b/src/libutil/meson.build
index cfdd0e52c..8c3377e76 100644
--- a/src/libutil/meson.build
+++ b/src/libutil/meson.build
@@ -155,3 +155,13 @@ liblixutil = declare_dependency(
include_directories : include_directories('.'),
link_with : libutil
)
+
+# FIXME: remove when https://git.lix.systems/lix-project/lix/issues/359 is fixed.
+if is_static
+ liblixutil_mstatic = declare_dependency(
+ include_directories : include_directories('.'),
+ link_whole : libutil,
+ )
+else
+ liblixutil_mstatic = liblixutil
+endif
diff --git a/src/nix/meson.build b/src/nix/meson.build
index 45303641f..8115a3d08 100644
--- a/src/nix/meson.build
+++ b/src/nix/meson.build
@@ -81,10 +81,10 @@ nix = executable(
nix2_commands_sources,
dependencies : [
liblixcmd,
- liblixutil,
- liblixstore,
- liblixexpr,
- liblixfetchers,
+ liblixutil_mstatic,
+ liblixstore_mstatic,
+ liblixexpr_mstatic,
+ liblixfetchers_mstatic,
liblixmain,
boehm,
nlohmann_json,