blob: 304db1fcdbc0f08d8a2f129447a9503eed43c0d9 [file] [log] [blame]
Patrick Williams3397be32022-03-21 09:52:57 -05001phosphor_logging_dep = dependency('phosphor-logging')
William A. Kennington III1bbe3d12021-05-13 23:45:09 -07002
3src_includes = include_directories('.')
4
William A. Kennington IIIa68ab4b2021-10-07 19:16:16 -07005fmt_dep = dependency('fmt', required: false)
6if not fmt_dep.found()
7 fmt_opts = import('cmake').subproject_options()
8 fmt_opts.add_cmake_defines({
9 'CMAKE_POSITION_INDEPENDENT_CODE': 'ON',
10 'MASTER_PROJECT': 'OFF',
11 })
12 fmt_proj = import('cmake').subproject(
13 'fmt',
14 options: fmt_opts,
15 required: false)
16 assert(fmt_proj.found(), 'fmtlib is required')
17 fmt_dep = fmt_proj.dependency('fmt')
18endif
19
William A. Kennington III1bbe3d12021-05-13 23:45:09 -070020executable(
21 'ncsi-netlink',
22 'argument.cpp',
23 'ncsi_netlink_main.cpp',
24 'ncsi_util.cpp',
25 implicit_include_directories: false,
26 include_directories: src_includes,
27 dependencies: [
William A. Kennington IIIa68ab4b2021-10-07 19:16:16 -070028 fmt_dep,
William A. Kennington III1bbe3d12021-05-13 23:45:09 -070029 dependency('libnl-3.0'),
30 dependency('libnl-genl-3.0'),
31 phosphor_dbus_interfaces_dep,
32 phosphor_logging_dep,
33 ],
34 install: true,
35 install_dir: get_option('bindir'))
36
37json_dep = declare_dependency()
38if get_option('sync-mac')
39 # nlohmann_json might not have a pkg-config. It is header only so just make
40 # sure we can access the needed symbols from the header.
41 has_json = meson.get_compiler('cpp').has_header_symbol(
42 'nlohmann/json.hpp',
43 'nlohmann::json::string_t',
44 required: false)
45 if not has_json
Patrick Williams3397be32022-03-21 09:52:57 -050046 json_dep = dependency('nlohmann_json')
William A. Kennington III1bbe3d12021-05-13 23:45:09 -070047 endif
48endif
49
50networkd_deps = [
51 json_dep,
52 phosphor_dbus_interfaces_dep,
53 phosphor_logging_dep,
William A. Kennington III37cf66c2021-05-17 14:56:54 -070054 networkd_dbus_dep,
William A. Kennington III1bbe3d12021-05-13 23:45:09 -070055 sdbusplus_dep,
Patrick Williams3397be32022-03-21 09:52:57 -050056 dependency('sdeventplus'),
57 dependency('stdplus'),
William A. Kennington III1bbe3d12021-05-13 23:45:09 -070058]
59
60conf_header = configure_file(
61 output: 'config.h',
62 configuration: conf_data)
63
William A. Kennington III1bbe3d12021-05-13 23:45:09 -070064networkd_lib = static_library(
65 'networkd',
William A. Kennington III37cf66c2021-05-17 14:56:54 -070066 conf_header,
William A. Kennington III1bbe3d12021-05-13 23:45:09 -070067 'ethernet_interface.cpp',
68 'neighbor.cpp',
69 'ipaddress.cpp',
70 'netlink.cpp',
71 'network_config.cpp',
72 'network_manager.cpp',
73 'system_configuration.cpp',
74 'util.cpp',
75 'routing_table.cpp',
76 'config_parser.cpp',
77 'dhcp_configuration.cpp',
78 'vlan_interface.cpp',
79 'rtnetlink_server.cpp',
80 'dns_updater.cpp',
81 'watch.cpp',
82 implicit_include_directories: false,
William A. Kennington III37cf66c2021-05-17 14:56:54 -070083 include_directories: src_includes,
William A. Kennington III1bbe3d12021-05-13 23:45:09 -070084 dependencies: networkd_deps)
85
86networkd_dep = declare_dependency(
William A. Kennington III37cf66c2021-05-17 14:56:54 -070087 sources: conf_header,
William A. Kennington III1bbe3d12021-05-13 23:45:09 -070088 dependencies: networkd_deps,
William A. Kennington III37cf66c2021-05-17 14:56:54 -070089 include_directories: src_includes,
William A. Kennington III1bbe3d12021-05-13 23:45:09 -070090 link_with: networkd_lib)
91
92executable(
93 'phosphor-network-manager',
94 'network_manager_main.cpp',
95 implicit_include_directories: false,
96 dependencies: networkd_dep,
97 install: true,
98 install_dir: get_option('bindir'))
Asmitha Karunanithibe2bdec2021-05-13 02:54:29 -050099
100if (get_option('hyp-nw-config') == true)
101 subdir('ibm')
102endif