mirror of
https://github.com/XRPLF/rippled.git
synced 2026-07-11 01:00:20 +00:00
72 lines
2.3 KiB
CMake
72 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.
|
|
include_guard(GLOBAL)
|
|
|
|
# --------------------------------------------------------------------
|
|
# Compiler detection (C++)
|
|
# --------------------------------------------------------------------
|
|
set(is_clang FALSE)
|
|
set(is_gcc FALSE)
|
|
set(is_msvc FALSE)
|
|
set(is_xcode 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()
|
|
|
|
# Xcode generator detection
|
|
if(CMAKE_GENERATOR STREQUAL "Xcode")
|
|
set(is_xcode TRUE)
|
|
endif()
|
|
|
|
# --------------------------------------------------------------------
|
|
# 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
|
|
# --------------------------------------------------------------------
|
|
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|ARM64")
|
|
set(is_arm64 TRUE)
|
|
else()
|
|
message(FATAL_ERROR "Unknown architecture: ${CMAKE_SYSTEM_PROCESSOR}")
|
|
endif()
|
|
|
|
# --------------------------------------------------------------------
|
|
# Sanitizers
|
|
# --------------------------------------------------------------------
|
|
# SANITIZERS is injected by the Conan toolchain when a sanitizer build is
|
|
# requested (see conan/profiles/sanitizers). The flags are applied to the
|
|
# 'common' target in XrplSanitizers; this flag lets other modules know a
|
|
# sanitizer build is active without depending on that module.
|
|
if(DEFINED SANITIZERS)
|
|
set(SANITIZERS_ENABLED TRUE)
|
|
else()
|
|
set(SANITIZERS_ENABLED FALSE)
|
|
endif()
|