125 lines
3.1 KiB
CMake
125 lines
3.1 KiB
CMake
#
|
|
INCLUDE(${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake)
|
|
CHECK_FUNCTION_EXISTS(_fseeki64 HAVE_FSEEKI64)
|
|
CHECK_FUNCTION_EXISTS(fseeko HAVE_FSEEKO)
|
|
#
|
|
INCLUDE(${CMAKE_ROOT}/Modules/CheckTypeSize.cmake)
|
|
#
|
|
CHECK_TYPE_SIZE("ptrdiff_t" PTRDIFF_HAS_SIZE)
|
|
IF(PTRDIFF_HAS_SIZE)
|
|
SET(PTRDIFF_S "#define PTRDIFF_T ptrdiff_t")
|
|
IF(UNIX)
|
|
SET(PTRDIFF_FORMAT_S "#define PTRDIFF_FORMAT \"%ld\"")
|
|
ELSE()
|
|
IF(PTRDIFF_HAS_SIZE EQUAL 8)
|
|
SET(PTRDIFF_FORMAT_S "#define PTRDIFF_FORMAT \"%I64d\"")
|
|
ELSE()
|
|
SET(PTRDIFF_FORMAT_S "#define PTRDIFF_FORMAT \"%ld\"")
|
|
ENDIF()
|
|
ENDIF()
|
|
ELSE()
|
|
SET(PTRDIFF_S "/* #undef PTRDIFF_T */")
|
|
SET(PTRDIFF_FORMAT_S "/* #undef PTRDIFF_FORMAT */")
|
|
ENDIF()
|
|
#
|
|
CHECK_TYPE_SIZE("size_t" SIZE_T_HAS_SIZE)
|
|
IF(SIZE_T_HAS_SIZE)
|
|
SET(SIZE_T_S "size_t")
|
|
ENDIF()
|
|
#
|
|
IF(UNIX)
|
|
CHECK_TYPE_SIZE("int64_t" INT64_HAS_SIZE)
|
|
IF(INT64_HAS_SIZE EQUAL 8)
|
|
SET(INT64_S "int64_t")
|
|
SET(INT64_FORMAT_S "\"%ld\"")
|
|
ENDIF()
|
|
CHECK_TYPE_SIZE("uint64_t" UINT64_HAS_SIZE)
|
|
IF(UINT64_HAS_SIZE EQUAL 8)
|
|
SET(UINT64_S "uint64_t")
|
|
SET(UINT64_FORMAT_S "\"%lu\"")
|
|
ENDIF()
|
|
ELSE()
|
|
CHECK_TYPE_SIZE("signed __int64" INT64_HAS_SIZE)
|
|
IF(INT64_HAS_SIZE EQUAL 8)
|
|
SET(INT64_S "signed __int64")
|
|
SET(INT64_FORMAT_S "\"%I64d\"")
|
|
ENDIF()
|
|
CHECK_TYPE_SIZE("unsigned __int64" UINT64_HAS_SIZE)
|
|
IF(UINT64_HAS_SIZE EQUAL 8)
|
|
SET(UINT64_S "unsigned __int64")
|
|
SET(UINT64_FORMAT_S "\"%I64u\"")
|
|
ENDIF()
|
|
ENDIF()
|
|
#
|
|
IF(INT64_HAS_SIZE LESS 8)
|
|
CHECK_TYPE_SIZE("signed long" INT64_HAS_SIZE)
|
|
IF(INT64_HAS_SIZE EQUAL 8)
|
|
SET(INT64_S "signed long")
|
|
SET(INT64_FORMAT_S "\"%ld\"")
|
|
ENDIF()
|
|
ENDIF()
|
|
#
|
|
IF(UINT64_HAS_SIZE LESS 8)
|
|
CHECK_TYPE_SIZE("unsigned long" UINT64_HAS_SIZE)
|
|
IF(UINT64_HAS_SIZE EQUAL 8)
|
|
SET(UINT64_S "unsigned long")
|
|
SET(UINT64_FORMAT_S "\"%lu\"")
|
|
ENDIF()
|
|
ENDIF()
|
|
#
|
|
IF(INT64_HAS_SIZE LESS 8)
|
|
IF(UNIX)
|
|
CHECK_TYPE_SIZE("signed long long" LONG_LONG_HAS_SIZE)
|
|
IF(LONG_LONG_HAS_SIZE EQUAL 8)
|
|
SET(INT64_S "signed long long")
|
|
SET(INT64_FORMAT_S "\"%lld\"")
|
|
SET(INT64_HAS_SIZE 8)
|
|
ENDIF()
|
|
ELSE()
|
|
CHECK_TYPE_SIZE("signed long long" LONG_LONG_HAS_SIZE)
|
|
IF(LONG_LONG_HAS_SIZE EQUAL 8)
|
|
SET(INT64_S "signed long long")
|
|
SET(INT64_FORMAT_S "\"%I64d\"")
|
|
SET(INT64_HAS_SIZE 8)
|
|
ENDIF()
|
|
ENDIF()
|
|
ENDIF()
|
|
#
|
|
IF(UINT64_HAS_SIZE LESS 8)
|
|
IF(UNIX)
|
|
CHECK_TYPE_SIZE("unsigned long long" ULONG_LONG_HAS_SIZE)
|
|
IF(ULONG_LONG_HAS_SIZE EQUAL 8)
|
|
SET(UINT64_S "unsigned long long")
|
|
SET(UINT64_FORMAT_S "\"%llu\"")
|
|
SET(UINT64_HAS_SIZE 8)
|
|
ENDIF()
|
|
ELSE()
|
|
CHECK_TYPE_SIZE("unsigned long long" ULONG_LONG_HAS_SIZE)
|
|
IF(ULONG_LONG_HAS_SIZE EQUAL 8)
|
|
SET(UINT64_S "unsigned long long")
|
|
SET(UINT64_FORMAT_S "\"%I64u\"")
|
|
SET(UINT64_HAS_SIZE 8)
|
|
ENDIF()
|
|
ENDIF()
|
|
ENDIF()
|
|
#
|
|
IF(INT64_HAS_SIZE LESS 8)
|
|
CHECK_TYPE_SIZE("signed long" INT64_HAS_SIZE)
|
|
IF(INT64_HAS_SIZE)
|
|
SET(INT64_S "signed long")
|
|
SET(INT64_FORMAT_S "\"%ld\"")
|
|
ENDIF()
|
|
ENDIF()
|
|
#
|
|
IF(UINT64_HAS_SIZE LESS 8)
|
|
CHECK_TYPE_SIZE("unsigned long" UINT64_HAS_SIZE)
|
|
IF(UINT64_HAS_SIZE)
|
|
SET(UINT64_S "unsigned long")
|
|
SET(UINT64_FORMAT_S "\"%lu\"")
|
|
ENDIF()
|
|
ENDIF()
|
|
#
|
|
#MESSAGE(STATUS "INT64_HAS_SIZE => ${INT64_HAS_SIZE}")
|
|
#MESSAGE(STATUS "UINT64_HAS_SIZE => ${UINT64_HAS_SIZE}")
|
|
#
|