blob: 7e02851d08b2c55b0c900d1a8fe25ce336717f56 [file] [log] [blame]
Harvey.Wub1225b22022-10-28 17:42:07 +08001project(
Patrick Williams6813d892025-02-01 08:37:30 -05002 'phosphor-pid-control',
3 'cpp',
4 version: '1.0.0',
Patrick Williams2aaf9362023-07-12 11:15:45 -05005 meson_version: '>=1.1.1',
Harvey.Wub1225b22022-10-28 17:42:07 +08006 default_options: [
7 'warning_level=3',
8 'werror=true',
Patrick Williams2aaf9362023-07-12 11:15:45 -05009 'cpp_std=c++23',
Konstantin Aladyshev8dc277c2024-04-25 15:47:07 +030010 'b_lto=true',
Patrick Williams6813d892025-02-01 08:37:30 -050011 ],
Harvey.Wub1225b22022-10-28 17:42:07 +080012)
13
Patrick Williamsa83fae52023-07-13 16:20:06 -050014cxx = meson.get_compiler('cpp')
15
Harvey.Wub1225b22022-10-28 17:42:07 +080016conf_data = configuration_data()
17
Harvey.Wub1225b22022-10-28 17:42:07 +080018conf_data.set('STRICT_FAILSAFE_PWM', get_option('strict-failsafe-pwm'))
Patrick Rudolph7e635022023-10-13 12:40:14 +020019conf_data.set('OFFLINE_FAILSAFE_PWM', get_option('offline-failsafe-pwm'))
Jonico Eustaquioaf97d8e2024-01-02 14:35:07 -060020conf_data.set('UNC_FAILSAFE', get_option('unc-failsafe'))
Chaul Lya552fe22024-11-15 10:20:28 +000021conf_data.set(
22 'HANDLE_MISSING_OBJECT_PATHS',
23 get_option('handle-missing-object-paths'),
24)
Harvey.Wub1225b22022-10-28 17:42:07 +080025
Patrick Williams6813d892025-02-01 08:37:30 -050026configure_file(output: 'config.h', configuration: conf_data)
Harvey.Wub1225b22022-10-28 17:42:07 +080027
Patrick Williams397e6bc2023-11-29 06:44:45 -060028if get_option('oe-sdk').allowed()
Patrick Williams6813d892025-02-01 08:37:30 -050029 OECORE_TARGET_SYSROOT = run_command(
30 'sh',
31 '-c',
32 'echo $OECORE_TARGET_SYSROOT',
33 ).stdout().strip()
Harvey.Wub1225b22022-10-28 17:42:07 +080034 if OECORE_TARGET_SYSROOT == ''
35 error('OECORE_TARGET_SYSROOT must be set with enable oe-sdk')
36 endif
37 message('Enabling OE-SDK at OECORE_TARGET_SYSROOT: ' + OECORE_TARGET_SYSROOT)
Patrick Williams6813d892025-02-01 08:37:30 -050038 rpath = ':'.join(
39 [OECORE_TARGET_SYSROOT + '/lib', OECORE_TARGET_SYSROOT + '/usr/lib'],
40 )
41 ld_so = run_command(
42 'sh',
43 '-c',
44 'find ' + OECORE_TARGET_SYSROOT + '/lib/ld-*.so | sort -r -n | head -n1',
45 ).stdout().strip()
Harvey.Wub1225b22022-10-28 17:42:07 +080046 dynamic_linker = ['-Wl,-dynamic-linker,' + ld_so]
47else
48 dynamic_linker = []
49endif
50
51systemd = dependency('systemd')
52systemd_system_unit_dir = systemd.get_variable(
Patrick Williams6813d892025-02-01 08:37:30 -050053 'systemdsystemunitdir',
54 pkgconfig_define: ['prefix', get_option('prefix')],
55)
Harvey.Wub1225b22022-10-28 17:42:07 +080056
Ed Tanous69a7c2b2025-06-27 10:50:41 -070057systemd_conf_data = configuration_data()
58bindir = get_option('prefix') / get_option('bindir')
59systemd_conf_data.set('BINDIR', bindir)
60systemd_conf_data.set('SYSTEMD_TARGET', get_option('systemd_target'))
61
Patrick Williams6813d892025-02-01 08:37:30 -050062configure_file(
63 input: 'phosphor-pid-control.service.in',
64 output: 'phosphor-pid-control.service',
Ed Tanous69a7c2b2025-06-27 10:50:41 -070065 configuration: systemd_conf_data,
Patrick Williams6813d892025-02-01 08:37:30 -050066 install: true,
67 install_dir: systemd_system_unit_dir,
68)
Harvey.Wub1225b22022-10-28 17:42:07 +080069
Patrick Williamsefda1ce2023-12-08 06:37:28 -060070nlohmann_json_dep = dependency('nlohmann_json', include_type: 'system')
Harvey.Wub1225b22022-10-28 17:42:07 +080071phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
72phosphor_logging_dep = dependency('phosphor-logging')
73sdbusplus_dep = dependency('sdbusplus')
74libsystemd_dep = dependency('libsystemd')
75ipmid_dep = dependency('libipmid')
76
Patrick Williamsa83fae52023-07-13 16:20:06 -050077
78if cxx.has_header('CLI/CLI.hpp')
79 CLI11_dep = declare_dependency()
80else
81 CLI11_dep = dependency('CLI11')
82endif
83
Harvey.Wub1225b22022-10-28 17:42:07 +080084deps = [
Patrick Williamsa83fae52023-07-13 16:20:06 -050085 CLI11_dep,
86 ipmid_dep,
87 libsystemd_dep,
88 nlohmann_json_dep,
Harvey.Wub1225b22022-10-28 17:42:07 +080089 phosphor_dbus_interfaces_dep,
90 phosphor_logging_dep,
91 sdbusplus_dep,
Harvey.Wub1225b22022-10-28 17:42:07 +080092]
93
94root_inc = include_directories(
95 '.',
96 'buildjson',
97 'dbus',
98 'errors',
99 'experiments',
100 'ipmi',
101 'notimpl',
102 'pid',
103 'sensors',
104 'sysfs',
105)
106
Patrick Williams6813d892025-02-01 08:37:30 -0500107setsensor_sources = ['setsensor.cpp']
Harvey.Wub1225b22022-10-28 17:42:07 +0800108
109libswampd_sources = [
110 'main.cpp',
111 'util.cpp',
112 'notimpl/readonly.cpp',
113 'notimpl/writeonly.cpp',
114 'dbus/dbusconfiguration.cpp',
115 'dbus/dbusutil.cpp',
116 'dbus/dbushelper.cpp',
117 'dbus/dbuspassiveredundancy.cpp',
118 'dbus/dbuspassive.cpp',
Harvey.Wub1225b22022-10-28 17:42:07 +0800119 'dbus/dbuswrite.cpp',
James Zheng6df8bb52024-11-27 23:38:47 +0000120 'failsafeloggers/builder.cpp',
121 'failsafeloggers/failsafe_logger_utility.cpp',
Harvey.Wub1225b22022-10-28 17:42:07 +0800122 'sysfs/sysfsread.cpp',
123 'sysfs/sysfswrite.cpp',
124 'sysfs/util.cpp',
125 'sensors/pluggable.cpp',
126 'sensors/host.cpp',
127 'sensors/builder.cpp',
128 'sensors/buildjson.cpp',
129 'sensors/manager.cpp',
130 'sensors/build_utils.cpp',
131 'pid/ec/pid.cpp',
Josh Lehande745422020-11-07 02:14:09 -0800132 'pid/ec/logging.cpp',
Harvey.Wub1225b22022-10-28 17:42:07 +0800133 'pid/ec/stepwise.cpp',
134 'pid/fancontroller.cpp',
135 'pid/thermalcontroller.cpp',
136 'pid/pidcontroller.cpp',
137 'pid/stepwisecontroller.cpp',
138 'pid/builder.cpp',
139 'pid/buildjson.cpp',
140 'pid/zone.cpp',
141 'pid/util.cpp',
142 'pid/pidloop.cpp',
143 'pid/tuning.cpp',
144 'buildjson/buildjson.cpp',
145 'experiments/drive.cpp',
146]
147
148libmanualcmds_sources = [
149 'ipmi/main_ipmi.cpp',
150 'ipmi/manualcmds.cpp',
151 'ipmi/dbus_mode.cpp',
152]
153
154libmanualcmds = library(
155 'manualcmds',
156 libmanualcmds_sources,
157 implicit_include_directories: false,
158 dependencies: deps,
159 version: meson.project_version(),
160 override_options: ['b_lundef=false'],
161 install: true,
Patrick Williams6813d892025-02-01 08:37:30 -0500162 install_dir: get_option('libdir') / 'ipmid-providers',
163)
Harvey.Wub1225b22022-10-28 17:42:07 +0800164
165executable(
166 'swampd',
167 libswampd_sources,
168 implicit_include_directories: false,
169 include_directories: root_inc,
170 dependencies: deps,
171 install: true,
Patrick Williams6813d892025-02-01 08:37:30 -0500172 install_dir: get_option('bindir'),
Harvey.Wub1225b22022-10-28 17:42:07 +0800173)
174
175executable(
176 'setsensor',
177 setsensor_sources,
178 implicit_include_directories: true,
179 dependencies: deps,
180 install: true,
Patrick Williams6813d892025-02-01 08:37:30 -0500181 install_dir: get_option('bindir'),
Harvey.Wub1225b22022-10-28 17:42:07 +0800182)
183
Patrick Williams32e58e02025-02-07 10:54:27 -0500184if get_option('tests').allowed()
Harvey.Wub1225b22022-10-28 17:42:07 +0800185 subdir('test')
186endif