blob: 6384f73a918d9d123d02ad0e47d954f4e8569065 [file] [log] [blame]
William A. Kennington IIIac730af2021-06-24 03:15:38 -07001project(
2 'google-ipmi-sys',
3 'cpp',
4 version: '0.1',
Willy Tuc841bfd2021-09-14 15:26:58 -07005 meson_version: '>=0.57.0',
William A. Kennington IIIac730af2021-06-24 03:15:38 -07006 default_options: [
Willy Tuc841bfd2021-09-14 15:26:58 -07007 'cpp_std=c++20',
William A. Kennington IIIac730af2021-06-24 03:15:38 -07008 'warning_level=3',
9 'werror=true',
10 ])
11
Willy Tu6c71b0f2021-10-10 13:34:41 -070012root_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
Nikhil Namjoshi5e70dc82022-09-16 00:36:07 +000020bm_conf_data = configuration_data()
21bm_conf_data.set10('BARE_METAL', get_option('bare_metal'))
22bm_conf_h = configure_file(
23 output: 'bm_config.h',
24 configuration: bm_conf_data)
25
William A. Kennington IIIac730af2021-06-24 03:15:38 -070026meson.get_compiler('cpp').has_header_symbol(
27 'ipmid/api.h',
28 'ipmid_get_sd_bus_connection')
29
30json_dep = dependency('nlohmann_json', required: false)
31meson.get_compiler('cpp').has_header_symbol(
32 'nlohmann/json.hpp',
33 'nlohmann::json',
34 dependencies: json_dep)
35
Willy Tu6c71b0f2021-10-10 13:34:41 -070036fmt_dep = dependency('fmt', required: false)
37if not fmt_dep.found()
38 fmt_proj = import('cmake').subproject(
39 'fmt',
40 cmake_options: [
41 '-DCMAKE_POSITION_INDEPENDENT_CODE=ON',
42 '-DMASTER_PROJECT=OFF'
43 ],
44 required: false)
45 assert(fmt_proj.found(), 'fmtlib is required')
46 fmt_dep = fmt_proj.dependency('fmt')
47endif
48
49subdir('bifurcation')
50
William A. Kennington IIIac730af2021-06-24 03:15:38 -070051sys_pre = declare_dependency(
Willy Tu6c71b0f2021-10-10 13:34:41 -070052 include_directories: root_inc,
William A. Kennington IIIac730af2021-06-24 03:15:38 -070053 dependencies: [
54 json_dep,
Willy Tu6c71b0f2021-10-10 13:34:41 -070055 fmt_dep,
William A. Kennington IIIac730af2021-06-24 03:15:38 -070056 dependency('phosphor-dbus-interfaces'),
57 dependency('phosphor-logging'),
58 dependency('sdbusplus'),
Willy Tu6c71b0f2021-10-10 13:34:41 -070059 bifurcation_dep,
William A. Kennington IIIac730af2021-06-24 03:15:38 -070060 ])
61
62sys_lib = static_library(
63 'sys',
Nikhil Namjoshi5e70dc82022-09-16 00:36:07 +000064 'bmc_mode.cpp',
William A. Kennington IIIac730af2021-06-24 03:15:38 -070065 'cable.cpp',
66 'cpld.cpp',
67 'entity_name.cpp',
68 'eth.cpp',
69 'flash_size.cpp',
70 'handler.cpp',
71 'host_power_off.cpp',
72 'ipmi.cpp',
73 'machine_name.cpp',
74 'pcie_i2c.cpp',
Steve Foreman4f0d1de2021-09-20 14:06:32 -070075 'google_accel_oob.cpp',
Willy Tu6c71b0f2021-10-10 13:34:41 -070076 'pcie_bifurcation.cpp',
William A. Kennington IIIac730af2021-06-24 03:15:38 -070077 'psu.cpp',
78 'util.cpp',
79 implicit_include_directories: false,
80 dependencies: sys_pre)
81
82sys_dep = declare_dependency(
83 link_with: sys_lib,
84 dependencies: sys_pre)
85
86if not get_option('tests').disabled()
87 subdir('test')
88endif
89
90shared_module(
91 'googlesys',
92 'main.cpp',
93 implicit_include_directories: false,
94 dependencies: [
95 dependency('libipmid'),
96 sys_dep,
97 ],
98 install: true,
99 install_dir: get_option('libdir') / 'ipmid-providers')
100
101systemd_dep = dependency('systemd')
102if systemd_dep.found()
103 install_data(
104 'gbmc-host-poweroff.target',
105 'gbmc-psu-hardreset.target',
William A. Kennington III0e22d322022-04-07 12:32:36 -0700106 'gbmc-psu-hardreset-pre.target',
107 'gbmc-psu-hardreset-time.service',
William A. Kennington IIIac730af2021-06-24 03:15:38 -0700108 install_dir: systemd_dep.get_variable(pkgconfig: 'systemdsystemunitdir'))
109endif