blob: b11a3ebadb6c2695e8d022317e8ebcaf424ae853 [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'))
Harvey.Wub1225b22022-10-28 17:42:07 +080024
Patrick Williams6813d892025-02-01 08:37:30 -050025configure_file(output: 'config.h', configuration: conf_data)
Harvey.Wub1225b22022-10-28 17:42:07 +080026
Patrick Williams397e6bc2023-11-29 06:44:45 -060027if get_option('oe-sdk').allowed()
Patrick Williams6813d892025-02-01 08:37:30 -050028 OECORE_TARGET_SYSROOT = run_command(
29 'sh',
30 '-c',
31 'echo $OECORE_TARGET_SYSROOT',
32 ).stdout().strip()
Harvey.Wub1225b22022-10-28 17:42:07 +080033 if OECORE_TARGET_SYSROOT == ''
34 error('OECORE_TARGET_SYSROOT must be set with enable oe-sdk')
35 endif
36 message('Enabling OE-SDK at OECORE_TARGET_SYSROOT: ' + OECORE_TARGET_SYSROOT)
Patrick Williams6813d892025-02-01 08:37:30 -050037 rpath = ':'.join(
38 [OECORE_TARGET_SYSROOT + '/lib', OECORE_TARGET_SYSROOT + '/usr/lib'],
39 )
40 ld_so = run_command(
41 'sh',
42 '-c',
43 'find ' + OECORE_TARGET_SYSROOT + '/lib/ld-*.so | sort -r -n | head -n1',
44 ).stdout().strip()
Harvey.Wub1225b22022-10-28 17:42:07 +080045 dynamic_linker = ['-Wl,-dynamic-linker,' + ld_so]
46else
47 dynamic_linker = []
48endif
49
50systemd = dependency('systemd')
51systemd_system_unit_dir = systemd.get_variable(
Patrick Williams6813d892025-02-01 08:37:30 -050052 'systemdsystemunitdir',
53 pkgconfig_define: ['prefix', get_option('prefix')],
54)
Harvey.Wub1225b22022-10-28 17:42:07 +080055
Patrick Williams6813d892025-02-01 08:37:30 -050056configure_file(
57 input: 'phosphor-pid-control.service.in',
58 output: 'phosphor-pid-control.service',
59 configuration: conf_data,
60 install: true,
61 install_dir: systemd_system_unit_dir,
62)
Harvey.Wub1225b22022-10-28 17:42:07 +080063
Patrick Williamsefda1ce2023-12-08 06:37:28 -060064nlohmann_json_dep = dependency('nlohmann_json', include_type: 'system')
Harvey.Wub1225b22022-10-28 17:42:07 +080065phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
66phosphor_logging_dep = dependency('phosphor-logging')
67sdbusplus_dep = dependency('sdbusplus')
68libsystemd_dep = dependency('libsystemd')
69ipmid_dep = dependency('libipmid')
70
Patrick Williamsa83fae52023-07-13 16:20:06 -050071
72if cxx.has_header('CLI/CLI.hpp')
73 CLI11_dep = declare_dependency()
74else
75 CLI11_dep = dependency('CLI11')
76endif
77
Harvey.Wub1225b22022-10-28 17:42:07 +080078deps = [
Patrick Williamsa83fae52023-07-13 16:20:06 -050079 CLI11_dep,
80 ipmid_dep,
81 libsystemd_dep,
82 nlohmann_json_dep,
Harvey.Wub1225b22022-10-28 17:42:07 +080083 phosphor_dbus_interfaces_dep,
84 phosphor_logging_dep,
85 sdbusplus_dep,
Harvey.Wub1225b22022-10-28 17:42:07 +080086]
87
88root_inc = include_directories(
89 '.',
90 'buildjson',
91 'dbus',
92 'errors',
93 'experiments',
94 'ipmi',
95 'notimpl',
96 'pid',
97 'sensors',
98 'sysfs',
99)
100
Patrick Williams6813d892025-02-01 08:37:30 -0500101setsensor_sources = ['setsensor.cpp']
Harvey.Wub1225b22022-10-28 17:42:07 +0800102
103libswampd_sources = [
104 'main.cpp',
105 'util.cpp',
106 'notimpl/readonly.cpp',
107 'notimpl/writeonly.cpp',
108 'dbus/dbusconfiguration.cpp',
109 'dbus/dbusutil.cpp',
110 'dbus/dbushelper.cpp',
111 'dbus/dbuspassiveredundancy.cpp',
112 'dbus/dbuspassive.cpp',
113 'dbus/dbusactiveread.cpp',
114 'dbus/dbuswrite.cpp',
James Zheng6df8bb52024-11-27 23:38:47 +0000115 'failsafeloggers/builder.cpp',
116 'failsafeloggers/failsafe_logger_utility.cpp',
Harvey.Wub1225b22022-10-28 17:42:07 +0800117 'sysfs/sysfsread.cpp',
118 'sysfs/sysfswrite.cpp',
119 'sysfs/util.cpp',
120 'sensors/pluggable.cpp',
121 'sensors/host.cpp',
122 'sensors/builder.cpp',
123 'sensors/buildjson.cpp',
124 'sensors/manager.cpp',
125 'sensors/build_utils.cpp',
126 'pid/ec/pid.cpp',
Josh Lehande745422020-11-07 02:14:09 -0800127 'pid/ec/logging.cpp',
Harvey.Wub1225b22022-10-28 17:42:07 +0800128 'pid/ec/stepwise.cpp',
129 'pid/fancontroller.cpp',
130 'pid/thermalcontroller.cpp',
131 'pid/pidcontroller.cpp',
132 'pid/stepwisecontroller.cpp',
133 'pid/builder.cpp',
134 'pid/buildjson.cpp',
135 'pid/zone.cpp',
136 'pid/util.cpp',
137 'pid/pidloop.cpp',
138 'pid/tuning.cpp',
139 'buildjson/buildjson.cpp',
140 'experiments/drive.cpp',
141]
142
143libmanualcmds_sources = [
144 'ipmi/main_ipmi.cpp',
145 'ipmi/manualcmds.cpp',
146 'ipmi/dbus_mode.cpp',
147]
148
149libmanualcmds = library(
150 'manualcmds',
151 libmanualcmds_sources,
152 implicit_include_directories: false,
153 dependencies: deps,
154 version: meson.project_version(),
155 override_options: ['b_lundef=false'],
156 install: true,
Patrick Williams6813d892025-02-01 08:37:30 -0500157 install_dir: get_option('libdir') / 'ipmid-providers',
158)
Harvey.Wub1225b22022-10-28 17:42:07 +0800159
160executable(
161 'swampd',
162 libswampd_sources,
163 implicit_include_directories: false,
164 include_directories: root_inc,
165 dependencies: deps,
166 install: true,
Patrick Williams6813d892025-02-01 08:37:30 -0500167 install_dir: get_option('bindir'),
Harvey.Wub1225b22022-10-28 17:42:07 +0800168)
169
170executable(
171 'setsensor',
172 setsensor_sources,
173 implicit_include_directories: true,
174 dependencies: deps,
175 install: true,
Patrick Williams6813d892025-02-01 08:37:30 -0500176 install_dir: get_option('bindir'),
Harvey.Wub1225b22022-10-28 17:42:07 +0800177)
178
179if not get_option('tests').disabled()
180 subdir('test')
181endif