phosphor_fan_monitor_include_directories = include_directories(
    '.',
    '..'
)

sources=[
    'conditions.cpp',
    'fan.cpp',
    'fan_error.cpp',
    'json_parser.cpp',
    'logging.cpp',
    'main.cpp',
    'power_interface.cpp',
    'system.cpp',
    'tach_sensor.cpp',
    '../hwmon_ffdc.cpp'
]

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

# Only needed for YAML config
if get_option('json-config').disabled()
    fan_monitor_defs_cpp_dep = custom_target(
        'fan_monitor_defs.cpp',
        input: files(
            './gen-fan-monitor-defs.py',
            conf.get_unquoted('FAN_MONITOR_YAML_FILE'),
        ),
        command: [
            python_prog, '@INPUT0@',
            '-m','@INPUT1@',
            '-o','monitor'
        ],
        output: 'fan_monitor_defs.cpp'
    )

    sources += fan_monitor_defs_cpp_dep
endif

phosphor_fan_monitor = executable(
    'phosphor-fan-monitor',
    sources,
    dependencies: deps,
    implicit_include_directories: false,
    include_directories: phosphor_fan_monitor_include_directories,
    install: true
)

if(get_option('tests').allowed())
    subdir('test')
endif

