xref: /openbmc/phosphor-bmc-code-mgmt/bmc/meson.build (revision f899aedd191907dfc1d97e217dcab1f8b01022cb)
1conf = configuration_data()
2
3# DBus information
4conf.set_quoted(
5    'BMC_INVENTORY_INTERFACE',
6    'xyz.openbmc_project.Inventory.Item.Bmc',
7)
8conf.set_quoted('BUSNAME_UPDATER', 'xyz.openbmc_project.Software.BMC.Updater')
9conf.set_quoted('DOWNLOAD_BUSNAME', 'xyz.openbmc_project.Software.Download')
10conf.set_quoted('FILEPATH_IFACE', 'xyz.openbmc_project.Common.FilePath')
11conf.set_quoted('INVENTORY_PATH', '/xyz/openbmc_project/inventory/')
12conf.set_quoted('MAPPER_BUSNAME', 'xyz.openbmc_project.ObjectMapper')
13conf.set_quoted('MAPPER_INTERFACE', 'xyz.openbmc_project.ObjectMapper')
14conf.set_quoted('MAPPER_PATH', '/xyz/openbmc_project/object_mapper')
15conf.set_quoted('SOFTWARE_OBJPATH', '/xyz/openbmc_project/software')
16conf.set_quoted('SYSTEMD_BUSNAME', 'org.freedesktop.systemd1')
17conf.set_quoted('SYSTEMD_PATH', '/org/freedesktop/systemd1')
18conf.set_quoted('SYSTEMD_INTERFACE', 'org.freedesktop.systemd1.Manager')
19conf.set_quoted('VERSION_BUSNAME', 'xyz.openbmc_project.Software.Version')
20conf.set_quoted('VERSION_IFACE', 'xyz.openbmc_project.Software.Version')
21conf.set_quoted(
22    'EXTENDED_VERSION_IFACE',
23    'xyz.openbmc_project.Software.ExtendedVersion',
24)
25conf.set_quoted(
26    'COMPATIBLE_IFACE',
27    'xyz.openbmc_project.Inventory.Decorator.Compatible',
28)
29
30# Names of the forward and reverse associations
31conf.set_quoted('ACTIVATION_FWD_ASSOCIATION', 'inventory')
32conf.set_quoted('ACTIVATION_REV_ASSOCIATION', 'activation')
33conf.set_quoted('ACTIVE_FWD_ASSOCIATION', 'active')
34conf.set_quoted('ACTIVE_REV_ASSOCIATION', 'software_version')
35conf.set_quoted('FUNCTIONAL_FWD_ASSOCIATION', 'functional')
36conf.set_quoted('FUNCTIONAL_REV_ASSOCIATION', 'software_version')
37conf.set_quoted('UPDATEABLE_FWD_ASSOCIATION', 'updateable')
38conf.set_quoted('UPDATEABLE_REV_ASSOCIATION', 'software_version')
39
40# Filesystem files and directories
41# The prefix path for the versioned read-only bmc partitions
42conf.set_quoted('BMC_ROFS_PREFIX', get_option('media-dir') + '/rofs-')
43# The name of the BMC table of contents file
44conf.set_quoted('OS_RELEASE_FILE', '/etc/os-release')
45# The dir where activation data is stored in files
46conf.set_quoted('PERSIST_DIR', '/var/lib/phosphor-bmc-code-mgmt/')
47
48# Supported BMC layout types
49conf.set('STATIC_LAYOUT', get_option('bmc-layout').contains('static'))
50conf.set('UBIFS_LAYOUT', get_option('bmc-layout').contains('ubi'))
51conf.set('MMC_LAYOUT', get_option('bmc-layout').contains('mmc'))
52
53# Configurable features
54conf.set('HOST_BIOS_UPGRADE', get_option('host-bios-upgrade').allowed())
55conf.set('WANT_SIGNATURE_VERIFY', get_option('verify-signature').allowed())
56conf.set(
57    'START_UPDATE_DBUS_INTEFACE',
58    get_option('software-update-dbus-interface').allowed(),
59)
60
61# Configurable variables
62conf.set('ACTIVE_BMC_MAX_ALLOWED', get_option('active-bmc-max-allowed'))
63conf.set_quoted('HASH_FILE_NAME', get_option('hash-file-name'))
64conf.set_quoted('IMG_UPLOAD_DIR', get_option('img-upload-dir'))
65conf.set_quoted('MANIFEST_FILE_NAME', get_option('manifest-file-name'))
66conf.set_quoted('MEDIA_DIR', get_option('media-dir'))
67optional_array = get_option('optional-images')
68optional_images = ''
69foreach optiona_image : optional_array
70    optional_images = ' '.join([optional_images, optiona_image])
71endforeach
72conf.set_quoted('OPTIONAL_IMAGES', optional_images)
73conf.set_quoted('PUBLICKEY_FILE_NAME', get_option('publickey-file-name'))
74conf.set_quoted('SIGNATURE_FILE_EXT', get_option('signature-file-ext'))
75conf.set_quoted('SIGNED_IMAGE_CONF_PATH', get_option('signed-image-conf-path'))
76conf.set_quoted('SYNC_LIST_DIR_PATH', get_option('sync-list-dir-path'))
77conf.set_quoted('SYNC_LIST_FILE_NAME', get_option('sync-list-file-name'))
78conf.set_quoted('BMC_MSL', get_option('bmc-msl'))
79conf.set_quoted('REGEX_BMC_MSL', get_option('regex-bmc-msl'))
80
81if get_option('host-bios-upgrade').allowed()
82    conf.set_quoted('BIOS_OBJPATH', get_option('bios-object-path'))
83endif
84
85if get_option('bmc-static-dual-image').allowed()
86    conf.set(
87        'BMC_STATIC_DUAL_IMAGE',
88        get_option('bmc-static-dual-image').allowed(),
89    )
90    conf.set_quoted('ALT_ROFS_DIR', get_option('alt-rofs-dir'))
91    conf.set_quoted('ALT_RWFS', get_option('alt-rwfs-dir'))
92else
93    conf.set_quoted('ALT_RWFS', '/media/alt/var/persist')
94endif
95
96configure_file(output: 'config.h', configuration: conf)
97
98unit_files = [
99    'obmc-flash-bmc-setenv@.service.in',
100    'reboot-guard-disable.service.in',
101    'reboot-guard-enable.service.in',
102    'force-reboot.service.in',
103    'usr-local.mount.in',
104    'xyz.openbmc_project.Software.Download.service.in',
105    'xyz.openbmc_project.Software.Sync.service.in',
106]
107
108image_updater_sources = files('activation.cpp', 'images.cpp', 'item_updater.cpp', 'msl_verify.cpp', 'serialize.cpp', 'update_manager.cpp'
109, 'utils.cpp', 'version.cpp')
110
111if get_option('bmc-layout').contains('static')
112    image_updater_sources += files(
113        'static/flash.cpp',
114        'static/item_updater_helper.cpp',
115    )
116elif get_option('bmc-layout').contains('ubi')
117    image_updater_sources += files(
118        'ubi/flash.cpp',
119        'ubi/item_updater_helper.cpp',
120    )
121
122    unit_files += [
123        'ubi/obmc-flash-bmc-cleanup.service.in',
124        'ubi/obmc-flash-bmc-mirroruboot.service.in',
125        'ubi/obmc-flash-bmc-ubiremount.service.in',
126        'ubi/obmc-flash-bmc-ubiro@.service.in',
127        'ubi/obmc-flash-bmc-ubiro-remove@.service.in',
128        'ubi/obmc-flash-bmc-ubirw.service.in',
129        'ubi/obmc-flash-bmc-ubirw-remove.service.in',
130        'ubi/obmc-flash-bmc-updateubootvars@.service.in',
131    ]
132elif get_option('bmc-layout').contains('mmc')
133    image_updater_sources += files(
134        'mmc/flash.cpp',
135        'mmc/item_updater_helper.cpp',
136    )
137
138    unit_files += [
139        'mmc/obmc-flash-mmc@.service.in',
140        'mmc/obmc-flash-mmc-mount.service.in',
141        'mmc/obmc-flash-mmc-remove@.service.in',
142        'mmc/obmc-flash-mmc-setprimary@.service.in',
143        'mmc/obmc-flash-mmc-umount.service.in',
144        'mmc/obmc-flash-mmc-mirroruboot.service.in',
145    ]
146endif
147
148if get_option('host-bios-upgrade').allowed()
149    unit_files += 'obmc-flash-host-bios@.service.in'
150endif
151
152if get_option('bmc-static-dual-image').allowed()
153    unit_files += [
154        'static/obmc-flash-bmc-alt@.service.in',
155        'static/obmc-flash-bmc-static-mount-alt.service.in',
156        'static/obmc-flash-bmc-prepare-for-sync.service.in',
157    ]
158endif
159
160if get_option('sync-bmc-files').allowed()
161    executable(
162        'phosphor-sync-software-manager',
163        'sync_manager.cpp',
164        'sync_manager_main.cpp',
165        'sync_watch.cpp',
166        dependencies: deps,
167        install: true,
168        install_dir: get_option('libexecdir') / 'phosphor-code-mgmt',
169    )
170
171    install_data('synclist', install_dir: get_option('sysconfdir'))
172
173    install_data(
174        'sync-once.sh',
175        install_mode: 'rwxr-xr-x',
176        install_dir: get_option('bindir'),
177    )
178endif
179
180if (get_option('verify-signature').allowed())
181    image_updater_sources += files('image_verify.cpp', 'openssl_alloc.cpp'
182    , 'utils.cpp')
183endif
184
185executable(
186    'phosphor-download-manager',
187    'download_manager.cpp',
188    'download_manager_main.cpp',
189    dependencies: deps,
190    install: true,
191    install_dir: get_option('libexecdir') / 'phosphor-code-mgmt',
192)
193
194software_common_sources = files('software_utils.cpp')
195
196if get_option('software-update-dbus-interface').allowed()
197    executable(
198        'phosphor-software-manager',
199        'software_manager.cpp',
200        image_updater_sources,
201        software_common_sources,
202        dependencies: [deps, ssl_dep],
203        install: true,
204        install_dir: get_option('libexecdir') / 'phosphor-code-mgmt',
205    )
206    unit_files += ['xyz.openbmc_project.Software.Manager.service.in']
207else
208    unit_files += [
209        'xyz.openbmc_project.Software.BMC.Updater.service.in',
210        'xyz.openbmc_project.Software.Version.service.in',
211    ]
212endif
213
214executable(
215    'phosphor-image-updater',
216    image_updater_sources,
217    software_common_sources,
218    'item_updater_main.cpp',
219    dependencies: [deps, ssl_dep, boost_dep],
220    install: true,
221    install_dir: get_option('libexecdir') / 'phosphor-code-mgmt',
222)
223
224executable(
225    'phosphor-version-software-manager',
226    'image_manager.cpp',
227    'image_manager_main.cpp',
228    'version.cpp',
229    'watch.cpp',
230    software_common_sources,
231    dependencies: [deps, ssl_dep],
232    install: true,
233    install_dir: get_option('libexecdir') / 'phosphor-code-mgmt',
234)
235
236install_data(
237    'obmc-flash-bmc',
238    install_mode: 'rwxr-xr-x',
239    install_dir: get_option('bindir'),
240)
241
242install_data(
243    'detect-slot-aspeed',
244    install_mode: 'rwxr-xr-x',
245    install_dir: get_option('bindir'),
246)
247
248install_data(
249    'reset-cs0-aspeed',
250    install_mode: 'rwxr-xr-x',
251    install_dir: get_option('bindir'),
252)
253
254install_data('software.conf', install_dir: '/usr/lib/tmpfiles.d/')
255
256foreach u : unit_files
257    configure_file(
258        input: u,
259        output: '@BASENAME@',
260        configuration: conf,
261        install: true,
262        install_dir: systemd_system_unit_dir,
263    )
264endforeach
265
266# If test coverage of source files within the root directory are wanted,
267# need to define and build the tests from here
268if build_tests.allowed()
269    gtest = dependency(
270        'gtest',
271        main: true,
272        disabler: true,
273        required: build_tests,
274    )
275    include_srcs = declare_dependency(
276        sources: ['utils.cpp', 'image_verify.cpp', 'images.cpp', 'version.cpp'],
277    )
278
279    test(
280        'utest',
281        executable(
282            'utest',
283            './test/utest.cpp',
284            dependencies: [deps, gtest, include_srcs, ssl_dep],
285        ),
286    )
287endif
288
289if get_option('usb-code-update').allowed()
290    subdir('usb')
291endif
292
293if get_option('side-switch-on-boot').allowed()
294    subdir('side-switch')
295endif
296