| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 1 | project( | 
 | 2 |     'openpower-proc-control', | 
 | 3 |     'cpp', | 
 | 4 |     default_options: [ | 
 | 5 |         'warning_level=3', | 
 | 6 |         'werror=true', | 
| Patrick Williams | 9e178b7 | 2021-10-06 15:33:36 -0500 | [diff] [blame] | 7 |         'cpp_std=c++20', | 
| Brad Bishop | f38b35e | 2020-11-08 10:42:34 -0500 | [diff] [blame] | 8 |         'buildtype=debugoptimized', | 
 | 9 |         'b_ndebug=if-release', | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 10 |     ], | 
 | 11 |     license: 'Apache-2.0', | 
 | 12 |     version: '1.0', | 
| Patrick Williams | 9e178b7 | 2021-10-06 15:33:36 -0500 | [diff] [blame] | 13 |     meson_version: '>=0.57.0', | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 14 | ) | 
 | 15 | add_project_arguments('-Wno-psabi', language: 'cpp') | 
 | 16 |  | 
| Patrick Williams | 9e178b7 | 2021-10-06 15:33:36 -0500 | [diff] [blame] | 17 | if get_option('cpp_std') != 'c++20' | 
 | 18 |     error('This project requires c++20') | 
| Brad Bishop | f38b35e | 2020-11-08 10:42:34 -0500 | [diff] [blame] | 19 | endif | 
 | 20 |  | 
 | 21 | if(get_option('buildtype') == 'minsize') | 
 | 22 |     add_project_arguments('-DNDEBUG', language : 'cpp') | 
 | 23 | endif | 
 | 24 |  | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 25 | cxx = meson.get_compiler('cpp') | 
 | 26 |  | 
 | 27 | extra_sources = [] | 
 | 28 | extra_dependencies = [] | 
 | 29 | extra_unit_files = [] | 
 | 30 |  | 
| Jayanth Othayoth | 3840547 | 2021-07-26 06:16:44 -0500 | [diff] [blame] | 31 | # Configuration header file(config.h) generation | 
 | 32 | conf_data = configuration_data() | 
 | 33 |  | 
 | 34 | conf_data.set_quoted('DEVTREE_EXPORT_FILTER_FILE', get_option('DEVTREE_EXPORT_FILTER_FILE'), | 
 | 35 |                       description : 'Path to the phal devtree export filter file' | 
 | 36 |                     ) | 
 | 37 |  | 
 | 38 | conf_data.set_quoted('DEVTREE_EXP_FILE', get_option('DEVTREE_EXP_FILE'), | 
 | 39 |                       description : 'Path to the devtree export copy file' | 
 | 40 |                     ) | 
 | 41 |  | 
| Jayanth Othayoth | 94fc70c | 2021-11-25 08:18:03 -0600 | [diff] [blame^] | 42 | conf_data.set_quoted('CEC_DEVTREE_RW_PATH', get_option('CEC_DEVTREE_RW_PATH'), | 
 | 43 |                       description : 'Path to the devtree file r/w version' | 
 | 44 |                     ) | 
 | 45 |  | 
 | 46 | conf_data.set_quoted('CEC_DEVTREE_RO_PATH', get_option('CEC_DEVTREE_RO_PATH'), | 
 | 47 |                       description : 'Path to the devtree file read only version' | 
 | 48 |                     ) | 
 | 49 |  | 
 | 50 | conf_data.set_quoted('CEC_INFODB_PATH', get_option('CEC_INFODB_PATH'), | 
 | 51 |                       description : 'Path to the devtree attributes based database path' | 
 | 52 |                     ) | 
 | 53 |  | 
 | 54 | conf_data.set_quoted('DEVTREE_REINIT_ATTRS_LIST', get_option('DEVTREE_REINIT_ATTRS_LIST'), | 
 | 55 |                       description : 'Path to the phal devtree reinit attribute list file' | 
 | 56 |                     ) | 
 | 57 |  | 
| Jayanth Othayoth | 3840547 | 2021-07-26 06:16:44 -0500 | [diff] [blame] | 58 | configure_file(configuration : conf_data, | 
 | 59 |                output : 'config.h' | 
 | 60 |               ) | 
 | 61 |  | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 62 | unit_subs = configuration_data() | 
| Brad Bishop | a5b4b1b | 2020-11-08 12:14:03 -0500 | [diff] [blame] | 63 | unit_subs.set('bindir', join_paths(get_option('prefix'), get_option('bindir'))) | 
 | 64 | unit_subs.set('ENABLE_PHAL_TRUE', '#') | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 65 |  | 
 | 66 | if get_option('phal').enabled() and get_option('p9').enabled() | 
 | 67 |     error('phal and p9 cannot be selected at the same time') | 
 | 68 | endif | 
 | 69 |  | 
 | 70 | build_p9 = not get_option('p9').disabled() | 
 | 71 | build_openfsi = not get_option('openfsi').disabled() | 
 | 72 | build_phal = get_option('phal').enabled() | 
 | 73 |  | 
 | 74 | if get_option('phal').enabled() and not get_option('p9').disabled() | 
 | 75 |     build_p9 = false | 
 | 76 | endif | 
 | 77 |  | 
 | 78 | summary('building p9', build_p9) | 
 | 79 | summary('building openfsi', build_openfsi) | 
 | 80 | summary('building phal', build_phal) | 
 | 81 |  | 
 | 82 | if build_p9 | 
 | 83 |     extra_sources += [ | 
 | 84 |         'procedures/p9/cleanup_pcie.cpp', | 
 | 85 |         'procedures/p9/set_sync_fsi_clock_mode.cpp', | 
 | 86 |         'procedures/p9/start_host.cpp', | 
 | 87 |         'procedures/p9/start_host_mpreboot.cpp', | 
| Jayanth Othayoth | db8d46c | 2021-10-09 02:19:57 -0500 | [diff] [blame] | 88 |         'procedures/p9/enter_mpreboot.cpp', | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 89 |     ] | 
 | 90 | endif | 
 | 91 | if build_openfsi | 
 | 92 |     extra_sources += [ | 
 | 93 |         'procedures/openfsi/scan.cpp', | 
 | 94 |     ] | 
 | 95 | endif | 
 | 96 | if build_phal | 
 | 97 |     extra_sources += [ | 
 | 98 |         'procedures/phal/start_host.cpp', | 
 | 99 |         'procedures/phal/set_SPI_mux.cpp', | 
| Chirag Sharma | a257693 | 2020-12-05 23:17:41 -0600 | [diff] [blame] | 100 |         'procedures/phal/proc_pre_poweroff.cpp', | 
| Jayanth Othayoth | cf2da1b | 2021-07-29 03:15:20 -0500 | [diff] [blame] | 101 |         'procedures/phal/check_host_running.cpp', | 
 | 102 |         'procedures/phal/import_devtree.cpp', | 
| Jayanth Othayoth | db8d46c | 2021-10-09 02:19:57 -0500 | [diff] [blame] | 103 |         'procedures/phal/enter_mpreboot.cpp', | 
| Jayanth Othayoth | 94fc70c | 2021-11-25 08:18:03 -0600 | [diff] [blame^] | 104 |         'procedures/phal/reinit_devtree.cpp', | 
| Jayanth Othayoth | 25e39c8 | 2021-07-12 01:00:17 -0500 | [diff] [blame] | 105 |         'extensions/phal/common_utils.cpp', | 
| Jayanth Othayoth | c3d6b87 | 2021-07-28 05:07:25 -0500 | [diff] [blame] | 106 |         'extensions/phal/pdbg_utils.cpp', | 
| Jayanth Othayoth | 6552de0 | 2021-07-12 00:55:57 -0500 | [diff] [blame] | 107 |         'extensions/phal/create_pel.cpp', | 
 | 108 |         'extensions/phal/phal_error.cpp', | 
| Jayanth Othayoth | 21a889f | 2021-10-07 06:53:40 -0500 | [diff] [blame] | 109 |         'extensions/phal/dump_utils.cpp', | 
| Jayanth Othayoth | 4f7b9bd | 2021-11-25 08:11:12 -0600 | [diff] [blame] | 110 |         'temporary_file.cpp', | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 111 |     ] | 
 | 112 |     extra_dependencies += [ | 
 | 113 |         dependency('libdt-api'), | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 114 |         cxx.find_library('ekb'), | 
 | 115 |         cxx.find_library('ipl'), | 
| Jayanth Othayoth | 4079f09 | 2021-09-20 07:36:54 -0500 | [diff] [blame] | 116 |         cxx.find_library('phal'), | 
| Jayanth Othayoth | 94fc70c | 2021-11-25 08:18:03 -0600 | [diff] [blame^] | 117 |         cxx.find_library('dtree'), | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 118 |     ] | 
 | 119 |     extra_unit_files = [ | 
| Andrew Geissler | 1dc0829 | 2021-06-22 17:14:54 -0500 | [diff] [blame] | 120 |         'service_files/set-spi-mux.service', | 
 | 121 |         'service_files/phal-reinit-devtree.service', | 
 | 122 |         'service_files/proc-pre-poweroff@.service', | 
| Andrew Geissler | 8e73da0 | 2021-06-23 15:43:21 -0500 | [diff] [blame] | 123 |         'service_files/op-reset-host-check@.service', | 
| Andrew Geissler | 3292c06 | 2021-06-23 21:11:10 -0500 | [diff] [blame] | 124 |         'service_files/op-reset-host-clear.service', | 
| Jayanth Othayoth | a089bd2 | 2021-07-30 01:32:31 -0500 | [diff] [blame] | 125 |         'service_files/phal-import-devtree@.service', | 
| Jayanth Othayoth | 07e9a6a | 2021-07-30 03:52:13 -0500 | [diff] [blame] | 126 |         'service_files/phal-export-devtree@.service', | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 127 |     ] | 
| Brad Bishop | a5b4b1b | 2020-11-08 12:14:03 -0500 | [diff] [blame] | 128 |     unit_subs.set('ENABLE_PHAL_TRUE', '') | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 129 | endif | 
 | 130 |  | 
 | 131 | executable( | 
 | 132 |     'openpower-proc-control', | 
 | 133 |     [ | 
 | 134 |         'cfam_access.cpp', | 
 | 135 |         'ext_interface.cpp', | 
 | 136 |         'filedescriptor.cpp', | 
 | 137 |         'proc_control.cpp', | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 138 |         'targeting.cpp', | 
 | 139 |         'procedures/common/cfam_overrides.cpp', | 
 | 140 |         'procedures/common/cfam_reset.cpp', | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 141 |         'procedures/common/collect_sbe_hb_data.cpp', | 
| Jayanth Othayoth | c483181 | 2021-06-08 01:33:40 -0500 | [diff] [blame] | 142 |         'util.cpp', | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 143 |     ] + extra_sources, | 
 | 144 |     dependencies: [ | 
 | 145 |         dependency('libgpiodcxx'), | 
 | 146 |         cxx.find_library('pdbg'), | 
 | 147 |         dependency('phosphor-dbus-interfaces'), | 
 | 148 |         dependency('phosphor-logging'), | 
 | 149 |         dependency('sdbusplus'), | 
 | 150 |         dependency('threads'), | 
| Jayanth Othayoth | c483181 | 2021-06-08 01:33:40 -0500 | [diff] [blame] | 151 |         dependency('fmt'), | 
| Brad Bishop | ce08fb9 | 2020-11-08 09:50:48 -0500 | [diff] [blame] | 152 |     ] + extra_dependencies, | 
 | 153 |     install: true | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 154 | ) | 
 | 155 |  | 
 | 156 | executable( | 
 | 157 |     'openpower-proc-nmi', | 
 | 158 |     [ | 
 | 159 |         'nmi_main.cpp', | 
 | 160 |         'nmi_interface.cpp', | 
 | 161 |     ], | 
 | 162 |     dependencies: [ | 
 | 163 |         cxx.find_library('pdbg'), | 
 | 164 |         dependency('phosphor-dbus-interfaces'), | 
 | 165 |         dependency('phosphor-logging'), | 
 | 166 |         dependency('sdbusplus'), | 
| Brad Bishop | ce08fb9 | 2020-11-08 09:50:48 -0500 | [diff] [blame] | 167 |    ], | 
 | 168 |    install: true | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 169 | ) | 
 | 170 |  | 
| Jayanth Othayoth | 13c57ad | 2021-07-16 06:02:21 -0500 | [diff] [blame] | 171 | if build_phal | 
 | 172 |     executable( | 
 | 173 |         'phal-export-devtree', | 
 | 174 |         [ | 
 | 175 |             'extensions/phal/devtree_export.cpp', | 
 | 176 |             'extensions/phal/fw_update_watch.cpp', | 
| Jayanth Othayoth | 3840547 | 2021-07-26 06:16:44 -0500 | [diff] [blame] | 177 |             'extensions/phal/pdbg_utils.cpp', | 
 | 178 |             'extensions/phal/create_pel.cpp', | 
 | 179 |             'util.cpp', | 
| Jayanth Othayoth | 13c57ad | 2021-07-16 06:02:21 -0500 | [diff] [blame] | 180 |         ], | 
 | 181 |         dependencies: [ | 
 | 182 |             dependency('phosphor-logging'), | 
 | 183 |             dependency('sdbusplus'), | 
 | 184 |             dependency('sdeventplus'), | 
 | 185 |             dependency('fmt'), | 
| Jayanth Othayoth | 3840547 | 2021-07-26 06:16:44 -0500 | [diff] [blame] | 186 |             dependency('phosphor-dbus-interfaces'), | 
 | 187 |             cxx.find_library('pdbg'), | 
| Jayanth Othayoth | 13c57ad | 2021-07-16 06:02:21 -0500 | [diff] [blame] | 188 |        ], | 
 | 189 |        install: true | 
 | 190 |    ) | 
 | 191 | endif | 
 | 192 |  | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 193 | unit_files = [ | 
| Andrew Geissler | 1dc0829 | 2021-06-22 17:14:54 -0500 | [diff] [blame] | 194 |     'service_files/pcie-poweroff@.service', | 
 | 195 |     'service_files/xyz.openbmc_project.Control.Host.NMI.service', | 
 | 196 |     'service_files/op-stop-instructions@.service', | 
 | 197 |     'service_files/op-cfam-reset.service', | 
 | 198 |     'service_files/op-continue-mpreboot@.service', | 
 | 199 |     'service_files/op-enter-mpreboot@.service', | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 200 | ] + extra_unit_files | 
 | 201 |  | 
 | 202 | systemd_system_unit_dir = dependency('systemd').get_pkgconfig_variable( | 
 | 203 |     'systemdsystemunitdir', | 
 | 204 |     define_variable: ['prefix', get_option('prefix')]) | 
 | 205 | foreach u : unit_files | 
 | 206 |     configure_file( | 
 | 207 |         configuration: unit_subs, | 
 | 208 |         input: u + '.in', | 
 | 209 |         install: true, | 
 | 210 |         install_dir: systemd_system_unit_dir, | 
| Andrew Geissler | 1dc0829 | 2021-06-22 17:14:54 -0500 | [diff] [blame] | 211 |         output: '@BASENAME@' | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 212 |     ) | 
 | 213 | endforeach | 
 | 214 |  | 
 | 215 | if not get_option('tests').disabled() | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 216 |     test( | 
 | 217 |         'utest', | 
 | 218 |         executable( | 
 | 219 |             'utest', | 
 | 220 |             'test/utest.cpp', | 
 | 221 |             'targeting.cpp', | 
 | 222 |             'filedescriptor.cpp', | 
 | 223 |             dependencies: [ | 
| Brad Bishop | 5d482d9 | 2020-11-08 09:45:18 -0500 | [diff] [blame] | 224 |                 dependency('gtest', main: true), | 
| Brad Bishop | 919e408 | 2020-10-27 18:55:19 -0400 | [diff] [blame] | 225 |                 dependency('phosphor-logging'), | 
 | 226 |             ], | 
 | 227 |             implicit_include_directories: false, | 
 | 228 |             include_directories: '.', | 
 | 229 |         ) | 
 | 230 |     ) | 
 | 231 | endif |