blob: 9bb4f5a7f48be84c83ede0676e8cb031db1cce2e [file] [log] [blame]
project('libpldm', ['c','cpp'],
default_options: [
'debug=true',
'optimization=g',
'warning_level=3',
'werror=true',
'cpp_std=c++20',
'c_std=c17',
'tests=' + (meson.is_subproject() ? 'disabled' : 'enabled'),
],
version: '0.2.0',
meson_version: '>=0.63.0',
)
add_project_arguments('-D_DEFAULT_SOURCE',language:['c'])
libpldm_sources = files()
subdir('src')
libpldm_include_dir = ['include', 'src']
libpldm_headers = files()
libpldm_transport_headers = files()
subdir('include/libpldm')
libpldm = library(
'pldm',
libpldm_sources,
implicit_include_directories: false,
include_directories: libpldm_include_dir,
version: meson.project_version(),
install: true
)
install_headers(
libpldm_headers,
subdir:'libpldm'
)
install_headers(
libpldm_transport_headers,
subdir:'libpldm/transport'
)
libpldm_dep = declare_dependency(
include_directories: libpldm_include_dir,
link_with: libpldm)
import('pkgconfig').generate(
name: 'libpldm',
description: 'PLDM protocol encode/decode C lib',
version: meson.project_version(),
libraries: libpldm)
compiler = meson.get_compiler('c')
conf = configuration_data()
if compiler.has_header('poll.h')
conf.set('PLDM_HAS_POLL', 1)
endif
configure_file(output: 'config.h',
configuration: conf
)
if get_option('tests').enabled()
subdir('tests')
if get_option('abi-compliance-check').allowed()
abi_dumper = find_program('abi-dumper',
native: true,
required: get_option('abi-compliance-check'))
abi_compliance_checker = find_program('abi-compliance-checker',
native: true,
required: get_option('abi-compliance-check'))
public_api_dir = meson.project_source_root() / 'include'
baseline_dump = meson.project_source_root() / 'abi' / 'baseline.dump'
current_dump = custom_target('abi-dump',
input: libpldm,
output: 'current.dump',
command: [ abi_dumper,
'-public-headers',
public_api_dir,
'@INPUT@',
'-o',
'@OUTPUT@',
'-lver',
meson.project_version()])
test_abi_compliance = abi_dumper.found() and \
abi_compliance_checker.found() and \
meson.get_compiler('c').get_id() == 'gcc' and \
meson.get_compiler('cpp').get_id() == 'gcc'
abi_compliance = custom_target('abi-compliance',
input: [baseline_dump, current_dump],
output: 'abi-compliance',
command: [ abi_compliance_checker,
'-l',
meson.project_name(),
'-old',
'@INPUT0@',
'-new',
'@INPUT1@' ],
build_by_default: test_abi_compliance)
endif
endif
install_subdir('instance-db',
install_mode: 'r--r--r--',
install_dir: get_option('datadir') / meson.project_name())