xref: /openbmc/libpldm/src/meson.build (revision e78035e88cba0506810a6e0cb704c43482ab3e7a)
1*bde874e9SMatt Johnstonlibpldm_sources = files('control.c', 'responder.c', 'utils.c')
29c766792SAndrew Jeffery
348761c62SAndrew Jefferysubdir('dsp')
4c69081afSMatt Johnston
5c69081afSMatt Johnstonif get_option('transport')
69c766792SAndrew Jeffery    subdir('requester')
7c1b66f42SRashmica Gupta    subdir('transport')
8c69081afSMatt Johnstonendif
955e5e0a0SAndrew Jeffery
10fef24ed6SAndrew Jefferyif get_option('oem').contains('ibm')
1155e5e0a0SAndrew Jeffery    subdir('oem/ibm')
129c766792SAndrew Jefferyendif
13a7989cd6SPavithra Barithaya
14fef24ed6SAndrew Jefferyif get_option('oem').contains('meta')
1522fad395SDelphine CC Chiu    subdir('oem/meta')
1622fad395SDelphine CC Chiuendif
1722fad395SDelphine CC Chiu
188c2bfb14SMatt Johnstonsubdir('firmware_device')
198c2bfb14SMatt Johnston
20d9b70ba7SAndrew Jefferylibpldm_link_args = []
21d9b70ba7SAndrew Jefferyforeach alias : libpldm_deprecated_aliases
22d9b70ba7SAndrew Jeffery    libpldm_link_args += '-Wl,--defsym=@0@=@1@'.format(alias[0], alias[1])
23d9b70ba7SAndrew Jefferyendforeach
24d9b70ba7SAndrew Jeffery
25a7989cd6SPavithra Barithayalibpldm = library(
26a7989cd6SPavithra Barithaya    'pldm',
27a7989cd6SPavithra Barithaya    libpldm_sources,
28a7989cd6SPavithra Barithaya    implicit_include_directories: false,
29e984a461SAndrew Jeffery    include_directories: [libpldm_include_dir, include_directories('.')],
30d9b70ba7SAndrew Jeffery    link_args: libpldm_link_args,
31a7989cd6SPavithra Barithaya    version: meson.project_version(),
32a7989cd6SPavithra Barithaya    gnu_symbol_visibility: 'hidden',
33e984a461SAndrew Jeffery    install: true,
34a7989cd6SPavithra Barithaya)
35a7989cd6SPavithra Barithaya
36a7989cd6SPavithra Barithayalibpldm_dep = declare_dependency(
37a7989cd6SPavithra Barithaya    include_directories: libpldm_include_dir,
38e984a461SAndrew Jeffery    link_with: libpldm,
39e984a461SAndrew Jeffery)
40a7989cd6SPavithra Barithaya
41a7989cd6SPavithra Barithayaimport('pkgconfig').generate(
42a7989cd6SPavithra Barithaya    name: 'libpldm',
43a7989cd6SPavithra Barithaya    description: 'PLDM protocol encode/decode C lib',
44a7989cd6SPavithra Barithaya    version: meson.project_version(),
45e984a461SAndrew Jeffery    libraries: libpldm,
46e984a461SAndrew Jeffery)
475664cf20SAndrew Jeffery
4865c64099SAndrew Jefferyif get_option('tests')
495664cf20SAndrew Jeffery    c_suite = meson.get_compiler('c').get_id()
505664cf20SAndrew Jeffery    cpp_suite = meson.get_compiler('cpp').get_id()
515664cf20SAndrew Jeffery
5265c64099SAndrew Jeffery    if get_option('abi-compliance-check') and c_suite == cpp_suite and c_suite == 'gcc'
535664cf20SAndrew Jeffery        host = host_machine.cpu_family()
54e984a461SAndrew Jeffery        baseline_dump = meson.project_source_root() / 'abi' / host / '@0@.dump'.format(
55e984a461SAndrew Jeffery            c_suite,
56e984a461SAndrew Jeffery        )
575664cf20SAndrew Jeffery
58e984a461SAndrew Jeffery        abi_dumper = find_program(
59e984a461SAndrew Jeffery            'abi-dumper',
605664cf20SAndrew Jeffery            native: true,
61e984a461SAndrew Jeffery            required: get_option('abi-compliance-check'),
62e984a461SAndrew Jeffery        )
63e984a461SAndrew Jeffery        abi_compliance_checker = find_program(
64e984a461SAndrew Jeffery            'abi-compliance-checker',
655664cf20SAndrew Jeffery            native: true,
66e984a461SAndrew Jeffery            required: get_option('abi-compliance-check'),
67e984a461SAndrew Jeffery        )
685664cf20SAndrew Jeffery
695664cf20SAndrew Jeffery        test_abi_compliance = abi_dumper.found() and \
705664cf20SAndrew Jeffery    abi_compliance_checker.found() and \
715664cf20SAndrew Jeffery    import('fs').is_file(baseline_dump)
725664cf20SAndrew Jeffery
735664cf20SAndrew Jeffery        if test_abi_compliance
74e984a461SAndrew Jeffery            current_dump = custom_target(
75e984a461SAndrew Jeffery                'abi-dump',
765664cf20SAndrew Jeffery                input: libpldm,
775664cf20SAndrew Jeffery                output: 'current.dump',
78e984a461SAndrew Jeffery                command: [
79e984a461SAndrew Jeffery                    abi_dumper,
801077d2d1SAndrew Jeffery                    '-mixed-headers',
811077d2d1SAndrew Jeffery                    '-include-paths',
821077d2d1SAndrew Jeffery                    meson.project_source_root() / 'src',
835664cf20SAndrew Jeffery                    '-public-headers',
845664cf20SAndrew Jeffery                    meson.project_source_root() / 'include',
8575eea49eSAndrew Jeffery                    '-sort',
865664cf20SAndrew Jeffery                    '@INPUT@',
875664cf20SAndrew Jeffery                    '-o',
885664cf20SAndrew Jeffery                    '@OUTPUT@',
895664cf20SAndrew Jeffery                    '-lver',
90e984a461SAndrew Jeffery                    meson.project_version(),
91e984a461SAndrew Jeffery                ],
92e984a461SAndrew Jeffery            )
93e984a461SAndrew Jeffery            abi_compliance = custom_target(
94e984a461SAndrew Jeffery                'abi-compliance',
955664cf20SAndrew Jeffery                input: [baseline_dump, current_dump],
965664cf20SAndrew Jeffery                output: 'abi-compliance',
97e984a461SAndrew Jeffery                command: [
98e984a461SAndrew Jeffery                    abi_compliance_checker,
995664cf20SAndrew Jeffery                    '-l',
1005664cf20SAndrew Jeffery                    meson.project_name(),
1015664cf20SAndrew Jeffery                    '-old',
1025664cf20SAndrew Jeffery                    '@INPUT0@',
1035664cf20SAndrew Jeffery                    '-new',
104e984a461SAndrew Jeffery                    '@INPUT1@',
105e984a461SAndrew Jeffery                ],
106e984a461SAndrew Jeffery                build_by_default: true,
107e984a461SAndrew Jeffery            )
1085664cf20SAndrew Jeffery        endif
1095664cf20SAndrew Jeffery    endif
1105664cf20SAndrew Jefferyendif
111