From 7498906652cf84c9b5c69d3a99908f5ea80c1448 Mon Sep 17 00:00:00 2001 From: Cameron Cawley Date: Thu, 14 Apr 2022 15:40:50 +0100 Subject: [PATCH] cmake: Check for unsigned 64-bit integer types --- CMakeLists.txt | 6 ------ cmake/CheckSizes.cmake | 13 +++++++++++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b9ab7b0d..a486662d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,12 +56,6 @@ check_include_files(stdint.h INCLUDE_STDINT_H) check_include_files(sys/types.h INCLUDE_SYS_TYPES_H) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -set(SIZE16 int16_t) -set(USIZE16 uint16_t) -set(SIZE32 int32_t) -set(USIZE32 uint32_t) -set(SIZE64 int64_t) -set(USIZE64 uint64_t) include(CheckSizes) diff --git a/cmake/CheckSizes.cmake b/cmake/CheckSizes.cmake index 4d6c8a0b..0a99d80a 100644 --- a/cmake/CheckSizes.cmake +++ b/cmake/CheckSizes.cmake @@ -7,6 +7,7 @@ check_type_size("int32_t" INT32_SIZE LANGUAGE C) check_type_size("uint32_t" UINT32_SIZE LANGUAGE C) check_type_size("u_int32_t" U_INT32_SIZE LANGUAGE C) check_type_size("int64_t" INT64_SIZE LANGUAGE C) +check_type_size("uint64_t" UINT64_SIZE LANGUAGE C) check_type_size("short" SHORT_SIZE LANGUAGE C) check_type_size("int" INT_SIZE LANGUAGE C) check_type_size("long" LONG_SIZE LANGUAGE C) @@ -71,3 +72,15 @@ elseif(LONG_LONG_SIZE EQUAL 8) else() message(FATAL_ERROR "No 64 bit type found on this platform!") endif() + +if(UINT64_SIZE EQUAL 8) + set(USIZE64 "uint64_t") +elseif(INT_SIZE EQUAL 8) + set(USIZE64 "unsigned int") +elseif(LONG_SIZE EQUAL 8) + set(USIZE64 "unsigned long") +elseif(LONG_LONG_SIZE EQUAL 8) + set(USIZE64 "unsigned long long") +else() + message(FATAL_ERROR "No unsigned 64 bit type found on this platform!") +endif()