cmake_minimum_required(VERSION 2.8.1 FATAL_ERROR)
project(CheckTypeSize)

# Check C types
include(CheckTypeSize)
check_type_size("void*"     SIZEOF_DATA_PTR)
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)
check_type_size(size_t      SIZEOF_SIZE_T)
check_type_size(ssize_t     SIZEOF_SSIZE_T)

set(CMAKE_REQUIRED_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}")
set(CMAKE_EXTRA_INCLUDE_FILES somestruct.h)
check_type_size("((struct somestruct*)0)->someint" SIZEOF_STRUCTMEMBER_INT)
check_type_size("((struct somestruct*)0)->someptr" SIZEOF_STRUCTMEMBER_PTR)
check_type_size("((struct somestruct*)0)->somechar" SIZEOF_STRUCTMEMBER_CHAR)

# Check CXX types
check_type_size(bool        SIZEOF_BOOL LANGUAGE CXX)
check_type_size(uint8_t     SIZEOF_UINT8_T LANGUAGE CXX)
check_type_size(std::uint8_t SIZEOF_STD_UINT8_T LANGUAGE CXX)

set(CMAKE_EXTRA_INCLUDE_FILES someclass.hxx)
check_type_size("((ns::someclass*)0)->someint" SIZEOF_NS_CLASSMEMBER_INT LANGUAGE CXX)
check_type_size("((ns::someclass*)0)->someptr" SIZEOF_NS_CLASSMEMBER_PTR LANGUAGE CXX)
check_type_size("((ns::someclass*)0)->somechar" SIZEOF_NS_CLASSMEMBER_CHAR LANGUAGE CXX)
check_type_size("((ns::someclass*)0)->somebool" SIZEOF_NS_CLASSMEMBER_BOOL LANGUAGE CXX)

configure_file(config.h.in config.h)
configure_file(config.hxx.in config.hxx)

include_directories("${CheckTypeSize_BINARY_DIR}")

add_executable(CheckTypeSize CheckTypeSize.c)
add_executable(CheckTypeSizeCXX CheckTypeSize.cxx)
