# - Define macro to determine endian type # Check if the system is big endian or little endian # TEST_BIG_ENDIAN(VARIABLE) # VARIABLE - variable to store the result to # MACRO(TEST_BIG_ENDIAN VARIABLE) SET(CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS 1) IF(NOT DEFINED ${VARIABLE}) IF("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$") TRY_RUN(${VARIABLE} HAVE_${VARIABLE} ${CMAKE_BINARY_DIR} ${CMAKE_ROOT}/Modules/TestBigEndian.c OUTPUT_VARIABLE OUTPUT) IF("${VARIABLE}" STREQUAL "FAILED_TO_RUN") MESSAGE(SEND_ERROR "TestBigEndian Failed to run with output: ${OUTPUT}") ENDIF("${VARIABLE}" STREQUAL "FAILED_TO_RUN") MESSAGE(STATUS "Check if the system is big endian") IF(HAVE_${VARIABLE}) FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log "Determining the endianes of the system passed. The system is ") IF(${VARIABLE}) FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log "big endian") MESSAGE(STATUS "Check if the system is big endian - big endian") ELSE(${VARIABLE}) FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log "little endian") MESSAGE(STATUS "Check if the system is big endian - little endian") ENDIF(${VARIABLE}) FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log "Test produced following output:\n${OUTPUT}\n\n") ELSE(HAVE_${VARIABLE}) FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log "Determining the endianes of the system failed with the following output:\n${OUTPUT}\n\n") MESSAGE("Check if the system is big endian - failed") ENDIF(HAVE_${VARIABLE}) ENDIF("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$") ENDIF(NOT DEFINED ${VARIABLE}) SET(CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS) ENDMACRO(TEST_BIG_ENDIAN)