1project( 2 'openpower-vpd-parser', 3 'c', 4 'cpp', 5 default_options: [ 6 'warning_level=3', 7 'werror=true', 8 'cpp_std=c++17' 9 ], 10 version: '1.0' 11) 12 13build_tests = get_option('tests') 14 15sdbusplus = dependency('sdbusplus') 16phosphor_logging = dependency('phosphor-logging') 17phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces') 18 19compiler = meson.get_compiler('cpp') 20python = find_program('python3', required:true) 21 22compiler.has_header('CLI/CLI.hpp') 23compiler.has_header('nlohmann/json.hpp') 24add_global_arguments('-Wno-psabi', language : ['c', 'cpp']) 25configure_file(output: 'config.h', 26 configuration :{ 27 'INVENTORY_JSON_DEFAULT': '"'+get_option('INVENTORY_JSON_DEFAULT')+'"', 28 'VPD_FILES_PATH': '"'+get_option('VPD_FILES_PATH')+'"', 29 'INVENTORY_PATH': '"'+get_option('INVENTORY_PATH')+'"', 30 'IPZ_INTERFACE': '"'+get_option('IPZ_INTERFACE')+'"', 31 'INVENTORY_MANAGER_SERVICE': '"'+get_option('INVENTORY_MANAGER_SERVICE')+'"', 32 'BUSNAME' : '"' + get_option('BUSNAME') + '"', 33 'OBJPATH' : '"' + get_option('OBJPATH') + '"', 34 'IFACE' : '"' + get_option('IFACE') + '"', 35 'OBJECT_MAPPER_SERVICE' : '"'+get_option('OBJECT_MAPPER_SERVICE')+'"', 36 'OBJECT_MAPPER_OBJECT' : '"'+get_option('OBJECT_MAPPER_OBJECT')+'"', 37 'POWER_SUPPLY_TYPE_INTERFACE' : '"'+get_option('POWER_SUPPLY_TYPE_INTERFACE')+'"', 38 'INVENTORY_MANAGER_CACHE' : '"'+get_option('INVENTORY_MANAGER_CACHE')+'"', 39 'INVENTORY_JSON_SYM_LINK': '"'+get_option('INVENTORY_JSON_SYM_LINK')+'"', 40 'INVENTORY_JSON_2U': '"'+get_option('INVENTORY_JSON_2U')+'"', 41 'INVENTORY_JSON_4U': '"'+get_option('INVENTORY_JSON_4U')+'"', 42 'INVENTORY_JSON_EVEREST': '"'+get_option('INVENTORY_JSON_EVEREST')+'"' 43 } 44 ) 45 46if get_option('ibm-parser').enabled() 47 libgpiodcxx = dependency('libgpiodcxx') 48 ibm_read_vpd_SOURCES = ['ibm_vpd_app.cpp', 49 'vpd-parser/ipz_parser.cpp', 50 'impl.cpp', 51 'utils.cpp', 52 'vpd-parser/keyword_vpd_parser.cpp', 53 'vpdecc/vpdecc.c', 54 'vpdecc/vpdecc_support.c', 55 'vpd-parser/memory_vpd_parser.cpp', 56 'vpd-parser/parser_factory.cpp' 57 ] 58 59 ibm_vpd_exe = executable( 60 'ibm-read-vpd', 61 ibm_read_vpd_SOURCES, 62 dependencies: [ 63 sdbusplus, 64 phosphor_logging, 65 libgpiodcxx, 66 ], 67 include_directories : 'vpd-parser/', 68 install: true, 69 cpp_args : '-DIPZ_PARSER' 70 ) 71 72 vpd_tool_SOURCES = ['vpd_tool.cpp', 73 'vpd_tool_impl.cpp' 74 ] 75 76 vpd_tool_exe = executable( 77 'vpd-tool', 78 vpd_tool_SOURCES, 79 dependencies: [ 80 sdbusplus 81 ], 82 install: true 83 ) 84if get_option('vpd-manager').enabled() 85 subdir('vpd-manager') 86endif 87 88else 89 FRUGEN = '$srcdir/extra-properties.py -e' + get_option('FRU_YAML') 90 PROPGEN = '$srcdir/extra-properties.py -e' + get_option('PROP_YAML') 91 92 src_dir = meson.source_root() 93 FRU_GEN_SCRIPT = src_dir + '/writefru.py' 94 FRU_GEN_SCRIPT_FILES = src_dir + '/writefru.yaml' 95 96 PROP_GEN_SCRIPT = src_dir + '/extra-properties.py' 97 PROP_GEN_SCRIPT_FILES = src_dir + '/extra-properties-example.yaml' 98 99 writefru_hpp = custom_target('writefru.hpp', 100 command:[python, 101 FRU_GEN_SCRIPT, 102 '-i', 103 get_option('FRU_YAML') 104 ], 105 depend_files :['writefru.mako.hpp', 106 'writefru.py', 107 get_option('FRU_YAML') 108 ], 109 output:'writefru.hpp' 110 ) 111 112 extra_properties_gen_hpp = custom_target( 113 'extra-properties-gen.hpp', 114 command:[ 115 python, 116 PROP_GEN_SCRIPT, 117 '-e', 118 get_option('PROP_YAML') 119 ], 120 depend_files : ['extra-properties.mako.hpp', 121 'extra-properties.py', 122 get_option('PROP_YAML') 123 ], 124 output:'extra-properties-gen.hpp' 125 ) 126 127 openpower_read_vpd_SOURCES = ['app.cpp', 128 'args.cpp', 129 'impl.cpp', 130 'vpd-parser/ipz_parser.cpp', 131 'write.cpp', 132 'utils.cpp', 133 writefru_hpp, 134 extra_properties_gen_hpp 135 ] 136 137 openpower_read_vpd_exe= executable( 138 'openpower-read-vpd', 139 openpower_read_vpd_SOURCES, 140 dependencies: [ 141 sdbusplus, 142 phosphor_logging, 143 ], 144 include_directories : 'vpd-parser/', 145 install: true, 146 ) 147endif 148subdir('test') 149