project(
    'phosphor-buttons', 'cpp',
    version: '1.0.0',
    meson_version: '>=1.1.1',
    default_options: [
        'warning_level=3',
        'werror=true',
        'cpp_std=c++23',
    ]
)

conf_data = configuration_data()
conf_data.set_quoted('POWER_DBUS_OBJECT_NAME',
                 '/xyz/openbmc_project/Chassis/Buttons/Power0')
conf_data.set_quoted('RESET_DBUS_OBJECT_NAME',
                 '/xyz/openbmc_project/Chassis/Buttons/Reset0')
conf_data.set_quoted('ID_DBUS_OBJECT_NAME',
                 '/xyz/openbmc_project/Chassis/Buttons/ID0')
conf_data.set_quoted('HS_DBUS_OBJECT_NAME',
                 '/xyz/openbmc_project/Chassis/Buttons/HostSelector')
conf_data.set_quoted('DBG_HS_DBUS_OBJECT_NAME',
                 '/xyz/openbmc_project/Chassis/Buttons/DebugHostSelector')
conf_data.set_quoted('SERIAL_CONSOLE_MUX_DBUS_OBJECT_NAME',
                 '/xyz/openbmc_project/Chassis/Buttons/SerialUartMux')
conf_data.set_quoted('GPIO_BASE_LABEL_NAME', '1e780000.gpio')
conf_data.set_quoted('CHASSIS_STATE_OBJECT_NAME',
                 '/xyz/openbmc_project/state/chassis')
conf_data.set_quoted('CHASSISSYSTEM_STATE_OBJECT_NAME',
                 '/xyz/openbmc_project/state/chassis_system')
conf_data.set_quoted('HOST_STATE_OBJECT_NAME',
                 '/xyz/openbmc_project/state/host')
conf_data.set_quoted('ID_LED_GROUP', get_option('id-led-group'))

conf_data.set_quoted('POWER_BUTTON_PROFILE', get_option('power-button-profile'))

conf_data.set('LONG_PRESS_TIME_MS', get_option('long-press-time-ms'))
conf_data.set('LOOKUP_GPIO_BASE', get_option('lookup-gpio-base').enabled())
conf_data.set('ENABLE_RESET_BUTTON_DO_WARM_REBOOT', get_option('reset-button-do-warm-reboot').enabled())

configure_file(output: 'config.h',
    configuration: conf_data
)

sdbusplus_dep = dependency('sdbusplus')
sdeventplus_dep = dependency('sdeventplus')
phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
phosphor_logging_dep = dependency('phosphor-logging')
gpioplus_dep = dependency('gpioplus')

cpp = meson.get_compiler('cpp')
if cpp.has_header_symbol(
        'nlohmann/json.hpp',
        'nlohmann::json::string_t',
        required:false)
    nlohmann_json_dep = declare_dependency()
else
    nlohmann_json_dep = dependency('nlohmann-json')
endif

deps = [
    sdbusplus_dep,
    phosphor_dbus_interfaces_dep,
    phosphor_logging_dep,
    nlohmann_json_dep,
    gpioplus_dep,
    sdeventplus_dep,
]

sources_buttons = [
    'src/gpio.cpp',
    'src/cpld.cpp',
    'src/hostSelector_switch.cpp',
    'src/debugHostSelector_button.cpp',
    'src/serial_uart_mux.cpp',
    'src/id_button.cpp',
    'src/main.cpp',
    'src/power_button.cpp',
    'src/reset_button.cpp',
]

sources_handler = [
    'src/button_handler_main.cpp',
    'src/button_handler.cpp',
    'src/host_then_chassis_poweroff.cpp',
]

executable(
    'buttons',
    sources_buttons,
    implicit_include_directories: true,
    include_directories: ['inc'],
    dependencies: deps,
    install: true,
    install_dir: get_option('bindir')
)

executable(
    'button-handler',
    sources_handler,
    implicit_include_directories: true,
    include_directories: ['inc'],
    dependencies: deps,
    install: true,
    install_dir: get_option('bindir')
)

systemd = dependency('systemd')
systemd_system_unit_dir = systemd.get_variable(
        'systemdsystemunitdir',
        pkgconfig_define: ['prefix', get_option('prefix')])

fs = import('fs')
fs.copyfile(
    'service_files/phosphor-button-handler.service',
    install: true,
    install_dir: systemd_system_unit_dir
)
fs.copyfile(
    'service_files/xyz.openbmc_project.Chassis.Buttons.service',
    install: true,
    install_dir: systemd_system_unit_dir
)
