1project( 2 'vpd-manager', 3 'c', 4 'cpp', 5 default_options: [ 6 'warning_level=3', 7 'werror=true', 8 'cpp_std=c++23', 9 'buildtype=debugoptimized', 10 ], 11 version: '1.0', 12 meson_version: '>=1.1.1', 13) 14 15add_global_arguments( 16 '-Wno-psabi', 17 '-Wno-ignored-attributes', 18 language: ['c', 'cpp'], 19) 20 21# Disable FORTIFY_SOURCE when compiling with no optimization 22if (get_option('optimization') == '0') 23 add_project_arguments('-U_FORTIFY_SOURCE', language: ['cpp', 'c']) 24 message('Disabling FORTIFY_SOURCE as optimization is set to 0') 25endif 26 27# Setup googletest before we import any projects that also depend on it to make 28# sure we have control over its configuration 29build_tests = get_option('tests') 30 31sdbusplus = dependency('sdbusplus', fallback: ['sdbusplus', 'sdbusplus_dep']) 32phosphor_logging = dependency('phosphor-logging') 33phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces') 34 35if build_tests.allowed() 36 subdir('test') 37endif 38 39compiler = meson.get_compiler('cpp') 40 41conf_data = configuration_data() 42conf_data.set_quoted('BUSNAME', get_option('BUSNAME')) 43conf_data.set_quoted('OBJPATH', get_option('OBJPATH')) 44conf_data.set_quoted('IFACE', get_option('IFACE')) 45conf_data.set_quoted('BAD_VPD_DIR', get_option('BAD_VPD_DIR')) 46conf_data.set_quoted( 47 'INVENTORY_JSON_DEFAULT', 48 get_option('INVENTORY_JSON_DEFAULT'), 49) 50conf_data.set_quoted( 51 'INVENTORY_JSON_SYM_LINK', 52 get_option('INVENTORY_JSON_SYM_LINK'), 53) 54conf_data.set_quoted( 55 'JSON_ABSOLUTE_PATH_PREFIX', 56 get_option('JSON_ABSOLUTE_PATH_PREFIX'), 57) 58conf_data.set_quoted('SYSTEM_VPD_FILE_PATH', get_option('SYSTEM_VPD_FILE_PATH')) 59conf_data.set_quoted('VPD_SYMLIMK_PATH', get_option('VPD_SYMLIMK_PATH')) 60conf_data.set_quoted('PIM_PATH_PREFIX', get_option('PIM_PATH_PREFIX')) 61configure_file(output: 'config.h', configuration: conf_data) 62 63services = ['service_files/vpd-manager.service'] 64 65if get_option('ibm_system').allowed() 66 subdir('vpd-tool') 67 scripts = ['scripts/wait-vpd-status.sh'] 68 69 install_data( 70 scripts, 71 install_mode: 'rwxr-xr-x', 72 install_dir: get_option('bindir'), 73 ) 74 75 services += [ 76 'service_files/system-vpd.service', 77 'service_files/wait-vpd-parsers.service', 78 ] 79 80 package_datadir = join_paths('share', 'vpd') 81 install_subdir( 82 'configuration/ibm/', 83 install_mode: 'rwxr-xr-x', 84 install_dir: package_datadir, 85 strip_directory: true, 86 ) 87endif 88 89libgpiodcxx = dependency('libgpiodcxx', default_options: ['bindings=cxx']) 90 91libvpdecc_src = files('vpdecc/vpdecc.c', 'vpdecc/vpdecc_support.c') 92 93libvpdecc = shared_library( 94 'vpdecc', 95 libvpdecc_src, 96 version: meson.project_version(), 97 install: true, 98) 99 100subdir('vpd-manager') 101 102systemd_system_unit_dir = dependency('systemd').get_variable( 103 'systemdsystemunitdir', 104) 105install_data(services, install_dir: systemd_system_unit_dir) 106