|
|
@@ -7,46 +7,53 @@ CheckTypeSize
|
|
|
|
|
|
Check sizeof a type
|
|
|
|
|
|
-.. command:: CHECK_TYPE_SIZE
|
|
|
+.. command:: check_type_size
|
|
|
|
|
|
.. code-block:: cmake
|
|
|
|
|
|
- CHECK_TYPE_SIZE(TYPE VARIABLE [BUILTIN_TYPES_ONLY]
|
|
|
- [LANGUAGE <language>])
|
|
|
+ check_type_size(<type> <variable> [BUILTIN_TYPES_ONLY]
|
|
|
+ [LANGUAGE <language>])
|
|
|
|
|
|
- Check if the type exists and determine its size. On return,
|
|
|
- ``HAVE_${VARIABLE}`` holds the existence of the type, and ``${VARIABLE}``
|
|
|
- holds one of the following:
|
|
|
+ Check if the type exists and determine its size. Results are reported
|
|
|
+ in the following variables:
|
|
|
|
|
|
- ::
|
|
|
+ ``HAVE_<variable>``
|
|
|
+ Holds a true or false value indicating whether the type exists.
|
|
|
|
|
|
- <size> = type has non-zero size <size>
|
|
|
- "0" = type has arch-dependent size (see below)
|
|
|
- "" = type does not exist
|
|
|
+ ``<variable>``
|
|
|
+ Holds one of the following values:
|
|
|
|
|
|
- Both ``HAVE_${VARIABLE}`` and ``${VARIABLE}`` will be created as internal
|
|
|
- cache variables.
|
|
|
+ ``<size>``
|
|
|
+ Type has non-zero size ``<size>``.
|
|
|
|
|
|
- Furthermore, the variable ``${VARIABLE}_CODE`` holds C preprocessor code
|
|
|
- to define the macro ``${VARIABLE}`` to the size of the type, or leave
|
|
|
- the macro undefined if the type does not exist.
|
|
|
+ ``0``
|
|
|
+ Type has architecture-dependent size. This may occur when
|
|
|
+ :variable:`CMAKE_OSX_ARCHITECTURES` has multiple architectures.
|
|
|
+ In this case ``<variable>_CODE`` contains C preprocessor tests
|
|
|
+ mapping from each architecture macro to the corresponding type size.
|
|
|
+ The list of architecture macros is stored in ``<variable>_KEYS``,
|
|
|
+ and the value for each key is stored in ``<variable>-<key>``.
|
|
|
|
|
|
- The variable ``${VARIABLE}`` may be ``0`` when
|
|
|
- :variable:`CMAKE_OSX_ARCHITECTURES` has multiple architectures for building
|
|
|
- OS X universal binaries. This indicates that the type size varies across
|
|
|
- architectures. In this case ``${VARIABLE}_CODE`` contains C preprocessor
|
|
|
- tests mapping from each architecture macro to the corresponding type size.
|
|
|
- The list of architecture macros is stored in ``${VARIABLE}_KEYS``, and the
|
|
|
- value for each key is stored in ``${VARIABLE}-${KEY}``.
|
|
|
+ "" (empty string)
|
|
|
+ Type does not exist.
|
|
|
|
|
|
- If the ``BUILTIN_TYPES_ONLY`` option is not given, the macro checks for
|
|
|
- headers ``<sys/types.h>``, ``<stdint.h>``, and ``<stddef.h>``, and saves
|
|
|
- results in ``HAVE_SYS_TYPES_H``, ``HAVE_STDINT_H``, and ``HAVE_STDDEF_H``.
|
|
|
- The type size check automatically includes the available headers, thus
|
|
|
- supporting checks of types defined in the headers.
|
|
|
+ ``<variable>_CODE``
|
|
|
+ Holds C preprocessor code to define the macro ``<variable>`` to the size
|
|
|
+ of the type, or to leave the macro undefined if the type does not exist.
|
|
|
|
|
|
- If ``LANGUAGE`` is set, the specified compiler will be used to perform the
|
|
|
- check. Acceptable values are ``C`` and ``CXX``.
|
|
|
+ The options are:
|
|
|
+
|
|
|
+ ``BUILTIN_TYPES_ONLY``
|
|
|
+
|
|
|
+ Support only compiler-builtin types. If *not* given, the macro checks
|
|
|
+ for headers ``<sys/types.h>``, ``<stdint.h>``, and ``<stddef.h>``, and
|
|
|
+ saves results in ``HAVE_SYS_TYPES_H``, ``HAVE_STDINT_H``, and
|
|
|
+ ``HAVE_STDDEF_H``. The type size check automatically includes the
|
|
|
+ available headers, thus supporting checks of types defined in the headers.
|
|
|
+
|
|
|
+ ``LANGUAGE <language>``
|
|
|
+ Use the ``<language>`` compiler to perform the check.
|
|
|
+ Acceptable values are ``C`` and ``CXX``.
|
|
|
|
|
|
Despite the name of the macro you may use it to check the size of more
|
|
|
complex expressions, too. To check e.g. for the size of a struct
|