From 50f723461d8976e74e18b86a8cb83e81944095c9 Mon Sep 17 00:00:00 2001 From: Ralf Corsepius Date: Fri, 30 Oct 2009 05:45:40 +0000 Subject: New. --- cpukit/aclocal/gcc-sanity.m4 | 88 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 cpukit/aclocal/gcc-sanity.m4 (limited to 'cpukit/aclocal') diff --git a/cpukit/aclocal/gcc-sanity.m4 b/cpukit/aclocal/gcc-sanity.m4 new file mode 100644 index 0000000000..caf925ad00 --- /dev/null +++ b/cpukit/aclocal/gcc-sanity.m4 @@ -0,0 +1,88 @@ +# Some GCC sanity checks to check for known bugs in the rtems gcc toolchains + +# Internal macro +# _RTEMS_GCC_WARNING(msg,cache-variable,include,main) +AC_DEFUN([_RTEMS_GCC_WARNING],[ + AC_CACHE_CHECK([$1], + [$2],[ + AS_IF([test x"$GCC" = xyes],[ + save_CFLAGS=$CFLAGS + CFLAGS="-Wall -Werror"]) + + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([$3],[$4])], + [$2=yes], + [$2=no]) + + AS_IF([test x"$GCC" = xyes],[ + CFLAGS=$save_CFLAGS]) + ]) +]) + +AC_DEFUN([RTEMS_CHECK_GCC_PRIxPTR],[ + _RTEMS_GCC_WARNING( + [if printf("%" PRIxPTR, uintptr_t) works], + [rtems_cv_PRIxPTR],[ + #include + #include + ],[ + uintptr_t ptr = 42; + printf("%" PRIxPTR "\n", ptr); + ]) +]) + +AC_DEFUN([RTEMS_CHECK_GCC_PRIuPTR],[ + _RTEMS_GCC_WARNING( + [if printf("%" PRIuPTR, uintptr_t) works], + [rtems_cv_PRIuPTR],[ + #include + #include + ],[ + uintptr_t ptr = 42; + printf("%" PRIuPTR "\n", ptr); + ]) +]) + +AC_DEFUN([RTEMS_CHECK_GCC_PRIdPTR],[ + _RTEMS_GCC_WARNING( + [if printf("%" PRIdPTR, intptr_t) works], + [rtems_cv_PRIdPTR],[ + #include + #include + ],[ + intptr_t ptr = -1; + printf("%" PRIdPTR "\n", ptr); + ]) +]) + +AC_DEFUN([RTEMS_CHECK_GCC_PRINTF_ZU_SIZE_T],[ + _RTEMS_GCC_WARNING( + [if printf("%zu", size_t) works], + [rtems_cv_PRINTF_ZU_SIZE_T],[ + #include + #include + ],[ + size_t sz = 1; + printf("%zu\n", sz); + ]) +]) + +AC_DEFUN([RTEMS_CHECK_GCC_PRINTF_ZD_SSIZE_T],[ + _RTEMS_GCC_WARNING( + [if printf("%zd", ssize_t) works], + [rtems_cv_PRINTF_ZD_SSIZE_T],[ + #include + #include + ],[ + ssize_t sz = 1; + printf("%zd\n", sz); + ]) +]) + +AC_DEFUN([RTEMS_CHECK_GCC_SANITY],[ +RTEMS_CHECK_GCC_PRIxPTR +RTEMS_CHECK_GCC_PRIuPTR +RTEMS_CHECK_GCC_PRIdPTR +RTEMS_CHECK_GCC_PRINTF_ZU_SIZE_T +RTEMS_CHECK_GCC_PRINTF_ZD_SSIZE_T +]) -- cgit v1.2.3