xref: /openbmc/google-ipmi-sys/meson.build (revision 6c71b0f9fe1cd604dd894b45acb9870cc47b27b5)
1ac730af2SWilliam A. Kennington IIIproject(
2ac730af2SWilliam A. Kennington III  'google-ipmi-sys',
3ac730af2SWilliam A. Kennington III  'cpp',
4ac730af2SWilliam A. Kennington III  version: '0.1',
5c841bfd2SWilly Tu  meson_version: '>=0.57.0',
6ac730af2SWilliam A. Kennington III  default_options: [
7c841bfd2SWilly Tu    'cpp_std=c++20',
8ac730af2SWilliam A. Kennington III    'warning_level=3',
9ac730af2SWilliam A. Kennington III    'werror=true',
10ac730af2SWilliam A. Kennington III  ])
11ac730af2SWilliam A. Kennington III
12*6c71b0f9SWilly Turoot_inc = include_directories('.')
13*6c71b0f9SWilly Tu
14*6c71b0f9SWilly Tuconf_data = configuration_data()
15*6c71b0f9SWilly Tuconf_data.set_quoted('STATIC_BIFURCATION_CONFIG', get_option('static-bifurcation'))
16*6c71b0f9SWilly Tuconf_h = configure_file(
17*6c71b0f9SWilly Tu  output: 'config.h',
18*6c71b0f9SWilly Tu  configuration: conf_data)
19*6c71b0f9SWilly Tu
20ac730af2SWilliam A. Kennington IIImeson.get_compiler('cpp').has_header_symbol(
21ac730af2SWilliam A. Kennington III  'ipmid/api.h',
22ac730af2SWilliam A. Kennington III  'ipmid_get_sd_bus_connection')
23ac730af2SWilliam A. Kennington III
24ac730af2SWilliam A. Kennington IIIjson_dep = dependency('nlohmann_json', required: false)
25ac730af2SWilliam A. Kennington IIImeson.get_compiler('cpp').has_header_symbol(
26ac730af2SWilliam A. Kennington III  'nlohmann/json.hpp',
27ac730af2SWilliam A. Kennington III  'nlohmann::json',
28ac730af2SWilliam A. Kennington III  dependencies: json_dep)
29ac730af2SWilliam A. Kennington III
30*6c71b0f9SWilly Tufmt_dep = dependency('fmt', required: false)
31*6c71b0f9SWilly Tuif not fmt_dep.found()
32*6c71b0f9SWilly Tu  fmt_proj = import('cmake').subproject(
33*6c71b0f9SWilly Tu    'fmt',
34*6c71b0f9SWilly Tu    cmake_options: [
35*6c71b0f9SWilly Tu      '-DCMAKE_POSITION_INDEPENDENT_CODE=ON',
36*6c71b0f9SWilly Tu      '-DMASTER_PROJECT=OFF'
37*6c71b0f9SWilly Tu    ],
38*6c71b0f9SWilly Tu    required: false)
39*6c71b0f9SWilly Tu  assert(fmt_proj.found(), 'fmtlib is required')
40*6c71b0f9SWilly Tu  fmt_dep = fmt_proj.dependency('fmt')
41*6c71b0f9SWilly Tuendif
42*6c71b0f9SWilly Tu
43*6c71b0f9SWilly Tusubdir('bifurcation')
44*6c71b0f9SWilly Tu
45ac730af2SWilliam A. Kennington IIIsys_pre = declare_dependency(
46*6c71b0f9SWilly Tu  include_directories: root_inc,
47ac730af2SWilliam A. Kennington III  dependencies: [
48ac730af2SWilliam A. Kennington III    json_dep,
49*6c71b0f9SWilly Tu    fmt_dep,
50ac730af2SWilliam A. Kennington III    dependency('phosphor-dbus-interfaces'),
51ac730af2SWilliam A. Kennington III    dependency('phosphor-logging'),
52ac730af2SWilliam A. Kennington III    dependency('sdbusplus'),
53*6c71b0f9SWilly Tu    bifurcation_dep,
54ac730af2SWilliam A. Kennington III  ])
55ac730af2SWilliam A. Kennington III
56ac730af2SWilliam A. Kennington IIIsys_lib = static_library(
57ac730af2SWilliam A. Kennington III  'sys',
58ac730af2SWilliam A. Kennington III  'cable.cpp',
59ac730af2SWilliam A. Kennington III  'cpld.cpp',
60ac730af2SWilliam A. Kennington III  'entity_name.cpp',
61ac730af2SWilliam A. Kennington III  'eth.cpp',
62ac730af2SWilliam A. Kennington III  'flash_size.cpp',
63ac730af2SWilliam A. Kennington III  'handler.cpp',
64ac730af2SWilliam A. Kennington III  'host_power_off.cpp',
65ac730af2SWilliam A. Kennington III  'ipmi.cpp',
66ac730af2SWilliam A. Kennington III  'machine_name.cpp',
67ac730af2SWilliam A. Kennington III  'pcie_i2c.cpp',
684f0d1de6SSteve Foreman  'google_accel_oob.cpp',
69*6c71b0f9SWilly Tu  'pcie_bifurcation.cpp',
70ac730af2SWilliam A. Kennington III  'psu.cpp',
71ac730af2SWilliam A. Kennington III  'util.cpp',
72ac730af2SWilliam A. Kennington III  implicit_include_directories: false,
73ac730af2SWilliam A. Kennington III  dependencies: sys_pre)
74ac730af2SWilliam A. Kennington III
75ac730af2SWilliam A. Kennington IIIsys_dep = declare_dependency(
76ac730af2SWilliam A. Kennington III  link_with: sys_lib,
77ac730af2SWilliam A. Kennington III  dependencies: sys_pre)
78ac730af2SWilliam A. Kennington III
79ac730af2SWilliam A. Kennington IIIif not get_option('tests').disabled()
80ac730af2SWilliam A. Kennington III  subdir('test')
81ac730af2SWilliam A. Kennington IIIendif
82ac730af2SWilliam A. Kennington III
83ac730af2SWilliam A. Kennington IIIshared_module(
84ac730af2SWilliam A. Kennington III  'googlesys',
85ac730af2SWilliam A. Kennington III  'main.cpp',
86ac730af2SWilliam A. Kennington III  implicit_include_directories: false,
87ac730af2SWilliam A. Kennington III  dependencies: [
88ac730af2SWilliam A. Kennington III    dependency('libipmid'),
89ac730af2SWilliam A. Kennington III    sys_dep,
90ac730af2SWilliam A. Kennington III  ],
91ac730af2SWilliam A. Kennington III  install: true,
92ac730af2SWilliam A. Kennington III  install_dir: get_option('libdir') / 'ipmid-providers')
93ac730af2SWilliam A. Kennington III
94ac730af2SWilliam A. Kennington IIIsystemd_dep = dependency('systemd')
95ac730af2SWilliam A. Kennington IIIif systemd_dep.found()
96ac730af2SWilliam A. Kennington III  install_data(
97ac730af2SWilliam A. Kennington III    'gbmc-host-poweroff.target',
98ac730af2SWilliam A. Kennington III    'gbmc-psu-hardreset.target',
990e22d32aSWilliam A. Kennington III    'gbmc-psu-hardreset-pre.target',
1000e22d32aSWilliam A. Kennington III    'gbmc-psu-hardreset-time.service',
101ac730af2SWilliam A. Kennington III    install_dir: systemd_dep.get_variable(pkgconfig: 'systemdsystemunitdir'))
102ac730af2SWilliam A. Kennington IIIendif
103