blob: 31371f940a5d14f8bbc3fa4d0275e4ad9f98efbf [file] [log] [blame]
William A. Kennington III1bbe3d12021-05-13 23:45:09 -07001phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
2phosphor_logging_dep = dependency('phosphor-logging')
3
4src_includes = include_directories('.')
5
6executable(
7 'ncsi-netlink',
8 'argument.cpp',
9 'ncsi_netlink_main.cpp',
10 'ncsi_util.cpp',
11 implicit_include_directories: false,
12 include_directories: src_includes,
13 dependencies: [
14 dependency('libnl-3.0'),
15 dependency('libnl-genl-3.0'),
16 phosphor_dbus_interfaces_dep,
17 phosphor_logging_dep,
18 ],
19 install: true,
20 install_dir: get_option('bindir'))
21
22json_dep = declare_dependency()
23if get_option('sync-mac')
24 # nlohmann_json might not have a pkg-config. It is header only so just make
25 # sure we can access the needed symbols from the header.
26 has_json = meson.get_compiler('cpp').has_header_symbol(
27 'nlohmann/json.hpp',
28 'nlohmann::json::string_t',
29 required: false)
30 if not has_json
31 json_dep = dependency(
32 'nlohmann_json',
33 fallback: ['nlohmann_json', 'nlohmann_json_dep'],
34 required: true)
35 endif
36endif
37
38networkd_deps = [
39 json_dep,
40 phosphor_dbus_interfaces_dep,
41 phosphor_logging_dep,
42 sdbusplus_dep,
43 dependency('sdeventplus', fallback: ['sdeventplus', 'sdeventplus_dep']),
44 dependency('stdplus', fallback: ['stdplus', 'stdplus_dep']),
45]
46
47conf_header = configure_file(
48 output: 'config.h',
49 configuration: conf_data)
50
51networkd_generated = [
52 conf_header,
53] + generated_sources
54
55networkd_includes = [
56 src_includes,
57 generated_includes,
58]
59
60networkd_lib = static_library(
61 'networkd',
62 networkd_generated,
63 'ethernet_interface.cpp',
64 'neighbor.cpp',
65 'ipaddress.cpp',
66 'netlink.cpp',
67 'network_config.cpp',
68 'network_manager.cpp',
69 'system_configuration.cpp',
70 'util.cpp',
71 'routing_table.cpp',
72 'config_parser.cpp',
73 'dhcp_configuration.cpp',
74 'vlan_interface.cpp',
75 'rtnetlink_server.cpp',
76 'dns_updater.cpp',
77 'watch.cpp',
78 implicit_include_directories: false,
79 include_directories: networkd_includes,
80 dependencies: networkd_deps)
81
82networkd_dep = declare_dependency(
83 sources: networkd_generated,
84 dependencies: networkd_deps,
85 include_directories: networkd_includes,
86 link_with: networkd_lib)
87
88executable(
89 'phosphor-network-manager',
90 'network_manager_main.cpp',
91 implicit_include_directories: false,
92 dependencies: networkd_dep,
93 install: true,
94 install_dir: get_option('bindir'))