]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
* NEWS: Rename AC_C_OPENMP to AC_OPENMP.
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 21 May 2007 17:50:57 +0000 (17:50 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 21 May 2007 17:50:57 +0000 (17:50 +0000)
* lib/autoconf/c.m4 (AC_OPENMP): Renamed from AC_C_OPENMP.
* doc/autoconf.texi (Generic Compiler Characteristics): Move
renamed AC_OPENMP documentation here, from "C compiler".
Mention C++ and Fortran.

* NEWS: Mention AC_C_OPENMP.

ChangeLog
NEWS
doc/autoconf.texi
lib/autoconf/c.m4

index 624a723aaf7561128ec0316b2e944700cdf76b96..4335adc84638f3b6e5625301ce0e9434b07b6050 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,12 +1,20 @@
+2007-05-21  Bruno Haible  <bruno@clisp.org>
+
+       * NEWS: Rename AC_C_OPENMP to AC_OPENMP.
+       * lib/autoconf/c.m4 (AC_OPENMP): Renamed from AC_C_OPENMP.
+       * doc/autoconf.texi (Generic Compiler Characteristics): Move
+       renamed AC_OPENMP documentation here, from "C compiler".
+       Mention C++ and Fortran.
+
 2007-05-21  Paul Eggert  <eggert@cs.ucla.edu>
 
        * doc/autoconf.texi (C Compiler): Tweak OpenMP documentation a bit.
 
 2007-05-21  Bruno Haible  <bruno@clisp.org>
 
+       * NEWS: Mention AC_C_OPENMP.
        * lib/autoconf/c.m4 (AC_C_OPENMP): New macro.
        * doc/autoconf.texi (C Compiler): Document AC_C_OPENMP.
-       * NEWS: Mention AC_C_OPENMP.
 
 2007-05-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
diff --git a/NEWS b/NEWS
index a91673097586c9fc9a0bebce4fb01df16573be7a..aef298427732bbe5b1f670636242c44e14d700f7 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,6 @@
 * Major changes in Autoconf 2.61b (????-??-??)
 
-** New macro AC_C_OPENMP.
+** New macro AC_OPENMP.
 
 ** AC_C_BIGENDIAN now supports universal binaries a la Mac OS X.
 
index 7ddd6f55ef83d64da6e0db4ce7850862ec168fd0..dcd47a1d72d51ad1bd13e2fdf10e096de716c0e9 100644 (file)
@@ -6272,6 +6272,43 @@ often simpler to put @option{-Werror} in the compiler flags (@code{CFLAGS},
 etc.).
 @end defmac
 
+@defmac AC_OPENMP
+@acindex{OPENMP}
+@cvindex _OPENMP
+OpenMP (@url{http://www.openmp.org/}) specifies extensions of C, C++,
+and Fortran that simplify optimization of shared memory parallelism,
+which is a common problem on multicore CPUs.
+
+If the current language is C, the macro @code{AC_C_OPENMP} sets the
+variable @code{OPENMP_CFLAGS} to the C compiler flags needed for
+supporting OpenMP@.  @code{OPENMP_CFLAGS} is set to empty if the
+compiler already supports OpenMP, if it has no way to activate OpenMP
+support, or if the user rejects OpenMP support by invoking
+@samp{configure} with the @samp{--disable-openmp} option.
+
+@code{OPENMP_CFLAGS} needs to be used when compiling programs, when
+preprocessing program source, and when linking programs.  Therefore you
+need to add @code{$(OPENMP_CFLAGS)} to the @code{CFLAGS} of C programs
+that use OpenMP@.  If you preprocess OpenMP-specific C code, you also
+need to add @code{$(OPENMP_CFLAGS)} to @code{CPPFLAGS}.  The presence of
+OpenMP support is revealed at compile time by the preprocessor macro
+@code{_OPENMP}.
+
+Linking a program with @code{OPENMP_CFLAGS} typically adds one more
+shared library to the program's dependencies, so its use is recommended
+only on programs that actually require OpenMP.
+
+If the current language is C++, @code{AC_OPENMP} sets the variable
+@code{OPENMP_CXXFLAGS}, suitably for the C++ compiler.  The same remarks
+hold as for C.
+
+If the current language is Fortran 77 or Fortran, @code{AC_OPENMP} sets
+the variable @code{OPENMP_FFLAGS} or @code{OPENMP_FCFLAGS},
+respectively.  Similar remarks as for C hold, except that
+@code{CPPFLAGS} is not used for Fortran, and no preprocessor macro
+signals OpenMP support.
+@end defmac
+
 @node C Compiler
 @subsection C Compiler Characteristics
 
@@ -6593,33 +6630,6 @@ Otherwise define @code{inline} to @code{__inline__} or @code{__inline}
 if it accepts one of those, otherwise define @code{inline} to be empty.
 @end defmac
 
-@defmac AC_C_OPENMP
-@acindex{C_OPENMP}
-@cvindex _OPENMP
-OpenMP (@url{http://www.openmp.org/}) specifies extensions of the C,
-C++, and Fortran languages that simplify optimization of shared memory
-parallelism, which is a common problem on multicore CPUs.
-
-The macro @code{AC_C_OPENMP} sets the variable @code{OPENMP_CFLAGS} to
-the C compiler flags needed for supporting OpenMP@.
-@code{OPENMP_CFLAGS} is set to empty if the compiler already supports
-OpenMP, if it has no way to activate OpenMP support, or if the user
-rejects OpenMP support by invoking @samp{configure} with the
-@samp{--disable-openmp} option.
-
-@code{OPENMP_CFLAGS} needs to be used when compiling programs, when
-preprocessing program source, and when linking programs.  Therefore you
-need to add @code{$(OPENMP_CFLAGS)} to the @code{CFLAGS} of programs
-that use OpenMP@.  If you preprocess OpenMP-specific code, you also need
-to add @code{$(OPENMP_CFLAGS)} to @code{CPPFLAGS}.  The presence of
-OpenMP support is revealed at compile time by the preprocessor macro
-@code{_OPENMP}.
-
-Linking a program with @code{OPENMP_CFLAGS} typically adds one more
-shared library to the program's dependencies, so its use is recommended
-only on programs that actually require OpenMP.
-@end defmac
-
 @defmac AC_C_CHAR_UNSIGNED
 @acindex{C_CHAR_UNSIGNED}
 @cvindex __CHAR_UNSIGNED__
index d860189aebc6bb1596d6c911d306d10e56be44a6..5a1ce18deaa496d7580c8bf8296d1fbc598c3bb0 100644 (file)
@@ -1843,17 +1843,49 @@ AC_DEFUN([AC_C_TYPEOF],
 ])
 
 
-# AC_C_OPENMP
-# -----------
+# _AC_LANG_OPENMP
+# ---------------
+# Expands to some language dependent source code for testing the presence of
+# OpenMP.
+AC_DEFUN([_AC_LANG_OPENMP],
+[_AC_LANG_DISPATCH([$0], _AC_LANG, $@)])
+
+# _AC_LANG_OPENMP(C)
+# ------------------
+m4_define([_AC_LANG_OPENMP(C)],
+[
+#ifndef _OPENMP
+ choke me
+#endif
+#include <omp.h>
+int main () { return omp_get_num_threads (); }
+])
+
+# _AC_LANG_OPENMP(C++)
+# --------------------
+m4_copy([_AC_LANG_OPENMP(C)], [_AC_LANG_OPENMP(C++)])
+
+# _AC_LANG_OPENMP(Fortran 77)
+# ---------------------------
+m4_define([_AC_LANG_OPENMP(Fortran 77)],
+[AC_LANG_FUNC_LINK_TRY([omp_get_num_threads])])
+
+# _AC_LANG_OPENMP(Fortran)
+# ---------------------------
+m4_copy([_AC_LANG_OPENMP(Fortran 77)], [_AC_LANG_OPENMP(Fortran)])
+
+# AC_OPENMP
+# ---------
 # Check which options need to be passed to the C compiler to support OpenMP.
-# Set the OPENMP_CFLAGS variable to these options.
+# Set the OPENMP_CFLAGS / OPENMP_CXXFLAGS / OPENMP_FFLAGS variable to these
+# options.
 # The options are necessary at compile time (so the #pragmas are understood)
 # and at link time (so the appropriate library is linked with).
 # This macro takes care to not produce redundant options if $CC $CFLAGS already
 # supports OpenMP. It also is careful to not pass options to compilers that
 # misinterpret them; for example, most compilers accept "-openmp" and create
 # an output file called 'penmp' rather than activating OpenMP support.
-AC_DEFUN([AC_C_OPENMP],
+AC_DEFUN([AC_OPENMP],
 [
   AC_MSG_CHECKING([whether to use OpenMP])
   AC_ARG_ENABLE(openmp,
@@ -1861,19 +1893,14 @@ AC_DEFUN([AC_C_OPENMP],
     [],
     [enable_openmp=yes])
   AC_MSG_RESULT([$enable_openmp])
-  OPENMP_CFLAGS=
+  OPENMP_[]_AC_LANG_PREFIX[]FLAGS=
   if test "$enable_openmp" = yes; then
     AC_MSG_CHECKING([for $CC option to support OpenMP])
-    AC_CACHE_VAL([ac_cv_prog_cc_openmp], [
-      ac_cv_prog_cc_openmp=unsupported
-      AC_LINK_IFELSE([
-#ifndef _OPENMP
- choke me
-#endif
-#include <omp.h>
-int main () { return omp_get_num_threads (); }
-        ], [ac_cv_prog_cc_openmp="none needed"])
-      if test "$ac_cv_prog_cc_openmp" = unsupported; then
+    AC_CACHE_VAL([ac_cv_prog_[]_AC_LANG_ABBREV[]_openmp], [
+      ac_cv_prog_[]_AC_LANG_ABBREV[]_openmp=unsupported
+      AC_LINK_IFELSE([_AC_LANG_OPENMP],
+        [ac_cv_prog_[]_AC_LANG_ABBREV[]_openmp="none needed"])
+      if test "$ac_cv_prog_[]_AC_LANG_ABBREV[]_openmp" = unsupported; then
         dnl Try these flags:
         dnl   GCC >= 4.2           -fopenmp
         dnl   SunPRO C             -xopenmp
@@ -1881,8 +1908,8 @@ int main () { return omp_get_num_threads (); }
         dnl   SGI C, PGI C         -mp
         dnl   Tru64 Compaq C       -omp
         dnl   IBM C (AIX, Linux)   -qsmp=omp
-        for brand in GCC SunPRO Intel SGI/PGI Compaq IBM; do
-          case $brand in
+        for ac_brand in GCC SunPRO Intel SGI/PGI Compaq IBM; do
+          case $ac_brand in
             GCC)
               ac_conditional='defined __GNUC__'
               ac_option='-fopenmp' ;;
@@ -1902,8 +1929,8 @@ int main () { return omp_get_num_threads (); }
               ac_conditional='defined __xlc__ || defined __xlC__'
               ac_option='-qsmp=omp' ;;
           esac
-          if test $brand = GCC; then
-            if test "$GCC" = yes; then
+          if test $ac_brand = GCC; then
+            if test "$ac_compiler_gnu" = yes; then
               ac_openmp_result=yes
             else
               ac_openmp_result=no
@@ -1916,28 +1943,23 @@ int main () { return omp_get_num_threads (); }
               ], [ac_openmp_result=yes], [ac_openmp_result=no])
           fi
           if test $ac_openmp_result = yes; then
-            ac_save_CFLAGS=$CFLAGS
-            CFLAGS="$CFLAGS $ac_option"
-            AC_LINK_IFELSE([
-#ifndef _OPENMP
- choke me
-#endif
-#include <omp.h>
-int main () { return omp_get_num_threads (); }
-              ], [ac_cv_prog_cc_openmp=$ac_option])
-            CFLAGS=$ac_save_CFLAGS
+            ac_save_[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
+            _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $ac_option"
+            AC_LINK_IFELSE([_AC_LANG_OPENMP],
+              [ac_cv_prog_[]_AC_LANG_ABBREV[]_openmp=$ac_option])
+            _AC_LANG_PREFIX[]FLAGS=$ac_save_[]_AC_LANG_PREFIX[]FLAGS
             break
           fi
         done
       fi
       ])
-    AC_MSG_RESULT([$ac_cv_prog_cc_openmp])
-    case $ac_cv_prog_cc_openmp in
+    AC_MSG_RESULT([$ac_cv_prog_[]_AC_LANG_ABBREV[]_openmp])
+    case $ac_cv_prog_[]_AC_LANG_ABBREV[]_openmp in
       "none needed" | unsupported)
-        OPENMP_CFLAGS= ;;
+        OPENMP_[]_AC_LANG_PREFIX[]FLAGS= ;;
       *)
-        OPENMP_CFLAGS=$ac_cv_prog_cc_openmp ;;
+        OPENMP_[]_AC_LANG_PREFIX[]FLAGS=$ac_cv_prog_[]_AC_LANG_ABBREV[]_openmp ;;
     esac
   fi
-  AC_SUBST([OPENMP_CFLAGS])
+  AC_SUBST([OPENMP_]_AC_LANG_PREFIX[FLAGS])
 ])