Quite often we need to specify include_directories('.'). Normally, meson
does this automatically, but we specify implicit_include_directories : false,
see
30d20907bddfe064cc3437a888dd8f00d14929e4 for an explanation.
Passing the include_directories argument through the template layers was rather
cumbersome. Let's simplify things by always including the directory of the
first source file. This makes the definitions simpler, at the cost of having an
unnecessary include directory in the list in some cases.
(Tests are excluded from this change, because they happen to not need this, but
also because some tests have source[0] which is a custom target, and we'd need
newer meson to support that.)
}
endif
fuzz_additional_kwargs += {
- 'include_directories' : include_directories('src/fuzz'),
'c_args' : test_cflags,
}
kwargs = {}
foreach key, val : dict
- if key in ['name', 'dbus', 'public', 'conditions',
- 'type', 'suite', 'timeout', 'parallel',
- 'objects', 'sources', 'extract']
+ if key in ['name', 'dbus', 'public', 'conditions', 'type', 'suite',
+ 'timeout', 'parallel', 'objects', 'sources', 'extract',
+ 'include_directories']
continue
endif
kwargs += { key : [ kwargs.get(key, []), val ]}
endforeach
+ include_directories = dict['include_directories']
+ if not is_test
+ include_directories += fs.parent(exe_sources[0])
+ endif
+
foreach val : dict.get('objects', [])
obj = objects_by_name[val]
- kwargs += {
- 'objects' : obj['objects'],
- 'include_directories' : [
- kwargs.get('include_directories', []),
- obj['include_directories'],
- ],
- }
+ kwargs += { 'objects' : obj['objects'] }
+ include_directories += obj['include_directories']
endforeach
if is_test
endif
if is_fuzz
+ include_directories += include_directories('src/fuzz')
foreach key, val : fuzz_additional_kwargs
if key == 'sources'
exe_sources += val
sources : exe_sources,
kwargs : kwargs,
implicit_include_directories : false,
+ include_directories : include_directories,
)
executables_by_name += { name : exe }
'name' : 'systemd-executor',
'public' : true,
'sources' : systemd_executor_sources,
- 'include_directories' : core_includes,
'link_with' : executor_libs,
'dependencies' : [
libapparmor_cflags,
libexec_template + {
'name' : 'systemd-coredump',
'sources' : systemd_coredump_sources,
- 'include_directories' : [libexec_template['include_directories'], include_directories('.')],
'extract' : systemd_coredump_extract_sources,
'link_with' : [libshared],
'dependencies' : common_dependencies,
'dbus' : true,
'sources' : systemd_homed_sources,
'extract' : systemd_homed_extract_sources,
- 'include_directories' : includes +
- include_directories('.'),
'dependencies' : [
libcrypt,
libm,
'name' : 'systemd-journald',
'sources' : systemd_journald_sources,
'extract' : systemd_journald_extract_sources,
- 'include_directories' : [libexec_template['include_directories'], include_directories('.')],
'dependencies' : [
liblz4_cflags,
libselinux_cflags,
'dbus' : true,
'sources' : systemd_logind_sources,
'extract' : systemd_logind_extract_sources,
- 'include_directories' : [libexec_template['include_directories'], include_directories('.')],
'dependencies' : [
threads,
],
'name' : 'systemd-nsresourced',
'sources' : systemd_nsresourced_sources,
'extract' : systemd_nsresourced_extract_sources,
- 'include_directories' : [libexec_template['include_directories'], include_directories('.')],
'dependencies' : threads,
},
libexec_template + {
'dbus' : true,
'sources' : systemd_resolved_sources,
'extract' : systemd_resolved_extract_sources,
- 'include_directories' : [libexec_template['include_directories'], include_directories('.')],
},
executable_template + resolve_common_template + {
'name' : 'resolvectl',
'name' : 'systemd-sleep',
'sources' : files('sleep.c'),
'extract' : files('battery-capacity.c'),
- 'include_directories' : [libexec_template['include_directories'], include_directories('.')],
},
test_template + {
'sources' : files('test-battery-capacity.c'),
'name' : 'systemd-timesyncd',
'sources' : timesyncd_sources,
'extract' : timesyncd_extract_sources,
- 'include_directories' : [libexec_template['include_directories'], include_directories('.')],
'link_with' : timesyncd_link_with,
'dependencies' : [
libm,