1project( 2 'phosphor-state-manager', 3 'cpp', 4 default_options: [ 5 'warning_level=3', 6 'werror=true', 7 'cpp_std=c++20' 8 ], 9 meson_version: '>= 0.57.0', 10 license: 'Apache-2.0', 11 version: '0.1', 12) 13 14build_host_gpios = get_option('host-gpios') 15 16conf = configuration_data() 17conf.set_quoted( 18 'HOST_BUSNAME', get_option('host-busname')) 19conf.set_quoted( 20 'HOST_OBJPATH', get_option('host-objpath')) 21conf.set_quoted( 22 'HYPERVISOR_BUSNAME', get_option('hypervisor-busname')) 23conf.set_quoted( 24 'HYPERVISOR_OBJPATH', get_option('hypervisor-objpath')) 25conf.set_quoted( 26 'CHASSIS_BUSNAME', get_option('chassis-busname')) 27conf.set_quoted( 28 'CHASSIS_OBJPATH', get_option('chassis-objpath')) 29conf.set_quoted( 30 'BMC_BUSNAME', get_option('bmc-busname')) 31conf.set_quoted( 32 'BMC_OBJPATH', get_option('bmc-objpath')) 33conf.set_quoted( 34 'HOST_STATE_PERSIST_PATH', get_option('host-state-persist-path')) 35conf.set_quoted( 36 'POH_COUNTER_PERSIST_PATH', get_option('poh-counter-persist-path')) 37conf.set_quoted( 38 'CHASSIS_STATE_CHANGE_PERSIST_PATH', get_option('chassis-state-change-persist-path')) 39conf.set_quoted( 40 'SCHEDULED_HOST_TRANSITION_PERSIST_PATH', get_option('scheduled-host-transition-persist-path')) 41conf.set_quoted( 42 'SCHEDULED_HOST_TRANSITION_BUSNAME', get_option('scheduled-host-transition-busname')) 43conf.set( 44 'BOOT_COUNT_MAX_ALLOWED', get_option('boot-count-max-allowed')) 45conf.set( 46 'CLASS_VERSION', get_option('class-version')) 47if build_host_gpios.enabled() 48 conf.set_quoted( 49 'HOST_GPIOS_BUSNAME', get_option('host-gpios-busname')) 50 conf.set_quoted( 51 'HOST_GPIOS_OBJPATH', get_option('host-gpios-objpath')) 52endif 53 54# globals shared across applications 55conf.set_quoted( 56 'HOST_RUNNING_FILE', '/run/openbmc/host@%d-on') 57 58conf.set_quoted( 59 'CHASSIS_ON_FILE', '/run/openbmc/chassis@%d-on') 60 61configure_file(output: 'config.h', configuration: conf) 62 63if(get_option('warm-reboot').enabled()) 64 add_project_arguments('-DENABLE_WARM_REBOOT',language:'cpp') 65endif 66 67sdbusplus = dependency('sdbusplus') 68sdeventplus = dependency('sdeventplus') 69phosphorlogging = dependency('phosphor-logging') 70phosphordbusinterfaces = dependency('phosphor-dbus-interfaces') 71libgpiod = dependency('libgpiod', version : '>=1.4.1') 72 73cppfs = meson.get_compiler('cpp').find_library('stdc++fs') 74 75executable('phosphor-host-state-manager', 76 'host_state_manager.cpp', 77 'host_state_manager_main.cpp', 78 'settings.cpp', 79 'host_check.cpp', 80 dependencies: [ 81 sdbusplus, sdeventplus, phosphorlogging, 82 phosphordbusinterfaces, cppfs 83 ], 84 implicit_include_directories: true, 85 install: true 86) 87 88executable('phosphor-hypervisor-state-manager', 89 'hypervisor_state_manager.cpp', 90 'hypervisor_state_manager_main.cpp', 91 'settings.cpp', 92 dependencies: [ 93 sdbusplus, sdeventplus, phosphorlogging, 94 phosphordbusinterfaces, cppfs 95 ], 96 implicit_include_directories: true, 97 install: true 98) 99 100executable('phosphor-chassis-state-manager', 101 'chassis_state_manager.cpp', 102 'chassis_state_manager_main.cpp', 103 'utils.cpp', 104 dependencies: [ 105 sdbusplus, sdeventplus, phosphorlogging, 106 phosphordbusinterfaces, cppfs, libgpiod 107 ], 108 implicit_include_directories: true, 109 install: true 110) 111 112executable('phosphor-chassis-check-power-status', 113 'chassis_check_power_status.cpp', 114 'utils.cpp', 115 dependencies: [ 116 sdbusplus, phosphorlogging, 117 phosphordbusinterfaces, cppfs, libgpiod 118 ], 119 implicit_include_directories: true, 120 install: true 121) 122 123executable('phosphor-bmc-state-manager', 124 'bmc_state_manager.cpp', 125 'bmc_state_manager_main.cpp', 126 'utils.cpp', 127 dependencies: [ 128 sdbusplus, sdeventplus, phosphorlogging, 129 phosphordbusinterfaces, cppfs, libgpiod 130 ], 131 implicit_include_directories: true, 132 install: true 133) 134 135executable('phosphor-discover-system-state', 136 'discover_system_state.cpp', 137 'settings.cpp', 138 'utils.cpp', 139 dependencies: [ 140 sdbusplus, phosphorlogging, libgpiod 141 ], 142 implicit_include_directories: true, 143 install: true 144) 145 146executable('phosphor-systemd-target-monitor', 147 'systemd_service_parser.cpp', 148 'systemd_target_monitor.cpp', 149 'systemd_target_parser.cpp', 150 'systemd_target_signal.cpp', 151 dependencies: [ 152 sdbusplus, sdeventplus, phosphorlogging 153 ], 154 implicit_include_directories: true, 155 install: true 156) 157 158executable('phosphor-scheduled-host-transition', 159 'scheduled_host_transition_main.cpp', 160 'scheduled_host_transition.cpp', 161 'utils.cpp', 162 dependencies: [ 163 sdbusplus, sdeventplus, phosphorlogging, libgpiod 164 ], 165 implicit_include_directories: true, 166 install: true 167) 168 169executable('phosphor-host-reset-recovery', 170 'host_reset_recovery.cpp', 171 dependencies: [ 172 sdbusplus, phosphorlogging 173 ], 174 implicit_include_directories: true, 175 install: true 176) 177 178install_data('obmcutil', 179 install_mode: 'rwxr-xr-x', 180 install_dir: get_option('bindir') 181) 182 183systemd = dependency('systemd') 184systemd_system_unit_dir = systemd.get_variable( 185 pkgconfig : 'systemdsystemunitdir') 186subdir('service_files') 187subdir('target_files') 188 189if build_host_gpios.enabled() 190 subdir('host_condition_gpio') 191endif 192 193datadir = join_paths( 194 get_option('sysconfdir'), 195 'phosphor-systemd-target-monitor' 196) 197subdir('data') 198 199build_tests = get_option('tests') 200 201# If test coverage of source files within the root directory are wanted, 202# need to define and build the tests from here 203if not build_tests.disabled() 204gtest = dependency('gtest', main: true, disabler: true, required: build_tests) 205gmock = dependency('gmock', disabler: true, required: build_tests) 206 test( 207 'test_systemd_parser', 208 executable('test_systemd_parser', 209 './test/systemd_parser.cpp', 210 'systemd_target_parser.cpp', 211 dependencies: [ 212 gtest, 213 ], 214 implicit_include_directories: true, 215 include_directories: '../' 216 ) 217 ) 218 219 test( 220 'test_systemd_signal', 221 executable('test_systemd_signal', 222 './test/systemd_signal.cpp', 223 'systemd_target_signal.cpp', 224 dependencies: [ 225 gtest, sdbusplus, sdeventplus, phosphorlogging, 226 ], 227 implicit_include_directories: true, 228 include_directories: '../' 229 ) 230 ) 231 232 test( 233 'test_scheduled_host_transition', 234 executable('test_scheduled_host_transition', 235 './test/test_scheduled_host_transition.cpp', 236 'scheduled_host_transition.cpp', 237 'utils.cpp', 238 dependencies: [ 239 gtest, gmock, sdbusplus, sdeventplus, phosphorlogging, libgpiod 240 ], 241 implicit_include_directories: true, 242 include_directories: '../' 243 ) 244 ) 245 246 test( 247 'test_hypervisor_state', 248 executable('test_hypervisor_state', 249 './test/hypervisor_state.cpp', 250 'hypervisor_state_manager.cpp', 251 dependencies: [ 252 gtest, sdbusplus, sdeventplus, phosphorlogging, 253 ], 254 implicit_include_directories: true, 255 include_directories: '../' 256 ) 257 ) 258endif 259