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