xref: /openbmc/phosphor-networkd/src/meson.build (revision a68ab4bb)
137cf66c8SWilliam A. Kennington IIIphosphor_logging_dep = dependency(
237cf66c8SWilliam A. Kennington III  'phosphor-logging',
337cf66c8SWilliam A. Kennington III  fallback: ['phosphor-logging', 'phosphor_logging_dep'])
41bbe3d1eSWilliam A. Kennington III
51bbe3d1eSWilliam A. Kennington IIIsrc_includes = include_directories('.')
61bbe3d1eSWilliam A. Kennington III
7*a68ab4bbSWilliam A. Kennington IIIfmt_dep = dependency('fmt', required: false)
8*a68ab4bbSWilliam A. Kennington IIIif not fmt_dep.found()
9*a68ab4bbSWilliam A. Kennington III  fmt_opts = import('cmake').subproject_options()
10*a68ab4bbSWilliam A. Kennington III  fmt_opts.add_cmake_defines({
11*a68ab4bbSWilliam A. Kennington III    'CMAKE_POSITION_INDEPENDENT_CODE': 'ON',
12*a68ab4bbSWilliam A. Kennington III    'MASTER_PROJECT': 'OFF',
13*a68ab4bbSWilliam A. Kennington III  })
14*a68ab4bbSWilliam A. Kennington III  fmt_proj = import('cmake').subproject(
15*a68ab4bbSWilliam A. Kennington III    'fmt',
16*a68ab4bbSWilliam A. Kennington III    options: fmt_opts,
17*a68ab4bbSWilliam A. Kennington III    required: false)
18*a68ab4bbSWilliam A. Kennington III  assert(fmt_proj.found(), 'fmtlib is required')
19*a68ab4bbSWilliam A. Kennington III  fmt_dep = fmt_proj.dependency('fmt')
20*a68ab4bbSWilliam A. Kennington IIIendif
21*a68ab4bbSWilliam A. Kennington III
221bbe3d1eSWilliam A. Kennington IIIexecutable(
231bbe3d1eSWilliam A. Kennington III  'ncsi-netlink',
241bbe3d1eSWilliam A. Kennington III  'argument.cpp',
251bbe3d1eSWilliam A. Kennington III  'ncsi_netlink_main.cpp',
261bbe3d1eSWilliam A. Kennington III  'ncsi_util.cpp',
271bbe3d1eSWilliam A. Kennington III  implicit_include_directories: false,
281bbe3d1eSWilliam A. Kennington III  include_directories: src_includes,
291bbe3d1eSWilliam A. Kennington III  dependencies: [
30*a68ab4bbSWilliam A. Kennington III    fmt_dep,
311bbe3d1eSWilliam A. Kennington III    dependency('libnl-3.0'),
321bbe3d1eSWilliam A. Kennington III    dependency('libnl-genl-3.0'),
331bbe3d1eSWilliam A. Kennington III    phosphor_dbus_interfaces_dep,
341bbe3d1eSWilliam A. Kennington III    phosphor_logging_dep,
351bbe3d1eSWilliam A. Kennington III  ],
361bbe3d1eSWilliam A. Kennington III  install: true,
371bbe3d1eSWilliam A. Kennington III  install_dir: get_option('bindir'))
381bbe3d1eSWilliam A. Kennington III
391bbe3d1eSWilliam A. Kennington IIIjson_dep = declare_dependency()
401bbe3d1eSWilliam A. Kennington IIIif get_option('sync-mac')
411bbe3d1eSWilliam A. Kennington III  # nlohmann_json might not have a pkg-config. It is header only so just make
421bbe3d1eSWilliam A. Kennington III  # sure we can access the needed symbols from the header.
431bbe3d1eSWilliam A. Kennington III  has_json = meson.get_compiler('cpp').has_header_symbol(
441bbe3d1eSWilliam A. Kennington III    'nlohmann/json.hpp',
451bbe3d1eSWilliam A. Kennington III    'nlohmann::json::string_t',
461bbe3d1eSWilliam A. Kennington III    required: false)
471bbe3d1eSWilliam A. Kennington III  if not has_json
481bbe3d1eSWilliam A. Kennington III    json_dep = dependency(
491bbe3d1eSWilliam A. Kennington III      'nlohmann_json',
501bbe3d1eSWilliam A. Kennington III      fallback: ['nlohmann_json', 'nlohmann_json_dep'],
511bbe3d1eSWilliam A. Kennington III      required: true)
521bbe3d1eSWilliam A. Kennington III  endif
531bbe3d1eSWilliam A. Kennington IIIendif
541bbe3d1eSWilliam A. Kennington III
551bbe3d1eSWilliam A. Kennington IIInetworkd_deps = [
561bbe3d1eSWilliam A. Kennington III  json_dep,
571bbe3d1eSWilliam A. Kennington III  phosphor_dbus_interfaces_dep,
581bbe3d1eSWilliam A. Kennington III  phosphor_logging_dep,
5937cf66c8SWilliam A. Kennington III  networkd_dbus_dep,
601bbe3d1eSWilliam A. Kennington III  sdbusplus_dep,
611bbe3d1eSWilliam A. Kennington III  dependency('sdeventplus', fallback: ['sdeventplus', 'sdeventplus_dep']),
621bbe3d1eSWilliam A. Kennington III  dependency('stdplus', fallback: ['stdplus', 'stdplus_dep']),
631bbe3d1eSWilliam A. Kennington III]
641bbe3d1eSWilliam A. Kennington III
651bbe3d1eSWilliam A. Kennington IIIconf_header = configure_file(
661bbe3d1eSWilliam A. Kennington III  output: 'config.h',
671bbe3d1eSWilliam A. Kennington III  configuration: conf_data)
681bbe3d1eSWilliam A. Kennington III
691bbe3d1eSWilliam A. Kennington IIInetworkd_lib = static_library(
701bbe3d1eSWilliam A. Kennington III  'networkd',
7137cf66c8SWilliam A. Kennington III  conf_header,
721bbe3d1eSWilliam A. Kennington III  'ethernet_interface.cpp',
731bbe3d1eSWilliam A. Kennington III  'neighbor.cpp',
741bbe3d1eSWilliam A. Kennington III  'ipaddress.cpp',
751bbe3d1eSWilliam A. Kennington III  'netlink.cpp',
761bbe3d1eSWilliam A. Kennington III  'network_config.cpp',
771bbe3d1eSWilliam A. Kennington III  'network_manager.cpp',
781bbe3d1eSWilliam A. Kennington III  'system_configuration.cpp',
791bbe3d1eSWilliam A. Kennington III  'util.cpp',
801bbe3d1eSWilliam A. Kennington III  'routing_table.cpp',
811bbe3d1eSWilliam A. Kennington III  'config_parser.cpp',
821bbe3d1eSWilliam A. Kennington III  'dhcp_configuration.cpp',
831bbe3d1eSWilliam A. Kennington III  'vlan_interface.cpp',
841bbe3d1eSWilliam A. Kennington III  'rtnetlink_server.cpp',
851bbe3d1eSWilliam A. Kennington III  'dns_updater.cpp',
861bbe3d1eSWilliam A. Kennington III  'watch.cpp',
871bbe3d1eSWilliam A. Kennington III  implicit_include_directories: false,
8837cf66c8SWilliam A. Kennington III  include_directories: src_includes,
891bbe3d1eSWilliam A. Kennington III  dependencies: networkd_deps)
901bbe3d1eSWilliam A. Kennington III
911bbe3d1eSWilliam A. Kennington IIInetworkd_dep = declare_dependency(
9237cf66c8SWilliam A. Kennington III  sources: conf_header,
931bbe3d1eSWilliam A. Kennington III  dependencies: networkd_deps,
9437cf66c8SWilliam A. Kennington III  include_directories: src_includes,
951bbe3d1eSWilliam A. Kennington III  link_with: networkd_lib)
961bbe3d1eSWilliam A. Kennington III
971bbe3d1eSWilliam A. Kennington IIIexecutable(
981bbe3d1eSWilliam A. Kennington III  'phosphor-network-manager',
991bbe3d1eSWilliam A. Kennington III  'network_manager_main.cpp',
1001bbe3d1eSWilliam A. Kennington III  implicit_include_directories: false,
1011bbe3d1eSWilliam A. Kennington III  dependencies: networkd_dep,
1021bbe3d1eSWilliam A. Kennington III  install: true,
1031bbe3d1eSWilliam A. Kennington III  install_dir: get_option('bindir'))
104