1d6a1bae7SGeorge Liuproject( 2d6a1bae7SGeorge Liu 'phosphor-buttons', 'cpp', 3d6a1bae7SGeorge Liu version: '1.0.0', 410bc3aebSPatrick Williams meson_version: '>=1.1.1', 5d6a1bae7SGeorge Liu default_options: [ 6d6a1bae7SGeorge Liu 'warning_level=3', 7d6a1bae7SGeorge Liu 'werror=true', 810bc3aebSPatrick Williams 'cpp_std=c++23', 9d6a1bae7SGeorge Liu ] 10d6a1bae7SGeorge Liu) 11d6a1bae7SGeorge Liu 12d6a1bae7SGeorge Liuconf_data = configuration_data() 13a6d4e65dSNaveen Mosesconf_data.set_quoted('POWER_DBUS_OBJECT_NAME', 14a6d4e65dSNaveen Moses '/xyz/openbmc_project/Chassis/Buttons/Power0') 15a6d4e65dSNaveen Mosesconf_data.set_quoted('RESET_DBUS_OBJECT_NAME', 16a6d4e65dSNaveen Moses '/xyz/openbmc_project/Chassis/Buttons/Reset0') 17a6d4e65dSNaveen Mosesconf_data.set_quoted('ID_DBUS_OBJECT_NAME', 18a6d4e65dSNaveen Moses '/xyz/openbmc_project/Chassis/Buttons/ID0') 19a6d4e65dSNaveen Mosesconf_data.set_quoted('HS_DBUS_OBJECT_NAME', 20a6d4e65dSNaveen Moses '/xyz/openbmc_project/Chassis/Buttons/HostSelector') 21a6d4e65dSNaveen Mosesconf_data.set_quoted('DBG_HS_DBUS_OBJECT_NAME', 22a6d4e65dSNaveen Moses '/xyz/openbmc_project/Chassis/Buttons/DebugHostSelector') 23d219fa3cSNaveen Mosesconf_data.set_quoted('SERIAL_CONSOLE_MUX_DBUS_OBJECT_NAME', 24d219fa3cSNaveen Moses '/xyz/openbmc_project/Chassis/Buttons/SerialUartMux') 25ba33275dSGeorge Liuconf_data.set_quoted('GPIO_BASE_LABEL_NAME', '1e780000.gpio') 26a6d4e65dSNaveen Mosesconf_data.set_quoted('CHASSIS_STATE_OBJECT_NAME', 27a6d4e65dSNaveen Moses '/xyz/openbmc_project/state/chassis') 28a6d4e65dSNaveen Mosesconf_data.set_quoted('CHASSISSYSTEM_STATE_OBJECT_NAME', 29a6d4e65dSNaveen Moses '/xyz/openbmc_project/state/chassis_system') 30a6d4e65dSNaveen Mosesconf_data.set_quoted('HOST_STATE_OBJECT_NAME', 31a6d4e65dSNaveen Moses '/xyz/openbmc_project/state/host') 32d6a1bae7SGeorge Liuconf_data.set_quoted('ID_LED_GROUP', get_option('id-led-group')) 33d6a1bae7SGeorge Liu 341a309f77SMatt Spinlerconf_data.set_quoted('POWER_BUTTON_PROFILE', get_option('power-button-profile')) 351a309f77SMatt Spinler 36f756f8b0SGeorge Liuconf_data.set('LONG_PRESS_TIME_MS', get_option('long-press-time-ms')) 37ba33275dSGeorge Liuconf_data.set('LOOKUP_GPIO_BASE', get_option('lookup-gpio-base').enabled()) 389456ffc9SHuyLeconf_data.set('ENABLE_RESET_BUTTON_DO_WARM_REBOOT', get_option('reset-button-do-warm-reboot').enabled()) 39d6a1bae7SGeorge Liu 40d6a1bae7SGeorge Liuconfigure_file(output: 'config.h', 41d6a1bae7SGeorge Liu configuration: conf_data 42d6a1bae7SGeorge Liu) 43d6a1bae7SGeorge Liu 44*7824da46SPatrick Williamsgpioplus_dep = dependency('gpioplus') 45*7824da46SPatrick Williamsnlohmann_json_dep = dependency('nlohmann_json', include_type: 'system') 46d6a1bae7SGeorge Liuphosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces') 47d6a1bae7SGeorge Liuphosphor_logging_dep = dependency('phosphor-logging') 48*7824da46SPatrick Williamssdbusplus_dep = dependency('sdbusplus') 49*7824da46SPatrick Williamssdeventplus_dep = dependency('sdeventplus') 50d6a1bae7SGeorge Liu 51d6a1bae7SGeorge Liudeps = [ 52d6a1bae7SGeorge Liu sdbusplus_dep, 53d6a1bae7SGeorge Liu phosphor_dbus_interfaces_dep, 54d6a1bae7SGeorge Liu phosphor_logging_dep, 55d6a1bae7SGeorge Liu nlohmann_json_dep, 56d6a1bae7SGeorge Liu gpioplus_dep, 579479b06cSMatt Spinler sdeventplus_dep, 58d6a1bae7SGeorge Liu] 59d6a1bae7SGeorge Liu 60d6a1bae7SGeorge Liusources_buttons = [ 61d6a1bae7SGeorge Liu 'src/gpio.cpp', 62ccd7db05SDelphine CC Chiu 'src/cpld.cpp', 63d6a1bae7SGeorge Liu 'src/hostSelector_switch.cpp', 64a6d4e65dSNaveen Moses 'src/debugHostSelector_button.cpp', 65d219fa3cSNaveen Moses 'src/serial_uart_mux.cpp', 66d6a1bae7SGeorge Liu 'src/id_button.cpp', 67d6a1bae7SGeorge Liu 'src/main.cpp', 68d6a1bae7SGeorge Liu 'src/power_button.cpp', 69d6a1bae7SGeorge Liu 'src/reset_button.cpp', 70d6a1bae7SGeorge Liu] 71d6a1bae7SGeorge Liu 72d6a1bae7SGeorge Liusources_handler = [ 73d6a1bae7SGeorge Liu 'src/button_handler_main.cpp', 74d6a1bae7SGeorge Liu 'src/button_handler.cpp', 751a309f77SMatt Spinler 'src/host_then_chassis_poweroff.cpp', 76d6a1bae7SGeorge Liu] 77d6a1bae7SGeorge Liu 78d6a1bae7SGeorge Liuexecutable( 79d6a1bae7SGeorge Liu 'buttons', 80d6a1bae7SGeorge Liu sources_buttons, 81d6a1bae7SGeorge Liu implicit_include_directories: true, 82d6a1bae7SGeorge Liu include_directories: ['inc'], 83d6a1bae7SGeorge Liu dependencies: deps, 84d6a1bae7SGeorge Liu install: true, 85d6a1bae7SGeorge Liu install_dir: get_option('bindir') 86d6a1bae7SGeorge Liu) 87d6a1bae7SGeorge Liu 88d6a1bae7SGeorge Liuexecutable( 89d6a1bae7SGeorge Liu 'button-handler', 90d6a1bae7SGeorge Liu sources_handler, 91d6a1bae7SGeorge Liu implicit_include_directories: true, 92d6a1bae7SGeorge Liu include_directories: ['inc'], 93d6a1bae7SGeorge Liu dependencies: deps, 94d6a1bae7SGeorge Liu install: true, 95d6a1bae7SGeorge Liu install_dir: get_option('bindir') 96d6a1bae7SGeorge Liu) 97d6a1bae7SGeorge Liu 98d6a1bae7SGeorge Liusystemd = dependency('systemd') 99d6a1bae7SGeorge Liusystemd_system_unit_dir = systemd.get_variable( 10006b10603SPatrick Williams 'systemdsystemunitdir', 101d6a1bae7SGeorge Liu pkgconfig_define: ['prefix', get_option('prefix')]) 102d6a1bae7SGeorge Liu 10370a0dc8bSGeorge Liufs = import('fs') 10470a0dc8bSGeorge Liufs.copyfile( 10570a0dc8bSGeorge Liu 'service_files/phosphor-button-handler.service', 10670a0dc8bSGeorge Liu install: true, 10770a0dc8bSGeorge Liu install_dir: systemd_system_unit_dir 10870a0dc8bSGeorge Liu) 10970a0dc8bSGeorge Liufs.copyfile( 11070a0dc8bSGeorge Liu 'service_files/xyz.openbmc_project.Chassis.Buttons.service', 11170a0dc8bSGeorge Liu install: true, 11270a0dc8bSGeorge Liu install_dir: systemd_system_unit_dir 11370a0dc8bSGeorge Liu) 114