1 # SPDX-License-Identifier: LGPL-2.1-or-later
3 udevadm_sources = files(
10 'udevadm-test-builtin.c',
20 libudevd_core_sources = files(
31 'udev-builtin-btrfs.c',
32 'udev-builtin-hwdb.c',
33 'udev-builtin-input_id.c',
34 'udev-builtin-keyboard.c',
35 'udev-builtin-net_id.c',
36 'udev-builtin-net_setup_link.c',
37 'udev-builtin-path_id.c',
38 'udev-builtin-usb_id.c',
42 if conf.get('HAVE_KMOD') == 1
43 libudevd_core_sources += files('udev-builtin-kmod.c')
46 if conf.get('HAVE_BLKID') == 1
47 libudevd_core_sources += files('udev-builtin-blkid.c')
50 if conf.get('HAVE_ACL') == 1
51 libudevd_core_sources += files('udev-builtin-uaccess.c')
54 ############################################################
56 generate_keyboard_keys_list = find_program('generate-keyboard-keys-list.sh')
57 keyboard_keys_list_txt = custom_target(
58 'keyboard-keys-list.txt',
59 output : 'keyboard-keys-list.txt',
60 command : [generate_keyboard_keys_list, cpp],
63 generate_keyboard_keys_gperf = find_program('generate-keyboard-keys-gperf.sh')
64 fname = 'keyboard-keys-from-name.gperf'
65 gperf_file = custom_target(
67 input : keyboard_keys_list_txt,
69 command : [generate_keyboard_keys_gperf, '@INPUT@'],
72 fname = 'keyboard-keys-from-name.h'
73 keyboard_keys_from_name_h = custom_target(
79 '-N', 'keyboard_lookup_key',
80 '-H', 'hash_key_name',
85 ############################################################
87 udev_link_gperf_gperf = files('net/link-config-gperf.gperf')
89 link_config_gperf_c = custom_target(
90 'link-config-gperf.c',
91 input : udev_link_gperf_gperf,
92 output : 'link-config-gperf.c',
93 command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@'])
95 ############################################################
97 if get_option('link-udev-shared')
98 udev_link_with = [libshared]
99 udev_rpath = pkglibdir
101 udev_link_with = [libshared_static,
106 ############################################################
108 udev_includes = [includes, include_directories('net', '.')]
109 libudevd_core = static_library(
111 libudevd_core_sources,
113 keyboard_keys_from_name_h,
114 include_directories : udev_includes,
115 link_with : udev_link_with,
116 dependencies : [libblkid,
119 build_by_default : false)
121 udev_dependencies = [
128 udev_plugin_template = executable_template + {
130 'link_with' : udev_link_with,
131 'install_rpath' : udev_rpath,
132 'install_dir' : udevlibexecdir,
135 udev_common_template = {
145 udev_test_template = test_template + udev_common_template
146 udev_fuzz_template = fuzz_template + udev_common_template
149 executable_template + {
152 'sources' : udevadm_sources,
153 'link_with' : [libudevd_core],
154 'dependencies' : udev_dependencies,
155 'install_rpath' : udev_rpath,
157 udev_plugin_template + {
159 'sources' : files('ata_id/ata_id.c'),
161 udev_plugin_template + {
163 'sources' : files('cdrom_id/cdrom_id.c'),
165 udev_plugin_template + {
166 'name' : 'dmi_memory_id',
167 'conditions' : ['HAVE_DMI'],
168 'sources' : files('dmi_memory_id/dmi_memory_id.c'),
170 udev_plugin_template + {
174 'fido_id/fido_id_desc.c',
177 udev_plugin_template + {
179 'sources' : files('iocost/iocost.c'),
181 udev_plugin_template + {
182 'name' : 'mtd_probe',
184 'mtd_probe/mtd_probe.c',
185 'mtd_probe/probe_smartmedia.c',
188 udev_plugin_template + {
192 'scsi_id/scsi_serial.c',
195 udev_plugin_template + {
197 'sources' : files('v4l_id/v4l_id.c'),
201 'fido_id/test-fido-id-desc.c',
202 'fido_id/fido_id_desc.c',
206 udev_test_template + {
207 'sources' : files('test-udev-builtin.c'),
209 udev_test_template + {
210 'sources' : files('test-udev-format.c'),
212 udev_test_template + {
213 'sources' : files('test-udev-manager.c'),
215 udev_test_template + {
216 'sources' : files('test-udev-node.c'),
218 udev_test_template + {
219 'sources' : files('test-udev-rule-runner.c'),
220 'dependencies' : udev_dependencies + [
225 udev_test_template + {
226 'sources' : files('test-udev-rules.c'),
228 udev_test_template + {
229 'sources' : files('test-udev-spawn.c'),
233 'fido_id/fuzz-fido-id-desc.c',
234 'fido_id/fido_id_desc.c',
237 udev_fuzz_template + {
238 'sources' : files('net/fuzz-link-parser.c'),
239 'include_directories' : udev_includes,
241 udev_fuzz_template + {
242 'sources' : files('fuzz-udev-rule-parse-value.c'),
244 udev_fuzz_template + {
245 'sources' : files('fuzz-udev-rules.c'),
249 meson.add_install_script(sh, '-c', ln_s.format(bindir / 'udevadm',
250 libexecdir / 'systemd-udevd'))
252 if install_sysconfdir_samples
253 install_data('udev.conf',
254 install_dir : sysconfdir / 'udev')
255 install_data('iocost/iocost.conf',
256 install_dir : sysconfdir / 'udev')
259 udev_pc = custom_target(
261 input : 'udev.pc.in',
263 command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
264 install : pkgconfigdatadir != 'no',
265 install_tag : 'devel',
266 install_dir : pkgconfigdatadir)
268 if install_sysconfdir
269 install_emptydir(sysconfdir / 'udev/rules.d')