wireshark/cmake/modules/Check64BitFormat.cmake

56 lines
2.0 KiB
CMake

# - Check if the function exists.
# CHECK_64BIT_FORMAT(FORMAT VARIABLE)
# - macro which checks if the function exists
# FORMAT - the format, e.g ll, L, q or I64
# VARIABLE - variable to store the format if it is a valdid format
#
# Example of use in a CMakeLists.txt
#
# include(Check64BitFormat)
#
# check_64bit_format(ll FORMAT_64BIT)
# check_64bit_format(L FORMAT_64BIT)
# check_64bit_format(q FORMAT_64BIT)
# check_64bit_format(I64 FORMAT_64BIT)
#
# if(NOT FORMAT_64BIT)
# message(FATAL " 64 bit format missing")
# endif(NOT FORMAT_64BIT)
#
# set(PRIX64 "${FORMAT_64BIT}X")
# set(PRIx64 "${FORMAT_64BIT}x")
# set(PRId64 "${FORMAT_64BIT}d")
# set(PRIo64 "${FORMAT_64BIT}o")
# set(PRIu64 "${FORMAT_64BIT}u")
MACRO(CHECK_64BIT_FORMAT FORMAT VARIABLE)
IF(NOT ${VARIABLE})
SET(FORMAT ${FORMAT})
#CONFIGURE_FILE("${CMAKE_ROOT}/Modules/Check64BitFormat.c.in"
CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/cmake/modules/Check64BitFormat.c.in"
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/Check64BitFormat.c" IMMEDIATE @ONLY)
TRY_RUN(RUN_RESULT_VAR COMPILE_RESULT_VAR
${CMAKE_BINARY_DIR}
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/Check64BitFormat.c
OUTPUT_VARIABLE OUTPUT)
IF(${RUN_RESULT_VAR} STREQUAL "0")
SET(${VARIABLE} 1 CACHE INTERNAL "Have format ${FORMAT}")
MESSAGE(STATUS "Looking for 64bit format ${FORMAT} - found")
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
"Determining if the format ${FORMAT} runs passed with the following output:\n"
"${OUTPUT}\n\n")
SET(${VARIABLE} ${FORMAT})
ELSE(${RUN_RESULT_VAR} STREQUAL "0")
MESSAGE(STATUS "Looking for 64bit format ${FORMAT} - not found")
SET(${VARIABLE} "" CACHE INTERNAL "Have format ${FORMAT}")
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
"Determining if the format ${FORMAT} runs with the following output:\n"
"${OUTPUT}\n\n")
ENDIF(${RUN_RESULT_VAR} STREQUAL "0")
ENDIF(NOT ${VARIABLE})
ENDMACRO(CHECK_64BIT_FORMAT)