# 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')

# get openpower-hw-diags build configuration
attn_conf = configuration_data()

# conditionally define ENABLE_PHAL_TRUE
if (get_option('phal').enabled())
    attn_conf.set('ENABLE_PHAL_TRUE', '')
else
    attn_conf.set('ENABLE_PHAL_TRUE', '#')
endif

# attention handler default config override
attn_conf.set('ATTN_CONFIG', get_option('attn_config'))

# install attention handler unit file
configure_file(
    configuration: attn_conf,
    input: 'attn_handler.service.in',
    output: 'attn_handler.service',
    install: true,
    install_dir:
        dependency('systemd').get_variable(pkgconfig: 'systemdsystemunitdir')
)

# install attention handler config file
configure_file(
    configuration: attn_conf,
    input: 'attn_config.in',
    output: 'attn_config',
    install: true,
    install_dir: join_paths(get_option('sysconfdir'), 'default')
)

# Source files.
attn_src = files(
    'attention.cpp',
    'attn_common.cpp',
    'attn_config.cpp',
    'attn_dbus.cpp',
    'attn_dump.cpp',
    'attn_handler.cpp',
    'attn_logging.cpp',
    'attn_main.cpp',
    'attn_monitor.cpp',
    'bp_handler.cpp',
    'ti_handler.cpp',
    'vital_handler.cpp',
)

# for custom/raw PEL creation
pel_src = files(
    'pel/extended_user_header.cpp',
    'pel/pel_minimal.cpp',
    'pel/private_header.cpp',
    'pel/primary_src.cpp',
    'pel/user_header.cpp',
)

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

# conditional library dependencies
if get_option('phal').enabled()
  attn_deps += libphal_dep
endif

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