project(
    'phosphor-pid-control', 'cpp',
    version : '1.0.0',
    meson_version: '>=0.63.0',
    default_options: [
        'warning_level=3',
        'werror=true',
        'cpp_std=c++20',
    ]
)

conf_data = configuration_data()

bindir = get_option('prefix') / get_option('bindir')
conf_data.set('BINDIR', bindir)
conf_data.set('SYSTEMD_TARGET', get_option('systemd_target'))
conf_data.set('STRICT_FAILSAFE_PWM', get_option('strict-failsafe-pwm'))

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

if get_option('oe-sdk').enabled()
    OECORE_TARGET_SYSROOT = run_command('sh', '-c', 'echo $OECORE_TARGET_SYSROOT').stdout().strip()
    if OECORE_TARGET_SYSROOT == ''
        error('OECORE_TARGET_SYSROOT must be set with enable oe-sdk')
    endif
    message('Enabling OE-SDK at OECORE_TARGET_SYSROOT: ' + OECORE_TARGET_SYSROOT)
    rpath = ':'.join([OECORE_TARGET_SYSROOT + '/lib', OECORE_TARGET_SYSROOT + '/usr/lib'])
    ld_so = run_command('sh', '-c', 'find ' + OECORE_TARGET_SYSROOT + '/lib/ld-*.so | sort -r -n | head -n1').stdout().strip()
    dynamic_linker = ['-Wl,-dynamic-linker,' + ld_so]
else
    dynamic_linker = []
endif

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

configure_file(input: 'phosphor-pid-control.service.in',
               output: 'phosphor-pid-control.service',
               configuration: conf_data,
               install: true,
               install_dir: systemd_system_unit_dir)

phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
phosphor_logging_dep = dependency('phosphor-logging')
sdbusplus_dep = dependency('sdbusplus')
libsystemd_dep = dependency('libsystemd')
ipmid_dep = dependency('libipmid')

deps = [
    phosphor_dbus_interfaces_dep,
    phosphor_logging_dep,
    sdbusplus_dep,
    libsystemd_dep,
    ipmid_dep,
]

root_inc = include_directories(
    '.',
    'buildjson',
    'dbus',
    'errors',
    'experiments',
    'ipmi',
    'notimpl',
    'pid',
    'sensors',
    'sysfs',
)

setsensor_sources = [
    'setsensor.cpp'
]

libswampd_sources = [
    'main.cpp',
    'util.cpp',
    'notimpl/readonly.cpp',
    'notimpl/writeonly.cpp',
    'dbus/dbusconfiguration.cpp',
    'dbus/dbusutil.cpp',
    'dbus/dbushelper.cpp',
    'dbus/dbuspassiveredundancy.cpp',
    'dbus/dbuspassive.cpp',
    'dbus/dbusactiveread.cpp',
    'dbus/dbuswrite.cpp',
    'sysfs/sysfsread.cpp',
    'sysfs/sysfswrite.cpp',
    'sysfs/util.cpp',
    'sensors/pluggable.cpp',
    'sensors/host.cpp',
    'sensors/builder.cpp',
    'sensors/buildjson.cpp',
    'sensors/manager.cpp',
    'sensors/build_utils.cpp',
    'pid/ec/pid.cpp',
    'pid/ec/stepwise.cpp',
    'pid/fancontroller.cpp',
    'pid/thermalcontroller.cpp',
    'pid/pidcontroller.cpp',
    'pid/stepwisecontroller.cpp',
    'pid/builder.cpp',
    'pid/buildjson.cpp',
    'pid/zone.cpp',
    'pid/util.cpp',
    'pid/pidloop.cpp',
    'pid/tuning.cpp',
    'buildjson/buildjson.cpp',
    'experiments/drive.cpp',
]

libmanualcmds_sources = [
    'ipmi/main_ipmi.cpp',
    'ipmi/manualcmds.cpp',
    'ipmi/dbus_mode.cpp',
]

libmanualcmds = library(
    'manualcmds',
    libmanualcmds_sources,
    implicit_include_directories: false,
    dependencies: deps,
    version: meson.project_version(),
    override_options: ['b_lundef=false'],
    install: true,
    install_dir: get_option('libdir') / 'ipmid-providers')

executable(
    'swampd',
    libswampd_sources,
    implicit_include_directories: false,
    include_directories: root_inc,
    dependencies: deps,
    install: true,
    install_dir: get_option('bindir')
)

executable(
    'setsensor',
    setsensor_sources,
    implicit_include_directories: true,
    dependencies: deps,
    install: true,
    install_dir: get_option('bindir')
)

if not get_option('tests').disabled()
    subdir('test')
endif
