xref: /openbmc/bios-settings-mgr/meson.build (revision 5c7e80d5a431d7cb9645a6e0b30627bbcb40c633)
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