blob: 42c14ba40c57ced7c580e9e9d283ee94330672de [file] [log] [blame]
Willy Tubcae9002021-09-12 13:58:04 -07001firmware_inc = include_directories('.')
2
3# phosphor-ipmi-flash config
4config_data = []
5if get_option('update-type') == 'static-layout'
Patrick Williams32e9ea12025-02-01 08:37:51 -05006 if get_option('reboot-update')
7 config_data += 'config-static-bmc-reboot.json'
Willy Tubcae9002021-09-12 13:58:04 -07008 else
Patrick Williams32e9ea12025-02-01 08:37:51 -05009 if get_option('update-status')
10 config_data += 'config-static-bmc-with-update-status.json'
11 else
12 config_data += 'config-static-bmc.json'
13 endif
Willy Tubcae9002021-09-12 13:58:04 -070014 endif
Willy Tubcae9002021-09-12 13:58:04 -070015endif
16
17if get_option('host-bios')
Patrick Williams32e9ea12025-02-01 08:37:51 -050018 config_data += 'config-bios.json'
Willy Tubcae9002021-09-12 13:58:04 -070019endif
20
21foreach data : config_data
Patrick Williams32e9ea12025-02-01 08:37:51 -050022 configure_file(
23 input: data + '.in',
24 output: data,
25 configuration: conf_data,
26 install: true,
27 install_dir: get_option('datadir') / 'phosphor-ipmi-flash',
28 )
Willy Tubcae9002021-09-12 13:58:04 -070029endforeach
30
31# temp files
32install_data(
Patrick Williams32e9ea12025-02-01 08:37:51 -050033 'phosphor-ipmi-flash.conf',
34 install_dir: get_option('libdir') / 'tmpfiles.d',
35)
Willy Tubcae9002021-09-12 13:58:04 -070036
37# systemd configs
38systemd_data = [
Patrick Williams32e9ea12025-02-01 08:37:51 -050039 'phosphor-ipmi-flash-bmc-prepare.target',
40 'phosphor-ipmi-flash-bmc-verify.target',
41 'phosphor-ipmi-flash-bmc-update.target',
Willy Tubcae9002021-09-12 13:58:04 -070042]
43
44if get_option('host-bios')
Patrick Williams32e9ea12025-02-01 08:37:51 -050045 systemd_data += [
46 'phosphor-ipmi-flash-bios-prepare.target',
47 'phosphor-ipmi-flash-bios-verify.target',
48 'phosphor-ipmi-flash-bios-update.target',
49 ]
Willy Tubcae9002021-09-12 13:58:04 -070050endif
51
52systemd = dependency('systemd')
53if systemd.found()
Patrick Williams32e9ea12025-02-01 08:37:51 -050054 foreach data : systemd_data
55 configure_file(
56 input: data + '.in',
57 output: data,
58 configuration: conf_data,
59 install: true,
60 install_dir: systemd.get_variable('systemdsystemunitdir'),
61 )
62 endforeach
Willy Tubcae9002021-09-12 13:58:04 -070063endif
64
65firmware_source = [
Patrick Williams32e9ea12025-02-01 08:37:51 -050066 'firmware_handlers_builder.cpp',
67 'firmware_handler.cpp',
68 'lpc_handler.cpp',
69]
Willy Tubcae9002021-09-12 13:58:04 -070070
71if (get_option('lpc-type') == 'aspeed-lpc' or
Patrick Williams32e9ea12025-02-01 08:37:51 -050072get_option('tests').allowed())
73 firmware_source += 'lpc_aspeed.cpp'
Willy Tubcae9002021-09-12 13:58:04 -070074endif
75
76if (get_option('lpc-type') == 'nuvoton-lpc' or
Patrick Williams32e9ea12025-02-01 08:37:51 -050077get_option('tests').allowed())
78 firmware_source += 'lpc_nuvoton.cpp'
Willy Tubcae9002021-09-12 13:58:04 -070079endif
80
81if (get_option('p2a-type') == 'aspeed-p2a' or
Patrick Williams32e9ea12025-02-01 08:37:51 -050082get_option('tests').allowed())
83 firmware_source += 'pci_handler.cpp'
Willy Tubcae9002021-09-12 13:58:04 -070084endif
85
86if get_option('p2a-type') == 'nuvoton-p2a-vga'
Patrick Williams32e9ea12025-02-01 08:37:51 -050087 firmware_source += 'pci_nuvoton_handler.cpp'
Willy Tubcae9002021-09-12 13:58:04 -070088endif
89
90if get_option('p2a-type') == 'nuvoton-p2a-mbox'
Patrick Williams32e9ea12025-02-01 08:37:51 -050091 firmware_source += 'pci_nuvoton_handler.cpp'
Willy Tubcae9002021-09-12 13:58:04 -070092endif
93
94if get_option('net-bridge')
Patrick Williams32e9ea12025-02-01 08:37:51 -050095 firmware_source += 'net_handler.cpp'
Willy Tubcae9002021-09-12 13:58:04 -070096endif
97
98firmware_pre = declare_dependency(
Patrick Williams32e9ea12025-02-01 08:37:51 -050099 include_directories: [root_inc, bmc_inc, firmware_inc],
100 dependencies: [
101 dependency('sdbusplus', fallback: ['sdbusplus', 'sdbusplus_dep']),
102 common_dep,
103 blobs_dep,
104 sys_dep,
105 ],
106)
Willy Tubcae9002021-09-12 13:58:04 -0700107
108firmware_lib = static_library(
Patrick Williams32e9ea12025-02-01 08:37:51 -0500109 'firmwareblob',
110 firmware_source,
111 conf_h,
112 implicit_include_directories: false,
113 dependencies: firmware_pre,
114)
Willy Tubcae9002021-09-12 13:58:04 -0700115
116firmware_dep = declare_dependency(
Patrick Williams32e9ea12025-02-01 08:37:51 -0500117 link_with: firmware_lib,
118 dependencies: firmware_pre,
119)
Willy Tubcae9002021-09-12 13:58:04 -0700120
121shared_module(
Patrick Williams32e9ea12025-02-01 08:37:51 -0500122 'firmwareblob',
123 'main.cpp',
124 implicit_include_directories: false,
125 dependencies: [firmware_dep, dependency('libipmid')],
126 install: true,
127 install_dir: get_option('libdir') / 'blob-ipmid',
128)
Willy Tubcae9002021-09-12 13:58:04 -0700129
Patrick Williamsacbf8752025-01-30 17:48:00 -0500130if get_option('tests').allowed()
Patrick Williams32e9ea12025-02-01 08:37:51 -0500131 subdir('test')
William A. Kennington III0df40852021-11-01 13:56:42 -0700132endif