diff options
Diffstat (limited to '')
-rw-r--r-- | CMakeLists.txt | 72 |
1 files changed, 51 insertions, 21 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 773c1210..2b1ec771 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -447,31 +447,61 @@ ELSE(BIGENDIAN EQUAL 0) SET(VMIME_BYTE_ORDER_LITTLE_ENDIAN 0) ENDIF(BIGENDIAN EQUAL 0) -SET(VMIME_DEFAULT_8BIT_TYPE "char") -SET(VMIME_DEFAULT_16BIT_TYPE "short") -SET(VMIME_DEFAULT_32BIT_TYPE "int") +CHECK_TYPE_SIZE("char" SIZEOF_CHAR) +CHECK_TYPE_SIZE("short" SIZEOF_SHORT) +CHECK_TYPE_SIZE("int" SIZEOF_INT) +CHECK_TYPE_SIZE("long" SIZEOF_LONG) +CHECK_TYPE_SIZE("long long" SIZEOF_LONG_LONG) +CHECK_TYPE_SIZE("__int64" SIZEOF___INT64) -SET( - VMIME_8BIT_TYPE - ${VMIME_DEFAULT_8BIT_TYPE} - CACHE STRING - "The C-language 8-bit type for your platform" -) +IF(SIZEOF_CHAR EQUAL 1) + SET(VMIME_8BIT_TYPE "char") +ELSE() + MESSAGE(FATAL_ERROR "Cannot determine 8-bit type") +ENDIF() -SET( - VMIME_16BIT_TYPE - ${VMIME_DEFAULT_16BIT_TYPE} - CACHE STRING - "The C-language 16-bit type for your platform" -) +IF(SIZEOF_INT EQUAL 2) + SET(VMIME_16BIT_TYPE "int") +ELSE() + IF(SIZEOF_SHORT EQUAL 2) + SET(VMIME_16BIT_TYPE "short") + ELSE() + MESSAGE(FATAL_ERROR "Cannot determine 16-bit type") + ENDIF() +ENDIF() -SET( - VMIME_32BIT_TYPE - ${VMIME_DEFAULT_32BIT_TYPE} - CACHE STRING - "The C-language 32-bit type for your platform" -) +IF(SIZEOF_INT EQUAL 4) + SET(VMIME_32BIT_TYPE "int") +ELSE() + IF(SIZEOF_LONG EQUAL 4) + SET(VMIME_32BIT_TYPE "long") + ELSE() + IF(SIZEOF_LONG_LONG EQUAL 4) + SET(VMIME_32BIT_TYPE "long long") + ELSE() + MESSAGE(FATAL_ERROR "Cannot determine 32-bit type") + ENDIF() + ENDIF() +ENDIF() + +IF(SIZEOF_INT EQUAL 8) + SET(VMIME_64BIT_TYPE "int") +ELSE() + IF(SIZEOF_LONG EQUAL 8) + SET(VMIME_64BIT_TYPE "long") + ELSE() + IF(SIZEOF_LONG_LONG EQUAL 8) + SET(VMIME_64BIT_TYPE "long long") + ELSE() + IF(SIZEOF___INT64 EQUAL 8) + SET(VMIME_64BIT_TYPE "__int64") + ELSE() + MESSAGE(FATAL_ERROR "Cannot determine 64-bit type") + ENDIF() + ENDIF() + ENDIF() +ENDIF() INCLUDE(cmake/TargetArch.cmake) |