xref: /openbmc/google-ipmi-sys/meson.build (revision d455bfd6)
1project(
2  'google-ipmi-sys',
3  'cpp',
4  version: '0.1',
5  meson_version: '>=1.1.1',
6  default_options: [
7    'cpp_std=c++23',
8    'warning_level=3',
9    'werror=true',
10  ])
11
12root_inc = include_directories('.')
13
14conf_data = configuration_data()
15conf_data.set_quoted('STATIC_BIFURCATION_CONFIG', get_option('static-bifurcation'))
16conf_h = configure_file(
17  output: 'config.h',
18  configuration: conf_data)
19
20bm_conf_data = configuration_data()
21bm_conf_data.set10('BARE_METAL', get_option('bare_metal'))
22bm_conf_data.set_quoted('BM_SIGNAL_PATH', get_option('bm-signal-path'))
23bm_conf_h = configure_file(
24  output: 'bm_config.h',
25  configuration: bm_conf_data)
26
27meson.get_compiler('cpp').has_header_symbol(
28  'ipmid/api.h',
29  'ipmid_get_sd_bus_connection')
30
31stdplus = dependency('stdplus')
32subdir('bifurcation')
33
34sys_pre = declare_dependency(
35  include_directories: root_inc,
36  dependencies: [
37    dependency('nlohmann_json', include_type: 'system'),
38    dependency('phosphor-dbus-interfaces'),
39    dependency('phosphor-logging'),
40    dependency('sdbusplus'),
41    stdplus,
42    bifurcation_dep,
43  ])
44
45sys_lib = static_library(
46  'sys',
47  'bmc_mode.cpp',
48  'cable.cpp',
49  'cpld.cpp',
50  'entity_name.cpp',
51  'eth.cpp',
52  'flash_size.cpp',
53  'handler.cpp',
54  'host_power_off.cpp',
55  'ipmi.cpp',
56  'linux_boot_done.cpp',
57  'machine_name.cpp',
58  'pcie_i2c.cpp',
59  'google_accel_oob.cpp',
60  'pcie_bifurcation.cpp',
61  'file_system_wrapper.cpp',
62  'psu.cpp',
63  'util.cpp',
64  implicit_include_directories: false,
65  dependencies: sys_pre)
66
67sys_dep = declare_dependency(
68  link_with: sys_lib,
69  dependencies: sys_pre)
70
71if not get_option('tests').disabled()
72  subdir('test')
73endif
74
75shared_module(
76  'googlesys',
77  'main.cpp',
78  implicit_include_directories: false,
79  dependencies: [
80    dependency('libipmid'),
81    sys_dep,
82  ],
83  install: true,
84  install_dir: get_option('libdir') / 'ipmid-providers')
85
86systemd_dep = dependency('systemd')
87if systemd_dep.found()
88  install_data(
89    'gbmc-host-poweroff.target',
90    'gbmc-psu-hardreset.target',
91    'gbmc-psu-hardreset-pre.target',
92    'gbmc-psu-hardreset-time.service',
93    install_dir: systemd_dep.get_variable('systemdsystemunitdir'))
94endif
95
96install_data(
97  'gbmc-enqueue-powercycle.sh',
98  install_dir: get_option('bindir'),
99  install_mode: 'rwxr-xr-x'
100)
101