project( 'entity-manager', 'cpp', default_options: ['warning_level=3', 'werror=true', 'cpp_std=c++23'], license: 'Apache-2.0', version: '0.1', meson_version: '>=1.3.0', ) add_project_arguments('-Wno-psabi', language: 'cpp') boost_args = [ '-DBOOST_ASIO_NO_DEPRECATED', '-DBOOST_SYSTEM_NO_DEPRECATED', '-DBOOST_ERROR_CODE_HEADER_ONLY', '-DBOOST_NO_RTTI', '-DBOOST_NO_TYPEID', '-DBOOST_ALL_NO_LIB', '-DBOOST_ALLOW_DEPRECATED_HEADERS', ] cpp = meson.get_compiler('cpp') boost = dependency('boost', required: false) if not boost.found() subproject('boost', required: false) boost = declare_dependency(include_directories: 'subprojects/boost_1_88_0') boost = boost.as_system('system') endif if get_option('fru-device') i2c = cpp.find_library('i2c') endif if get_option('devicetree-vpd') or get_option('gpio-presence') phosphor_dbus_interfaces_dep = dependency( 'phosphor-dbus-interfaces', include_type: 'system', ) endif nlohmann_json_dep = dependency('nlohmann_json', include_type: 'system') sdbusplus = dependency('sdbusplus') phosphor_logging_dep = dependency('phosphor-logging') zlib_dep = dependency('zlib', include_type: 'system') libxml2_dep = dependency('libxml-2.0', include_type: 'system') if get_option('gpio-presence') or get_option('tests').allowed() libgpio_dep = dependency( 'libgpiodcxx', default_options: ['bindings=cxx'], version: '<1.7.0', ) endif systemd = dependency('systemd') systemd_system_unit_dir = systemd.get_variable( 'systemd_system_unit_dir', pkgconfig_define: ['prefix', get_option('prefix')], ) packagedir = join_paths( get_option('prefix'), get_option('datadir'), meson.project_name(), ) sysconfdir = join_paths( get_option('prefix'), get_option('sysconfdir'), meson.project_name(), ) threads = dependency('threads') if cpp.has_header('valijson/validator.hpp') valijson = declare_dependency() else subproject('valijson', required: false) valijson = declare_dependency( include_directories: 'subprojects/valijson/include', ) valijson = valijson.as_system('system') endif install_data('blacklist.json') # this creates the 'configs' variable subdir('configurations') filepaths = [] package_configdir = join_paths(packagedir, 'configurations') fs = import('fs') foreach c : configs file = join_paths('configurations', c) install_data( file, install_dir: join_paths( package_configdir, fs.parent(fs.relative_to(file, 'configurations')), ), ) filepaths += [file] endforeach if get_option('validate-json') validate_script = files('scripts/validate_configs.py') autojson = custom_target( 'check_syntax', command: [validate_script, '-v', '-k'], depend_files: files(filepaths), build_by_default: true, output: 'validate_configs.log', ) endif # this creates the 'schemas' variable subdir('schemas') foreach s : schemas install_data( join_paths('schemas', s), install_dir: join_paths(packagedir, 'schemas'), ) endforeach subdir('service_files') subdir('src') if get_option('tests').allowed() subdir('test') endif