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')

  c_suite = meson.get_compiler('c').get_id()
  cpp_suite = meson.get_compiler('cpp').get_id()

  if get_option('abi-compliance-check').allowed() and c_suite == cpp_suite and c_suite == 'gcc'
    host = host_machine.cpu_family()
    baseline_dump = meson.project_source_root() / 'abi' / host / '@0@.dump'.format(c_suite)

    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'))

    test_abi_compliance = abi_dumper.found() and \
                          abi_compliance_checker.found() and \
                          import('fs').is_file(baseline_dump)

    if test_abi_compliance
      current_dump = custom_target('abi-dump',
                               input: libpldm,
                               output: 'current.dump',
                               command: [ abi_dumper,
                                          '-public-headers',
                                          meson.project_source_root() / 'include',
                                          '@INPUT@',
                                          '-o',
                                          '@OUTPUT@',
                                          '-lver',
                                          meson.project_version()])
      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: true)
    endif
  endif
endif

install_subdir('instance-db',
               install_mode: 'r--r--r--',
               install_dir: get_option('datadir') / meson.project_name())
