xref: /openbmc/phosphor-buttons/meson.build (revision 31ce375e)
1project(
2    'phosphor-buttons', 'cpp',
3    version: '1.0.0',
4    meson_version: '>=1.1.1',
5    default_options: [
6        'warning_level=3',
7        'werror=true',
8        'cpp_std=c++23',
9    ]
10)
11
12host_instances = get_option('host-instances')
13formatted_instances = host_instances.replace(' ', ', ')
14
15conf_data = configuration_data()
16conf_data.set('INSTANCES',formatted_instances)
17conf_data.set_quoted('ID_LED_GROUP', get_option('id-led-group'))
18conf_data.set_quoted('POWER_BUTTON_PROFILE', get_option('power-button-profile'))
19conf_data.set('LONG_PRESS_TIME_MS', get_option('long-press-time-ms'))
20conf_data.set('LOOKUP_GPIO_BASE', get_option('lookup-gpio-base').allowed())
21conf_data.set('ENABLE_RESET_BUTTON_DO_WARM_REBOOT', get_option('reset-button-do-warm-reboot').allowed())
22
23configure_file(
24    input: 'meson_config.hpp.in',
25    output: 'config.hpp',
26    configuration: conf_data
27)
28
29gpioplus_dep = dependency('gpioplus')
30nlohmann_json_dep = dependency('nlohmann_json', include_type: 'system')
31phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
32phosphor_logging_dep = dependency('phosphor-logging')
33sdbusplus_dep = dependency('sdbusplus')
34sdeventplus_dep = dependency('sdeventplus')
35
36deps = [
37    sdbusplus_dep,
38    phosphor_dbus_interfaces_dep,
39    phosphor_logging_dep,
40    nlohmann_json_dep,
41    gpioplus_dep,
42    sdeventplus_dep,
43]
44
45sources_buttons = [
46    'src/gpio.cpp',
47    'src/cpld.cpp',
48    'src/hostSelector_switch.cpp',
49    'src/debugHostSelector_button.cpp',
50    'src/serial_uart_mux.cpp',
51    'src/id_button.cpp',
52    'src/main.cpp',
53    'src/power_button.cpp',
54    'src/reset_button.cpp',
55]
56
57sources_handler = [
58    'src/button_handler_main.cpp',
59    'src/button_handler.cpp',
60    'src/host_then_chassis_poweroff.cpp',
61]
62
63executable(
64    'buttons',
65    sources_buttons,
66    implicit_include_directories: true,
67    include_directories: ['inc'],
68    dependencies: deps,
69    install: true,
70    install_dir: get_option('bindir')
71)
72
73executable(
74    'button-handler',
75    sources_handler,
76    implicit_include_directories: true,
77    include_directories: ['inc'],
78    dependencies: deps,
79    install: true,
80    install_dir: get_option('bindir')
81)
82
83systemd = dependency('systemd')
84systemd_system_unit_dir = systemd.get_variable(
85        'systemdsystemunitdir',
86        pkgconfig_define: ['prefix', get_option('prefix')])
87
88fs = import('fs')
89fs.copyfile(
90    'service_files/phosphor-button-handler.service',
91    install: true,
92    install_dir: systemd_system_unit_dir
93)
94fs.copyfile(
95    'service_files/xyz.openbmc_project.Chassis.Buttons.service',
96    install: true,
97    install_dir: systemd_system_unit_dir
98)
99