1e984a461SAndrew Jefferyproject( 2e984a461SAndrew Jeffery 'libpldm', 3e984a461SAndrew Jeffery 'c', 4a93ec075SAndrew Jeffery default_options: { 5a93ec075SAndrew Jeffery 'debug': true, 6a93ec075SAndrew Jeffery 'optimization': 'g', 7a93ec075SAndrew Jeffery 'warning_level': '3', 8a93ec075SAndrew Jeffery 'werror': true, 9a93ec075SAndrew Jeffery 'cpp_std': 'c++23', 10a93ec075SAndrew Jeffery 'c_std': 'c17', 11a93ec075SAndrew Jeffery 'b_ndebug': 'if-release', 1265c64099SAndrew Jeffery 'tests': not meson.is_subproject(), 13a93ec075SAndrew Jeffery }, 140612d988SAndrew Jeffery version: '0.11.0', 15*d05ac25fSAndrew Jeffery meson_version: '>=1.4.0', 169c766792SAndrew Jeffery) 179c766792SAndrew Jeffery 1865c64099SAndrew Jefferyif get_option('tests') 19fdc4dcc1SAndrew Jeffery add_languages('cpp', native: false) 20aa16a0d9SAndrew Jefferyendif 21aa16a0d9SAndrew Jeffery 222b440d4cSAndrew Jeffery# For memmem() in src/msgbuf.h 232b440d4cSAndrew Jefferyadd_project_arguments('-D_GNU_SOURCE', language: ['c']) 249c766792SAndrew Jeffery 259d2a1c6aSAndrew Jefferycompiler = meson.get_compiler('c') 265c49f162SAndrew Jefferyif compiler.has_argument('-Wvla') 275c49f162SAndrew Jeffery add_project_arguments('-Wvla', language: ['c']) 285c49f162SAndrew Jefferyendif 295c49f162SAndrew Jeffery 309d2a1c6aSAndrew Jefferyconf = configuration_data() 319d2a1c6aSAndrew Jefferyif compiler.has_header('poll.h') 329d2a1c6aSAndrew Jeffery conf.set('PLDM_HAS_POLL', 1) 339d2a1c6aSAndrew Jefferyendif 349d2a1c6aSAndrew Jeffery 359d2a1c6aSAndrew Jeffery# ABI control 3636324f6bSAndrew Jefferycompiler.has_function_attribute('visibility:default', required: true) 3736324f6bSAndrew Jefferyentrypoint = '__attribute__((visibility("default")))' 3836324f6bSAndrew Jeffery 3936324f6bSAndrew Jeffery## Compile test until meson supports it via compiler.has_function_attribute() 4036324f6bSAndrew Jefferyhave_tainted_args_test = '#if !__has_attribute(tainted_args)\n#error\n#endif' 4136324f6bSAndrew Jefferyif compiler.compiles( 4236324f6bSAndrew Jeffery have_tainted_args_test, 4336324f6bSAndrew Jeffery args: '-E', 4436324f6bSAndrew Jeffery name: 'compiler supports function attribute tainted_args', 4536324f6bSAndrew Jeffery) 4636324f6bSAndrew Jeffery entrypoint += ' __attribute__((tainted_args))' 4736324f6bSAndrew Jefferyendif 4836324f6bSAndrew Jeffery 49d9b70ba7SAndrew Jefferylibpldm_deprecated_aliases = [] 509d2a1c6aSAndrew Jefferyif get_option('abi').contains('deprecated') 5136324f6bSAndrew Jeffery conf.set('LIBPLDM_ABI_DEPRECATED', entrypoint) 5236324f6bSAndrew Jeffery conf.set( 5336324f6bSAndrew Jeffery 'LIBPLDM_ABI_DEPRECATED_UNSAFE', 5436324f6bSAndrew Jeffery '__attribute((visibility("default")))', 5536324f6bSAndrew Jeffery ) 569d2a1c6aSAndrew Jeffery add_project_arguments('-DLIBPLDM_API_DEPRECATED', language: ['c', 'cpp']) 579d2a1c6aSAndrew Jefferyelse 589d2a1c6aSAndrew Jeffery conf.set('LIBPLDM_ABI_DEPRECATED', '') 599d2a1c6aSAndrew Jefferyendif 6036324f6bSAndrew Jefferyconf.set('LIBPLDM_ABI_STABLE', entrypoint) # Always expose the stable symbols 619d2a1c6aSAndrew Jefferyif get_option('abi').contains('testing') 6236324f6bSAndrew Jeffery conf.set('LIBPLDM_ABI_TESTING', entrypoint) 639d2a1c6aSAndrew Jeffery add_project_arguments('-DLIBPLDM_API_TESTING', language: ['c', 'cpp']) 649d2a1c6aSAndrew Jefferyelse 659d2a1c6aSAndrew Jeffery conf.set('LIBPLDM_ABI_TESTING', '') 669d2a1c6aSAndrew Jefferyendif 679d2a1c6aSAndrew Jeffery 68e984a461SAndrew Jefferyconfig = configure_file(output: 'config.h', configuration: conf) 69f89befe3SAndrew Jeffery 70*d05ac25fSAndrew Jefferyadd_project_arguments('-include', config.full_path(), language: 'c') 71f89befe3SAndrew Jeffery 72b0c1d20aSAndrew Jefferylibpldm_include_dir = include_directories('include', is_system: true) 73a7989cd6SPavithra Barithaya 74b0c1d20aSAndrew Jefferysubdir('include') 75b0c1d20aSAndrew Jefferysubdir('src') 769c766792SAndrew Jeffery 7765c64099SAndrew Jefferyif get_option('tests') 789c766792SAndrew Jeffery subdir('tests') 799c766792SAndrew Jefferyendif 806af2a293SRashmica Gupta 81e984a461SAndrew Jefferyinstall_subdir( 82e984a461SAndrew Jeffery 'instance-db', 836af2a293SRashmica Gupta install_mode: 'r--r--r--', 84e984a461SAndrew Jeffery install_dir: get_option('datadir') / meson.project_name(), 85e984a461SAndrew Jeffery) 86