blob: 9837e171d067497b4e89ccd013a1f6a2ab801ea3 [file] [log] [blame]
Zane Shelleyf480b732020-06-11 10:05:16 -05001# See README.md for details.
Zane Shelley248cbf82019-05-03 17:07:18 -05002project('openpower-hw-diags', 'cpp',
Zane Shelley4e3faa22021-09-17 10:04:40 -05003 version: '0.1', meson_version: '>=0.50.0',
Zane Shelley248cbf82019-05-03 17:07:18 -05004 default_options: [
5 'warning_level=3',
6 'werror=true',
Ben Tyner92e39fd2020-02-05 18:11:02 -06007 'cpp_std=c++17',
Zane Shelley248cbf82019-05-03 17:07:18 -05008 ])
9
Zane Shelleyd2854b72021-08-04 22:23:20 -050010# Package directory root, which will contain required data files.
11package_dir = join_paths( get_option('prefix'),
12 get_option('datadir'),
13 meson.project_name() )
14
15# Compiler option so that source knows the package directory.
16package_args = [ '-DPACKAGE_DIR="' + package_dir + '/"' ]
17
Zane Shelleyd9573f42020-12-02 15:52:06 -060018#-------------------------------------------------------------------------------
Ben Tynereea45422021-04-15 10:54:14 -050019# Versioning
20#-------------------------------------------------------------------------------
21buildinfo = vcs_tag(command: ['git', 'describe', '--always', '--long'],
22 input: 'buildinfo.hpp.in',
23 output: 'buildinfo.hpp',
24 replace_string:'@BUILDINFO@',
25 fallback: '0')
26
27#-------------------------------------------------------------------------------
Zane Shelleyd9573f42020-12-02 15:52:06 -060028# Compiler
29#-------------------------------------------------------------------------------
30
Zane Shelleyf80482a2020-12-02 15:13:13 -060031cmplr = meson.get_compiler('cpp')
32
Zane Shelleyd9573f42020-12-02 15:52:06 -060033#-------------------------------------------------------------------------------
Zane Shelley3a851082021-03-23 16:45:28 -050034# Config file
35#-------------------------------------------------------------------------------
36
37conf = configuration_data()
38
39conf.set('CONFIG_PHAL_API', get_option('phal').enabled())
40
41configure_file(input: 'config.h.in', output: 'config.h', configuration: conf)
42
43#-------------------------------------------------------------------------------
Zane Shelleyd9573f42020-12-02 15:52:06 -060044# Include directories
45#-------------------------------------------------------------------------------
46
47# Only using the base directory. All header includes should provide the full
48# path from the base directory.
49incdir = include_directories('.')
50
51#-------------------------------------------------------------------------------
52# External library dependencies
53#-------------------------------------------------------------------------------
54
55# Look if the libhei library has already been built and installed. If not,
56# default to the subproject.
Zane Shelleyf480b732020-06-11 10:05:16 -050057libhei_dep = dependency('hei', fallback : ['libhei', 'libhei_dep'])
Ben Tyner92e39fd2020-02-05 18:11:02 -060058
Zane Shelley61465db2020-10-30 14:53:11 -050059sdbusplus_dep = dependency('sdbusplus', version : '>=1.0')
60dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
61
Zane Shelleyf80482a2020-12-02 15:13:13 -060062libpdbg_dep = cmplr.find_library('pdbg')
63
Ben Tynerb9715172021-09-29 08:46:19 -050064if get_option('phal').enabled()
65 libphal_dep = cmplr.find_library('phal')
66endif
67
Ben Tyner13683082020-06-25 12:49:47 -050068# See if phosphor-logging is available, if not use test case logging code. This
69# allows for local builds outside of CI test sandbox.
70h = 'phosphor-logging/log.hpp'
Ben Tyner13683082020-06-25 12:49:47 -050071if cmplr.compiles('#include <@0@>'.format(h), name : '#include <@0@>'.format(h))
72 test_arg = []
73 phosphor_logging = true
74else
75 test_arg = [
76 '-DTEST_TRACE',
77 ]
78 phosphor_logging = false
79endif
80
Zane Shelleyc2528942020-12-02 15:42:42 -060081pthread = declare_dependency(link_args : '-pthread')
82lrt = declare_dependency(link_args : '-lrt')
83
Zane Shelley5191bae2021-08-04 22:48:28 -050084# JSON parser
85if cmplr.has_header('nlohmann/json.hpp')
86 nlohmann_json_dep = declare_dependency()
87else
88 subproject('nlohmann', required: false)
89 nlohmann_json_dep = declare_dependency(
90 include_directories: [
91 'subprojects/nlohmann/single_include',
92 'subprojects/nlohmann/single_include/nlohmann',
93 ]
94 )
95 nlohmann_json_dep = nlohmann_json_dep.as_system('system')
96endif
97
98# JSON validator
99if cmplr.has_header('valijson/validator.hpp')
100 valijson_dep = declare_dependency()
101else
102 subproject('valijson', required: false)
103 valijson_dep = declare_dependency(
104 include_directories: 'subprojects/valijson/include'
105 )
106 valijson_dep = valijson_dep.as_system('system')
107endif
108
Zane Shelleyc2528942020-12-02 15:42:42 -0600109#-------------------------------------------------------------------------------
Zane Shelleyd9573f42020-12-02 15:52:06 -0600110# Build the local static libraries
Zane Shelleyc2528942020-12-02 15:42:42 -0600111#-------------------------------------------------------------------------------
112
Ben Tyner0205f3b2020-02-24 10:24:47 -0600113subdir('analyzer')
Ben Tyneref320152020-01-09 10:31:23 -0600114subdir('attn')
Zane Shelleyf80482a2020-12-02 15:13:13 -0600115subdir('util')
Zane Shelley248cbf82019-05-03 17:07:18 -0500116
Zane Shelleyc2528942020-12-02 15:42:42 -0600117hwdiags_libs = [
118 analyzer_lib,
119 attn_lib,
120 util_lib,
121]
122
123#-------------------------------------------------------------------------------
124# Build the executable
125#-------------------------------------------------------------------------------
Ben Tyner8c2f8b22020-03-27 10:39:31 -0500126
Ben Tynerd3cda742020-05-04 08:00:28 -0500127no_listener_mode = get_option('nlmode')
128
129if not no_listener_mode.disabled()
Ben Tyner832526d2021-05-05 13:34:28 -0500130 executable('openpower-hw-diags',
131 sources : [ 'main_nl.cpp', 'cli.cpp', buildinfo ],
Zane Shelleyc2528942020-12-02 15:42:42 -0600132 link_with : hwdiags_libs,
Ben Tynerd3cda742020-05-04 08:00:28 -0500133 install : true)
134else
Ben Tyner832526d2021-05-05 13:34:28 -0500135 executable('openpower-hw-diags',
136 sources : [ 'main.cpp', 'cli.cpp', 'listener.cpp', buildinfo ],
Ben Tynerd3cda742020-05-04 08:00:28 -0500137 dependencies : [lrt, pthread],
Zane Shelleyc2528942020-12-02 15:42:42 -0600138 link_with : hwdiags_libs,
Ben Tyner13683082020-06-25 12:49:47 -0500139 cpp_args : test_arg,
Ben Tynerd3cda742020-05-04 08:00:28 -0500140 install : true)
141endif
Ben Tyner0205f3b2020-02-24 10:24:47 -0600142
Zane Shelleyc2528942020-12-02 15:42:42 -0600143#-------------------------------------------------------------------------------
144# Test, if configured
145#-------------------------------------------------------------------------------
146
Zane Shelley248cbf82019-05-03 17:07:18 -0500147build_tests = get_option('tests')
148
149if not build_tests.disabled()
150 subdir('test')
151endif