changeset 20035:d0c7b5346d55

use XTRA_CFLAGS and XTRA_CXXFLAGS for pthread and openmp flags * configure.ac: Avoid directly modifying CFLAGS and CXXFLAGS. Instead, use XTRA_CFLAGS and XTRA_CXXFLAGS for pthread and openmp flags. Save and restore CFLAGS, CXXFLAGS, and FFLAGS globablly.
author John W. Eaton <jwe@octave.org>
date Mon, 23 Feb 2015 08:14:25 -0500
parents 290adbbe95bd
children 737b5d449aaf
files configure.ac
diffstat 1 files changed, 40 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/configure.ac
+++ b/configure.ac
@@ -305,6 +305,17 @@
 AC_DEFINE(__NO_MATH_INLINES, 1,
   [Define to 1 if your version of GNU libc has buggy inline assembly code for math functions like exp.])
 
+## Save and restore CFLAGS, CXXFLAGS, and FFLAGS globally.  These variables
+## are for users, so we shouldn't be touching them.  Instead, we should set
+## the corresponding AM_ flags (currently by way of the XTRA_ variables).
+## However, for the duration of the configure script, we may set CFLAGS,
+## CXXFLAGS, or FFLAGS so that subsequent tests succeed.  Temporary
+## settings like this are currently done for pthreads and openmp, for
+## example.
+octave_configure_save_CFLAGS="$CFLAGS"
+octave_configure_save_CXXFLAGS="$CXXFLAGS"
+octave_configure_save_FFLAGS="$FFLAGS"
+
 ### Determine which C++ compiler to use (we expect to find g++).
 
 AC_PROG_CXX
@@ -417,9 +428,35 @@
 ## Include pthread libs and flags early in case other tests need them.
 ## They seem to be required for the OpenGL tests on Debian systems.
 LIBS="$PTHREAD_LIBS $LIBS"
+XTRA_CFLAGS="$XTRA_CFLAGS $PTHREAD_CFLAGS"
+XTRA_CXXFLAGS="$XTRA_CXXFLAGS $PTHREAD_CFLAGS"
+## Set these for any other tests that may require them.  They will be
+## reset before output files are generated.
 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
 CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
 
+### Test whether the compiler supports OpenMP.  This is enabled by default
+### now to allow the option of using OpenMP in loadable modules.
+
+USE_OPENMP=no
+check_for_openmp=yes
+AC_ARG_ENABLE([openmp],
+  [AS_HELP_STRING([--disable-openmp],
+    [disable OpenMP SMP multi-threading])],
+  [if test "$enableval" = no; then check_for_openmp=no; fi], [])
+if test $check_for_openmp = yes; then
+  AC_LANG_PUSH(C)
+  AX_OPENMP([XTRA_CFLAGS="$XTRA_CFLAGS $OPENMP_CFLAGS"; USE_OPENMP=yes], [])
+  AC_LANG_POP(C)
+  AC_LANG_PUSH(C++)
+  AX_OPENMP([XTRA_CXXFLAGS="$XTRA_CXXFLAGS $OPENMP_CXXFLAGS"; USE_OPENMP=yes], [])
+  AC_LANG_POP(C++)
+fi
+## Set these for any other tests that may require them.  They will be
+## reset before output files are generated.
+CFLAGS="$CFLAGS $OPENMP_CFLAGS"
+CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
+
 ### When compiling math for x87, problems may arise in some code comparing
 ### floating-point intermediate results.  The root cause is the extra precision
 ### (~80 bits) of x87 co-processor registers versus the IEEE standard 64 bits.
@@ -517,29 +554,6 @@
 AC_SUBST(XTRA_CFLAGS)
 AC_SUBST(XTRA_CXXFLAGS)
 
-### Test whether the compiler supports OpenMP.  This is enabled by default
-### now to allow the option of using OpenMP in loadable modules.
-
-USE_OPENMP=yes
-AC_ARG_ENABLE([openmp],
-  [AS_HELP_STRING([--disable-openmp],
-    [disable OpenMP SMP multi-threading])],
-  [if test "$enableval" = no; then USE_OPENMP=no; fi], [])
-if test $USE_OPENMP = yes; then
-  AC_LANG_PUSH(C)
-  AX_OPENMP
-  AC_LANG_POP(C)
-  AC_LANG_PUSH(C++)
-  AX_OPENMP
-  AC_LANG_POP(C++)
-  if test -n "$OPENMP_CFLAGS" && test -n "OPENMP_CXXFLAGS"; then
-    CFLAGS="$CFLAGS $OPENMP_CFLAGS"
-    CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
-  else
-    USE_OPENMP=no 
-  fi
-fi
-
 ### Defaults for cross compiling.  BUILD_CC and BUILD_CXX are
 ### the compilers that we use for building tools on the build system.
 ### For now, we assume that the only cross compiling we can do is
@@ -2948,11 +2962,9 @@
 AC_SUBST(QT_LDFLAGS)
 AC_SUBST(QT_LIBS)
 
-### Run configure in subdirectories.
-
-export CC
-export CXX
-export F77
+CFLAGS="$octave_configure_save_CFLAGS"
+CXXFLAGS="$octave_configure_save_CXXFLAGS"
+FFLAGS="$octave_configure_save_FFLAGS"
 
 AH_BOTTOM([#include "oct-conf-post.h"])