diff options
author | Andy Cedilnik <andy.cedilnik@kitware.com> | 2002-10-01 19:56:18 (GMT) |
---|---|---|
committer | Andy Cedilnik <andy.cedilnik@kitware.com> | 2002-10-01 19:56:18 (GMT) |
commit | dfb25dd982b90403643c39b20232da5ee1283579 (patch) | |
tree | dca77ef6c844f18ec5a29167e8d3f5e844404791 | |
parent | 4045066f0175e82220d4abaa189b80ca15f31166 (diff) | |
download | CMake-dfb25dd982b90403643c39b20232da5ee1283579.zip CMake-dfb25dd982b90403643c39b20232da5ee1283579.tar.gz CMake-dfb25dd982b90403643c39b20232da5ee1283579.tar.bz2 |
Add test for big endian
-rw-r--r-- | Modules/TestBigEndian.c | 10 | ||||
-rw-r--r-- | Modules/TestBigEndian.cmake | 16 |
2 files changed, 26 insertions, 0 deletions
diff --git a/Modules/TestBigEndian.c b/Modules/TestBigEndian.c new file mode 100644 index 0000000..377d1b1 --- /dev/null +++ b/Modules/TestBigEndian.c @@ -0,0 +1,10 @@ +int main () { + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long l; + char c[sizeof (long)]; + } u; + u.l = 1; + exit (u.c[sizeof (long) - 1] == 1); +} diff --git a/Modules/TestBigEndian.cmake b/Modules/TestBigEndian.cmake new file mode 100644 index 0000000..c729a82 --- /dev/null +++ b/Modules/TestBigEndian.cmake @@ -0,0 +1,16 @@ +# +# Check if the system is big endian or little endian +# +# VARIABLE - variable to store the result to +# + +MACRO(TEST_BIG_ENDIAN VARIABLE) + TRY_RUN(${VARIABLE} HAVE_${VARIABLE} + ${PROJECT_BINARY_DIR} + ${CMAKE_ROOT}/Modules/TestBigEndian.c + OUTPUT_VARIABLE OUTPUT) + IF(NOT HAVE_${VARIABLE}) + WRITE_FILE(${PROJECT_BINARY_DIR}/CMakeError.log + "Determining the endianes of the system failed with the following output:\n${OUTPUT}\n") + ENDIF(NOT HAVE_${VARIABLE}) +ENDMACRO(TEST_BIG_ENDIAN) |