]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/udev/meson.build
e0cd47f80b77d34f5ba48e980c10324481d1c6e9
[thirdparty/systemd.git] / src / udev / meson.build
1 # SPDX-License-Identifier: LGPL-2.1-or-later
2
3 udevadm_sources = files(
4 'udevadm-control.c',
5 'udevadm-hwdb.c',
6 'udevadm-info.c',
7 'udevadm-lock.c',
8 'udevadm-monitor.c',
9 'udevadm-settle.c',
10 'udevadm-test-builtin.c',
11 'udevadm-test.c',
12 'udevadm-trigger.c',
13 'udevadm-util.c',
14 'udevadm-verify.c',
15 'udevadm-wait.c',
16 'udevadm.c',
17 'udevd.c',
18 )
19
20 libudevd_core_sources = files(
21 'net/link-config.c',
22 'udev-ctrl.c',
23 'udev-event.c',
24 'udev-format.c',
25 'udev-manager.c',
26 'udev-node.c',
27 'udev-rules.c',
28 'udev-spawn.c',
29 'udev-watch.c',
30 'udev-worker.c',
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',
39 'udev-builtin.c',
40 )
41
42 if conf.get('HAVE_KMOD') == 1
43 libudevd_core_sources += files('udev-builtin-kmod.c')
44 endif
45
46 if conf.get('HAVE_BLKID') == 1
47 libudevd_core_sources += files('udev-builtin-blkid.c')
48 endif
49
50 if conf.get('HAVE_ACL') == 1
51 libudevd_core_sources += files('udev-builtin-uaccess.c')
52 endif
53
54 ############################################################
55
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],
61 capture : true)
62
63 generate_keyboard_keys_gperf = find_program('generate-keyboard-keys-gperf.sh')
64 fname = 'keyboard-keys-from-name.gperf'
65 gperf_file = custom_target(
66 fname,
67 input : keyboard_keys_list_txt,
68 output : fname,
69 command : [generate_keyboard_keys_gperf, '@INPUT@'],
70 capture : true)
71
72 fname = 'keyboard-keys-from-name.h'
73 keyboard_keys_from_name_h = custom_target(
74 fname,
75 input : gperf_file,
76 output : fname,
77 command : [gperf,
78 '-L', 'ANSI-C', '-t',
79 '-N', 'keyboard_lookup_key',
80 '-H', 'hash_key_name',
81 '-p', '-C',
82 '@INPUT@'],
83 capture : true)
84
85 ############################################################
86
87 udev_link_gperf_gperf = files('net/link-config-gperf.gperf')
88
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@'])
94
95 ############################################################
96
97 if get_option('link-udev-shared')
98 udev_link_with = [libshared]
99 udev_rpath = pkglibdir
100 else
101 udev_link_with = [libshared_static,
102 libsystemd_static]
103 udev_rpath = ''
104 endif
105
106 ############################################################
107
108 udev_includes = [includes, include_directories('net', '.')]
109 libudevd_core = static_library(
110 'udev-core',
111 libudevd_core_sources,
112 link_config_gperf_c,
113 keyboard_keys_from_name_h,
114 include_directories : udev_includes,
115 link_with : udev_link_with,
116 dependencies : [libblkid,
117 libkmod,
118 userspace],
119 build_by_default : false)
120
121 udev_dependencies = [
122 libacl,
123 libblkid,
124 libkmod,
125 threads,
126 ]
127
128 udev_plugin_template = executable_template + {
129 'public' : true,
130 'link_with' : udev_link_with,
131 'install_rpath' : udev_rpath,
132 'install_dir' : udevlibexecdir,
133 }
134
135 udev_common_template = {
136 'link_with' : [
137 libshared,
138 libudevd_core,
139 ],
140 'dependencies' : [
141 libacl,
142 threads,
143 ],
144 }
145 udev_test_template = test_template + udev_common_template
146 udev_fuzz_template = fuzz_template + udev_common_template
147
148 executables += [
149 executable_template + {
150 'name' : 'udevadm',
151 'public' : true,
152 'sources' : udevadm_sources,
153 'link_with' : [libudevd_core],
154 'dependencies' : udev_dependencies,
155 'install_rpath' : udev_rpath,
156 },
157 udev_plugin_template + {
158 'name' : 'ata_id',
159 'sources' : files('ata_id/ata_id.c'),
160 },
161 udev_plugin_template + {
162 'name' : 'cdrom_id',
163 'sources' : files('cdrom_id/cdrom_id.c'),
164 },
165 udev_plugin_template + {
166 'name' : 'dmi_memory_id',
167 'conditions' : ['HAVE_DMI'],
168 'sources' : files('dmi_memory_id/dmi_memory_id.c'),
169 },
170 udev_plugin_template + {
171 'name' : 'fido_id',
172 'sources' : files(
173 'fido_id/fido_id.c',
174 'fido_id/fido_id_desc.c',
175 ),
176 },
177 udev_plugin_template + {
178 'name' : 'iocost',
179 'sources' : files('iocost/iocost.c'),
180 },
181 udev_plugin_template + {
182 'name' : 'mtd_probe',
183 'sources' : files(
184 'mtd_probe/mtd_probe.c',
185 'mtd_probe/probe_smartmedia.c',
186 ),
187 },
188 udev_plugin_template + {
189 'name' : 'scsi_id',
190 'sources' : files(
191 'scsi_id/scsi_id.c',
192 'scsi_id/scsi_serial.c',
193 ),
194 },
195 udev_plugin_template + {
196 'name' : 'v4l_id',
197 'sources' : files('v4l_id/v4l_id.c'),
198 },
199 test_template + {
200 'sources' : files(
201 'fido_id/test-fido-id-desc.c',
202 'fido_id/fido_id_desc.c',
203 ),
204 'suite' : 'udev',
205 },
206 udev_test_template + {
207 'sources' : files('test-udev-builtin.c'),
208 },
209 udev_test_template + {
210 'sources' : files('test-udev-format.c'),
211 },
212 udev_test_template + {
213 'sources' : files('test-udev-manager.c'),
214 },
215 udev_test_template + {
216 'sources' : files('test-udev-node.c'),
217 },
218 udev_test_template + {
219 'sources' : files('test-udev-rule-runner.c'),
220 'dependencies' : udev_dependencies + [
221 libselinux,
222 ],
223 'type' : 'manual',
224 },
225 udev_test_template + {
226 'sources' : files('test-udev-rules.c'),
227 },
228 udev_test_template + {
229 'sources' : files('test-udev-spawn.c'),
230 },
231 fuzz_template + {
232 'sources' : files(
233 'fido_id/fuzz-fido-id-desc.c',
234 'fido_id/fido_id_desc.c',
235 ),
236 },
237 udev_fuzz_template + {
238 'sources' : files('net/fuzz-link-parser.c'),
239 'include_directories' : udev_includes,
240 },
241 udev_fuzz_template + {
242 'sources' : files('fuzz-udev-rule-parse-value.c'),
243 },
244 udev_fuzz_template + {
245 'sources' : files('fuzz-udev-rules.c'),
246 },
247 ]
248
249 meson.add_install_script(sh, '-c', ln_s.format(bindir / 'udevadm',
250 libexecdir / 'systemd-udevd'))
251
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')
257 endif
258
259 udev_pc = custom_target(
260 'udev.pc',
261 input : 'udev.pc.in',
262 output : 'udev.pc',
263 command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
264 install : pkgconfigdatadir != 'no',
265 install_tag : 'devel',
266 install_dir : pkgconfigdatadir)
267
268 if install_sysconfdir
269 install_emptydir(sysconfdir / 'udev/rules.d')
270 endif