diff --git a/cmake/XercesIntTypes.cmake b/cmake/XercesIntTypes.cmake index 47079cb000861bdb0a75e1f3429b67c67f7d269b..3390febf7aa446fd487699c535528664ac69bbda 100644 --- a/cmake/XercesIntTypes.cmake +++ b/cmake/XercesIntTypes.cmake @@ -20,13 +20,29 @@ # Integer type checks. +include(CheckCXXSourceCompiles) include(CheckIncludeFileCXX) include(CheckTypeSize) -check_include_file_cxx(cstdint HAVE_CSTDINT) +check_include_file_cxx(cstdint HAVE_CSTDINT) + +check_cxx_source_compiles(" +#include <cstdint> + +int main() { + uint32_t v1 = 342; + int64_t v2 = -23; + return 0; +}" CSTDINT_FUNCTIONAL) + check_include_file_cxx(stdint.h HAVE_STDINT_H) check_include_file_cxx(inttypes.h HAVE_INTTYPES_H) -set(XERCES_HAVE_CSTDINT ${HAVE_CSTDINT}) + +if(HAVE_CSTDINT AND CSTDINT_FUNCTIONAL) + set(XERCES_HAVE_CSTDINT TRUE) +else() + set(XERCES_HAVE_CSTDINT FALSE) +endif() set(XERCES_HAVE_STDINT_H ${HAVE_STDINT_H}) set(XERCES_HAVE_INTTYPES_H ${HAVE_INTTYPES_H})