reorganize OS detection

This commit is contained in:
Konstantinos Margaritis 2023-12-20 17:16:45 +02:00
parent 44f19c1006
commit a7a12844e7

View File

@ -7,28 +7,28 @@ if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
endif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") endif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
option(FAT_RUNTIME "Build a library that supports multiple microarchitectures" OFF) option(FAT_RUNTIME "Build a library that supports multiple microarchitectures" OFF)
message("Checking Fat Runtime Requirements...") if (FAT_RUNTIME)
if (FAT_RUNTIME AND NOT LINUX) message("Checking Fat Runtime Requirements...")
message(FATAL_ERROR "Fat runtime is only supported on Linux OS") if (NOT LINUX)
endif() message(FATAL_ERROR "Fat runtime is only supported on Linux OS")
if (USE_CPU_NATIVE AND FAT_RUNTIME)
message(FATAL_ERROR "Fat runtime is not compatible with Native CPU detection")
endif()
if (FAT_RUNTIME AND LINUX)
if (NOT (ARCH_IA32 OR ARCH_X86_64 OR ARCH_AARCH64))
message(FATAL_ERROR "Fat runtime is only supported on Intel and Aarch64 architectures")
else() else()
message(STATUS "Building Fat runtime for multiple microarchitectures") if (USE_CPU_NATIVE AND FAT_RUNTIME)
message(STATUS "generator is ${CMAKE_GENERATOR}") message(FATAL_ERROR "Fat runtime is not compatible with Native CPU detection")
if (NOT (CMAKE_GENERATOR MATCHES "Unix Makefiles" OR endif()
(CMAKE_VERSION VERSION_GREATER "3.0" AND CMAKE_GENERATOR MATCHES "Ninja")))
message (FATAL_ERROR "Building the fat runtime requires the Unix Makefiles generator, or Ninja with CMake v3.0 or higher") if (NOT (ARCH_IA32 OR ARCH_X86_64 OR ARCH_AARCH64))
message(FATAL_ERROR "Fat runtime is only supported on Intel and Aarch64 architectures")
else() else()
include (${CMAKE_MODULE_PATH}/attrib.cmake) message(STATUS "Building Fat runtime for multiple microarchitectures")
if (NOT HAS_C_ATTR_IFUNC) message(STATUS "generator is ${CMAKE_GENERATOR}")
message(FATAL_ERROR "Compiler does not support ifunc attribute, cannot build fat runtime") if (NOT (CMAKE_GENERATOR MATCHES "Unix Makefiles" OR
(CMAKE_VERSION VERSION_GREATER "3.0" AND CMAKE_GENERATOR MATCHES "Ninja")))
message (FATAL_ERROR "Building the fat runtime requires the Unix Makefiles generator, or Ninja with CMake v3.0 or higher")
else()
include (${CMAKE_MODULE_PATH}/attrib.cmake)
if (NOT HAS_C_ATTR_IFUNC)
message(FATAL_ERROR "Compiler does not support ifunc attribute, cannot build fat runtime")
endif()
endif() endif()
endif() endif()
endif() endif()
@ -36,5 +36,3 @@ if (FAT_RUNTIME AND LINUX)
message(FATAL_ERROR "Fat runtime is only built on Release builds") message(FATAL_ERROR "Fat runtime is only built on Release builds")
endif() endif()
endif () endif ()