xref: /openbmc/phosphor-buttons/meson.build (revision 70a0dc8b)
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
44d6a1bae7SGeorge Liusdbusplus_dep = dependency('sdbusplus')
459479b06cSMatt Spinlersdeventplus_dep = dependency('sdeventplus')
46d6a1bae7SGeorge Liuphosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
47d6a1bae7SGeorge Liuphosphor_logging_dep = dependency('phosphor-logging')
48d6a1bae7SGeorge Liugpioplus_dep = dependency('gpioplus')
49d6a1bae7SGeorge Liu
50d6a1bae7SGeorge Liucpp = meson.get_compiler('cpp')
51d6a1bae7SGeorge Liuif cpp.has_header_symbol(
52d6a1bae7SGeorge Liu        'nlohmann/json.hpp',
53d6a1bae7SGeorge Liu        'nlohmann::json::string_t',
54d6a1bae7SGeorge Liu        required:false)
55d6a1bae7SGeorge Liu    nlohmann_json_dep = declare_dependency()
56d6a1bae7SGeorge Liuelse
57d6a1bae7SGeorge Liu    nlohmann_json_dep = dependency('nlohmann-json')
58d6a1bae7SGeorge Liuendif
59d6a1bae7SGeorge Liu
60d6a1bae7SGeorge Liudeps = [
61d6a1bae7SGeorge Liu    sdbusplus_dep,
62d6a1bae7SGeorge Liu    phosphor_dbus_interfaces_dep,
63d6a1bae7SGeorge Liu    phosphor_logging_dep,
64d6a1bae7SGeorge Liu    nlohmann_json_dep,
65d6a1bae7SGeorge Liu    gpioplus_dep,
669479b06cSMatt Spinler    sdeventplus_dep,
67d6a1bae7SGeorge Liu]
68d6a1bae7SGeorge Liu
69d6a1bae7SGeorge Liusources_buttons = [
70d6a1bae7SGeorge Liu    'src/gpio.cpp',
71ccd7db05SDelphine CC Chiu    'src/cpld.cpp',
72d6a1bae7SGeorge Liu    'src/hostSelector_switch.cpp',
73a6d4e65dSNaveen Moses    'src/debugHostSelector_button.cpp',
74d219fa3cSNaveen Moses    'src/serial_uart_mux.cpp',
75d6a1bae7SGeorge Liu    'src/id_button.cpp',
76d6a1bae7SGeorge Liu    'src/main.cpp',
77d6a1bae7SGeorge Liu    'src/power_button.cpp',
78d6a1bae7SGeorge Liu    'src/reset_button.cpp',
79d6a1bae7SGeorge Liu]
80d6a1bae7SGeorge Liu
81d6a1bae7SGeorge Liusources_handler = [
82d6a1bae7SGeorge Liu    'src/button_handler_main.cpp',
83d6a1bae7SGeorge Liu    'src/button_handler.cpp',
841a309f77SMatt Spinler    'src/host_then_chassis_poweroff.cpp',
85d6a1bae7SGeorge Liu]
86d6a1bae7SGeorge Liu
87d6a1bae7SGeorge Liuexecutable(
88d6a1bae7SGeorge Liu    'buttons',
89d6a1bae7SGeorge Liu    sources_buttons,
90d6a1bae7SGeorge Liu    implicit_include_directories: true,
91d6a1bae7SGeorge Liu    include_directories: ['inc'],
92d6a1bae7SGeorge Liu    dependencies: deps,
93d6a1bae7SGeorge Liu    install: true,
94d6a1bae7SGeorge Liu    install_dir: get_option('bindir')
95d6a1bae7SGeorge Liu)
96d6a1bae7SGeorge Liu
97d6a1bae7SGeorge Liuexecutable(
98d6a1bae7SGeorge Liu    'button-handler',
99d6a1bae7SGeorge Liu    sources_handler,
100d6a1bae7SGeorge Liu    implicit_include_directories: true,
101d6a1bae7SGeorge Liu    include_directories: ['inc'],
102d6a1bae7SGeorge Liu    dependencies: deps,
103d6a1bae7SGeorge Liu    install: true,
104d6a1bae7SGeorge Liu    install_dir: get_option('bindir')
105d6a1bae7SGeorge Liu)
106d6a1bae7SGeorge Liu
107d6a1bae7SGeorge Liusystemd = dependency('systemd')
108d6a1bae7SGeorge Liusystemd_system_unit_dir = systemd.get_variable(
10906b10603SPatrick Williams        'systemdsystemunitdir',
110d6a1bae7SGeorge Liu        pkgconfig_define: ['prefix', get_option('prefix')])
111d6a1bae7SGeorge Liu
112*70a0dc8bSGeorge Liufs = import('fs')
113*70a0dc8bSGeorge Liufs.copyfile(
114*70a0dc8bSGeorge Liu    'service_files/phosphor-button-handler.service',
115*70a0dc8bSGeorge Liu    install: true,
116*70a0dc8bSGeorge Liu    install_dir: systemd_system_unit_dir
117*70a0dc8bSGeorge Liu)
118*70a0dc8bSGeorge Liufs.copyfile(
119*70a0dc8bSGeorge Liu    'service_files/xyz.openbmc_project.Chassis.Buttons.service',
120*70a0dc8bSGeorge Liu    install: true,
121*70a0dc8bSGeorge Liu    install_dir: systemd_system_unit_dir
122*70a0dc8bSGeorge Liu)
123