-include(CheckHeader)
-include(CheckDecl)
-include(CheckCompiles)
-
# defines HAVE_BYTESWAP
# optionally defines BYTESWAP_HEADER
# optionally defines BYTESWAP_32
# sys/endian.h: defines HAVE_SYS_ENDIAN_H
# bswap32() in sys/endian.h: defines HAVE_BSWAP32
#
-function(check_byteswap)
- check_compiles(HAVE_BUILTIN_BSWAP32 "uint32_t a, b = __builtin_bswap32(a);" stdint.h)
+include(TestBigEndian)
+test_big_endian(WORDS_BIGENDIAN)
+configure_define(WORDS_BIGENDIAN)
- if(HAVE_BUILTIN_BSWAP32)
- unset(BYTESWAP_HEADER PARENT_SCOPE)
- set(BYTESWAP_32 __builtin_bswap32 PARENT_SCOPE)
- set(HAVE_BYTESWAP 1 PARENT_SCOPE)
- return()
- endif()
+configure_define(HAVE_BYTESWAP)
+configure_define_header(BYTESWAP_HEADER)
+configure_define_literal(BYTESWAP_32)
+
+check_c_source("
+ #include <stdint.h>
+ int main() {
+ uint32_t a = 1, b = __builtin_bswap32(a);
+ return b;
+ }"
+ HAVE_BUILTIN_BSWAP32
+)
+
+if(HAVE_BUILTIN_BSWAP32)
+ configure_undef(BYTESWAP_HEADER)
+ set(BYTESWAP_32 __builtin_bswap32 CACHE INTERNAL "BYTESWAP_32")
+ set(HAVE_BYTESWAP 1 CACHE INTERNAL "HAVE_BYTESWAP")
+ return()
+endif()
- check_header(byteswap.h)
- check_decl(bswap_32 byteswap.h)
+check_include(byteswap.h)
+check_symbol(bswap_32 byteswap.h)
- if(HAVE_BSWAP_32)
- if(HAVE_BYTESWAP_H)
- set(BYTESWAP_HEADER byteswap.h PARENT_SCOPE)
- endif()
- set(BYTESWAP_32 bswap_32 PARENT_SCOPE)
- set(HAVE_BYTESWAP 1 PARENT_SCOPE)
- return()
+if(HAVE_BSWAP_32)
+ if(HAVE_BYTESWAP_H)
+ set(BYTESWAP_HEADER byteswap.h CACHE INTERNAL "BYTESWAP_HEADER")
endif()
+ set(BYTESWAP_32 bswap_32 CACHE INTERNAL "BYTESWAP_32")
+ set(HAVE_BYTESWAP 1 CACHE INSTERNAL "HAVE_BYTESWAP")
+ return()
+endif()
- check_header(sys/endian.h)
- check_decl(bswap32 sys/endian.h)
+check_include(sys/endian.h)
+check_symbol(bswap32 sys/endian.h)
- if(HAVE_BSWAP32)
- if(HAVE_SYS_ENDIAN_H)
- set(BYTESWAP_HEADER sys/endian.h PARENT_SCOPE)
- endif()
- set(BYTESWAP_32 bswap32 PARENT_SCOPE)
- set(HAVE_BYTESWAP 1 PARENT_SCOPT)
- return()
+if(HAVE_BSWAP32)
+ if(HAVE_SYS_ENDIAN_H)
+ set(BYTESWAP_HEADER sys/endian.h CACHE INTERNAL "BYTESWAP_HEADER")
endif()
+ set(BYTESWAP_32 bswap32 CACHE INTERNAL "BYTESWAP_32")
+ set(HAVE_BYTESWAP 1 CACHE INTERNAL "HAVE_BYTESWAP")
+ return()
+endif()
- unset(BYTESWAP_HEADER PARENT_SCOPE)
- unset(BYTESWAP_32 PARENT_SCOPE)
- set(HAVE_BYTESWAP 0 PARENT_SCOPE)
-endfunction()
+configure_undef(BYTESWAP_HEADER)
+configure_undef(BYTESWAP_32)
+set(HAVE_BYTESWAP 0)