#[===================================================================[ declare options and variables #]===================================================================] include(CompilationEnv) set(is_ci FALSE) if(DEFINED ENV{CI}) if("$ENV{CI}" STREQUAL "true") set(is_ci TRUE) endif() endif() get_directory_property(has_parent PARENT_DIRECTORY) if(has_parent) set(is_root_project OFF) else() set(is_root_project ON) endif() option(assert "Enables asserts, even in release builds" OFF) option(xrpld "Build xrpld" ON) option(tests "Build tests" ON) if(tests) # This setting allows making a separate workflow to test fees other than default 10 if(NOT UNIT_TEST_REFERENCE_FEE) set(UNIT_TEST_REFERENCE_FEE "10" CACHE STRING "") endif() endif() option(unity "Creates a build using UNITY support in cmake." OFF) if(unity) if(NOT is_ci) set(CMAKE_UNITY_BUILD_BATCH_SIZE 15 CACHE STRING "") endif() set(CMAKE_UNITY_BUILD ON CACHE BOOL "Do a unity build") endif() if(is_clang AND is_linux) option(voidstar "Enable Antithesis instrumentation." OFF) endif() if(is_gcc OR is_clang) include(ProcessorCount) ProcessorCount(PROCESSOR_COUNT) option(coverage "Generates coverage info." OFF) option(profile "Add profiling flags" OFF) set(coverage_format "html-details" CACHE STRING "Output format of the coverage report." ) set(coverage_extra_args "" CACHE STRING "Additional arguments to pass to gcovr." ) option(wextra "compile with extra gcc/clang warnings enabled" ON) else() set(profile OFF CACHE BOOL "gcc/clang only" FORCE) set(coverage OFF CACHE BOOL "gcc/clang only" FORCE) set(wextra OFF CACHE BOOL "gcc/clang only" FORCE) endif() if(is_linux AND NOT SANITIZER) option(BUILD_SHARED_LIBS "build shared xrpl libraries" OFF) option(static "link protobuf, openssl, libc++, and boost statically" ON) option(perf "Enables flags that assist with perf recording" OFF) option(use_gold "enables detection of gold (binutils) linker" ON) option(use_mold "enables detection of mold (binutils) linker" ON) # Set a default value for the log flag based on the build type. This provides a sensible default (on for debug, off # for release) while still allowing the user to override it for any build. if(CMAKE_BUILD_TYPE STREQUAL "Debug") set(TRUNCATED_LOGS_DEFAULT ON) else() set(TRUNCATED_LOGS_DEFAULT OFF) endif() option( TRUNCATED_THREAD_NAME_LOGS "Show warnings about truncated thread names on Linux." ${TRUNCATED_LOGS_DEFAULT} ) if(TRUNCATED_THREAD_NAME_LOGS) add_compile_definitions(TRUNCATED_THREAD_NAME_LOGS) endif() else() # we are not ready to allow shared-libs on windows because it would require export declarations. On macos it's more # feasible, but static openssl produces odd linker errors, thus we disable shared lib builds for now. set(BUILD_SHARED_LIBS OFF CACHE BOOL "build shared xrpl libraries - OFF for win/macos" FORCE ) set(static ON CACHE BOOL "static link, linux only. ON for WIN/macos" FORCE) set(perf OFF CACHE BOOL "perf flags, linux only" FORCE) set(use_gold OFF CACHE BOOL "gold linker, linux only" FORCE) set(use_mold OFF CACHE BOOL "mold linker, linux only" FORCE) endif() if(is_clang) option(use_lld "enables detection of lld linker" ON) else() set(use_lld OFF CACHE BOOL "try lld linker, clang only" FORCE) endif() option(jemalloc "Enables jemalloc for heap profiling" OFF) option(werr "treat warnings as errors" OFF) option( local_protobuf "Force a local build of protobuf instead of looking for an installed version." OFF ) option( local_grpc "Force a local build of gRPC instead of looking for an installed version." OFF ) # the remaining options are obscure and rarely used option( beast_no_unit_test_inline "Prevents unit test definitions from being inserted into global table" OFF ) option( single_io_service_thread "Restricts the number of threads calling io_context::run to one. \ This can be useful when debugging." OFF ) option( boost_show_deprecated "Allow boost to fail on deprecated usage. Only useful if you're trying\ to find deprecated calls." OFF ) if(WIN32) option( beast_disable_autolink "Disables autolinking of system libraries on WIN32" OFF ) else() set(beast_disable_autolink OFF CACHE BOOL "WIN32 only" FORCE) endif() if(coverage) message(STATUS "coverage build requested - forcing Debug build") set(CMAKE_BUILD_TYPE Debug CACHE STRING "build type" FORCE) endif()