Add graph references
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
include(CheckCSourceRuns)
|
||||
|
||||
cmake_push_check_state(RESET)
|
||||
|
||||
# Check whether IEEE754 doubles are laid out in little-endian order. We do this
|
||||
# only when not cross-compiling; during cross-compilation, the host architecture
|
||||
# might have different endianness conventions than the target, and we are running
|
||||
# the test on the host here
|
||||
if(CMAKE_CROSSCOMPILING AND NOT CMAKE_CROSSCOMPILING_EMULATOR)
|
||||
# If we are cross-compiling and we have no emulator, let's just assume that
|
||||
# IEEE754 doubles use the same endianness as uint64_t
|
||||
set(IEEE754_DOUBLE_ENDIANNESS_MATCHES YES)
|
||||
message(WARNING "\
|
||||
igraph is being cross-compiled, therefore we cannot validate whether the \
|
||||
endianness of IEEE754 doubles is the same as the endianness of uint64_t. \
|
||||
Most likely it is, unless you are compiling for some esoteric platform, \
|
||||
in which case you need make sure that this is the case on your own.\
|
||||
")
|
||||
else()
|
||||
if(NOT DEFINED CACHE{IEEE754_DOUBLE_ENDIANNESS_MATCHES})
|
||||
try_run(
|
||||
IEEE754_DOUBLE_ENDIANNESS_TEST_EXIT_CODE
|
||||
IEEE754_DOUBLE_ENDIANNESS_TEST_COMPILES
|
||||
${CMAKE_BINARY_DIR}
|
||||
${PROJECT_SOURCE_DIR}/etc/cmake/ieee754_endianness_check.c
|
||||
RUN_OUTPUT_VARIABLE IEEE754_DOUBLE_ENDIANNESS_TEST_RESULT
|
||||
)
|
||||
# Strip trailing newline, which is necessary on some platforms (such as node.js)
|
||||
# to complete printing the output.
|
||||
string(STRIP "${IEEE754_DOUBLE_ENDIANNESS_TEST_RESULT}" IEEE754_DOUBLE_ENDIANNESS_TEST_RESULT)
|
||||
if(IEEE754_DOUBLE_ENDIANNESS_TEST_EXIT_CODE EQUAL 0)
|
||||
if(IEEE754_DOUBLE_ENDIANNESS_TEST_RESULT STREQUAL "OK")
|
||||
set(TEST_RESULT YES)
|
||||
else()
|
||||
set(TEST_RESULT NO)
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "IEEE754 double endianness test terminated abnormally.")
|
||||
endif()
|
||||
|
||||
set(
|
||||
IEEE754_DOUBLE_ENDIANNESS_MATCHES ${TEST_RESULT} CACHE BOOL
|
||||
"Specifies whether the endianness of IEEE754 doubles is the same as the endianness of uint64_t."
|
||||
FORCE
|
||||
)
|
||||
mark_as_advanced(IEEE754_DOUBLE_ENDIANNESS_MATCHES)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
cmake_pop_check_state()
|
||||
|
||||
if(NOT IEEE754_DOUBLE_ENDIANNESS_MATCHES)
|
||||
message(FATAL_ERROR "igraph only supports platforms where IEEE754 doubles have the same endianness as uint64_t.")
|
||||
endif()
|
||||
Reference in New Issue
Block a user