aboutsummaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorTsuda Kageyu <tsuda.kageyu@gmail.com>2015-07-31 12:46:43 +0900
committerTsuda Kageyu <tsuda.kageyu@gmail.com>2015-08-01 23:40:23 +0900
commit44d9f2bf2583d0c692ab946afd9b4ea5dfb1cebf (patch)
tree356245de10682dc93284cce88d310406e37cb77b /cmake
parent13dab99af02557b0dfd27bbcab5cdab333b220d2 (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.c17
-rw-r--r--cmake/modules/TestFloatFormat.cmake61
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)
-