blob: 555c482a276809d72f60ddfd49107303bf688c96 [file] [log] [blame]
# See README.md for details.
project('openpower-hw-diags', 'cpp',
version: '0.1', meson_version: '>=0.57.0',
default_options: [
'warning_level=3',
'werror=true',
'cpp_std=c++20',
])
# Package directory root, which will contain required data files.
package_dir = join_paths( get_option('prefix'),
get_option('datadir'),
meson.project_name() )
# Compiler option so that source knows the package directory.
package_args = [ '-DPACKAGE_DIR="' + package_dir + '/"' ]
#-------------------------------------------------------------------------------
# Versioning
#-------------------------------------------------------------------------------
buildinfo = vcs_tag(command: ['git', 'describe', '--always', '--long'],
input: 'buildinfo.hpp.in',
output: 'buildinfo.hpp',
replace_string:'@BUILDINFO@',
fallback: '0')
#-------------------------------------------------------------------------------
# Compiler
#-------------------------------------------------------------------------------
cmplr = meson.get_compiler('cpp')
#-------------------------------------------------------------------------------
# Config file
#-------------------------------------------------------------------------------
conf = configuration_data()
conf.set('CONFIG_PHAL_API', get_option('phal').enabled())
configure_file(input: 'config.h.in', output: 'config.h', configuration: conf)
#-------------------------------------------------------------------------------
# Include directories
#-------------------------------------------------------------------------------
# Only using the base directory. All header includes should provide the full
# path from the base directory.
incdir = include_directories('.')
#-------------------------------------------------------------------------------
# External library dependencies
#-------------------------------------------------------------------------------
# Look if the libhei library has already been built and installed. If not,
# default to the subproject.
libhei_dep = dependency('hei', fallback : ['libhei', 'libhei_dep'])
sdbusplus_dep = dependency('sdbusplus', version : '>=1.0')
dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
libpdbg_dep = cmplr.find_library('pdbg')
fmt_dep = dependency('fmt')
if get_option('phal').enabled()
libphal_dep = cmplr.find_library('phal')
endif
# See if phosphor-logging is available, if not use test case logging code.
h = 'phosphor-logging/log.hpp'
if cmplr.compiles('#include <@0@>'.format(h), name : '#include <@0@>'.format(h))
test_arg = []
else
test_arg = [
'-DTEST_TRACE',
]
endif
pthread = declare_dependency(link_args : '-pthread')
lrt = declare_dependency(link_args : '-lrt')
# JSON parser
if cmplr.has_header('nlohmann/json.hpp')
nlohmann_json_dep = declare_dependency()
else
subproject('nlohmann', required: false)
nlohmann_json_dep = declare_dependency(
include_directories: [
'subprojects/nlohmann/single_include',
'subprojects/nlohmann/single_include/nlohmann',
]
)
nlohmann_json_dep = nlohmann_json_dep.as_system('system')
endif
# JSON validator
if cmplr.has_header('valijson/validator.hpp')
valijson_dep = declare_dependency()
else
subproject('valijson', required: false)
valijson_dep = declare_dependency(
include_directories: 'subprojects/valijson/include'
)
valijson_dep = valijson_dep.as_system('system')
endif
#-------------------------------------------------------------------------------
# Build the local static libraries
#-------------------------------------------------------------------------------
subdir('analyzer')
subdir('attn')
subdir('util')
hwdiags_libs = [
analyzer_lib,
attn_lib,
util_lib,
]
#-------------------------------------------------------------------------------
# Build the executable
#-------------------------------------------------------------------------------
no_listener_mode = get_option('nlmode')
if not no_listener_mode.disabled()
executable('openpower-hw-diags',
sources : [ 'main_nl.cpp', 'cli.cpp', buildinfo, plugins_src ],
dependencies : [ libhei_dep ],
link_with : hwdiags_libs,
install : true)
else
executable('openpower-hw-diags',
sources : [ 'main.cpp', 'cli.cpp', 'listener.cpp', buildinfo,
plugins_src ],
dependencies : [lrt, pthread, libhei_dep],
link_with : hwdiags_libs,
cpp_args : test_arg,
install : true)
endif
#-------------------------------------------------------------------------------
# Test, if configured
#-------------------------------------------------------------------------------
build_tests = get_option('tests')
if not build_tests.disabled()
subdir('test')
endif