dnl dnl Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana dnl University Research and Technology dnl Corporation. All rights reserved. dnl Copyright (c) 2004-2005 The University of Tennessee and The University dnl of Tennessee Research Foundation. All rights dnl reserved. dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, dnl University of Stuttgart. All rights reserved. dnl Copyright (c) 2004-2005 The Regents of the University of California. dnl All rights reserved. dnl Copyright (c) 2010 Cisco Systems, Inc. All rights reserved. dnl $COPYRIGHT$ dnl dnl Additional copyrights may follow dnl dnl $HEADER$ dnl AC_DEFUN([OPAL_CONFIG_THREADS],[ # # Arguments: none # # Dependencies: None # # Modifies: # none - see called tests # # configure threads # # create templates AH_TEMPLATE([OPAL_HAVE_SOLARIS_THREADS], [Do we have native Solaris threads]) AH_TEMPLATE([OPAL_HAVE_POSIX_THREADS], [Do we have POSIX threads]) # # Check for thread types - add your type here... # OMPI_CONFIG_POSIX_THREADS(HAVE_POSIX_THREADS=1, HAVE_POSIX_THREADS=0) AC_MSG_CHECKING([for working POSIX threads package]) if test "$HAVE_POSIX_THREADS" = "1" ; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi export HAVE_POSIX_THREADS OMPI_CONFIG_SOLARIS_THREADS(HAVE_SOLARIS_THREADS=1, HAVE_SOLARIS_THREADS=0) AC_MSG_CHECKING([for working Solaris threads package]) if test "$HAVE_SOLARIS_THREADS" = "1" ; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi export HAVE_SOLARIS_THREADS # # Ask what threading we want (allow solaris / posix right now) # AC_MSG_CHECKING([for type of thread support]) AC_ARG_WITH(threads, AC_HELP_STRING([--with-threads], [Set thread type (solaris / posix)]), [THREAD_TYPE=$withval]) if test "$THREAD_TYPE" = "solaris"; then if test "$HAVE_SOLARIS_THREADS" = "0"; then AC_MSG_WARN(["*** You have chosen Solaris threads, which are not"]) AC_MSG_WARN(["*** available on your system "]) AC_MSG_ERROR(["*** Can not continue"]) fi elif test "$THREAD_TYPE" = "posix"; then if test "$HAVE_POSIX_THREADS" = "0"; then AC_MSG_WARN(["*** You have chosen POSIX threads, which are not"]) AC_MSG_WARN(["*** available on your system "]) AC_MSG_ERROR(["*** Can not continue"]) fi elif test "$THREAD_TYPE" = "no"; then THREAD_TYPE="none" elif test -z "$THREAD_TYPE" -o "$THREAD_TYPE" = "yes"; then # Actual logic here - properly set THREAD_TYPE - we go for system # optimized where ever possible case "$host" in *solaris*) if test "$HAVE_SOLARIS_THREADS" = "1"; then THREAD_TYPE="solaris" elif test "$HAVE_POSIX_THREADS" = "1"; then THREAD_TYPE="posix" else THEAD_TYPE="none found" fi ;; *) if test "$HAVE_POSIX_THREADS" = "1"; then THREAD_TYPE="posix" else THREAD_TYPE="none found" fi ;; esac else AC_MSG_WARN(["*** You have specified a thread type that I do not"]) AC_MSG_WARN(["*** understand. Valid options are posix and solaris"]) AC_MSG_ERROR(["*** Can not continue."]) fi AC_MSG_RESULT($THREAD_TYPE) # # Ok, now run the configuration for that thread package. # # Blah - this should be made better, but I don't know how... # AH_TEMPLATE([OPAL_THREADS_HAVE_DIFFERENT_PIDS], [Do threads have different pids (pthreads on linux)]) if test "$THREAD_TYPE" = "solaris"; then AC_DEFINE(OPAL_HAVE_SOLARIS_THREADS, 1) AC_DEFINE(OPAL_HAVE_POSIX_THREADS, 0) AC_DEFINE(OPAL_THREADS_HAVE_DIFFERENT_PIDS, 0) THREAD_CFLAGS="$STHREAD_CFLAGS" THREAD_FFLAGS="$STHREAD_FFLAGS" THREAD_CXXFLAGS="$STHREAD_CXXFLAGS" THREAD_CPPFLAGS="$STHREAD_CPPFLAGS" THREAD_CXXCPPFLAGS="$STHREAD_CXXCPPFLAGS" THREAD_LDFLAGS="$STHREAD_LDFLAGS" THREAD_LIBS="$STHREAD_LIBS" elif test "$THREAD_TYPE" = "posix"; then AC_DEFINE(OPAL_HAVE_SOLARIS_THREADS, 0) AC_DEFINE(OPAL_HAVE_POSIX_THREADS, 1) THREAD_CFLAGS="$PTHREAD_CFLAGS" THREAD_FFLAGS="$PTHREAD_FFLAGS" THREAD_CXXFLAGS="$PTHREAD_CXXFLAGS" THREAD_CPPFLAGS="$PTHREAD_CPPFLAGS" THREAD_CXXCPPFLAGS="$PTHREAD_CXXCPPFLAGS" THREAD_LDFLAGS="$PTHREAD_LDFLAGS" THREAD_LIBS="$PTHREAD_LIBS" OMPI_CHECK_PTHREAD_PIDS else AC_DEFINE(OPAL_HAVE_SOLARIS_THREADS, 0) AC_DEFINE(OPAL_HAVE_POSIX_THREADS, 0) AC_DEFINE(OPAL_THREADS_HAVE_DIFFERENT_PIDS, 0) TRHEAD_CFLAGS= THREAD_FFLAGS= THREAD_CXXFLAGS= THREAD_CPPFLAGS= THREAD_CXXCPPFLAGS= THREAD_LDFLAGS= THREAD_LIBS= if test "$THREAD_TYPE" != "none" ; then cat <