1libpldm_sources = files('control.c', 'responder.c', 'utils.c') 2 3subdir('dsp') 4 5if get_option('transport') 6 subdir('requester') 7 subdir('transport') 8endif 9 10if get_option('oem').contains('ibm') 11 subdir('oem/ibm') 12endif 13 14if get_option('oem').contains('meta') 15 subdir('oem/meta') 16endif 17 18subdir('firmware_device') 19 20libpldm_link_args = [] 21foreach alias : libpldm_deprecated_aliases 22 libpldm_link_args += '-Wl,--defsym=@0@=@1@'.format(alias[0], alias[1]) 23endforeach 24 25libpldm = library( 26 'pldm', 27 libpldm_sources, 28 implicit_include_directories: false, 29 include_directories: [libpldm_include_dir, include_directories('.')], 30 link_args: libpldm_link_args, 31 version: meson.project_version(), 32 gnu_symbol_visibility: 'hidden', 33 install: true, 34) 35 36libpldm_dep = declare_dependency( 37 include_directories: libpldm_include_dir, 38 link_with: libpldm, 39) 40 41import('pkgconfig').generate( 42 name: 'libpldm', 43 description: 'PLDM protocol encode/decode C lib', 44 version: meson.project_version(), 45 libraries: libpldm, 46) 47 48if get_option('tests') 49 c_suite = meson.get_compiler('c').get_id() 50 cpp_suite = meson.get_compiler('cpp').get_id() 51 52 if get_option('abi-compliance-check') and c_suite == cpp_suite and c_suite == 'gcc' 53 host = host_machine.cpu_family() 54 baseline_dump = meson.project_source_root() / 'abi' / host / '@0@.dump'.format( 55 c_suite, 56 ) 57 58 abi_dumper = find_program( 59 'abi-dumper', 60 native: true, 61 required: get_option('abi-compliance-check'), 62 ) 63 abi_compliance_checker = find_program( 64 'abi-compliance-checker', 65 native: true, 66 required: get_option('abi-compliance-check'), 67 ) 68 69 test_abi_compliance = abi_dumper.found() and \ 70 abi_compliance_checker.found() and \ 71 import('fs').is_file(baseline_dump) 72 73 if test_abi_compliance 74 current_dump = custom_target( 75 'abi-dump', 76 input: libpldm, 77 output: 'current.dump', 78 command: [ 79 abi_dumper, 80 '-mixed-headers', 81 '-include-paths', 82 meson.project_source_root() / 'src', 83 '-public-headers', 84 meson.project_source_root() / 'include', 85 '-sort', 86 '@INPUT@', 87 '-o', 88 '@OUTPUT@', 89 '-lver', 90 meson.project_version(), 91 ], 92 ) 93 abi_compliance = custom_target( 94 'abi-compliance', 95 input: [baseline_dump, current_dump], 96 output: 'abi-compliance', 97 command: [ 98 abi_compliance_checker, 99 '-l', 100 meson.project_name(), 101 '-old', 102 '@INPUT0@', 103 '-new', 104 '@INPUT1@', 105 ], 106 build_by_default: true, 107 ) 108 endif 109 endif 110endif 111