Zbigniew Jędrzejewski-Szmek 1cc4f8
From 63178ad7e51dae8730158573318388ea8c3e488e Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 1cc4f8
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Zbigniew Jędrzejewski-Szmek 1cc4f8
Date: Wed, 3 Jul 2024 17:03:26 +0200
Zbigniew Jędrzejewski-Szmek 1cc4f8
Subject: [PATCH 2/3] meson: build libsystemd-core via an intermediate static
Zbigniew Jędrzejewski-Szmek 1cc4f8
 library
Zbigniew Jędrzejewski-Szmek 1cc4f8
Zbigniew Jędrzejewski-Szmek 1cc4f8
By itself, this is not useful. I'm making this a separate commit to
Zbigniew Jędrzejewski-Szmek 1cc4f8
make debugging easier. It turns out that meson does static libraries
Zbigniew Jędrzejewski-Szmek 1cc4f8
using references, so the "static library" a tiny stub stub that refers
Zbigniew Jędrzejewski-Szmek 1cc4f8
to the object files on disk and this has negligible cost:
Zbigniew Jędrzejewski-Szmek 1cc4f8
$ ls -lhd build/src/core/libsystemd-core-257.{a,so}
Zbigniew Jędrzejewski-Szmek 1cc4f8
-rw-r--r-- 1 zbyszek zbyszek  36K Jul  3 16:54 build/src/core/libsystemd-core-257.a
Zbigniew Jędrzejewski-Szmek 1cc4f8
-rwxr-xr-x 1 zbyszek zbyszek 6.1M Jul  3 16:54 build/src/core/libsystemd-core-257.so
Zbigniew Jędrzejewski-Szmek 1cc4f8
Zbigniew Jędrzejewski-Szmek 1cc4f8
(cherry picked from commit d0689ee5fbfafa736e6eca89bc80cb2d372f2229)
Zbigniew Jędrzejewski-Szmek 1cc4f8
---
Zbigniew Jędrzejewski-Szmek 1cc4f8
 src/core/meson.build | 16 +++++++++++-----
Zbigniew Jędrzejewski-Szmek 1cc4f8
 1 file changed, 11 insertions(+), 5 deletions(-)
Zbigniew Jędrzejewski-Szmek 1cc4f8
Zbigniew Jędrzejewski-Szmek 1cc4f8
diff --git a/src/core/meson.build b/src/core/meson.build
Zbigniew Jędrzejewski-Szmek 1cc4f8
index 7a2012a372..1ef31cc529 100644
Zbigniew Jędrzejewski-Szmek 1cc4f8
--- a/src/core/meson.build
Zbigniew Jędrzejewski-Szmek 1cc4f8
+++ b/src/core/meson.build
Zbigniew Jędrzejewski-Szmek 1cc4f8
@@ -110,17 +110,13 @@ load_fragment_gperf_nulstr_c = custom_target(
Zbigniew Jędrzejewski-Szmek 1cc4f8
 
Zbigniew Jędrzejewski-Szmek 1cc4f8
 libcore_name = 'systemd-core-@0@'.format(shared_lib_tag)
Zbigniew Jędrzejewski-Szmek 1cc4f8
 
Zbigniew Jędrzejewski-Szmek 1cc4f8
-libcore = shared_library(
Zbigniew Jędrzejewski-Szmek 1cc4f8
+libcore_static = static_library(
Zbigniew Jędrzejewski-Szmek 1cc4f8
         libcore_name,
Zbigniew Jędrzejewski-Szmek 1cc4f8
         libcore_sources,
Zbigniew Jędrzejewski-Szmek 1cc4f8
         load_fragment_gperf_c,
Zbigniew Jędrzejewski-Szmek 1cc4f8
         load_fragment_gperf_nulstr_c,
Zbigniew Jędrzejewski-Szmek 1cc4f8
         include_directories : includes,
Zbigniew Jędrzejewski-Szmek 1cc4f8
         c_args : ['-fvisibility=default'],
Zbigniew Jędrzejewski-Szmek 1cc4f8
-        link_args : ['-shared',
Zbigniew Jędrzejewski-Szmek 1cc4f8
-                     '-Wl,--version-script=' + libshared_sym_path],
Zbigniew Jędrzejewski-Szmek 1cc4f8
-        link_depends : libshared_sym_path,
Zbigniew Jędrzejewski-Szmek 1cc4f8
-        link_with : libshared,
Zbigniew Jędrzejewski-Szmek 1cc4f8
         dependencies : [libacl,
Zbigniew Jędrzejewski-Szmek 1cc4f8
                         libapparmor,
Zbigniew Jędrzejewski-Szmek 1cc4f8
                         libaudit,
Zbigniew Jędrzejewski-Szmek 1cc4f8
@@ -135,6 +131,16 @@ libcore = shared_library(
Zbigniew Jędrzejewski-Szmek 1cc4f8
                         libselinux,
Zbigniew Jędrzejewski-Szmek 1cc4f8
                         threads,
Zbigniew Jędrzejewski-Szmek 1cc4f8
                         userspace],
Zbigniew Jędrzejewski-Szmek 1cc4f8
+        build_by_default : false)
Zbigniew Jędrzejewski-Szmek 1cc4f8
+
Zbigniew Jędrzejewski-Szmek 1cc4f8
+libcore = shared_library(
Zbigniew Jędrzejewski-Szmek 1cc4f8
+        libcore_name,
Zbigniew Jędrzejewski-Szmek 1cc4f8
+        c_args : ['-fvisibility=default'],
Zbigniew Jędrzejewski-Szmek 1cc4f8
+        link_args : ['-shared',
Zbigniew Jędrzejewski-Szmek 1cc4f8
+                     '-Wl,--version-script=' + libshared_sym_path],
Zbigniew Jędrzejewski-Szmek 1cc4f8
+        link_depends : libshared_sym_path,
Zbigniew Jędrzejewski-Szmek 1cc4f8
+        link_whole: libcore_static,
Zbigniew Jędrzejewski-Szmek 1cc4f8
+        link_with : libshared,
Zbigniew Jędrzejewski-Szmek 1cc4f8
         install : true,
Zbigniew Jędrzejewski-Szmek 1cc4f8
         install_dir : pkglibdir)
Zbigniew Jędrzejewski-Szmek 1cc4f8