getfem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Getfem-commits] r4570 - in /trunk/getfem: configure.ac m4/ax_boost_thre


From: logari81
Subject: [Getfem-commits] r4570 - in /trunk/getfem: configure.ac m4/ax_boost_thread.m4
Date: Sun, 30 Mar 2014 23:02:33 -0000

Author: logari81
Date: Mon Mar 31 01:02:32 2014
New Revision: 4570

URL: http://svn.gna.org/viewcvs/getfem?rev=4570&view=rev
Log:
initial work for supporting --enable-openmp as a configure option (WIP)

Added:
    trunk/getfem/m4/ax_boost_thread.m4
Modified:
    trunk/getfem/configure.ac

Modified: trunk/getfem/configure.ac
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/configure.ac?rev=4570&r1=4569&r2=4570&view=diff
==============================================================================
--- trunk/getfem/configure.ac   (original)
+++ trunk/getfem/configure.ac   Mon Mar 31 01:02:32 2014
@@ -52,7 +52,7 @@
 dnl ---------------------------PARA LEVEL--------------------------
 paralevel=0
 AC_ARG_ENABLE(paralevel,
-   [AS_HELP_STRING([--enable-paralevel[=level]],[enable the parallel version 
fo Getfem (use MPI and METIS)])],
+   [AS_HELP_STRING([--enable-paralevel[=level]],[enable the parallel version 
of GetFEM++ (use MPI and METIS)])],
    [ case $enableval in
         yes | "") paralevel=2;;
         no) ;;
@@ -63,7 +63,7 @@
 if test $paralevel -ge 1; then
   CPPFLAGS="$CPPFLAGS -DGETFEM_PARA_LEVEL=$paralevel"
 fi;
-dnl ---------------------------END OF PARA LEVEL--------------------------
+dnl ---------------------------END OF PARA LEVEL-------------------
 
 
 
@@ -338,6 +338,30 @@
 CPPFLAGS="$CPPFLAGS -DGMM_USES_BLAS"
 
 
+dnl ---------------------------OPENMP------------------------------
+useopenmp=0
+AC_ARG_ENABLE(openmp,
+   [AS_HELP_STRING([--enable-openmp],[enable the multihreaded version of 
GetFEM++])],
+   [ case $enableval in
+        yes | "") useopenmp=YES ;;
+        no) useopenmp=NO ;;
+        *) AC_MSG_ERROR([bad value ${enableval} for --enable-openmp]) ;;
+     esac],
+   [useopenmp=NO]
+)
+
+if test x$useopenmp = xYES; then
+  AC_OPENMP
+  if test "x$ac_cv_prog_cxx_openmp" != "xunsupported" && test 
"x$ac_cv_prog_cxx_openmp" != "x"; then
+    AC_SUBST(AM_CXXFLAGS,"$OPENMP_CXXFLAGS")
+    CPPFLAGS="$CPPFLAGS -DGETFEM_HAVE_OPENMP"
+  else
+    AC_MSG_ERROR([OpenMP support not found. Use --enable-openmp=no flag to 
compile GetFEM++ without OpenMP]);
+  fi
+fi;
+dnl ---------------------------END OF OPENMP-----------------------
+
+
 dnl ------------------------------SuperLU config-------------------------
 AC_ARG_ENABLE(superlu,
  [AS_HELP_STRING([--enable-superlu],[turn on/off SuperLU support])],
@@ -790,12 +814,24 @@
   *) AC_MSG_ERROR([bad value ${enableval} for --enable-boost]) ;;
  esac],[useboost=NO])
 
+if test "x$useboost" = "xNO" -a "x$useopenmp" = "xYES"; then
+  echo "OpenMP version of GetFEM++ requires the boost library, 
--enable-boost=no will be ignored";
+  useboost=YES
+fi;
+
 if test "x$useboost" = "xYES"; then
-        AX_BOOST_BASE([1.20.0], [], [AC_MSG_ERROR(
-        [Please install boost >= 1.20.0 (system) or use --enable-boost=no to 
disable it])])
-        AX_BOOST_SYSTEM
-        BOOST_LIBS=$BOOST_SYSTEM_LIB
-        AC_SUBST(BOOST_LIBS)
+  if test "x$useopenmp" = "xYES"; then
+    AX_BOOST_BASE([1.53.0], [], [AC_MSG_ERROR(
+    [Please install boost >= 1.53.0 in order to build GetFEM++ with OpenMP 
support])])
+    AX_BOOST_SYSTEM
+    AX_BOOST_THREAD
+  else
+    AX_BOOST_BASE([1.20.0], [], [AC_MSG_ERROR(
+    [Please install boost >= 1.20.0 (system) or use --enable-boost=no to 
disable it])])
+    AX_BOOST_SYSTEM
+  fi;
+  BOOST_LIBS="$BOOST_SYSTEM_LIB $BOOST_THREAD_LIB"
+  AC_SUBST(BOOST_LIBS)
 fi;
 
 

Added: trunk/getfem/m4/ax_boost_thread.m4
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/m4/ax_boost_thread.m4?rev=4570&view=auto
==============================================================================
--- trunk/getfem/m4/ax_boost_thread.m4  (added)
+++ trunk/getfem/m4/ax_boost_thread.m4  Mon Mar 31 01:02:32 2014
@@ -0,0 +1,149 @@
+# ===========================================================================
+#      http://www.gnu.org/software/autoconf-archive/ax_boost_thread.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_BOOST_THREAD
+#
+# DESCRIPTION
+#
+#   Test for Thread library from the Boost C++ libraries. The macro requires
+#   a preceding call to AX_BOOST_BASE. Further documentation is available at
+#   <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_THREAD_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST_THREAD
+#
+# LICENSE
+#
+#   Copyright (c) 2009 Thomas Porschberg <address@hidden>
+#   Copyright (c) 2009 Michael Tindal
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 27
+
+AC_DEFUN([AX_BOOST_THREAD],
+[
+       AC_ARG_WITH([boost-thread],
+       AS_HELP_STRING([--with-boost-thread@<:@=special-lib@:>@],
+                   [use the Thread library from boost - it is possible to 
specify a certain library for the linker
+                        e.g. --with-boost-thread=boost_thread-gcc-mt ]),
+        [
+        if test "$withval" = "no"; then
+                       want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_thread_lib=""
+        else
+                   want_boost="yes"
+               ax_boost_user_thread_lib="$withval"
+               fi
+        ],
+        [want_boost="yes"]
+       )
+
+       if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+        AC_REQUIRE([AC_CANONICAL_BUILD])
+               CPPFLAGS_SAVED="$CPPFLAGS"
+               CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+               export CPPFLAGS
+
+               LDFLAGS_SAVED="$LDFLAGS"
+               LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+               export LDFLAGS
+
+        AC_CACHE_CHECK(whether the Boost::Thread library is available,
+                                          ax_cv_boost_thread,
+        [AC_LANG_PUSH([C++])
+                        CXXFLAGS_SAVE=$CXXFLAGS
+
+                        if test "x$host_os" = "xsolaris" ; then
+                                CXXFLAGS="-pthreads $CXXFLAGS"
+                        elif test "x$host_os" = "xmingw32" ; then
+                                CXXFLAGS="-mthreads $CXXFLAGS"
+                        else
+                               CXXFLAGS="-pthread $CXXFLAGS"
+                        fi
+                        
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(address@hidden:@include 
<boost/thread/thread.hpp>]],
+                                   [[boost::thread_group thrds;
+                                   return 0;]])],
+                   ax_cv_boost_thread=yes, ax_cv_boost_thread=no)
+                        CXXFLAGS=$CXXFLAGS_SAVE
+             AC_LANG_POP([C++])
+               ])
+               if test "x$ax_cv_boost_thread" = "xyes"; then
+           if test "x$host_os" = "xsolaris" ; then
+                         BOOST_CPPFLAGS="-pthreads $BOOST_CPPFLAGS"
+                  elif test "x$host_os" = "xmingw32" ; then
+                         BOOST_CPPFLAGS="-mthreads $BOOST_CPPFLAGS"
+                  else
+                         BOOST_CPPFLAGS="-pthread $BOOST_CPPFLAGS"
+                  fi
+
+                       AC_SUBST(BOOST_CPPFLAGS)
+
+                       AC_DEFINE(HAVE_BOOST_THREAD,,[define if the 
Boost::Thread library is available])
+            BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
+
+                       LDFLAGS_SAVE=$LDFLAGS
+                        case "x$host_os" in
+                          *bsd* )
+                               LDFLAGS="-pthread $LDFLAGS"
+                          break;
+                          ;;
+                        esac
+            if test "x$ax_boost_user_thread_lib" = "x"; then
+                for libextension in `ls -r $BOOSTLIBDIR/libboost_thread* 
2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'`; do
+                     ax_lib=${libextension}
+                                   AC_CHECK_LIB($ax_lib, exit,
+                                 [BOOST_THREAD_LIB="-l$ax_lib"; 
AC_SUBST(BOOST_THREAD_LIB) link_thread="yes"; break],
+                                 [link_thread="no"])
+                               done
+                if test "x$link_thread" != "xyes"; then
+                for libextension in `ls -r $BOOSTLIBDIR/boost_thread* 
2>/dev/null | sed 's,.*/,,' | sed 's,\..*,,'`; do
+                     ax_lib=${libextension}
+                                   AC_CHECK_LIB($ax_lib, exit,
+                                 [BOOST_THREAD_LIB="-l$ax_lib"; 
AC_SUBST(BOOST_THREAD_LIB) link_thread="yes"; break],
+                                 [link_thread="no"])
+                               done
+                fi
+
+            else
+               for ax_lib in $ax_boost_user_thread_lib 
boost_thread-$ax_boost_user_thread_lib; do
+                                     AC_CHECK_LIB($ax_lib, exit,
+                                   [BOOST_THREAD_LIB="-l$ax_lib"; 
AC_SUBST(BOOST_THREAD_LIB) link_thread="yes"; break],
+                                   [link_thread="no"])
+                  done
+
+            fi
+            if test "x$ax_lib" = "x"; then
+                AC_MSG_ERROR(Could not find a version of the library!)
+            fi
+                       if test "x$link_thread" = "xno"; then
+                               AC_MSG_ERROR(Could not link against $ax_lib !)
+                        else
+                           case "x$host_os" in
+                              *bsd* )
+                               BOOST_LDFLAGS="-pthread $BOOST_LDFLAGS"
+                              break;
+                              ;;
+                           esac
+
+                       fi
+               fi
+
+               CPPFLAGS="$CPPFLAGS_SAVED"
+       LDFLAGS="$LDFLAGS_SAVED"
+       fi
+])




reply via email to

[Prev in Thread] Current Thread [Next in Thread]