mirror of
https://github.com/systemd/systemd
synced 2024-10-06 16:21:34 +00:00
meson: allow optional static linking of shared code in udev helpers
This makes the helper binaries significantly bigger (in some cases, the final size depends on link options and optimization level), and is only useful for distributions which want to provide the option to install udev without systemd. As the linking is improved, the difference between the columns might shrink, but it's unlikely that linking libshared statically could ever be more efficient. E.g. with -O0, no -flto: (static) (shared) src/udev/ata_id 999176 85696 src/udev/cdrom_id 1024344 111656 src/udev/collect 990344 81280 src/udev/scsi_id 1023592 115656 src/udev/v4l_id 811736 17744 When linked dynamically, install_rpath must be specified, so add that.
This commit is contained in:
parent
d83f4f506d
commit
3a30f21ff8
|
@ -2018,7 +2018,8 @@ exe = executable('systemd-udevd',
|
|||
libudev_internal,
|
||||
libsystemd_network,
|
||||
libshared],
|
||||
dependencies : [libkmod,
|
||||
dependencies : [threads,
|
||||
libkmod,
|
||||
libidn,
|
||||
libacl,
|
||||
libblkid],
|
||||
|
@ -2034,7 +2035,8 @@ exe = executable('udevadm',
|
|||
libudev_internal,
|
||||
libsystemd_network,
|
||||
libshared],
|
||||
dependencies : [libkmod,
|
||||
dependencies : [threads,
|
||||
libkmod,
|
||||
libidn,
|
||||
libacl,
|
||||
libblkid],
|
||||
|
|
|
@ -6,6 +6,8 @@ option('rootlibdir', type : 'string',
|
|||
description : '''[/usr]/lib/x86_64-linux-gnu or such''')
|
||||
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('sysvinit-path', type : 'string', value : '/etc/init.d',
|
||||
description : 'the directory where the SysV init scripts are located')
|
||||
|
|
|
@ -575,7 +575,8 @@ tests += [
|
|||
libudev_internal,
|
||||
libsystemd_network,
|
||||
libshared],
|
||||
[librt,
|
||||
[threads,
|
||||
librt,
|
||||
libblkid,
|
||||
libkmod,
|
||||
libacl],
|
||||
|
|
|
@ -92,11 +92,20 @@ link_config_gperf_c = custom_target(
|
|||
|
||||
############################################################
|
||||
|
||||
if get_option('link-udev-shared')
|
||||
libudev_link_with = [libshared]
|
||||
rpath = rootlibexecdir
|
||||
else
|
||||
libudev_link_with = [libshared_static,
|
||||
libsystemd_internal]
|
||||
rpath = ''
|
||||
endif
|
||||
|
||||
libudev_internal = static_library(
|
||||
'udev',
|
||||
libudev_sources,
|
||||
include_directories : includes,
|
||||
link_with : [libshared])
|
||||
link_with : libudev_link_with)
|
||||
|
||||
libudev_core_includes = [includes, include_directories('net')]
|
||||
libudev_core = static_library(
|
||||
|
@ -105,60 +114,28 @@ libudev_core = static_library(
|
|||
link_config_gperf_c,
|
||||
keyboard_keys_from_name_h,
|
||||
include_directories : libudev_core_includes,
|
||||
link_with : [libshared])
|
||||
link_with : libudev_link_with)
|
||||
|
||||
executable('ata_id',
|
||||
'ata_id/ata_id.c',
|
||||
include_directories : includes,
|
||||
link_with : [libudev_internal,
|
||||
libshared],
|
||||
install : true,
|
||||
install_dir : udevlibexecdir)
|
||||
foreach prog : [['ata_id/ata_id.c'],
|
||||
['cdrom_id/cdrom_id.c'],
|
||||
['collect/collect.c'],
|
||||
['scsi_id/scsi_id.c',
|
||||
'scsi_id/scsi_id.h',
|
||||
'scsi_id/scsi_serial.c',
|
||||
'scsi_id/scsi.h'],
|
||||
['v4l_id/v4l_id.c'],
|
||||
['mtd_probe/mtd_probe.c',
|
||||
'mtd_probe/mtd_probe.h',
|
||||
'mtd_probe/probe_smartmedia.c']]
|
||||
|
||||
executable('cdrom_id',
|
||||
'cdrom_id/cdrom_id.c',
|
||||
include_directories : includes,
|
||||
link_with : [libudev_internal,
|
||||
libshared],
|
||||
install : true,
|
||||
install_dir : udevlibexecdir)
|
||||
|
||||
executable('collect',
|
||||
'collect/collect.c',
|
||||
include_directories : includes,
|
||||
link_with : [libudev_internal,
|
||||
libshared],
|
||||
install : true,
|
||||
install_dir : udevlibexecdir)
|
||||
|
||||
executable('scsi_id',
|
||||
'scsi_id/scsi_id.c',
|
||||
'scsi_id/scsi_id.h',
|
||||
'scsi_id/scsi_serial.c',
|
||||
'scsi_id/scsi.h',
|
||||
include_directories : includes,
|
||||
link_with : [libudev_internal,
|
||||
libshared],
|
||||
install : true,
|
||||
install_dir : udevlibexecdir)
|
||||
|
||||
executable('v4l_id',
|
||||
'v4l_id/v4l_id.c',
|
||||
include_directories : includes,
|
||||
link_with : [libudev_internal,
|
||||
libshared],
|
||||
install : true,
|
||||
install_dir : udevlibexecdir)
|
||||
|
||||
executable('mtd_probe',
|
||||
'mtd_probe/mtd_probe.c',
|
||||
'mtd_probe/mtd_probe.h',
|
||||
'mtd_probe/probe_smartmedia.c',
|
||||
include_directories : includes,
|
||||
link_with : [libudev_internal,
|
||||
libshared],
|
||||
install : true,
|
||||
install_dir : udevlibexecdir)
|
||||
executable(prog[0].split('/')[0],
|
||||
prog,
|
||||
include_directories : includes,
|
||||
link_with : [libudev_internal],
|
||||
install_rpath : rpath,
|
||||
install : true,
|
||||
install_dir : udevlibexecdir)
|
||||
endforeach
|
||||
|
||||
install_data('udev.conf',
|
||||
install_dir : join_paths(sysconfdir, 'udev'))
|
||||
|
|
Loading…
Reference in a new issue