blob: d3522c55a600c7884ad4eccacd0f17a8d46bae81 [file] [log] [blame]
##===- DetectArchitecture.cmake -------------------------------------------===##
#
# Performs a try_compile to determine the architecture of the target.
#
##===----------------------------------------------------------------------===##
macro(detect_architecture variable)
try_compile(HAVE_${variable}
${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}/cmake/modules/DetectArchitecture.c
OUTPUT_VARIABLE OUTPUT
COPY_FILE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/DetectArchitecture.bin)
if(HAVE_${variable})
file(STRINGS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/DetectArchitecture.bin
DETECT_ARCH_STRING LIMIT_COUNT 1 REGEX "ARCHITECTURE IS")
if(DETECT_ARCH_STRING)
string(REGEX MATCH "[^ ]*$" DETECT_ARCH_MATCH ${DETECT_ARCH_STRING})
if(DETECT_ARCH_MATCH)
message(STATUS "Check target system architecture: ${DETECT_ARCH_MATCH}")
set(${variable} ${DETECT_ARCH_MATCH})
else()
message(SEND_ERROR "Could not detect target system architecture!")
endif()
else()
message(SEND_ERROR "Could not detect target system architecture!")
endif()
else()
message(STATUS "Determine the system architecture - failed")
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
"Determining the system architecture fialed with the following output:\n${OUTPUT}")
set(${variable})
endif()
endmacro(detect_architecture)