blob: 266b372ef25c198bb1a17b35bda14ce74ccd06e8 [file] [log] [blame]
project('bmcweb', 'cpp',
version : '1.0',
meson_version: '>=0.63.0',
default_options: [
'b_lto_mode=default',
'b_lto_threads=0',
'b_lto=true',
'b_ndebug=if-release',
'buildtype=debugoptimized',
'cpp_std=c++20',
'warning_level=3',
'werror=true',
])
cxx = meson.get_compiler('cpp')
if get_option('mtls-grpc').enabled()
# For JWT-CPP
add_project_arguments('-DJWT_DISABLE_PICOJSON', language : 'cpp')
# Build time is spent linking. Making pattern_to_entity_array constexpr fixes the problem but
# requires this compile flag to increase the constexpr limit
if (cxx.get_id() == 'gcc' and cxx.version().version_compare('>8.0'))
add_project_arguments('-fconstexpr-ops-limit=4294967295', language : 'cpp')
endif
if (cxx.get_id() == 'clang' and cxx.version().version_compare('>9.0'))
add_project_arguments('-fconstexpr-steps=4294967295', language : 'cpp')
add_project_arguments('-fclang-abi-compat=17', language : 'cpp')
endif
endif
add_project_arguments('-DGBMCWEB_COMPILATION', language : 'cpp')
# Project related links
if (not get_option('plugins-headers').enabled())
project_pretty_name = 'bmcweb'
project_url = 'https://github.com/openbmc/' + project_pretty_name
project_issues_url = project_url + '/issues/new'
summary('Issues',project_issues_url, section: 'Report Issues')
# Validate the c++ Standard
if get_option('cpp_std') != 'c++20'
error('This project requires c++20 support')
endif
# Get compiler and default build type
cxx = meson.get_compiler('cpp')
build = get_option('buildtype')
optimization = get_option('optimization')
summary('Build Type',build, section : 'Build Info')
summary('Optimization',optimization, section : 'Build Info')
# remove debug information for minsize buildtype
if(get_option('buildtype') == 'minsize')
add_project_arguments(['-fdata-sections', '-ffunction-sections'], language : 'cpp')
add_project_arguments('-DNDEBUG', language : 'cpp')
endif
# Disable lto when compiling with no optimization
if(get_option('optimization') == '0')
add_project_arguments('-fno-lto', language: 'cpp')
message('Disabling lto & its supported features as optimization is disabled')
endif
# Include Directories
incdir = include_directories(
'.',
'tlbmc',
'include',
'plugins',
'redfish-core/include',
'redfish-core/include/utils',
'redfish-core/lib',
'http',
'g3',
'redfish_authorization',
)
# Get the options and enable the respective features
## create a MAP of "options : feature_flag"
feature_map = {
'basic-auth' : '-DBMCWEB_ENABLE_BASIC_AUTHENTICATION',
'cookie-auth' : '-DBMCWEB_ENABLE_COOKIE_AUTHENTICATION',
'google-api' : '-DBMCWEB_ENABLE_GOOGLE_API',
'health-populate' : '-DHEALTH_POPULATE',
'host-serial-socket' : '-DBMCWEB_ENABLE_HOST_SERIAL_WEBSOCKET',
'ibm-management-console' : '-DBMCWEB_ENABLE_IBM_MANAGEMENT_CONSOLE',
'insecure-disable-auth' : '-DBMCWEB_INSECURE_DISABLE_AUTHX',
'insecure-disable-csrf' : '-DBMCWEB_INSECURE_DISABLE_CSRF_PREVENTION',
'insecure-disable-ssl' : '-DBMCWEB_INSECURE_DISABLE_SSL',
'insecure-push-style-notification' : '-DBMCWEB_INSECURE_ENABLE_HTTP_PUSH_STYLE_EVENTING',
'insecure-tftp-update' : '-DBMCWEB_INSECURE_ENABLE_REDFISH_FW_TFTP_UPDATE',
'insecure-ignore-content-type' : '-DBMCWEB_INSECURE_IGNORE_CONTENT_TYPE',
'kvm' : '-DBMCWEB_ENABLE_KVM' ,
'mutual-tls-auth' : '-DBMCWEB_ENABLE_MUTUAL_TLS_AUTHENTICATION',
'redfish-aggregation' : '-DBMCWEB_ENABLE_REDFISH_AGGREGATION',
'redfish-allow-deprecated-power-thermal' : '-DBMCWEB_ALLOW_DEPRECATED_POWER_THERMAL',
'redfish-bmc-journal' : '-DBMCWEB_ENABLE_REDFISH_BMC_JOURNAL',
'redfish-cpu-log' : '-DBMCWEB_ENABLE_REDFISH_CPU_LOG',
'redfish-dbus-log' : '-DBMCWEB_ENABLE_REDFISH_DBUS_LOG_ENTRIES',
'redfish-dump-log' : '-DBMCWEB_ENABLE_REDFISH_DUMP_LOG',
'redfish-external-storer' : '-DBMCWEB_ENABLE_REDFISH_EXTERNAL_STORER',
'redfish-event-log' : '-DBMCWEB_ENABLE_REDFISH_EVENT_LOG',
'redfish-host-logger' : '-DBMCWEB_ENABLE_REDFISH_HOST_LOGGER',
'redfish-host-cper-log' : '-DBMCWEB_ENABLE_REDFISH_HOST_CPER_LOG',
'redfish-ppr' : '-DBMCWEB_ENABLE_PPR',
'redfish-rasmanager-log' : '-DBMCWEB_ENABLE_RASMANAGER_EVENT_LOG',
'redfish-system-fault-log' : '-DBMCWEB_ENABLE_REDFISH_SYSTEM_FAULT_LOG',
'redfish-new-powersubsystem-thermalsubsystem' : '-DBMCWEB_NEW_POWERSUBSYSTEM_THERMALSUBSYSTEM',
'redfish-oem-manager-fan-data' : '-DBMCWEB_ENABLE_REDFISH_OEM_MANAGER_FAN_DATA',
'redfish-provisioning-feature' : '-DBMCWEB_ENABLE_REDFISH_PROVISIONING_FEATURE',
'redfish-post-to-old-updateservice' : '-DBMCWEB_ENABLE_REDFISH_UPDATESERVICE_OLD_POST_URL',
'redfish' : '-DBMCWEB_ENABLE_REDFISH',
'rest' : '-DBMCWEB_ENABLE_DBUS_REST',
'session-auth' : '-DBMCWEB_ENABLE_SESSION_AUTHENTICATION',
'static-hosting' : '-DBMCWEB_ENABLE_STATIC_HOSTING',
'vm-websocket' : '-DBMCWEB_ENABLE_VM_WEBSOCKET',
'xtoken-auth' : '-DBMCWEB_ENABLE_XTOKEN_AUTHENTICATION',
'platform-plugins' : '-DPLATFORM_PLUGINS_ENABLED',
'google-common-plugins' : '-DGOOGLE_COMMON_PLUGINS_ENABLED',
'google-plugins-internal' : '-DGOOGLE_PLUGINS_INTERNAL_ENABLED',
'efficient-expand' : '-DEFFICIENT_EXPAND_ENABLED',
'loas3-validation' : '-DENABLE_LOAS3_VALIDATION',
'redfish-boot-time-log' : '-DBMCWEB_ENABLE_REDFISH_BOOT_TIME_LOG',
'redfish-boot-time' : '-DBMCWEB_ENABLE_REDFISH_BOOT_TIME',
}
# Create a "bm_config.h" header which sets the #define BM_SIGNAL_PATH
bm_conf_data = configuration_data()
bm_conf_data.set_quoted('BM_SIGNAL_PATH', get_option('bm-signal-path'))
# sets the #define BIOS_BLOB_FILE_PATH
bm_conf_data.set_quoted('BIOS_SETTING_FILE_PATH', get_option('bios-setting-file-path'))
# sets the #define BIOS_SETTING_FILE_HANDLE
bm_conf_data.set('BIOS_SETTING_FILE_HANDLE', get_option('bios-setting-file-handle'))
# sets the #define ENABLE_BIOS_PEER_AUTH_BYPASS
bm_conf_data.set10('ENABLE_BIOS_PEER_AUTH_BYPASS', get_option('bios-peer-auth-bypass').enabled())
bm_conf_h = configure_file(
output: 'bm_config.h',
configuration: bm_conf_data)
# gRPC Features
feature_map += {'mtls-grpc' : '-DBMCWEB_ENABLE_GRPC'}
feature_map += {'insecure-grpc' : '-DBMCWEB_ENABLE_INSECURE_GRPC'}
# stateful-bmcweb feature
feature_map += {'stateful-bmcweb' : '-DBMCWEB_ENABLE_STATEFUL_BMCWEB'}
# AMD bmcweb feature
feature_map += {'amd' : '-DBMCWEB_ENABLE_AMD'}
# RDE-device feature
feature_map += {'rde-device': '-DBMCWEB_ENABLE_RDE_DEVICE'}
# CPER and Crashdump EntryID use FaultLogID
feature_map += {'cper-crashdump-use-faultlog-id': '-DBMCWEB_ENABLE_CPER_CRASHDUMP_USE_FAULTLOG_ID'}
# Get the options status and build a project summary to show which flags are
# being enabled during the configuration time.
foreach option_key,option_value : feature_map
if(get_option(option_key).enabled())
if(option_key == 'mutual-tls-auth' or option_key == 'insecure-disable-ssl')
if(get_option('insecure-disable-ssl').disabled() or get_option('mutual-tls-auth').disabled())
add_project_arguments(option_value,language:'cpp')
summary(option_key,option_value, section : 'Enabled Features')
endif
elif (option_key in ['basic-auth', 'cookie-auth', 'session-auth', 'xtoken-auth', 'mutual-tls-auth'])
if (get_option('insecure-disable-auth').disabled())
add_project_arguments(option_value, language:'cpp')
summary(option_key,option_value, section : 'Enabled Features')
endif
else
summary(option_key,option_value, section : 'Enabled Features')
add_project_arguments(option_value,language:'cpp')
endif
else
if(option_key == 'insecure-disable-ssl')
summary('ssl','-DBMCWEB_ENABLE_SSL', section : 'Enabled Features')
add_project_arguments('-DBMCWEB_ENABLE_SSL', language : 'cpp')
endif
endif
endforeach
if(get_option('tests').enabled())
summary('unittest','NA', section : 'Enabled Features')
add_project_arguments('-DUNIT_TEST_BUILD', language : 'cpp')
endif
# Add compiler arguments
# -Wpedantic, -Wextra comes by default with warning level
add_project_arguments(
cxx.get_supported_arguments([
'-Wcast-align',
'-Wformat=2',
'-Wold-style-cast',
'-Wsign-conversion',
'-Wunused',
'-Wno-attributes',
'-Wno-shadow',
]),
language: 'cpp'
)
if (cxx.get_id() == 'clang' and cxx.version().version_compare('>9.0'))
add_project_arguments(
cxx.get_supported_arguments([
'-Wno-c++98-compat-pedantic',
'-Wno-c++98-compat',
'-Wno-documentation-unknown-command',
'-Wno-documentation',
'-Wno-exit-time-destructors',
'-Wno-global-constructors',
'-Wno-newline-eof',
'-Wno-padded',
'-Wno-used-but-marked-unused',
'-Wno-weak-vtables',
'-Wno-switch-enum',
'-Wno-unused-parameter', # Flags when params are actually used
]),
language:'cpp')
endif
# if compiler is gnu-gcc , and version is > 8.0 then we add few more
# compiler arguments , we know that will pass
if (cxx.get_id() == 'gcc' and cxx.version().version_compare('>8.0'))
add_project_arguments(
cxx.get_supported_arguments([
'-Wduplicated-cond',
'-Wduplicated-branches',
'-Wlogical-op',
'-Wnull-dereference',
'-Wunused-parameter',
'-Wdouble-promotion',
'-Wno-psabi',
]),
language:'cpp')
endif
if (get_option('buildtype') != 'plain')
if (get_option('b_lto') == true and get_option('optimization')!='0')
# Reduce the binary size by removing unnecessary
# dynamic symbol table entries
add_project_arguments(
cxx.get_supported_arguments([
'-fno-fat-lto-objects',
'-fvisibility=hidden',
'-fvisibility-inlines-hidden'
]),
language: 'cpp')
if cxx.has_link_argument('-Wl,--exclude-libs,ALL')
add_project_link_arguments('-Wl,--exclude-libs,ALL', language: 'cpp')
endif
endif
endif
if( get_option('bmcweb-logging').enabled() or \
get_option('buildtype').startswith('debug'))
add_project_arguments([
'-DBMCWEB_ENABLE_LOGGING',
'-DBMCWEB_ENABLE_DEBUG'
],
language : 'cpp')
summary({'debug' :'-DBMCWEB_ENABLE_DEBUG',
'logging' : '-DBMCWEB_ENABLE_LOGGING',
},section : 'Enabled Features')
endif
# Set Compiler Security flags
security_flags = [
'-fstack-protector-strong',
'-fPIE',
'-fPIC',
'-D_FORTIFY_SOURCE=2',
'-Wformat',
'-Wformat-security'
]
## Add security flags for builds of type 'release','debugoptimized' and 'minsize'
if not (get_option('buildtype') == 'plain' or get_option('buildtype').startswith('debug'))
add_project_arguments(
cxx.get_supported_arguments([
security_flags
]),
language: 'cpp')
endif
# dependency configuration
add_project_arguments(
cxx.get_supported_arguments([
'-DBOOST_ALL_NO_LIB',
'-DBOOST_ALLOW_DEPRECATED_HEADERS',
'-DBOOST_ASIO_SEPARATE_COMPILATION',
'-DBOOST_BEAST_SEPARATE_COMPILATION',
'-DBOOST_URL_NO_SOURCE_LOCATION',
'-DBOOST_SYSTEM_NO_DEPRECATED',
'-DBOOST_ERROR_CODE_HEADER_ONLY',
'-DBOOST_ASIO_HAS_FILE',
'-DBOOST_ASIO_HAS_IO_URING',
'-DJSON_NOEXCEPTION',
'-DOPENSSL_NO_FILENAMES',
]),
language : 'cpp')
# Find the dependency modules, if not found use meson wrap to get them
# automatically during the configure step
bmcweb_dependencies = []
pam = cxx.find_library('pam', required: true)
atomic = cxx.find_library('atomic', required: true)
openssl = dependency('openssl', required : true, version : '>=3.0.1')
bmcweb_dependencies += [pam, atomic, openssl]
sdbusplus = dependency('sdbusplus', required : false, include_type: 'system')
if not sdbusplus.found()
sdbusplus_proj = subproject('sdbusplus', required: true)
sdbusplus = sdbusplus_proj.get_variable('sdbusplus_dep')
sdbusplus = sdbusplus.as_system('system')
endif
bmcweb_dependencies += sdbusplus
tinyxml = dependency('tinyxml2',
default_options: ['tests=false'],
include_type: 'system',
)
bmcweb_dependencies += tinyxml
systemd = dependency('systemd')
zlib = dependency('zlib')
bmcweb_dependencies += [systemd, zlib]
if cxx.has_header('nlohmann/json.hpp')
nlohmann_json = declare_dependency()
else
nlohmann_json_proj = subproject('nlohmann', required: true)
nlohmann_json = nlohmann_json_proj.get_variable('nlohmann_json_dep')
nlohmann_json = nlohmann_json.as_system('system')
endif
bmcweb_dependencies += nlohmann_json
boost = dependency('boost', modules: ['url', 'filesystem'], version : '>=1.82.0', required : false, include_type: 'system')
if boost.found()
bmcweb_dependencies += [boost]
else
cmake = import('cmake')
opt = cmake.subproject_options()
opt.set_override_option(
'werror',
'false',
)
opt.set_override_option(
'warning_level',
'0',
)
boost = cmake.subproject('boost', required: true, options: opt)
boost_url = boost.dependency('boost_url', include_type: 'system')
boost_headers = boost.dependency('boost_headers', include_type: 'system')
boost_beast = boost.dependency('boost_beast', include_type: 'system')
boost_callable_traits = boost.dependency('boost_callable_traits', include_type: 'system')
boost_contract = boost.dependency('boost_contract', include_type: 'system')
boost_compute = boost.dependency('boost_compute', include_type: 'system')
boost_process = boost.dependency('boost_process', include_type: 'system')
bmcweb_dependencies += [
boost_url,
boost_headers,
boost_beast,
boost_callable_traits,
boost_contract,
boost_compute,
boost_process,
]
endif
if get_option('tests').enabled()
gtest = dependency('gtest', main: true,disabler: true, required : false)
gmock = dependency('gmock', required : false)
if not gtest.found() and get_option('tests').enabled()
gtest_proj = subproject('gtest', required: true)
gtest = gtest_proj.get_variable('gtest_main_dep')
gmock = gtest_proj.get_variable('gmock_dep')
endif
gtest = gtest.as_system('system')
gmock = gmock.as_system('system')
endif
systemd_system_unit_dir = systemd.get_variable(pkgconfig: 'systemdsystemunitdir')
bindir = get_option('prefix') + '/' +get_option('bindir')
summary({
'prefix' : get_option('prefix'),
'bindir' : bindir,
'systemd unit directory' : systemd_system_unit_dir
}, section : 'Directories')
# disable static hosting
# install_subdir('static', install_dir : 'share/www', strip_directory : true)
# Config subdirectory
subdir('config')
bmcweb_dependencies += conf_h_dep
abseils = [
'base',
'flags',
'flags_internal',
'flags_marshalling',
'flags_parse',
'flags_reflection',
'log_entry',
'log_flags',
'log_globals',
'log_initialize',
'log_internal_check_op',
'log_internal_conditions',
'log_internal_format',
'log_internal_globals',
'log_internal_log_sink_set',
'log_internal_message',
'log_severity',
'log_sink',
'strings',
'status',
'statusor',
'random_distributions',
'random_seed_sequences',
'random_internal_randen',
'random_internal_pool_urbg',
'random_internal_randen_slow',
'random_internal_randen_hwaes',
'random_internal_randen_hwaes_impl',
'hash',
]
abseil_deps = []
foreach absl : abseils
abseil_deps += dependency('absl_' + absl)
endforeach
bmcweb_dependencies += abseil_deps
# Source files
fs = import('fs')
srcfiles_bmcweb = files(
'http/app.cpp',
'http/app_singleton.cpp',
'http/http_request.cpp',
'http/http_response.cpp',
'http/routing.cpp',
'http/smart_router.cc',
'http/utility.cpp',
'include/dbus_utility.cpp',
'include/sessions.cpp',
'include/async_resp.cpp',
'redfish-core/include/query.cpp',
'redfish-core/lib/chassis.cpp',
'redfish-core/lib/external_storer.cpp',
'redfish-core/lib/log_services.cpp',
'redfish-core/lib/log_services_eventlog.cpp',
'redfish-core/lib/systems.cpp',
'redfish-core/src/error_messages.cpp',
'redfish-core/src/registries.cpp',
'redfish-core/src/utils/boot_time_utils.cpp',
'redfish-core/src/utils/json_utils.cpp',
'redfish-core/src/utils/subprocess_utils.cpp',
'src/boost_asio_ssl.cpp',
'src/boost_asio.cpp',
'src/boost_beast.cpp',
'g3/managed_store.cpp',
'g3/subscription_backend_impl.cpp',
'g3/event_store.cc',
'g3/subscription.cc',
'g3/subscription_impl.cc',
'g3/subscription_store_impl.cc',
'src/managed_store_http.cpp',
'g3/managed_store_types.cpp',
'g3/managed_store_serialization.cc',
'src/request_stats.cpp',
'src/request_stats_store_http.cpp',
'g3/server.cc',
)
if get_option('mtls-grpc').enabled()
subdir('redfish_authorization')
endif
if get_option('platform-plugins').enabled()
platform_plugin = dependency('gbmcweb_platform_plugin')
bmcweb_dependencies += platform_plugin
endif
if get_option('google-common-plugins').enabled()
platform_plugin = dependency('gbmcweb_google_common_plugin')
bmcweb_dependencies += platform_plugin
endif
if get_option('google-plugins-internal').enabled()
platform_plugin = dependency('gbmcweb_google_plugins_internal')
bmcweb_dependencies += platform_plugin
endif
if get_option('loas3-validation').enabled()
bmcweb_dependencies += dependency('authentication_policy_validation')
endif
libs_link_with = []
if get_option('mtls-grpc').enabled()
subdir('tlbmc')
endif
bmcweblib = static_library(
'bmcweblib',
srcfiles_bmcweb,
include_directories : incdir,
dependencies: bmcweb_dependencies,
link_with: libs_link_with,
)
libs_link_with += bmcweblib
# Build with gtest/gmock if test build
if(get_option('tests').enabled())
bmcweb_dependencies += [
gtest,
gmock,
]
endif
executable(
'bmcweb',
'src/webserver_main.cpp',
include_directories : incdir,
dependencies: bmcweb_dependencies,
link_with: libs_link_with,
link_args: '-Wl,--gc-sections',
install: true,
install_dir: bindir,
)
srcfiles_unittest = [
'src/managed_store_http_test.cpp',
'test/g3/mock_managed_store_test.cpp',
'test/http/crow_getroutes_test.cpp',
'test/http/http_response_test.cpp',
'test/http/router_test.cpp',
'test/http/utility_test.cpp',
'test/http/verb_test.cpp',
'test/include/dbus_utility_test.cpp',
'test/include/google/google_service_root_test.cpp',
'test/include/http_utility_test.cpp',
'test/include/human_sort_test.cpp',
'test/include/ibm/configfile_test.cpp',
'test/include/ibm/lock_test.cpp',
'test/include/multipart_test.cpp',
'test/include/request_stats_test.cpp',
'test/include/openbmc_dbus_rest_test.cpp',
'test/include/str_utility_test.cpp',
'test/redfish-core/include/privileges_test.cpp',
'test/redfish-core/include/redfish_aggregator_test.cpp',
'test/redfish-core/include/registries_test.cpp',
'test/redfish-core/include/query_test.cpp',
'test/redfish-core/include/utils/boot_time_utils_test.cpp',
'test/redfish-core/include/utils/hex_utils_test.cpp',
'test/redfish-core/include/utils/ip_utils_test.cpp',
'test/redfish-core/include/utils/json_utils_test.cpp',
'test/redfish-core/include/utils/location_utils_test.cpp',
'test/redfish-core/include/utils/stl_utils_test.cpp',
'test/redfish-core/include/utils/time_utils_test.cpp',
'test/redfish-core/lib/external_storer_test.cpp',
'test/redfish-core/lib/log_services_eventlog_test.cpp',
'test/redfish-core/lib/log_services_test.cpp',
'test/redfish-core/lib/service_root_test.cpp',
'test/redfish-core/lib/system_test.cpp',
'test/redfish-core/lib/thermal_subsystem_test.cpp',
'test/redfish-core/lib/power_test.cpp',
'test/redfish-core/lib/power_supply_test.cpp',
'test/redfish-core/lib/power_subsystem_test.cpp',
'test/redfish-core/lib/processor_test.cpp',
'test/redfish-core/lib/assembly_test.cpp',
'test/redfish-core/lib/power_supply_metrics_test.cpp',
'test/redfish-core/lib/chassis_test.cpp',
'test/redfish-core/lib/cable_test.cpp',
'test/redfish-core/lib/component_integrity_test.cpp',
'test/redfish-core/lib/trusted_component_test.cpp',
'test/redfish-core/lib/snapshot_fixture_test.cpp',
'test/redfish-core/lib/storage_test.cpp',
'test/redfish-core/lib/fan_test.cpp',
'test/redfish-core/lib/manager_test.cpp',
'test/redfish-core/lib/manager_diagnostic_data_test.cpp',
'test/redfish-core/lib/network_adapter_test.cpp',
'test/redfish-core/lib/pcie_test.cpp',
'test/redfish-core/lib/ports_test.cpp',
'test/redfish-core/lib/port_metrics_test.cpp',
'test/redfish-core/lib/update_service_test.cpp',
'test/redfish-core/lib/boot_time_test.cpp',
'test/redfish-core/lib/bios_test.cpp',
'test/redfish-core/lib/bios_multi_host_test.cpp',
'plugins/macros_test.cpp',
]
message(get_option('b_sanitize'))
if (not get_option('b_sanitize').contains('address'))
srcfiles_unittest += 'test/src/webserver_main_setup_smoke_test.cpp'
endif
message(srcfiles_unittest)
if(get_option('tests').enabled())
# generate the test executable
foreach test_src : files(srcfiles_unittest)
test_bin = executable(
fs.stem(test_src),
test_src,
link_with: libs_link_with,
include_directories : incdir,
install_dir: bindir,
dependencies: bmcweb_dependencies + [
gtest,
gmock,
]
)
test(fs.stem(test_src), test_bin, timeout: 600)
endforeach
endif
# Pacemaker depends on grpc redfish for frontend service.
if get_option('mtls-grpc').enabled()
executable(
'tlbmc_pacemaker',
'tlbmc/pacemaker/pacemaker.cc',
'tlbmc/pacemaker/pacemaker_main.cc',
link_args: '-Wl,--gc-sections',
include_directories : incdir,
dependencies: bmcweb_dependencies,
link_with: libs_link_with,
install: get_option('tlbmc-pacemaker').enabled(),
)
executable(
'shared_mem_metrics_server',
'tlbmc/hal/shared_mem/demo/shared_mem_metrics_server.cc',
link_args: '-Wl,--gc-sections',
include_directories : incdir,
dependencies: bmcweb_dependencies,
link_with: libs_link_with,
install: false,
)
executable(
'shared_mem_metrics_client',
'tlbmc/hal/shared_mem/demo/shared_mem_metrics_client.cc',
link_args: '-Wl,--gc-sections',
include_directories : incdir,
dependencies: bmcweb_dependencies,
link_with: libs_link_with,
install: false,
)
executable(
'shared_mem_cli',
'tlbmc/hal/shared_mem/demo/shared_mem_cli.cc',
link_args: '-Wl,--gc-sections',
include_directories : incdir,
dependencies: bmcweb_dependencies,
link_with: libs_link_with,
install: true,
)
endif
else
gbmcweb_plugin_headers = files(
'include/sessions.hpp',
'http/app_interface.h',
'http/app.hpp',
'http/app_singleton.hpp',
'http/common.hpp',
'http/http_request.hpp',
'http/http_response.hpp',
'http/logging.hpp',
'http/router_interface.h',
'http/routing.hpp',
'http/smart_router.h',
'http/utility.hpp',
'http/verb.hpp',
'http/websocket.hpp',
'include/async_resp.hpp',
'include/dbus_utility.hpp',
'include/human_sort.hpp',
'g3/managed_store.hpp',
'g3/managed_store_types.hpp',
'g3/managed_store_serialization.h',
'g3/managed_store_clock.hpp',
'g3/subscription.h',
'include/request_stats.hpp',
'include/source_location.hpp',
'include/str_utility.hpp',
'plugins/interface.hpp',
'plugins/macros.hpp',
'redfish-core/include/registries/privilege_registry.hpp',
'redfish-core/include/utils/dbus_utils.hpp',
'redfish-core/include/error_messages.hpp',
'redfish-core/include/query.hpp',
'redfish-core/include/privileges.hpp',
'redfish-core/include/utils/json_utils.hpp',
'redfish-core/include/utils/location_utils.hpp',
'redfish-core/include/utils/time_utils.hpp',
'redfish-core/include/utils/chassis_utils.hpp',
'redfish-core/include/utils/storage_utils.hpp',
'redfish-core/include/utils/nvme_metric_utils.hpp',
'redfish-core/lib/log_services.hpp',
)
install_headers(
gbmcweb_plugin_headers,
install_dir : get_option('includedir') / 'bmcweb_plugins',
)
endif