xref: /openbmc/phosphor-networkd/meson.build (revision a4c18d4e)
1project(
2  'phosphor-networkd',
3  'cpp',
4  version: '0.1',
5  meson_version: '>=0.57.0',
6  default_options: [
7    'warning_level=3',
8    'cpp_std=c++20',
9  ])
10
11default_busname = 'xyz.openbmc_project.Network'
12
13conf_data = configuration_data()
14conf_data.set_quoted('DEFAULT_BUSNAME', default_busname)
15conf_data.set('HAVE_UBOOT_ENV', get_option('uboot-env'))
16conf_data.set(
17  'LINK_LOCAL_AUTOCONFIGURATION',
18  get_option('default-link-local-autoconf'))
19conf_data.set(
20  'ENABLE_IPV6_ACCEPT_RA',
21  get_option('default-ipv6-accept-ra'))
22conf_data.set('SYNC_MAC_FROM_INVENTORY', get_option('sync-mac'))
23conf_data.set('PERSIST_MAC', get_option('persist-mac'))
24conf_data.set10('FORCE_SYNC_MAC_FROM_INVENTORY', get_option('force-sync-mac'))
25
26sdbusplus_dep = dependency('sdbusplus')
27sdbusplusplus_prog = find_program('sdbus++', native: true)
28sdbuspp_gen_meson_prog = find_program('sdbus++-gen-meson', native: true)
29sdbusplusplus_depfiles = files()
30if sdbusplus_dep.type_name() == 'internal'
31  sdbusplusplus_depfiles = subproject('sdbusplus').get_variable('sdbusplusplus_depfiles')
32endif
33
34generated_sources = []
35generated_others = []
36yaml_sources = []
37subdir('gen')
38subdir('gen/xyz')
39networkd_dbus_includes = include_directories('gen')
40
41phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
42
43networkd_dbus_deps = [
44  phosphor_dbus_interfaces_dep,
45  sdbusplus_dep,
46]
47
48networkd_dbus_lib = static_library(
49  'networkd_dbus',
50  generated_sources,
51  implicit_include_directories: false,
52  include_directories: networkd_dbus_includes,
53  dependencies: networkd_dbus_deps)
54
55generated_files_headers = []
56foreach s : generated_sources
57    foreach f : s.to_list()
58        p = f.full_path()
59        if p.endswith('.hpp')
60            generated_files_headers += f
61        endif
62    endforeach
63endforeach
64
65networkd_dbus_dep = declare_dependency(
66  sources: generated_files_headers,
67  include_directories: networkd_dbus_includes,
68  link_with: networkd_dbus_lib,
69  dependencies: networkd_dbus_deps)
70
71subdir('src')
72
73configure_file(
74  input: '60-phosphor-networkd-default.network.in',
75  output: '60-phosphor-networkd-default.network',
76  configuration: conf_data,
77  install: true,
78  install_dir: dependency('systemd').get_variable(
79    pkgconfig: 'systemdutildir') / 'network')
80
81configure_file(
82  input: 'xyz.openbmc_project.Network.service.in',
83  output: 'xyz.openbmc_project.Network.service',
84  configuration: {
85    'SYSTEMD_TARGET': 'multi-user.target',
86    'DEFAULT_BUSNAME': default_busname,
87  },
88  install: true,
89  install_dir: dependency('systemd').get_variable(
90    pkgconfig: 'systemdsystemunitdir'))
91
92configure_file(
93  input: 'xyz.openbmc_project.Network.conf.in',
94  output: 'xyz.openbmc_project.Network.conf',
95  configuration: {'DEFAULT_BUSNAME': default_busname},
96  install: true,
97  install_dir: get_option('datadir') / 'dbus-1' / 'system.d')
98
99if not get_option('tests').disabled()
100  subdir('test')
101endif
102