openpower_pels = {
    'additional_data': {},
    'ascii_string': {},
    'bcd_time': {},
    'data_interface': {},
    'device_callouts': {},
    'event_logger': {},
    'extended_user_data': {},
    'extended_user_header': {},
    'failing_mtms': {},
    'fru_identity': {},
    'generic_section': {},
    'host_notifier': {
        'sources': [
            '../../extensions/openpower-pels/host_notifier.cpp',
            '../../extensions/openpower-pels/repository.cpp',
        ],
    },
    'json_utils': {},
    'log_id': {},
    'mru': {},
    'mtms': {},
    'pce_identity': {},
    'pel_manager': {
        'sources': [
            '../../elog_entry.cpp',
            '../../elog_meta.cpp',
            '../../elog_serialize.cpp',
            '../../extensions.cpp',
            '../../log_manager.cpp',
            elog_lookup_gen,
            elog_process_gen,
            generated_sources,
            log_manager_ext_sources,
        ],
        'deps': [ cereal_dep ],
    },
    'pel_rules': {},
    'pel': {},
    'pel_values': {},
    'private_header': {},
    'real_pel': {},
    'registry': {},
    'repository': {
        'sources': [
            '../../extensions/openpower-pels/repository.cpp',
        ],
    },
    'section_header': {},
    'service_indicators': {},
    'severity': {},
    'src': {},
    'src_callout': {},
    'src_callouts': {},
    'stream': {},
    'user_data': {},
    'user_header': {},
    'temporary_file': {
         'sources': [
            '../../extensions/openpower-pels/temporary_file.cpp',
        ],
    },
}

# Build a common shared library for all openpower tests of all the widely
# used sources under test.
openpower_test_lib = static_library(
    'openpower_test_lib',
    'pel_utils.cpp',
    'paths.cpp',
    libpel_sources,
    peltool_sources,
    '../common.cpp',
    '../../util.cpp',
    include_directories: include_directories(
        '../../',
        '../../gen',
    ),
    dependencies: [
        libpel_deps,
        peltool_deps,
    ],
)

foreach t : openpower_pels.keys()
    test(
        'test_openpower_pels_' + t.underscorify(),
        executable(
            'test-openpower-pels-' + t.underscorify(),
            t + '_test.cpp',
            openpower_pels.get(t).get('sources', []),
            link_with: [
                openpower_test_lib,
            ],
            link_args: [ '-lpython' + python_ver ],
            dependencies: [
                gtest_dep,
                gmock_dep,
                phosphor_logging_dep,
                libpel_deps,
                peltool_deps,
                openpower_pels.get(t).get('deps', []),
            ],
            include_directories: include_directories(
                '../../',
                '../../gen',
            ),
        )
    )
endforeach
