# async gpio monitor needs boost library
boost_args = ['-DBOOST_ASIO_DISABLE_THREADS',
              '-DBOOST_ERROR_CODE_HEADER_ONLY',
              '-DBOOST_SYSTEM_NO_DEPRECATED']

# dependency to link gpiod support
libgpiod = dependency('libgpiod', version : '>=1.4.1')

# install systemd unit file
configure_file(
    input: 'attn_handler.service',
    output: 'attn_handler.service',
    copy: true,
    install_dir:
        dependency('systemd').get_pkgconfig_variable(
            'systemdsystemunitdir')
)

# see if phosphor-logging is available, if not use test case logging code
if (true == phosphor_logging)
    logging_src = 'attn_logging.cpp'
else
    logging_src = '../test/end2end/logging.cpp'
endif

# Source files.
attn_src = files(
    'attn_config.cpp',
    'attention.cpp',
    'attn_handler.cpp',
    'attn_main.cpp',
    'attn_monitor.cpp',
    'bp_handler.cpp',
    logging_src,
    'ti_handler.cpp',
)

# Library dependencies.
attn_deps = [
    libgpiod,
    libpdbg_dep,
    sdbusplus_dep,
]

# Create static library.
attn_lib = static_library(
    'attn_lib',
    attn_src,
    include_directories : incdir,
    dependencies : attn_deps,
    cpp_args : [boost_args, test_arg],
    install : false,
)

