]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
meson: add support for building static libsystemd and libudev
authorDavide Cavalca <dcavalca@fb.com>
Mon, 9 Apr 2018 09:43:35 +0000 (02:43 -0700)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 8 May 2018 15:33:04 +0000 (17:33 +0200)
meson.build
meson_options.txt
src/libsystemd/meson.build
src/udev/meson.build

index 734a289755866514d92c4497250157400938b877..b99e9b29fd90d81189dd8ec3107b3192c26b2eb0 100644 (file)
@@ -1342,6 +1342,27 @@ libsystemd = shared_library(
         install : true,
         install_dir : rootlibdir)
 
+static_libsystemd = get_option('static-libsystemd')
+static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
+
+install_libsystemd_static = static_library(
+        'systemd',
+        libsystemd_sources,
+        journal_client_sources,
+        include_directories : includes,
+        link_with : [libbasic,
+                     libbasic_gcrypt],
+        build_by_default : static_libsystemd != 'false',
+        install : static_libsystemd != 'false',
+        install_dir : rootlibdir,
+        pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
+        dependencies : [threads,
+                        librt,
+                        libxz,
+                        liblz4,
+                        libgcrypt],
+        c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
+
 ############################################################
 
 # binaries that have --help and are intended for use by humans,
index a6ea6c498f6da4510c27c821781b1de554ad6702..61d3381d17c1bb5971b899537c8b78e6b51db75e 100644 (file)
@@ -13,6 +13,12 @@ option('rootprefix', type : 'string',
        description : '''override the root prefix''')
 option('link-udev-shared', type : 'boolean',
        description : 'link systemd-udev and its helpers to libsystemd-shared.so')
+option('static-libsystemd', type : 'combo',
+       choices : ['false', 'true', 'pic', 'no-pic'],
+       description : '''install a static library for libsystemd''')
+option('static-libudev', type : 'combo',
+       choices : ['false', 'true', 'pic', 'no-pic'],
+       description : '''install a static library for libudev''')
 
 option('sysvinit-path', type : 'string', value : '/etc/init.d',
        description : 'the directory where the SysV init scripts are located')
index 7e55aec35b1aeea7e819a288a630d792688ccf17..ce4cd418442f95072bda6b9c2a5e9e1a4ad2a16d 100644 (file)
@@ -82,15 +82,17 @@ libsystemd_sources = files('''
         sd-utf8/sd-utf8.c
 '''.split()) + id128_sources + sd_daemon_c + sd_event_c + sd_login_c
 
+libsystemd_c_args = ['-fvisibility=default']
+
 libsystemd_static = static_library(
-        'systemd',
+        'systemd_static',
         libsystemd_sources,
         install : false,
         include_directories : includes,
         link_with : libbasic,
         dependencies : [threads,
                         librt],
-        c_args : ['-fvisibility=default'])
+        c_args : libsystemd_c_args)
 
 libsystemd_sym = 'src/libsystemd/libsystemd.sym'
 
index a58191d4a74200d9b084b2cf948d8b370aa50012..a9b345e70f3b445c85469376474b91c7d890a72a 100644 (file)
@@ -111,12 +111,27 @@ libudev_basic = static_library(
         c_args : ['-fvisibility=default'])
 
 libudev_static = static_library(
-        'udev',
+        'udev_static',
         'udev.h',
         include_directories : includes,
         link_with : udev_link_with,
         link_whole : libudev_basic)
 
+static_libudev = get_option('static-libudev')
+install_libudev_static = static_library(
+        'udev',
+        libudev_sources,
+        include_directories : includes,
+        link_with : [libshared_static,
+                     libsystemd_static],
+        link_whole : libudev_basic,
+        build_by_default : static_libudev != 'false',
+        install : static_libudev != 'false',
+        install_dir : rootlibdir,
+        link_depends : libudev_sym,
+        dependencies : [threads],
+        pic : static_libudev == 'true' or static_libudev == 'pic')
+
 libudev = shared_library(
         'udev',
         'udev.h', # pick a header file at random to work around old meson bug