13012b632SManojkiran Edaproject( 23012b632SManojkiran Eda 'pldm', 30ff3435dSManojkiran Eda 'cpp', 43012b632SManojkiran Eda version: '0.1', 53012b632SManojkiran Eda meson_version: '>=1.1.1', 63c275e1cSDeepak Kodihalli default_options: [ 73c275e1cSDeepak Kodihalli 'warning_level=3', 83c275e1cSDeepak Kodihalli 'default_library=shared', 93c275e1cSDeepak Kodihalli 'werror=true', 10b95bbe36SPatrick Williams 'cpp_std=c++23', 113012b632SManojkiran Eda 'buildtype=debugoptimized', 123012b632SManojkiran Eda ], 133012b632SManojkiran Eda) 143c275e1cSDeepak Kodihalli 153c275e1cSDeepak Kodihalli# Wno-psabi reduces the number of "Note:" messages when cross-compiling some STL 163c275e1cSDeepak Kodihalli# stuff for ARM. See https://stackoverflow.com/questions/48149323/strange-gcc-warning-when-compiling-qt-project 173c275e1cSDeepak Kodihalli# Basically, gcc 6 and gcc 7 are not ABI compatible, but since the whole OpenBMC 183c275e1cSDeepak Kodihalli# project uses the same compiler, we can safely ignmore these info notes. 193c275e1cSDeepak Kodihalliadd_project_arguments('-Wno-psabi', language: 'cpp') 203c275e1cSDeepak Kodihalli 2138ce97ccSManojkiran Eda 2238ce97ccSManojkiran Eda# Disable FORTIFY_SOURCE when compiling with no optimization 2338ce97ccSManojkiran Edaif (get_option('optimization') == '0') 240ff3435dSManojkiran Eda add_project_arguments('-U_FORTIFY_SOURCE', language: 'cpp') 2538ce97ccSManojkiran Eda message('Disabling FORTIFY_SOURCE as optimization is set to 0') 2638ce97ccSManojkiran Edaendif 2738ce97ccSManojkiran Eda 283012b632SManojkiran Edapackage_datadir = join_paths( 293012b632SManojkiran Eda get_option('prefix'), 303012b632SManojkiran Eda get_option('datadir'), 313012b632SManojkiran Eda meson.project_name(), 323012b632SManojkiran Eda) 333012b632SManojkiran Edapackage_localstatedir = join_paths( 343012b632SManojkiran Eda get_option('prefix'), 353012b632SManojkiran Eda get_option('localstatedir'), 363012b632SManojkiran Eda meson.project_name(), 373012b632SManojkiran Eda) 3806052cc5SBrad Bishop 393c275e1cSDeepak Kodihalliconf_data = configuration_data() 401ed5f7a6SRashmica Guptacpp = meson.get_compiler('cpp') 411ed5f7a6SRashmica Gupta 421ed5f7a6SRashmica Gupta# Enable POSIX poll APIs in libpldm 431ed5f7a6SRashmica Guptaif cpp.has_header('poll.h') 441ed5f7a6SRashmica Gupta conf_data.set('PLDM_HAS_POLL', 1) 451ed5f7a6SRashmica Guptaendif 4687bfacd2SPatrick Williamsif get_option('libpldmresponder').allowed() 4706052cc5SBrad Bishop conf_data.set_quoted('BIOS_JSONS_DIR', join_paths(package_datadir, 'bios')) 483012b632SManojkiran Eda conf_data.set( 493012b632SManojkiran Eda 'SYSTEM_SPECIFIC_BIOS_JSON', 503012b632SManojkiran Eda get_option('system-specific-bios-json').allowed(), 513012b632SManojkiran Eda ) 523012b632SManojkiran Eda conf_data.set_quoted( 533012b632SManojkiran Eda 'BIOS_TABLES_DIR', 543012b632SManojkiran Eda join_paths(package_localstatedir, 'bios'), 553012b632SManojkiran Eda ) 5606052cc5SBrad Bishop conf_data.set_quoted('PDR_JSONS_DIR', join_paths(package_datadir, 'pdr')) 5706052cc5SBrad Bishop conf_data.set_quoted('FRU_JSONS_DIR', join_paths(package_datadir, 'fru')) 583012b632SManojkiran Eda conf_data.set_quoted( 593012b632SManojkiran Eda 'FRU_MASTER_JSON', 603012b632SManojkiran Eda join_paths(package_datadir, 'fru_master.json'), 613012b632SManojkiran Eda ) 623012b632SManojkiran Eda conf_data.set_quoted( 633012b632SManojkiran Eda 'ENTITY_MAP_JSON', 643012b632SManojkiran Eda join_paths(package_datadir, 'entityMap.json'), 653012b632SManojkiran Eda ) 6606052cc5SBrad Bishop conf_data.set_quoted('HOST_JSONS_DIR', join_paths(package_datadir, 'host')) 673012b632SManojkiran Eda conf_data.set_quoted( 683012b632SManojkiran Eda 'EVENTS_JSONS_DIR', 693012b632SManojkiran Eda join_paths(package_datadir, 'events'), 703012b632SManojkiran Eda ) 71a6a8ccd9SSagar Srinivas conf_data.set('HEARTBEAT_TIMEOUT', get_option('heartbeat-timeout-seconds')) 72cc5f1586SManojkiran Eda conf_data.set('TERMINUS_ID', get_option('terminus-id')) 73cc5f1586SManojkiran Eda conf_data.set('TERMINUS_HANDLE', get_option('terminus-handle')) 749138c209Svkaverap@in.ibm.com conf_data.set('DBUS_TIMEOUT', get_option('dbus-timeout-value')) 750ff3435dSManojkiran Eda add_project_arguments('-DLIBPLDMRESPONDER', language: 'cpp') 7602b4ee45STom Josephendif 7787bfacd2SPatrick Williamsif get_option('softoff').allowed() 783012b632SManojkiran Eda conf_data.set( 793012b632SManojkiran Eda 'SOFTOFF_TIMEOUT_SECONDS', 803012b632SManojkiran Eda get_option('softoff-timeout-seconds'), 813012b632SManojkiran Eda ) 823012b632SManojkiran Eda conf_data.set_quoted( 833012b632SManojkiran Eda 'SOFTOFF_CONFIG_JSON', 843012b632SManojkiran Eda join_paths(package_datadir, 'softoff'), 853012b632SManojkiran Eda ) 86ab865f69SGeorge Liuendif 8787bfacd2SPatrick Williamsif get_option('oem-ibm').allowed() 883012b632SManojkiran Eda conf_data.set_quoted( 893012b632SManojkiran Eda 'FILE_TABLE_JSON', 903012b632SManojkiran Eda join_paths(package_datadir, 'fileTable.json'), 913012b632SManojkiran Eda ) 923012b632SManojkiran Eda conf_data.set_quoted( 933012b632SManojkiran Eda 'LID_RUNNING_DIR', 943012b632SManojkiran Eda '/var/lib/phosphor-software-manager/hostfw/running', 953012b632SManojkiran Eda ) 963012b632SManojkiran Eda conf_data.set_quoted( 973012b632SManojkiran Eda 'LID_ALTERNATE_DIR', 983012b632SManojkiran Eda '/var/lib/phosphor-software-manager/hostfw/alternate', 993012b632SManojkiran Eda ) 1003012b632SManojkiran Eda conf_data.set_quoted( 1013012b632SManojkiran Eda 'LID_STAGING_DIR', 1023012b632SManojkiran Eda '/var/lib/phosphor-software-manager/hostfw/staging', 1033012b632SManojkiran Eda ) 1043012b632SManojkiran Eda conf_data.set_quoted( 1053012b632SManojkiran Eda 'LID_RUNNING_PATCH_DIR', 1063012b632SManojkiran Eda '/usr/local/share/hostfw/running', 1073012b632SManojkiran Eda ) 1083012b632SManojkiran Eda conf_data.set_quoted( 1093012b632SManojkiran Eda 'LID_ALTERNATE_PATCH_DIR', 1103012b632SManojkiran Eda '/usr/local/share/hostfw/alternate', 1113012b632SManojkiran Eda ) 1124c164b0fSDeepak Kodihalli conf_data.set('DMA_MAXSIZE', get_option('oem-ibm-dma-maxsize')) 1130ff3435dSManojkiran Eda add_project_arguments('-DOEM_IBM', language: 'cpp') 1143c275e1cSDeepak Kodihalliendif 1153012b632SManojkiran Edaconf_data.set( 1163012b632SManojkiran Eda 'NUMBER_OF_REQUEST_RETRIES', 1173012b632SManojkiran Eda get_option('number-of-request-retries'), 1183012b632SManojkiran Eda) 1193012b632SManojkiran Edaconf_data.set( 1203012b632SManojkiran Eda 'INSTANCE_ID_EXPIRATION_INTERVAL', 1213012b632SManojkiran Eda get_option('instance-id-expiration-interval'), 1223012b632SManojkiran Eda) 12374f27c73STom Josephconf_data.set('RESPONSE_TIME_OUT', get_option('response-time-out')) 1243012b632SManojkiran Edaconf_data.set( 1253012b632SManojkiran Eda 'FLIGHT_RECORDER_MAX_ENTRIES', 1263012b632SManojkiran Eda get_option('flightrecorder-max-entries'), 1273012b632SManojkiran Eda) 12806052cc5SBrad Bishopconf_data.set_quoted('HOST_EID_PATH', join_paths(package_datadir, 'host_eid')) 129ef90b0d3STom Josephconf_data.set('MAXIMUM_TRANSFER_SIZE', get_option('maximum-transfer-size')) 1301ed5f7a6SRashmica Guptaif get_option('transport-implementation') == 'mctp-demux' 1311ed5f7a6SRashmica Gupta conf_data.set('PLDM_TRANSPORT_WITH_MCTP_DEMUX', 1) 1321ed5f7a6SRashmica Guptaelif get_option('transport-implementation') == 'af-mctp' 1331ed5f7a6SRashmica Gupta conf_data.set('PLDM_TRANSPORT_WITH_AF_MCTP', 1) 1341ed5f7a6SRashmica Guptaendif 1353012b632SManojkiran Edaconf_data.set( 1363012b632SManojkiran Eda 'DEFAULT_SENSOR_UPDATER_INTERVAL', 1373012b632SManojkiran Eda get_option('default-sensor-update-interval'), 1383012b632SManojkiran Eda) 139eac61a4bSGilbert Chenconf_data.set('SENSOR_POLLING_TIME', get_option('sensor-polling-time')) 140cfefc15dSManojkiran Eda 1413012b632SManojkiran Edaconfigure_file(output: 'config.h', configuration: conf_data) 1423c275e1cSDeepak Kodihalli 1433012b632SManojkiran Edaadd_project_arguments( 1443012b632SManojkiran Eda '-include', 1453012b632SManojkiran Eda '@0@'.format(meson.current_build_dir() / 'config.h'), 1463012b632SManojkiran Eda language: 'cpp', 1473012b632SManojkiran Eda) 14847792274SAndrew Jeffery 149fc81a437SManojkiran Edafilesystem = import('fs') 150c79aa867SManojkiran Eda 1515c7253adSPatrick Williamsphosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces') 1525c7253adSPatrick Williamssdbusplus = dependency('sdbusplus') 1535c7253adSPatrick Williamssdeventplus = dependency('sdeventplus') 1541421a80fSManojkiran Edastdplus = dependency('stdplus') 15549cfb138SRiya Dixitphosphor_logging_dep = dependency('phosphor-logging') 1565c7253adSPatrick Williams 157cf772846SPatrick Williamsnlohmann_json_dep = dependency('nlohmann_json', include_type: 'system') 1585c7253adSPatrick Williams 1593b1dc01dSPatrick Williamsif cpp.has_header('CLI/CLI.hpp') 1603b1dc01dSPatrick Williams CLI11_dep = declare_dependency() 1613b1dc01dSPatrick Williamselse 1625c7253adSPatrick Williams CLI11_dep = dependency('CLI11') 1633b1dc01dSPatrick Williamsendif 1643b1dc01dSPatrick Williams 16587bfacd2SPatrick Williamsif get_option('tests').allowed() 1665327988eSTom Joseph gtest = dependency('gtest', main: true, disabler: true, required: false) 1675327988eSTom Joseph gmock = dependency('gmock', disabler: true, required: false) 1685327988eSTom Joseph if not gtest.found() or not gmock.found() 1695327988eSTom Joseph gtest_proj = import('cmake').subproject('googletest', required: false) 1705327988eSTom Joseph if gtest_proj.found() 1715327988eSTom Joseph gtest = declare_dependency( 1725327988eSTom Joseph dependencies: [ 1735327988eSTom Joseph dependency('threads'), 1745327988eSTom Joseph gtest_proj.dependency('gtest'), 1755327988eSTom Joseph gtest_proj.dependency('gtest_main'), 1763012b632SManojkiran Eda ], 1775327988eSTom Joseph ) 1785327988eSTom Joseph gmock = gtest_proj.dependency('gmock') 1795327988eSTom Joseph else 1805327988eSTom Joseph assert( 18187bfacd2SPatrick Williams not get_option('tests').allowed(), 1823012b632SManojkiran Eda 'Googletest is required if tests are enabled', 1835327988eSTom Joseph ) 1845327988eSTom Joseph endif 1855327988eSTom Joseph endif 1865327988eSTom Josephendif 1873b1dc01dSPatrick Williams 1883012b632SManojkiran Edalibpldm_dep = dependency( 1893012b632SManojkiran Eda 'libpldm', 1903012b632SManojkiran Eda fallback: ['libpldm', 'libpldm_dep'], 1913012b632SManojkiran Eda include_type: 'system', 1923012b632SManojkiran Eda) 193ab437e58SGeorge Liu 194dc8b0829SPatrick Williamsif get_option('oem-ampere').allowed() 19572c8aa06SDung Cao add_project_arguments('-DOEM_AMPERE', language: 'cpp') 19672c8aa06SDung Caoendif 19731fc47e6SLei YU 198ab437e58SGeorge Liulibpldmutils_headers = ['.'] 199ab437e58SGeorge Liulibpldmutils = library( 200ab437e58SGeorge Liu 'pldmutils', 2011ed5f7a6SRashmica Gupta 'common/transport.cpp', 202d130e1a3SDeepak Kodihalli 'common/utils.cpp', 203ab437e58SGeorge Liu version: meson.project_version(), 204ab437e58SGeorge Liu dependencies: [ 2056f4479c7SPatrick Williams libpldm_dep, 206001f7885SManojkiran Eda phosphor_dbus_interfaces, 20749cfb138SRiya Dixit phosphor_logging_dep, 208cf772846SPatrick Williams nlohmann_json_dep, 209001f7885SManojkiran Eda sdbusplus, 210ab437e58SGeorge Liu ], 211ab437e58SGeorge Liu install: true, 212ab437e58SGeorge Liu include_directories: include_directories(libpldmutils_headers), 213ab437e58SGeorge Liu) 214ab437e58SGeorge Liu 215ab437e58SGeorge Liulibpldmutils = declare_dependency( 216ab437e58SGeorge Liu include_directories: include_directories(libpldmutils_headers), 2173012b632SManojkiran Eda link_with: libpldmutils, 2183012b632SManojkiran Eda) 2193c275e1cSDeepak Kodihalli 2203c275e1cSDeepak Kodihallideps = [ 2216f4479c7SPatrick Williams libpldm_dep, 222250c4754STom Joseph libpldmutils, 223cf772846SPatrick Williams nlohmann_json_dep, 22402b4ee45STom Joseph phosphor_dbus_interfaces, 22549cfb138SRiya Dixit phosphor_logging_dep, 226d2ab1c22SPatrick Williams sdbusplus, 227d2ab1c22SPatrick Williams sdeventplus, 228d2ab1c22SPatrick Williams stdplus, 2293c275e1cSDeepak Kodihalli] 2303c275e1cSDeepak Kodihalli 23172c8aa06SDung Caooem_files = [] 232dc8b0829SPatrick Williamsif get_option('oem-ampere').allowed() 23372c8aa06SDung Cao subdir('oem/ampere') 23472c8aa06SDung Caoendif 23572c8aa06SDung Cao 23687bfacd2SPatrick Williamsif get_option('libpldmresponder').allowed() 23702b4ee45STom Joseph subdir('libpldmresponder') 2383012b632SManojkiran Eda deps += [libpldmresponder_dep] 23902b4ee45STom Josephendif 24002b4ee45STom Joseph 2413c275e1cSDeepak Kodihalliexecutable( 2423c275e1cSDeepak Kodihalli 'pldmd', 2431521f6d1SDeepak Kodihalli 'pldmd/pldmd.cpp', 2441521f6d1SDeepak Kodihalli 'pldmd/dbus_impl_pdr.cpp', 245f106a2c8SAndrew Jeffery 'fw-update/activation.cpp', 24675356c1aSTom Joseph 'fw-update/inventory_manager.cpp', 2471630f399STom Joseph 'fw-update/package_parser.cpp', 248ef90b0d3STom Joseph 'fw-update/device_updater.cpp', 2494d8d5770STom Joseph 'fw-update/watch.cpp', 2504d8d5770STom Joseph 'fw-update/update_manager.cpp', 251b6d3943dSDung Cao 'platform-mc/dbus_impl_fru.cpp', 2526c7fed4cSGilbert Chen 'platform-mc/terminus_manager.cpp', 2536c7fed4cSGilbert Chen 'platform-mc/terminus.cpp', 2546c7fed4cSGilbert Chen 'platform-mc/platform_manager.cpp', 2556c7fed4cSGilbert Chen 'platform-mc/manager.cpp', 256eac61a4bSGilbert Chen 'platform-mc/sensor_manager.cpp', 2573c5486d4SThu Nguyen 'platform-mc/numeric_sensor.cpp', 25877e6fe7aSGilbert Chen 'platform-mc/event_manager.cpp', 259*dd1f28b8SManojkiran Eda 'platform-mc/dbus_to_terminus_effecters.cpp', 260a743e384SChau Ly oem_files, 261fb3bc06fSTom Joseph 'requester/mctp_endpoint_discovery.cpp', 2623c275e1cSDeepak Kodihalli implicit_include_directories: false, 2633c275e1cSDeepak Kodihalli dependencies: deps, 2643c275e1cSDeepak Kodihalli install: true, 2653012b632SManojkiran Eda install_dir: get_option('bindir'), 2663012b632SManojkiran Eda) 2673c275e1cSDeepak Kodihalli 26887bfacd2SPatrick Williamsif get_option('systemd').allowed() 269adbb2452SBrad Bishop systemd_system_unit_dir = dependency('systemd').get_variable( 2703012b632SManojkiran Eda 'systemdsystemunitdir', 2713012b632SManojkiran Eda ) 272fc81a437SManojkiran Eda filesystem.copyfile( 273fc81a437SManojkiran Eda 'pldmd/service_files/pldmd.service', 274fc81a437SManojkiran Eda 'pldmd.service', 2756935cf60SDeepak Kodihalli install: true, 2763012b632SManojkiran Eda install_dir: systemd_system_unit_dir, 2776935cf60SDeepak Kodihalli ) 2786935cf60SDeepak Kodihalli 27987bfacd2SPatrick Williams if get_option('oem-ibm').allowed() 280fec5d59bSManojkiran Eda subdir('oem/ibm/service_files') 281fec5d59bSManojkiran Eda endif 282adbb2452SBrad Bishopendif 283fec5d59bSManojkiran Eda 284f7f5da97SDeepak Kodihallisubdir('pldmtool') 285ab437e58SGeorge Liu 2866e51e373SDeepak Kodihallisubdir('configurations') 2876e51e373SDeepak Kodihalli 28887bfacd2SPatrick Williamsif get_option('utilities').allowed() 2899d494bbeSDeepak Kodihalli subdir('utilities') 2909d494bbeSDeepak Kodihalliendif 29131fc47e6SLei YU 29287bfacd2SPatrick Williamsif get_option('softoff').allowed() 2934c1a3fdaSGeorge Liu subdir('softoff') 2944c1a3fdaSGeorge Liuendif 2954c1a3fdaSGeorge Liu 29687bfacd2SPatrick Williamsif get_option('tests').allowed() 2975327988eSTom Joseph subdir('common/test') 29875356c1aSTom Joseph subdir('fw-update/test') 2995327988eSTom Joseph subdir('host-bmc/test') 30074f27c73STom Joseph subdir('requester/test') 3016c7fed4cSGilbert Chen subdir('platform-mc/test') 3025327988eSTom Joseph subdir('test') 3035327988eSTom Josephendif 304