aboutsummaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--CMakeLists.txt72
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)