diff options
author | Tsuda Kageyu <tsuda.kageyu@gmail.com> | 2015-07-31 12:46:43 +0900 |
---|---|---|
committer | Tsuda Kageyu <tsuda.kageyu@gmail.com> | 2015-08-01 23:40:23 +0900 |
commit | 44d9f2bf2583d0c692ab946afd9b4ea5dfb1cebf (patch) | |
tree | 356245de10682dc93284cce88d310406e37cb77b /cmake | |
parent | 13dab99af02557b0dfd27bbcab5cdab333b220d2 (diff) |
Run-time check for floating point byte order rather than CMake check.
It's safer not to use an unofficial CMake script.
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/TestFloatFormat.c | 17 | ||||
-rw-r--r-- | cmake/modules/TestFloatFormat.cmake | 61 |
2 files changed, 0 insertions, 78 deletions
diff --git a/cmake/TestFloatFormat.c b/cmake/TestFloatFormat.c deleted file mode 100644 index 4a7b32e4..00000000 --- a/cmake/TestFloatFormat.c +++ /dev/null @@ -1,17 +0,0 @@ -int main(int argc, char **argv) -{ - int ret = 0; - - double bin1[] = { - // "*TAGLIB*" encoded as a little-endian floating-point number - (double)3.9865557444897601e-105, (double)0.0 - }; - float bin2[] = { - // "*TL*" encoded as a little-endian floating-point number - (float)1.81480400e-013, (float)0.0 - }; - ret += ((int*)bin1)[argc]; - ret += ((int*)bin2)[argc]; - - return ret; -} diff --git a/cmake/modules/TestFloatFormat.cmake b/cmake/modules/TestFloatFormat.cmake deleted file mode 100644 index ef9b1860..00000000 --- a/cmake/modules/TestFloatFormat.cmake +++ /dev/null @@ -1,61 +0,0 @@ -# Returns 1 if IEEE754 little-endian, 2 if IEEE754 big-endian, otherwise 0. - -MACRO(TEST_FLOAT_FORMAT FP_IEEE754) - IF(NOT FP_IEEE754) - TRY_COMPILE(HAVE_FLOAT_FORMAT_BIN - "${CMAKE_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestFloatFormat.c" - COPY_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestFloatFormat.bin") - - SET(FP_IEEE754 0) - - IF(HAVE_FLOAT_FORMAT_BIN) - - # dont match first/last letter because of string rounding errors :-) - FILE(STRINGS "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestFloatFormat.bin" - DOUBLE_IEEE754_LE LIMIT_COUNT 1 REGEX "TAGLIB") - FILE(STRINGS "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestFloatFormat.bin" - DOUBLE_IEEE754_BE LIMIT_COUNT 1 REGEX "BILGAT") - FILE(STRINGS "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestFloatFormat.bin" - FLOAT_IEEE754_LE LIMIT_COUNT 1 REGEX "TL") - FILE(STRINGS "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestFloatFormat.bin" - FLOAT_IEEE754_BE LIMIT_COUNT 1 REGEX "LT") - - IF(DOUBLE_IEEE754_LE AND FLOAT_IEEE754_LE) - SET(FP_IEEE754_LE 1) - ENDIF() - - IF(DOUBLE_IEEE754_BE AND FLOAT_IEEE754_BE) - SET(FP_IEEE754_BE 1) - ENDIF() - - # OS X Universal binaries will contain both strings, set it to the host - IF(FP_IEEE754_LE AND FP_IEEE754_BE) - IF(CMAKE_SYSTEM_PROCESSOR MATCHES powerpc) - SET(FP_IEEE754_LE FALSE) - SET(FP_IEEE754_BE TRUE) - ELSE() - SET(FP_IEEE754_LE TRUE) - SET(FP_IEEE754_BE FALSE) - ENDIF() - ENDIF() - - IF(FP_IEEE754_LE) - SET(FP_IEEE754 1) - ELSEIF(FP_IEEE754_BE) - SET(FP_IEEE754 2) - ENDIF() - ENDIF() - - # just some informational output for the user - IF(FP_IEEE754_LE) - MESSAGE(STATUS "Checking the floating point format - IEEE754 (LittleEndian)") - ELSEIF(FP_IEEE754_BE) - MESSAGE(STATUS "Checking the floating point format - IEEE754 (BigEndian)") - ELSE() - MESSAGE(STATUS "Checking the floating point format - Not IEEE754 or failed to detect.") - ENDIF() - - SET(FP_IEEE754 "${${FP_IEEE754}}" CACHE INTERNAL "Result of TEST_FLOAT_FORMAT" FORCE) - ENDIF() -ENDMACRO(TEST_FLOAT_FORMAT FP_IEEE754) - |