blob: 06c9404daa951fe67c3048cf0527e28bae5d2f41 [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
18bindir = get_option('prefix') / get_option('bindir')
19conf_data.set('BINDIR', bindir)
20conf_data.set('SYSTEMD_TARGET', get_option('systemd_target'))
21conf_data.set('STRICT_FAILSAFE_PWM', get_option('strict-failsafe-pwm'))
Patrick Rudolph7e635022023-10-13 12:40:14 +020022conf_data.set('OFFLINE_FAILSAFE_PWM', get_option('offline-failsafe-pwm'))
Jonico Eustaquioaf97d8e2024-01-02 14:35:07 -060023conf_data.set('UNC_FAILSAFE', get_option('unc-failsafe'))
Chaul Lya552fe22024-11-15 10:20:28 +000024conf_data.set(
25 'HANDLE_MISSING_OBJECT_PATHS',
26 get_option('handle-missing-object-paths'),
27)
Harvey.Wub1225b22022-10-28 17:42:07 +080028
Patrick Williams6813d892025-02-01 08:37:30 -050029configure_file(output: 'config.h', configuration: conf_data)
Harvey.Wub1225b22022-10-28 17:42:07 +080030
Patrick Williams397e6bc2023-11-29 06:44:45 -060031if get_option('oe-sdk').allowed()
Patrick Williams6813d892025-02-01 08:37:30 -050032 OECORE_TARGET_SYSROOT = run_command(
33 'sh',
34 '-c',
35 'echo $OECORE_TARGET_SYSROOT',
36 ).stdout().strip()
Harvey.Wub1225b22022-10-28 17:42:07 +080037 if OECORE_TARGET_SYSROOT == ''
38 error('OECORE_TARGET_SYSROOT must be set with enable oe-sdk')
39 endif
40 message('Enabling OE-SDK at OECORE_TARGET_SYSROOT: ' + OECORE_TARGET_SYSROOT)
Patrick Williams6813d892025-02-01 08:37:30 -050041 rpath = ':'.join(
42 [OECORE_TARGET_SYSROOT + '/lib', OECORE_TARGET_SYSROOT + '/usr/lib'],
43 )
44 ld_so = run_command(
45 'sh',
46 '-c',
47 'find ' + OECORE_TARGET_SYSROOT + '/lib/ld-*.so | sort -r -n | head -n1',
48 ).stdout().strip()
Harvey.Wub1225b22022-10-28 17:42:07 +080049 dynamic_linker = ['-Wl,-dynamic-linker,' + ld_so]
50else
51 dynamic_linker = []
52endif
53
54systemd = dependency('systemd')
55systemd_system_unit_dir = systemd.get_variable(
Patrick Williams6813d892025-02-01 08:37:30 -050056 'systemdsystemunitdir',
57 pkgconfig_define: ['prefix', get_option('prefix')],
58)
Harvey.Wub1225b22022-10-28 17:42:07 +080059
Patrick Williams6813d892025-02-01 08:37:30 -050060configure_file(
61 input: 'phosphor-pid-control.service.in',
62 output: 'phosphor-pid-control.service',
63 configuration: conf_data,
64 install: true,
65 install_dir: systemd_system_unit_dir,
66)
Harvey.Wub1225b22022-10-28 17:42:07 +080067
Patrick Williamsefda1ce2023-12-08 06:37:28 -060068nlohmann_json_dep = dependency('nlohmann_json', include_type: 'system')
Harvey.Wub1225b22022-10-28 17:42:07 +080069phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
70phosphor_logging_dep = dependency('phosphor-logging')
71sdbusplus_dep = dependency('sdbusplus')
72libsystemd_dep = dependency('libsystemd')
73ipmid_dep = dependency('libipmid')
74
Patrick Williamsa83fae52023-07-13 16:20:06 -050075
76if cxx.has_header('CLI/CLI.hpp')
77 CLI11_dep = declare_dependency()
78else
79 CLI11_dep = dependency('CLI11')
80endif
81
Harvey.Wub1225b22022-10-28 17:42:07 +080082deps = [
Patrick Williamsa83fae52023-07-13 16:20:06 -050083 CLI11_dep,
84 ipmid_dep,
85 libsystemd_dep,
86 nlohmann_json_dep,
Harvey.Wub1225b22022-10-28 17:42:07 +080087 phosphor_dbus_interfaces_dep,
88 phosphor_logging_dep,
89 sdbusplus_dep,
Harvey.Wub1225b22022-10-28 17:42:07 +080090]
91
92root_inc = include_directories(
93 '.',
94 'buildjson',
95 'dbus',
96 'errors',
97 'experiments',
98 'ipmi',
99 'notimpl',
100 'pid',
101 'sensors',
102 'sysfs',
103)
104
Patrick Williams6813d892025-02-01 08:37:30 -0500105setsensor_sources = ['setsensor.cpp']
Harvey.Wub1225b22022-10-28 17:42:07 +0800106
107libswampd_sources = [
108 'main.cpp',
109 'util.cpp',
110 'notimpl/readonly.cpp',
111 'notimpl/writeonly.cpp',
112 'dbus/dbusconfiguration.cpp',
113 'dbus/dbusutil.cpp',
114 'dbus/dbushelper.cpp',
115 'dbus/dbuspassiveredundancy.cpp',
116 'dbus/dbuspassive.cpp',
117 'dbus/dbusactiveread.cpp',
118 'dbus/dbuswrite.cpp',
James Zheng6df8bb52024-11-27 23:38:47 +0000119 'failsafeloggers/builder.cpp',
120 'failsafeloggers/failsafe_logger_utility.cpp',
Harvey.Wub1225b22022-10-28 17:42:07 +0800121 'sysfs/sysfsread.cpp',
122 'sysfs/sysfswrite.cpp',
123 'sysfs/util.cpp',
124 'sensors/pluggable.cpp',
125 'sensors/host.cpp',
126 'sensors/builder.cpp',
127 'sensors/buildjson.cpp',
128 'sensors/manager.cpp',
129 'sensors/build_utils.cpp',
130 'pid/ec/pid.cpp',
Josh Lehande745422020-11-07 02:14:09 -0800131 'pid/ec/logging.cpp',
Harvey.Wub1225b22022-10-28 17:42:07 +0800132 'pid/ec/stepwise.cpp',
133 'pid/fancontroller.cpp',
134 'pid/thermalcontroller.cpp',
135 'pid/pidcontroller.cpp',
136 'pid/stepwisecontroller.cpp',
137 'pid/builder.cpp',
138 'pid/buildjson.cpp',
139 'pid/zone.cpp',
140 'pid/util.cpp',
141 'pid/pidloop.cpp',
142 'pid/tuning.cpp',
143 'buildjson/buildjson.cpp',
144 'experiments/drive.cpp',
145]
146
147libmanualcmds_sources = [
148 'ipmi/main_ipmi.cpp',
149 'ipmi/manualcmds.cpp',
150 'ipmi/dbus_mode.cpp',
151]
152
153libmanualcmds = library(
154 'manualcmds',
155 libmanualcmds_sources,
156 implicit_include_directories: false,
157 dependencies: deps,
158 version: meson.project_version(),
159 override_options: ['b_lundef=false'],
160 install: true,
Patrick Williams6813d892025-02-01 08:37:30 -0500161 install_dir: get_option('libdir') / 'ipmid-providers',
162)
Harvey.Wub1225b22022-10-28 17:42:07 +0800163
164executable(
165 'swampd',
166 libswampd_sources,
167 implicit_include_directories: false,
168 include_directories: root_inc,
169 dependencies: deps,
170 install: true,
Patrick Williams6813d892025-02-01 08:37:30 -0500171 install_dir: get_option('bindir'),
Harvey.Wub1225b22022-10-28 17:42:07 +0800172)
173
174executable(
175 'setsensor',
176 setsensor_sources,
177 implicit_include_directories: true,
178 dependencies: deps,
179 install: true,
Patrick Williams6813d892025-02-01 08:37:30 -0500180 install_dir: get_option('bindir'),
Harvey.Wub1225b22022-10-28 17:42:07 +0800181)
182
Patrick Williams32e58e02025-02-07 10:54:27 -0500183if get_option('tests').allowed()
Harvey.Wub1225b22022-10-28 17:42:07 +0800184 subdir('test')
185endif