| #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 |