1642f437eSKuiying Wangproject( 2642f437eSKuiying Wang 'biosconfig-manager', 3642f437eSKuiying Wang 'cpp', 49ace6ac5SPatrick Williams meson_version: '>=1.1.1', 5642f437eSKuiying Wang default_options: [ 6642f437eSKuiying Wang 'warning_level=3', 7642f437eSKuiying Wang 'werror=true', 89ace6ac5SPatrick Williams 'cpp_std=c++23', 9814a3568SManojkiran Eda 'buildtype=debugoptimized', 10642f437eSKuiying Wang ], 11642f437eSKuiying Wang license: 'Apache-2.0', 12642f437eSKuiying Wang version: '1.0', 13642f437eSKuiying Wang) 14642f437eSKuiying Wang 15642f437eSKuiying Wang# Wno-psabi reduces the number of "Note:" messages when cross-compiling some STL 16642f437eSKuiying Wang# stuff for ARM. See https://stackoverflow.com/questions/48149323/strange-gcc-warning-when-compiling-qt-project 17642f437eSKuiying Wang# Basically, gcc 6 and gcc 7 are not ABI compatible, but since the whole OpenBMC 18642f437eSKuiying Wang# project uses the same compiler, we can safely ignmore these info notes. 19642f437eSKuiying Wangadd_project_arguments('-Wno-psabi', language: 'cpp') 20642f437eSKuiying Wang 21814a3568SManojkiran Edaboost_args = [ 22814a3568SManojkiran Eda '-DBOOST_ALL_NO_LIB', 23642f437eSKuiying Wang '-DBOOST_ASIO_DISABLE_THREADS', 24642f437eSKuiying Wang '-DBOOST_ERROR_CODE_HEADER_ONLY', 25642f437eSKuiying Wang '-DBOOST_NO_RTTI', 26642f437eSKuiying Wang '-DBOOST_NO_TYPEID', 27814a3568SManojkiran Eda '-DBOOST_SYSTEM_NO_DEPRECATED', 28814a3568SManojkiran Eda] 29642f437eSKuiying Wang 30814a3568SManojkiran Edadeps = [ 31814a3568SManojkiran Eda dependency('boost'), 32642f437eSKuiying Wang dependency('phosphor-dbus-interfaces'), 33642f437eSKuiying Wang dependency('phosphor-logging'), 34642f437eSKuiying Wang dependency('sdbusplus'), 35d37ce23aSPatrick Williams dependency('libsystemd'), 368f706213SKuiying Wang dependency('openssl'), 37e7f0b66cSManojkiran Eda dependency('nlohmann_json', include_type: 'system'), 38642f437eSKuiying Wang] 39642f437eSKuiying Wang 4072bed802SManojkiran Edacereal = dependency('cereal', required: false) 4172bed802SManojkiran Edacpp = meson.get_compiler('cpp') 4272bed802SManojkiran Edahas_cereal = cpp.has_header_symbol( 4372bed802SManojkiran Eda 'cereal/cereal.hpp', 4472bed802SManojkiran Eda 'cereal::specialize', 4572bed802SManojkiran Eda dependencies: cereal, 46814a3568SManojkiran Eda required: false, 47814a3568SManojkiran Eda) 4872bed802SManojkiran Edaif not has_cereal 4972bed802SManojkiran Eda cereal_opts = import('cmake').subproject_options() 50*9fc9a988SManojkiran Eda cereal_opts.add_cmake_defines( 51*9fc9a988SManojkiran Eda {'BUILD_TESTS': 'OFF', 'SKIP_PERFORMANCE_COMPARISON': 'ON'}, 52*9fc9a988SManojkiran Eda ) 5372bed802SManojkiran Eda cereal_proj = import('cmake').subproject( 5472bed802SManojkiran Eda 'cereal', 5572bed802SManojkiran Eda options: cereal_opts, 56814a3568SManojkiran Eda required: false, 57814a3568SManojkiran Eda ) 5872bed802SManojkiran Eda assert(cereal_proj.found(), 'cereal is required') 5972bed802SManojkiran Eda cereal = cereal_proj.dependency('cereal') 6072bed802SManojkiran Edaendif 6172bed802SManojkiran Edadeps += cereal 6272bed802SManojkiran Eda 63814a3568SManojkiran Edasrc_files = [ 64814a3568SManojkiran Eda 'src/main.cpp', 65642f437eSKuiying Wang 'src/manager.cpp', 66f1101df2STom Joseph 'src/manager_serialize.cpp', 67814a3568SManojkiran Eda 'src/password.cpp', 681a1dfbd2SArun Lal K M] 69642f437eSKuiying Wang 70814a3568SManojkiran Edaexecutable( 71814a3568SManojkiran Eda 'biosconfig-manager', 721a1dfbd2SArun Lal K M src_files, 738f706213SKuiying Wang implicit_include_directories: true, 748f706213SKuiying Wang include_directories: ['include'], 758f706213SKuiying Wang dependencies: deps, 768f706213SKuiying Wang cpp_args: boost_args, 778f706213SKuiying Wang install: true, 78814a3568SManojkiran Eda install_dir: get_option('bindir'), 79814a3568SManojkiran Eda) 808f706213SKuiying Wang 81642f437eSKuiying Wangsystemd = dependency('systemd') 826a7ee5c2SGeorge Liusystemd_system_unit_dir = systemd.get_variable( 83c76391beSPatrick Williams 'systemdsystemunitdir', 84814a3568SManojkiran Eda pkgconfig_define: ['prefix', get_option('prefix')], 85814a3568SManojkiran Eda) 86642f437eSKuiying Wang 87628e4aa4SGeorge Liufs = import('fs') 88628e4aa4SGeorge Liufs.copyfile( 89628e4aa4SGeorge Liu 'service_files/xyz.openbmc_project.biosconfig_manager.service', 90642f437eSKuiying Wang install: true, 91814a3568SManojkiran Eda install_dir: systemd_system_unit_dir, 92642f437eSKuiying Wang) 93