blob: 72cc7b7de791c9429370fc45ba27a99254e62648 [file] [log] [blame]
Willy Tubcae9002021-09-12 13:58:04 -07001project(
Patrick Williams32e9ea12025-02-01 08:37:51 -05002 'phosphor-ipmi-flash',
3 'cpp',
4 version: '0.1',
5 meson_version: '>=1.1.1',
6 default_options: ['cpp_std=c++23', 'warning_level=3', 'werror=true'],
7)
Willy Tubcae9002021-09-12 13:58:04 -07008
9root_inc = include_directories('.')
10
11# Setting up config data
12conf_data = configuration_data()
Patrick Williams32e9ea12025-02-01 08:37:51 -050013conf_data.set_quoted(
14 'STATIC_HANDLER_STAGED_NAME',
15 get_option('static-handler-staged-name'),
16)
17conf_data.set_quoted(
18 'PREPARATION_DBUS_SERVICE',
19 get_option('preparation-dbus-service'),
20)
Willy Tubcae9002021-09-12 13:58:04 -070021conf_data.set_quoted('VERIFY_DBUS_SERVICE', get_option('verify-dbus-service'))
22conf_data.set_quoted('UPDATE_DBUS_SERVICE', get_option('update-dbus-service'))
23conf_data.set_quoted('BIOS_STAGED_NAME', get_option('bios-staged-name'))
Patrick Williams32e9ea12025-02-01 08:37:51 -050024conf_data.set_quoted(
25 'PREPARATION_BIOS_TARGET',
26 get_option('preparation-bios-target'),
27)
Willy Tubcae9002021-09-12 13:58:04 -070028conf_data.set_quoted('VERIFY_BIOS_TARGET', get_option('verify-bios-target'))
29conf_data.set_quoted('UPDATE_BIOS_TARGET', get_option('update-bios-target'))
30
31conf_data.set_quoted('TARBALL_STAGED_NAME', get_option('tarball-staged-name'))
32conf_data.set_quoted('HASH_FILENAME', get_option('hash-filename'))
Patrick Williams32e9ea12025-02-01 08:37:51 -050033conf_data.set_quoted(
34 'VERIFY_STATUS_FILENAME',
35 get_option('verify-status-filename'),
36)
37conf_data.set_quoted(
38 'UPDATE_STATUS_FILENAME',
39 get_option('update-status-filename'),
40)
41conf_data.set_quoted(
42 'BIOS_VERIFY_STATUS_FILENAME',
43 get_option('bios-verify-status-filename'),
44)
Willy Tubcae9002021-09-12 13:58:04 -070045conf_data.set('MAPPED_ADDRESS', get_option('mapped-address'))
Tim Lee2d57d522023-09-18 11:47:53 +080046conf_data.set('NUVOTON_PCI_DID', get_option('nuvoton-pci-did'))
Willy Tubcae9002021-09-12 13:58:04 -070047
48
Patrick Williams32e9ea12025-02-01 08:37:51 -050049conf_h = configure_file(output: 'config.h', configuration: conf_data)
Willy Tubcae9002021-09-12 13:58:04 -070050
51# Setup for the test config
Patrick Williamsacbf8752025-01-30 17:48:00 -050052if get_option('tests').allowed()
Patrick Williams32e9ea12025-02-01 08:37:51 -050053 add_project_arguments('-DENABLE_STATIC_LAYOUT', language: 'cpp')
54 add_project_arguments('-DENABLE_TARBALL_UBI', language: 'cpp')
55 add_project_arguments('-DASPEED_P2A', language: 'cpp')
56 add_project_arguments('-DENABLE_PCI_BRIDGE', language: 'cpp')
57 add_project_arguments('-DASPEED_LPC', language: 'cpp')
58 add_project_arguments('-DNUVOTON_LPC', language: 'cpp')
59 add_project_arguments('-DENABLE_LPC_BRIDGE', language: 'cpp')
60 add_project_arguments('-DENABLE_HOST_BIOS', language: 'cpp')
Willy Tubcae9002021-09-12 13:58:04 -070061endif
62
63if get_option('lpc-type') != 'none'
Patrick Williams32e9ea12025-02-01 08:37:51 -050064 add_project_arguments('-DENABLE_LPC_BRIDGE', language: 'cpp')
Willy Tubcae9002021-09-12 13:58:04 -070065endif
66
67# Enable LPC and PCI for tests only.
68assert(
Patrick Williams32e9ea12025-02-01 08:37:51 -050069 get_option('tests').allowed() \
Willy Tubcae9002021-09-12 13:58:04 -070070 or get_option('lpc-type') == 'none' \
71 or get_option('p2a-type') == 'none',
Patrick Williams32e9ea12025-02-01 08:37:51 -050072 'Invalid configuration enabling both PCI and LPC.',
73)
Willy Tubcae9002021-09-12 13:58:04 -070074
75if get_option('p2a-type') != 'none'
Patrick Williams32e9ea12025-02-01 08:37:51 -050076 add_project_arguments('-DENABLE_PCI_BRIDGE', language: 'cpp')
Willy Tubcae9002021-09-12 13:58:04 -070077endif
78
79feature_map = {
Patrick Williams32e9ea12025-02-01 08:37:51 -050080 'host-bios' : '-DENABLE_HOST_BIOS',
81 'ppc' : '-DENABLE_PPC',
82 'reboot-update' : '-DENABLE_REBOOT_UPDATE',
83 'update-status' : '-DENABLE_UPDATE_STATUS',
84 'net-bridge' : '-DENABLE_NET_BRIDGE',
Willy Tubcae9002021-09-12 13:58:04 -070085}
86
87# Get the options status and build a project summary to show which flags are
88# being enabled during the configuration time.
89
90foreach option_key, option_value : feature_map
Patrick Williams32e9ea12025-02-01 08:37:51 -050091 if get_option(option_key)
92 add_project_arguments(option_value, language: 'cpp')
93 summary(option_key, option_value, section: 'Enabled Features')
94 endif
Willy Tubcae9002021-09-12 13:58:04 -070095endforeach
96
97
98update_type_combo_map = {
Patrick Williams32e9ea12025-02-01 08:37:51 -050099 'static-layout' : '-DENABLE_STATIC_LAYOUT',
100 'tarball-ubi' : '-DENABLE_TARBALL_UBI',
Willy Tubcae9002021-09-12 13:58:04 -0700101}
102
103foreach option_key, option_value : update_type_combo_map
Patrick Williams32e9ea12025-02-01 08:37:51 -0500104 if get_option('update-type') == option_key
105 add_project_arguments(option_value, language: 'cpp')
106 summary(
107 option_key,
108 option_value,
109 section: 'Enabled Firmware Update Features',
110 )
111 endif
Willy Tubcae9002021-09-12 13:58:04 -0700112endforeach
113
114lpc_type_combo_map = {
Patrick Williams32e9ea12025-02-01 08:37:51 -0500115 'aspeed-lpc' : '-DASPEED_LPC',
116 'nuvoton-lpc' : '-DNUVOTON_LPC',
Willy Tubcae9002021-09-12 13:58:04 -0700117}
118
119foreach option_key, option_value : lpc_type_combo_map
Patrick Williams32e9ea12025-02-01 08:37:51 -0500120 if get_option('lpc-type') == option_key
121 add_project_arguments(option_value, language: 'cpp')
122 summary(option_key, option_value, section: 'Enabled LPC Features')
123 endif
Willy Tubcae9002021-09-12 13:58:04 -0700124endforeach
125
126pci_type_combo_map = {
Patrick Williams32e9ea12025-02-01 08:37:51 -0500127 'aspeed-p2a' : '-DASPEED_P2A',
128 'nuvoton-p2a-vga' : '-DNUVOTON_P2A_VGA',
129 'nuvoton-p2a-mbox' : '-DNUVOTON_P2A_MBOX',
Willy Tubcae9002021-09-12 13:58:04 -0700130}
131
132foreach option_key, option_value : pci_type_combo_map
Patrick Williams32e9ea12025-02-01 08:37:51 -0500133 if get_option('p2a-type') == option_key
134 add_project_arguments(option_value, language: 'cpp')
135 summary(option_key, option_value, section: 'Enabled PCI Features')
136 endif
Willy Tubcae9002021-09-12 13:58:04 -0700137endforeach
138
139
140sys_lib = static_library(
Patrick Williams32e9ea12025-02-01 08:37:51 -0500141 'sys',
142 'internal/sys.cpp',
143 implicit_include_directories: false,
144)
Willy Tubcae9002021-09-12 13:58:04 -0700145
Patrick Williams32e9ea12025-02-01 08:37:51 -0500146sys_dep = declare_dependency(link_with: sys_lib)
Willy Tubcae9002021-09-12 13:58:04 -0700147
Willy Tubcae9002021-09-12 13:58:04 -0700148blobs_dep = dependency('phosphor-ipmi-blobs')
Patrick Williamsdeb85ce2023-12-07 14:27:45 -0600149nlohmann_json_dep = dependency('nlohmann_json', include_type: 'system')
Brandon Kimea65e682022-07-13 23:21:33 +0000150
Patrick Williamsacbf8752025-01-30 17:48:00 -0500151if get_option('tests').allowed()
Patrick Williams32e9ea12025-02-01 08:37:51 -0500152 gtest = dependency('gtest', main: true, disabler: true, required: false)
153 gmock = dependency('gmock', disabler: true, required: false)
154 if not gtest.found() or not gmock.found()
155 gtest_opt = import('cmake').subproject_options()
156 gtest_opt.append_compile_args('c++', ['-DCMAKE_CXX_FLAGS=-Wno-pedantic'])
157 gtest_proj = cmake.subproject(
158 'googletest',
159 options: gtest_opt,
160 required: false,
161 )
Willy Tubcae9002021-09-12 13:58:04 -0700162
Patrick Williams32e9ea12025-02-01 08:37:51 -0500163 if gtest_proj.found()
164 gtest = declare_dependency(
165 dependencies: [
166 dependency('threads'),
167 gtest_proj.dependency('gtest'),
168 gtest_proj.dependency('gtest_main'),
169 ],
170 )
171 gmock = gtest_proj.dependency('gmock')
172 endif
Willy Tubcae9002021-09-12 13:58:04 -0700173 endif
Willy Tubcae9002021-09-12 13:58:04 -0700174endif
175
176
Patrick Williamsacbf8752025-01-30 17:48:00 -0500177if get_option('bmc-blob-handler').allowed()
Patrick Williams32e9ea12025-02-01 08:37:51 -0500178 subdir('bmc')
Willy Tubcae9002021-09-12 13:58:04 -0700179endif
180
Patrick Williamsacbf8752025-01-30 17:48:00 -0500181if get_option('host-tool').allowed()
Patrick Williams32e9ea12025-02-01 08:37:51 -0500182 subdir('tools')
Willy Tubcae9002021-09-12 13:58:04 -0700183endif
184
Patrick Williamsacbf8752025-01-30 17:48:00 -0500185if get_option('cleanup-delete').allowed()
Patrick Williams32e9ea12025-02-01 08:37:51 -0500186 subdir('cleanup')
Willy Tubcae9002021-09-12 13:58:04 -0700187endif