[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
+])
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Getfem-commits] r4570 - in /trunk/getfem: configure.ac m4/ax_boost_thread.m4,
logari81 <=