diff options
author | Brad King <brad.king@kitware.com> | 2020-07-23 12:25:04 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2020-07-23 12:25:10 (GMT) |
commit | b890937fdd6fe1dc4ad8c44780aea33f57800a48 (patch) | |
tree | 5e791f72b28b129192f788c205da2445a2c721cf /Modules | |
parent | f29d9e71329e4dc49e70024d4a5060b4367b6ebe (diff) | |
parent | 7f786c6a40b8a6a422cb4fce40f7aa17a037e1c1 (diff) | |
download | CMake-b890937fdd6fe1dc4ad8c44780aea33f57800a48.zip CMake-b890937fdd6fe1dc4ad8c44780aea33f57800a48.tar.gz CMake-b890937fdd6fe1dc4ad8c44780aea33f57800a48.tar.bz2 |
Merge topic 'CheckTypeSize-std-types'
7f786c6a40 Tests: Cover CheckTypeSize with uint8_t and std::uint8_t
371072e9e1 CheckTypeSize: Use C++-style headers to check for std:: types
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5008
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/CheckTypeSize.cmake | 54 |
1 files changed, 36 insertions, 18 deletions
diff --git a/Modules/CheckTypeSize.cmake b/Modules/CheckTypeSize.cmake index 2b07b7c..17beadc 100644 --- a/Modules/CheckTypeSize.cmake +++ b/Modules/CheckTypeSize.cmake @@ -89,17 +89,38 @@ function(__check_type_size_impl type var map builtin language) message(CHECK_START "Check size of ${type}") endif() + # Perform language check + if(language STREQUAL "C") + set(src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${var}.c) + elseif(language STREQUAL "CXX") + set(src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${var}.cpp) + else() + message(FATAL_ERROR "Unknown language:\n ${language}\nSupported languages: C, CXX.\n") + endif() + # Include header files. set(headers) if(builtin) - if(HAVE_SYS_TYPES_H) - string(APPEND headers "#include <sys/types.h>\n") - endif() - if(HAVE_STDINT_H) - string(APPEND headers "#include <stdint.h>\n") - endif() - if(HAVE_STDDEF_H) - string(APPEND headers "#include <stddef.h>\n") + if(language STREQUAL "CXX" AND type MATCHES "^std::") + if(HAVE_SYS_TYPES_H) + string(APPEND headers "#include <sys/types.h>\n") + endif() + if(HAVE_CSTDINT) + string(APPEND headers "#include <cstdint>\n") + endif() + if(HAVE_CSTDDEF) + string(APPEND headers "#include <cstddef>\n") + endif() + else() + if(HAVE_SYS_TYPES_H) + string(APPEND headers "#include <sys/types.h>\n") + endif() + if(HAVE_STDINT_H) + string(APPEND headers "#include <stdint.h>\n") + endif() + if(HAVE_STDDEF_H) + string(APPEND headers "#include <stddef.h>\n") + endif() endif() endif() foreach(h ${CMAKE_EXTRA_INCLUDE_FILES}) @@ -107,14 +128,6 @@ function(__check_type_size_impl type var map builtin language) endforeach() # Perform the check. - - if(language STREQUAL "C") - set(src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${var}.c) - elseif(language STREQUAL "CXX") - set(src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${var}.cpp) - else() - message(FATAL_ERROR "Unknown language:\n ${language}\nSupported languages: C, CXX.\n") - endif() set(bin ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${var}.bin) configure_file(${__check_type_size_dir}/CheckTypeSize.c.in ${src} @ONLY) try_compile(HAVE_${var} ${CMAKE_BINARY_DIR} ${src} @@ -232,8 +245,13 @@ macro(CHECK_TYPE_SIZE TYPE VARIABLE) check_include_file(stddef.h HAVE_STDDEF_H) elseif(_language STREQUAL "CXX") check_include_file_cxx(sys/types.h HAVE_SYS_TYPES_H) - check_include_file_cxx(stdint.h HAVE_STDINT_H) - check_include_file_cxx(stddef.h HAVE_STDDEF_H) + if("${TYPE}" MATCHES "^std::") + check_include_file_cxx(cstdint HAVE_CSTDINT) + check_include_file_cxx(cstddef HAVE_CSTDDEF) + else() + check_include_file_cxx(stdint.h HAVE_STDINT_H) + check_include_file_cxx(stddef.h HAVE_STDDEF_H) + endif() endif() endif() unset(_CHECK_TYPE_SIZE_BUILTIN_TYPES_ONLY) |