# TestBigEndian

Deprecated since version 3.20: Superseded by the `CMAKE_<LANG>_BYTE_ORDER` variable.

This module provides a command to check the endianness (byte order) of the target architecture.

Load this module in a CMake project with:

    include(TestBigEndian)

## Commands

This module provides the following command:

test_big_endian

  Checks if the target architecture is big-endian or little-endian:

      test_big_endian(<var>)

  This command stores in variable `<var>` either 1 or 0 indicating whether the target architecture is big or little endian.

  At least one of the supported languages must be enabled in CMake project when using this command.

  Supported languages are `C`, `CXX`.

  Changed in version 3.20: This command is now mainly a wrapper around the `CMAKE_<LANG>_BYTE_ORDER` where also `OBJC`, `OBJCXX`, and `CUDA` languages are supported.

## Examples

### Example: Checking Endianness

Checking endianness of the target architecture with this module and storing the result in a CMake variable `WORDS_BIGENDIAN`:

    include(TestBigEndian)
    test_big_endian(WORDS_BIGENDIAN)

### Example: Checking Endianness in New Code

As of CMake 3.20, this module should be replaced with the `CMAKE_<LANG>_BYTE_ORDER` variable. For example, in a project, where `C` language is one of the enabled languages:

    if(CMAKE_C_BYTE_ORDER STREQUAL "BIG_ENDIAN")
      set(WORDS_BIGENDIAN TRUE)
    elseif(CMAKE_C_BYTE_ORDER STREQUAL "LITTLE_ENDIAN")
      set(WORDS_BIGENDIAN FALSE)
    else()
      set(WORDS_BIGENDIAN FALSE)
      message(WARNING "Endianness could not be determined.")
    endif()