blob: 8a5aedf81c1ef85d99c6f5ad17a3dd0c1a230946 [file] [log] [blame]
#Only edit file in g3
project(
'gPowerD',
['c', 'cpp'],
version: '0.1',
meson_version: '>=1.1.1',
default_options: [
'cpp_std=c++23',
'c_std=c18',
],
)
conf_data = configuration_data()
conf_data.set('LOAS3_AUTH_FLAG', 0)
loas_deps = []
if get_option('loas3-validation').enabled() or not get_option('tests').enabled()
loas_deps += dependency('authentication_policy_validation')
conf_data.set('LOAS3_AUTH_FLAG', 1)
endif
conf_data.set('INSECURE_MODE_FLAG', 0)
if get_option('insecure_mode').enabled()
conf_data.set('INSECURE_MODE_FLAG', 1)
endif
conf_data.set('version', '1.1.1')
configure_file(input : 'gpowerd_build_config.h.in',
output : 'gpowerd_build_config.h',
configuration : conf_data)
safepower_include = include_directories('.')
subdir('proto')
cppc = meson.get_compiler('cpp')
safepower_deps = [
gpowerd_proto,
dependency('absl_base'),
dependency('absl_statusor'),
dependency('absl_flat_hash_set'),
]
boost = dependency('boost', modules: ['url'], version : '>=1.82.0', required : false, include_type: 'system')
safepower_deps += [boost]
daemon_context_lib = static_library(
'daemon_context',
'daemon_context.cc',
include_directories: safepower_include,
implicit_include_directories: false,
dependencies: [
safepower_deps,
],
cpp_args: ['-fno-exceptions'],
)
daemon_context = declare_dependency(
dependencies: safepower_deps,
include_directories: safepower_include,
link_with: [daemon_context_lib],
)
parse_text_proto_lib = static_library(
'parse_text_proto',
'parse_text_proto.cc',
include_directories: safepower_include,
implicit_include_directories: false,
dependencies: [
safepower_deps,
],
cpp_args: ['-fno-exceptions'],
)
parse_text_proto = declare_dependency(
dependencies: safepower_deps,
include_directories: safepower_include,
link_with: [parse_text_proto_lib],
)
subdir('bmc')
libsafepower = static_library(
'safepower_agent',
'safepower_agent.cc',
include_directories: safepower_include,
implicit_include_directories: false,
dependencies: [safepower_deps],
cpp_args: ['-fno-exceptions'],
)
safepower = declare_dependency(
dependencies: safepower_deps,
include_directories: safepower_include,
link_with: [libsafepower],
)
libconvert_proto = static_library(
'convert_proto',
'convert_proto.cc',
include_directories: safepower_include,
implicit_include_directories: false,
dependencies: [safepower_deps],
)
convert_proto = declare_dependency(
dependencies: safepower_deps,
include_directories: safepower_include,
link_with: [libconvert_proto],
)
libaction_context = static_library(
'action_context',
'action_context.cc',
include_directories: safepower_include,
implicit_include_directories: false,
dependencies: [safepower_deps, convert_proto],
)
action_context = declare_dependency(
dependencies: safepower_deps,
include_directories: safepower_include,
link_with: [libaction_context],
)
libstate_merge = static_library(
'state_merge',
'state_merge.cc',
include_directories: safepower_include,
implicit_include_directories: false,
dependencies: [safepower_deps],
)
state_merge = declare_dependency(
dependencies: safepower_deps,
include_directories: safepower_include,
link_with: [libstate_merge],
)
libcondition = static_library(
'condition',
'condition.cc',
include_directories: safepower_include,
implicit_include_directories: false,
dependencies: [safepower_deps],
)
condition = declare_dependency(
dependencies: safepower_deps,
include_directories: safepower_include,
link_with: [libcondition],
)
grpcpp_auth = dependency('libgrpc++_authorization_provider', required: false)
if not grpcpp_auth.found()
grpcpp_auth = cppc.find_library('libgrpc++_authorization_provider', dirs: '/usr/local/lib')
endif
gpowerd_deps = [
loas_deps,
parse_text_proto,
safepower,
safepower_deps,
scheduler,
proto_reader,
gmi_reader,
auth_bmc,
grpcpp_auth,
action_context,
persistent_storage,
daemon_context,
daemon_context_bmc,
state_merge,
http_connection_bmc,
redfish_bmc,
convert_proto,
condition,
state_monitor_bmc,
dependency('openssl'),
register_actions_bmc,
bmc_deps,
]
executable(
'gpowerd',
'bmc/gpowerd.cc',
implicit_include_directories: false,
dependencies: gpowerd_deps,
include_directories: safepower_include,
install:true)
build_tests = get_option('tests')
gtest = dependency('gtest', main: true, disabler: true, required: build_tests)
gmock = dependency('gmock', disabler: true, required: build_tests)
tests = [
'bmc/scheduler_bmc_test',
'bmc/proto_reader_test',
'bmc/gmi_reader_test',
'bmc/persistent_storage_bmc_test',
'bmc/daemon_context_bmc_test',
'bmc/http_connection_test',
'bmc/register_actions_bmc_test',
'bmc/machine_configs/setup_configs_test',
]
foreach t : tests
test(t, executable(t.underscorify(), t + '.cc',
implicit_include_directories: false,
dependencies: [
gtest,
gmock,
safepower,
scheduler,
proto_reader,
gmi_reader,
persistent_storage,
gpowerd_proto,
daemon_context,
daemon_context_bmc,
http_connection_bmc,
redfish_bmc,
dependency('openssl'),
boost,
state_monitor_bmc,
state_merge,
register_actions_bmc,
action_context,
condition,
parse_text_proto,
],
cpp_args: ['-fexceptions'], # Enable exceptions
include_directories: [safepower_include, 'bmc/.']))
endforeach