xref: /openbmc/libpldm/bindings/cpp/meson.build (revision 9131a3e07df1169d58ac283a42ac9b4464efe1fd)
1d6a95748SAlexander Hansenlibpldmpp_sources = files('firmware_update.cpp', 'types.cpp', 'utils.cpp')
2d6a95748SAlexander Hansen
3d6a95748SAlexander Hansenlibpldmpp = library(
4d6a95748SAlexander Hansen    'pldm++',
5d6a95748SAlexander Hansen    libpldmpp_sources,
6d6a95748SAlexander Hansen    implicit_include_directories: false,
7d6a95748SAlexander Hansen    include_directories: [include_root, include_directories('.')],
8d6a95748SAlexander Hansen    link_args: libpldm_link_args,
9d6a95748SAlexander Hansen    version: meson.project_version(),
10d6a95748SAlexander Hansen    dependencies: [libpldm_dep],
11d6a95748SAlexander Hansen    gnu_symbol_visibility: 'hidden',
12d6a95748SAlexander Hansen    install: true,
13d6a95748SAlexander Hansen)
14d6a95748SAlexander Hansen
15d6a95748SAlexander Hansenlibpldmpp_dep = declare_dependency(
16d6a95748SAlexander Hansen    include_directories: include_root,
17d6a95748SAlexander Hansen    link_with: libpldmpp,
18d6a95748SAlexander Hansen)
19d6a95748SAlexander Hansen
20*9131a3e0SAlexander Hansenimport('pkgconfig').generate(
21*9131a3e0SAlexander Hansen    name: 'libpldm++',
22*9131a3e0SAlexander Hansen    description: 'An ergonomic C++ interface to PLDM functionality implemented by libpldm',
23*9131a3e0SAlexander Hansen    version: meson.project_version(),
24*9131a3e0SAlexander Hansen    libraries: libpldmpp,
25*9131a3e0SAlexander Hansen    requires: ['libpldm'],
26*9131a3e0SAlexander Hansen)
27*9131a3e0SAlexander Hansen
28d6a95748SAlexander Hansenc_suite = meson.get_compiler('c').get_id()
29d6a95748SAlexander Hansencpp_suite = meson.get_compiler('cpp').get_id()
30d6a95748SAlexander Hansen
31d6a95748SAlexander Hansenif get_option('tests') and get_option('abi-compliance-check') and c_suite == cpp_suite and c_suite == 'gcc'
32d6a95748SAlexander Hansen
33d6a95748SAlexander Hansen    message('running C++ binding ABI compliance check')
34d6a95748SAlexander Hansen
35d6a95748SAlexander Hansen    host = host_machine.cpu_family()
36d6a95748SAlexander Hansen    baseline_dump_cpp = meson.project_source_root() / 'abi' / host / 'libpldm++/@0@.dump'.format(
37d6a95748SAlexander Hansen        cpp_suite,
38d6a95748SAlexander Hansen    )
39d6a95748SAlexander Hansen
40d6a95748SAlexander Hansen    current_dump_cpp = custom_target(
41d6a95748SAlexander Hansen        'abi-dump-cpp',
42d6a95748SAlexander Hansen        input: libpldmpp,
43d6a95748SAlexander Hansen        output: 'current.dump',
44d6a95748SAlexander Hansen        command: [
45d6a95748SAlexander Hansen            abi_dumper,
46d6a95748SAlexander Hansen            '-mixed-headers',
47d6a95748SAlexander Hansen            '-include-paths',
48d6a95748SAlexander Hansen            meson.project_source_root() / 'bindings/cpp',
49d6a95748SAlexander Hansen            '-public-headers',
50d6a95748SAlexander Hansen            meson.project_source_root() / 'include/libpldm++',
51d6a95748SAlexander Hansen            '-sort',
52d6a95748SAlexander Hansen            '@INPUT@',
53d6a95748SAlexander Hansen            '-o',
54d6a95748SAlexander Hansen            '@OUTPUT@',
55d6a95748SAlexander Hansen            '-lver',
56d6a95748SAlexander Hansen            meson.project_version(),
57d6a95748SAlexander Hansen        ],
58d6a95748SAlexander Hansen    )
59d6a95748SAlexander Hansen    abi_compliance_cpp = custom_target(
60d6a95748SAlexander Hansen        'abi-compliance-cpp',
61d6a95748SAlexander Hansen        input: [baseline_dump_cpp, current_dump_cpp],
62d6a95748SAlexander Hansen        output: 'abi-compliance-cpp',
63d6a95748SAlexander Hansen        command: [
64d6a95748SAlexander Hansen            abi_compliance_checker,
65d6a95748SAlexander Hansen            '-l',
66d6a95748SAlexander Hansen            meson.project_name() + 'plus',
67d6a95748SAlexander Hansen            '-old',
68d6a95748SAlexander Hansen            '@INPUT0@',
69d6a95748SAlexander Hansen            '-new',
70d6a95748SAlexander Hansen            '@INPUT1@',
71d6a95748SAlexander Hansen        ],
72d6a95748SAlexander Hansen        build_by_default: true,
73d6a95748SAlexander Hansen    )
74d6a95748SAlexander Hansenendif
75