]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
(AC_C_RESTRICT): New macro.
authorJim Meyering <meyering@lucent.com>
Sat, 12 Apr 2003 20:53:20 +0000 (20:53 +0000)
committerJim Meyering <meyering@lucent.com>
Sat, 12 Apr 2003 20:53:20 +0000 (20:53 +0000)
lib/autoconf/c.m4

index a217dd5fb18b6681ba3732dd4e5fcfe088de7315..5fd9221ee0817cb19574e6aa7d6fdadfbd2097e2 100644 (file)
@@ -1,6 +1,6 @@
 # This file is part of Autoconf.                       -*- Autoconf -*-
 # Programming languages support.
-# Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -1077,6 +1077,41 @@ fi
 ])# AC_C_CONST
 
 
+# AC_C_RESTRICT
+# -------------
+# based on acx_restrict.m4, from the GNU Autoconf Macro Archive at:
+# http://www.gnu.org/software/ac-archive/htmldoc/acx_restrict.html
+#
+# Determine whether the C/C++ compiler supports the "restrict" keyword
+# introduced in ANSI C99, or an equivalent.  Do nothing if the compiler
+# accepts it.  Otherwise, if the compiler supports an equivalent,
+# define "restrict" to be that.  Here are some variants:
+# - GCC supports both __restrict and __restrict__
+# - older DEC Alpha C compilers support only __restrict
+# - _Restrict is the only spelling accepted by Sun WorkShop 6 update 2 C
+# Otherwise, define "restrict" to be empty.
+AN_IDENTIFIER([restrict], [AC_C_RESTRICT])
+AC_DEFUN([AC_C_RESTRICT],
+[AC_CACHE_CHECK([for C/C++ restrict keyword], ac_cv_c_restrict,
+  [ac_cv_c_restrict=no
+   # Try the official restrict keyword, then gcc's __restrict__, and
+   # the less common variants.
+   for ac_kw in restrict __restrict __restrict__ _Restrict; do
+     AC_COMPILE_IFELSE([AC_LANG_SOURCE(
+      [float * $ac_kw x;])],
+      [ac_cv_c_restrict=$ac_kw; break])
+   done
+  ])
+ case $ac_cv_c_restrict in
+   restrict) ;;
+   no) AC_DEFINE(restrict,,
+        [Define to equivalent of C99 restrict keyword, or to nothing if this
+        is not supported.  Do not define if restrict is supported directly.]) ;;
+   *)  AC_DEFINE_UNQUOTED(restrict, $ac_cv_c_restrict) ;;
+ esac
+])# AC_C_RESTRICT
+
+
 # AC_C_VOLATILE
 # -------------
 # Note that, unlike const, #defining volatile to be the empty string can