xref: /openbmc/phosphor-buttons/meson.build (revision 7824da46)
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