blob: dbb94d651ba607f8b73792c9149b328cf731a117 [file] [log] [blame]
Manojkiran Eda84855ab2021-12-05 11:09:02 +05301project(
2 'post-code-manager',
3 'cpp',
Patrick Williamsd4430272025-02-01 08:36:58 -05004 default_options: ['cpp_std=c++23', 'warning_level=3', 'werror=true'],
Manojkiran Eda84855ab2021-12-05 11:09:02 +05305 license: 'Apache-2.0',
Patrick Williams5c75dd52023-07-12 11:15:27 -05006 meson_version: '>=1.1.1',
Manojkiran Eda84855ab2021-12-05 11:09:02 +05307 version: '1.0',
8)
9
Amithash Prasadb6616cd2025-05-29 15:56:51 -070010# Disable JSON implicit conversions.
11add_project_arguments('-DJSON_USE_IMPLICIT_CONVERSIONS=0', language: 'cpp')
Manojkiran Eda84855ab2021-12-05 11:09:02 +053012
13conf_data = configuration_data()
Patrick Williamsd4430272025-02-01 08:36:58 -050014conf_data.set_quoted(
15 'DBUS_OBJECT_NAME',
16 '/xyz/openbmc_project/State/Boot/PostCode',
17)
18conf_data.set_quoted('DBUS_INTF_NAME', 'xyz.openbmc_project.State.Boot.PostCode')
19conf_data.set_quoted(
20 'POSTCODE_DISPLAY_PATH',
21 get_option('postcode-display-path'),
22)
23conf_data.set('MAX_BOOT_CYCLE_COUNT', get_option('max-boot-cycle-count'))
24conf_data.set(
25 'MAX_POST_CODE_SIZE_PER_CYCLE',
26 get_option('max-post-code-size-per-cycle'),
27)
Manojkiran Eda84855ab2021-12-05 11:09:02 +053028
Patrick Williams8eb4d582023-11-29 06:44:22 -060029if get_option('bios-post-code-log').allowed()
Patrick Williamsd4430272025-02-01 08:36:58 -050030 add_project_arguments('-DENABLE_BIOS_POST_CODE_LOG', language: 'cpp')
Manojkiran Eda84855ab2021-12-05 11:09:02 +053031endif
32
Patrick Williamsd4430272025-02-01 08:36:58 -050033configure_file(output: 'config.h', configuration: conf_data)
Manojkiran Eda84855ab2021-12-05 11:09:02 +053034
Patrick Williamse7098742022-03-21 10:01:23 -050035sdbusplus = dependency('sdbusplus')
36phosphor_logging = dependency('phosphor-logging')
37phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces')
Amithash Prasadb6616cd2025-05-29 15:56:51 -070038json = dependency('nlohmann_json', include_type: 'system')
Manojkiran Eda84855ab2021-12-05 11:09:02 +053039
40cxx = meson.get_compiler('cpp')
41cereal_dep = dependency('cereal', required: false)
42has_cereal = cxx.has_header_symbol(
43 'cereal/cereal.hpp',
44 'cereal::specialize',
45 dependencies: cereal_dep,
Patrick Williamsd4430272025-02-01 08:36:58 -050046 required: false,
47)
Manojkiran Eda84855ab2021-12-05 11:09:02 +053048if not has_cereal
49 cereal_opts = import('cmake').subproject_options()
Patrick Williamsd4430272025-02-01 08:36:58 -050050 cereal_opts.add_cmake_defines(
51 {'BUILD_TESTS': 'OFF', 'SKIP_PERFORMANCE_COMPARISON': 'ON'},
52 )
Manojkiran Eda84855ab2021-12-05 11:09:02 +053053 cereal_proj = import('cmake').subproject(
54 'cereal',
55 options: cereal_opts,
Patrick Williamsd4430272025-02-01 08:36:58 -050056 required: false,
57 )
Manojkiran Eda84855ab2021-12-05 11:09:02 +053058 assert(cereal_proj.found(), 'cereal is required')
59 cereal_dep = cereal_proj.dependency('cereal')
60endif
61
62systemd_system_unit_dir = dependency('systemd').get_variable(
Patrick Williamsd4430272025-02-01 08:36:58 -050063 'systemdsystemunitdir',
64)
Manojkiran Eda84855ab2021-12-05 11:09:02 +053065
Patrick Williamsd4430272025-02-01 08:36:58 -050066install_subdir(
67 'service_files',
68 install_dir: systemd_system_unit_dir,
69 strip_directory: true,
70)
Manojkiran Eda84855ab2021-12-05 11:09:02 +053071
Amithash Prasadb6616cd2025-05-29 15:56:51 -070072packagedir = join_paths(
73 get_option('prefix'),
74 get_option('datadir'),
75 'phosphor-post-code-manager',
76)
77
78install_data(sources: 'post-code-handlers.json', install_dir: packagedir)
79
Manojkiran Eda84855ab2021-12-05 11:09:02 +053080executable(
81 'post-code-manager',
82 'src/main.cpp',
83 'src/post_code.cpp',
84 install: true,
85 dependencies: [
Patrick Williamsd4430272025-02-01 08:36:58 -050086 sdbusplus,
87 phosphor_dbus_interfaces,
88 phosphor_logging,
89 cereal_dep,
Amithash Prasadb6616cd2025-05-29 15:56:51 -070090 json,
Patrick Williamsd4430272025-02-01 08:36:58 -050091 ],
92 include_directories: 'inc',
93)