mirror of
https://github.com/XRPLF/rippled.git
synced 2026-04-29 15:37:57 +00:00
77 lines
2.3 KiB
CMake
77 lines
2.3 KiB
CMake
# Shared detection of compiler, operating system, and architecture.
|
|
#
|
|
# This module centralizes environment detection so that other
|
|
# CMake modules can use the same variables instead of repeating
|
|
# checks on CMAKE_* and built-in platform variables.
|
|
|
|
# Only run once per configure step.
|
|
if(DEFINED XRPL_COMPILATION_ENV_INCLUDED)
|
|
return()
|
|
endif()
|
|
set(XRPL_COMPILATION_ENV_INCLUDED TRUE)
|
|
|
|
# --------------------------------------------------------------------
|
|
# Compiler detection (C++)
|
|
# --------------------------------------------------------------------
|
|
set(is_clang FALSE)
|
|
set(is_gcc FALSE)
|
|
set(is_msvc FALSE)
|
|
|
|
if(CMAKE_CXX_COMPILER_ID MATCHES ".*Clang") # Clang or AppleClang
|
|
set(is_clang TRUE)
|
|
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
set(is_gcc TRUE)
|
|
elseif(MSVC)
|
|
set(is_msvc TRUE)
|
|
else()
|
|
message(FATAL_ERROR "Unsupported C++ compiler: ${CMAKE_CXX_COMPILER_ID}")
|
|
endif()
|
|
|
|
# Backwards-compat aliases used in some modules
|
|
set(IS_CLANG ${is_clang})
|
|
set(IS_GCC ${is_gcc})
|
|
|
|
# --------------------------------------------------------------------
|
|
# Operating system detection
|
|
# --------------------------------------------------------------------
|
|
set(is_linux FALSE)
|
|
set(is_windows FALSE)
|
|
set(is_macos FALSE)
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
set(is_linux TRUE)
|
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
|
set(is_windows TRUE)
|
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
|
set(is_macos TRUE)
|
|
endif()
|
|
|
|
# --------------------------------------------------------------------
|
|
# Architecture / pointer size
|
|
# --------------------------------------------------------------------
|
|
set(is_64bit FALSE)
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
set(is_64bit TRUE)
|
|
endif()
|
|
set(pointer_size "${CMAKE_SIZEOF_VOID_P}")
|
|
|
|
set(is_amd64 FALSE)
|
|
set(is_arm64 FALSE)
|
|
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64")
|
|
set(is_amd64 TRUE)
|
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64")
|
|
set(is_arm64 TRUE)
|
|
else()
|
|
message(FATAL_ERROR "Unknown architecture: ${CMAKE_SYSTEM_PROCESSOR}")
|
|
endif()
|
|
|
|
# Keep legacy uppercase alias for existing code
|
|
set(IS_AMD64 ${is_amd64})
|
|
|
|
# Sanitizer configuration from environment (flags set in XrplSanitizers.cmake)
|
|
if($ENV{SANITIZERS} AND $ENV{SANITIZERS} MATCHES "Address|Thread|UndefinedBehavior")
|
|
set(SANITIZERS_ENABLED TRUE)
|
|
else()
|
|
set(SANITIZERS_ENABLED FALSE)
|
|
endif()
|