|
|
@ -19,21 +19,29 @@ macro(TEST_BIG_ENDIAN VARIABLE) |
|
|
|
message(STATUS "Check if the system is big endian") |
|
|
|
message(STATUS "Searching 16 bit integer") |
|
|
|
|
|
|
|
if(CMAKE_C_COMPILER_LOADED) |
|
|
|
set(_test_language "C") |
|
|
|
elseif(CMAKE_CXX_COMPILER_LOADED) |
|
|
|
set(_test_language "CXX") |
|
|
|
else() |
|
|
|
message(FATAL_ERROR "TEST_BIG_ENDIAN needs either C or CXX language enabled") |
|
|
|
endif() |
|
|
|
|
|
|
|
include(CheckTypeSize) |
|
|
|
|
|
|
|
CHECK_TYPE_SIZE("unsigned short" CMAKE_SIZEOF_UNSIGNED_SHORT) |
|
|
|
CHECK_TYPE_SIZE("unsigned short" CMAKE_SIZEOF_UNSIGNED_SHORT LANGUAGE ${_test_language}) |
|
|
|
if(CMAKE_SIZEOF_UNSIGNED_SHORT EQUAL 2) |
|
|
|
message(STATUS "Using unsigned short") |
|
|
|
set(CMAKE_16BIT_TYPE "unsigned short") |
|
|
|
else() |
|
|
|
CHECK_TYPE_SIZE("unsigned int" CMAKE_SIZEOF_UNSIGNED_INT) |
|
|
|
CHECK_TYPE_SIZE("unsigned int" CMAKE_SIZEOF_UNSIGNED_INT LANGUAGE ${_test_language}) |
|
|
|
if(CMAKE_SIZEOF_UNSIGNED_INT) |
|
|
|
message(STATUS "Using unsigned int") |
|
|
|
set(CMAKE_16BIT_TYPE "unsigned int") |
|
|
|
|
|
|
|
else() |
|
|
|
|
|
|
|
CHECK_TYPE_SIZE("unsigned long" CMAKE_SIZEOF_UNSIGNED_LONG) |
|
|
|
CHECK_TYPE_SIZE("unsigned long" CMAKE_SIZEOF_UNSIGNED_LONG LANGUAGE ${_test_language}) |
|
|
|
if(CMAKE_SIZEOF_UNSIGNED_LONG) |
|
|
|
message(STATUS "Using unsigned long") |
|
|
|
set(CMAKE_16BIT_TYPE "unsigned long") |
|
|
@ -45,17 +53,21 @@ macro(TEST_BIG_ENDIAN VARIABLE) |
|
|
|
|
|
|
|
endif() |
|
|
|
|
|
|
|
if(_test_language STREQUAL "CXX") |
|
|
|
set(_test_file "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/TestEndianess.cpp") |
|
|
|
else() |
|
|
|
set(_test_file "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/TestEndianess.c") |
|
|
|
endif() |
|
|
|
|
|
|
|
configure_file("${CMAKE_ROOT}/Modules/TestEndianess.c.in" |
|
|
|
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/TestEndianess.c" |
|
|
|
${_test_file} |
|
|
|
@ONLY) |
|
|
|
|
|
|
|
file(READ "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/TestEndianess.c" |
|
|
|
TEST_ENDIANESS_FILE_CONTENT) |
|
|
|
file(READ ${_test_file} TEST_ENDIANESS_FILE_CONTENT) |
|
|
|
|
|
|
|
try_compile(HAVE_${VARIABLE} |
|
|
|
"${CMAKE_BINARY_DIR}" |
|
|
|
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/TestEndianess.c" |
|
|
|
${_test_file} |
|
|
|
OUTPUT_VARIABLE OUTPUT |
|
|
|
COPY_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestEndianess.bin" ) |
|
|
|
|
|
|
|