xref: /openbmc/phosphor-networkd/meson.build (revision 609c12dee5f6bc06a5add8fadd0e9c1caba1e97f)
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('NIC_SUPPORTS_ETHTOOL', get_option('nic-ethtool'))
23conf_data.set('SYNC_MAC_FROM_INVENTORY', get_option('sync-mac'))
24conf_data.set('PERSIST_MAC', get_option('persist-mac'))
25
26sdbusplus_dep = dependency('sdbusplus', required: false)
27if sdbusplus_dep.found() and sdbusplus_dep.type_name() != 'internal'
28  sdbusplusplus_prog = find_program('sdbus++', native: true)
29  sdbuspp_gen_meson_prog = find_program('sdbus++-gen-meson', native: true)
30else
31  sdbusplus_proj = subproject('sdbusplus', required: true)
32  sdbusplus_dep = sdbusplus_proj.get_variable('sdbusplus_dep')
33  sdbusplusplus_prog = sdbusplus_proj.get_variable('sdbusplusplus_prog')
34  sdbuspp_gen_meson_prog = sdbusplus_proj.get_variable('sdbuspp_gen_meson_prog')
35endif
36
37generated_sources = []
38generated_others = []
39yaml_sources = []
40subdir('gen')
41subdir('gen/xyz')
42networkd_dbus_includes = include_directories('gen')
43
44phosphor_dbus_interfaces_dep = dependency(
45  'phosphor-dbus-interfaces',
46  fallback: ['phosphor-dbus-interfaces', 'phosphor_dbus_interfaces_dep'])
47
48networkd_dbus_deps = [
49  phosphor_dbus_interfaces_dep,
50  sdbusplus_dep,
51]
52
53networkd_dbus_lib = static_library(
54  'networkd_dbus',
55  generated_sources,
56  implicit_include_directories: false,
57  include_directories: networkd_dbus_includes,
58  dependencies: networkd_dbus_deps)
59
60generated_files_headers = []
61foreach s : generated_sources
62    foreach f : s.to_list()
63        p = f.full_path()
64        if p.endswith('.hpp')
65            generated_files_headers += f
66        endif
67    endforeach
68endforeach
69
70networkd_dbus_dep = declare_dependency(
71  sources: generated_files_headers,
72  include_directories: networkd_dbus_includes,
73  link_with: networkd_dbus_lib,
74  dependencies: networkd_dbus_deps)
75
76subdir('src')
77
78configure_file(
79  input: 'xyz.openbmc_project.Network.service.in',
80  output: 'xyz.openbmc_project.Network.service',
81  configuration: {
82    'SYSTEMD_TARGET': 'multi-user.target',
83    'DEFAULT_BUSNAME': default_busname,
84  },
85  install: true,
86  install_dir: dependency('systemd').get_variable(
87    pkgconfig: 'systemdsystemunitdir'))
88
89configure_file(
90  input: 'xyz.openbmc_project.Network.conf.in',
91  output: 'xyz.openbmc_project.Network.conf',
92  configuration: {'DEFAULT_BUSNAME': default_busname},
93  install: true,
94  install_dir: get_option('datadir') / 'dbus-1' / 'system.d')
95
96if not get_option('tests').disabled()
97  subdir('test')
98endif
99