public software.sextractor

[/] [trunk/] [acx_atlas.m4] - Rev 175

Go to most recent revision | Compare with Previous | Blame | View Log

dnl @synopsis ACX_ATLAS([ATLAS_LIBDIR, ATLAS_INCDIR, ATLAS_PFLAG, [ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]])
dnl This macro figures out if the ATLAS library and header files
dnl are installed.
dnl You may wish to use these variables in your default LIBS:
dnl
dnl        LIBS="$ATLAS_LIBS $LIBS"
dnl
dnl ACTION-IF-FOUND is a list of shell commands to run if BLAS/LAPACK
dnl is found (HAVE_ATLAS is defined first), and ACTION-IF-NOT-FOUND
dnl is a list of commands to run it if it is not found.
dnl
dnl @version $Id: acx_atlas.m4,v 1.0 2007/10/19 21:30:17 bertin Exp $
dnl @author Emmanuel Bertin <bertin@iap.fr>
 
AC_DEFUN([ACX_ATLAS], [
AC_REQUIRE([AC_CANONICAL_HOST])
 
dnl --------------------
dnl Search include files
dnl --------------------
 
acx_atlas_ok=no
if test x$2 = x; then
  if test x$1 = x; then
    AC_CHECK_HEADERS([cblas.h clapack.h],[acx_atlas_ok=yes])
    if test x$acx_atlas_ok = xyes; then
      AC_DEFINE(ATLAS_BLAS_H, "cblas.h", [BLAS header filename.])
      AC_DEFINE(ATLAS_LAPACK_H, "clapack.h", [CLAPACK header filename.])
    else
      AC_CHECK_HEADERS([atlas/cblas.h atlas/clapack.h],[acx_atlas_ok=yes])
      if test x$acx_atlas_ok = xyes; then
        AC_DEFINE(ATLAS_BLAS_H, "atlas/cblas.h", [BLAS header filename.])
        AC_DEFINE(ATLAS_LAPACK_H, "atlas/clapack.h", [CLAPACK header filename.])
      else
        atlas_def=/usr/local/atlas
        AC_CHECK_HEADERS(
		[$atlas_def/include/cblas.h $atlas_def/include/clapack.h],
		[acx_atlas_ok=yes])
        if test x$acx_atlas_ok = xyes; then
          AC_DEFINE_UNQUOTED(ATLAS_BLAS_H, "$atlas_def/include/cblas.h",
		[BLAS header filename.])
          AC_DEFINE_UNQUOTED(ATLAS_LAPACK_H, "$atlas_def/include/clapack.h",
		[CLAPACK header filename.])
        else
          atlas_def=/usr/atlas
          AC_CHECK_HEADERS(
		[$atlas_def/include/cblas.h $atlas_def/include/clapack.h],
		[acx_atlas_ok=yes])
          if test x$acx_atlas_ok = xyes; then
            AC_DEFINE_UNQUOTED(ATLAS_BLAS_H, "$atlas_def/include/cblas.h",
		[BLAS header filename.])
            AC_DEFINE_UNQUOTED(ATLAS_LAPACK_H, "$atlas_def/include/clapack.h",
		[CLAPACK header filename.])
          else
            ATLAS_ERROR="CBLAS/LAPack include files not found!"
          fi
        fi
      fi
    fi
  else
    AC_CHECK_HEADERS([$1/include/cblas.h $1/include/clapack.h],
		[acx_atlas_ok=yes])
    if test x$acx_atlas_ok = xyes; then
      AC_DEFINE_UNQUOTED(ATLAS_BLAS_H, "$1/include/cblas.h",
		[BLAS header filename.])
      AC_DEFINE_UNQUOTED(ATLAS_LAPACK_H, "$1/include/clapack.h",
		[CLAPACK header filename.])
    else
      AC_CHECK_HEADERS([cblas.h clapack.h],[acx_atlas_ok=yes])
      if test x$acx_atlas_ok = xyes; then
        AC_DEFINE_UNQUOTED(ATLAS_BLAS_H, "cblas.h",
		[BLAS header filename.])
        AC_DEFINE_UNQUOTED(ATLAS_LAPACK_H, "clapack.h",
		[CLAPACK header filename.])
      else
        ATLAS_ERROR="CBLAS/LAPack include files not found in $1/include!"
      fi
    fi
  fi
else
  AC_CHECK_HEADERS([$2/cblas.h $2/clapack.h], [acx_atlas_ok=yes])
  if test x$acx_atlas_ok = xyes; then
    AC_DEFINE_UNQUOTED(ATLAS_BLAS_H, "$2/cblas.h",
		[BLAS header filename.])
    AC_DEFINE_UNQUOTED(ATLAS_LAPACK_H, "$2/clapack.h",
		[CLAPACK header filename.])
  else
    ATLAS_ERROR="CBLAS/LAPack include files not found in $2!"
  fi
fi
 
dnl --------------------
dnl Search library files
dnl --------------------
 
if test x$acx_atlas_ok = xyes; then
  OLIBS="$LIBS"
  LIBS=""
  if test x$1 = x; then
    AC_CHECK_LIB(lapack, [clapack_dpotrf],, [acx_atlas_ok=no],
		[-lcblas -latlas -lm])
    AC_CHECK_LIB(cblas, cblas_dgemm,, [acx_atlas_ok=no],
		[-latlas -lm])
    if test x$acx_atlas_ok = xyes; then
      ATLAS_LIBPATH=""
    else
      atlas_def=/usr/local/atlas
      unset ac_cv_lib_lapack_clapack_dpotrf
      unset ac_cv_lib_cblas_cblas_dgemm
      acx_atlas_ok=yes
      AC_CHECK_LIB(lapack, [clapack_dpotrf],, [acx_atlas_ok=no],
		[-L$atlas_def/lib -lcblas -latlas -lm])
      AC_CHECK_LIB(cblas, cblas_dgemm,, [acx_atlas_ok=no],
		[-L$atlas_def/lib -latlas -lm])
      if test x$acx_atlas_ok = xyes; then
        ATLAS_LIBPATH="-L$atlas_def/lib"
      else
        atlas_def=/usr/lib64/atlas
        unset ac_cv_lib_lapack_clapack_dpotrf
        unset ac_cv_lib_cblas_cblas_dgemm
        acx_atlas_ok=yes
        AC_CHECK_LIB(lapack, [clapack_dpotrf],, [acx_atlas_ok=no],
		[-L$atlas_def -lcblas -latlas -lm])
        AC_CHECK_LIB(cblas, cblas_dgemm,, [acx_atlas_ok=no],
		[-L$atlas_def -latlas -lm])
        if test x$acx_atlas_ok = xyes; then
          ATLAS_LIBPATH="-L$atlas_def"
        else
          atlas_def=/usr/lib/atlas
          unset ac_cv_lib_lapack_clapack_dpotrf
          unset ac_cv_lib_cblas_cblas_dgemm
          acx_atlas_ok=yes
          AC_CHECK_LIB(lapack, [clapack_dpotrf],, [acx_atlas_ok=no],
		[-L$atlas_def -lcblas -latlas -lm])
          AC_CHECK_LIB(cblas, cblas_dgemm,, [acx_atlas_ok=no],
		[-L$atlas_def -latlas -lm])
          if test x$acx_atlas_ok = xyes; then
            ATLAS_LIBPATH="-L$atlas_def"
          else
            atlas_def=/usr/atlas
            unset ac_cv_lib_lapack_clapack_dpotrf
            unset ac_cv_lib_cblas_cblas_dgemm
            acx_atlas_ok=yes
            AC_CHECK_LIB(lapack, [clapack_dpotrf],, [acx_atlas_ok=no],
		[-L$atlas_def/lib -lcblas -latlas -lm])
            AC_CHECK_LIB(cblas, cblas_dgemm,, [acx_atlas_ok=no],
		[-L$atlas_def/lib -latlas -lm])
            if test x$acx_atlas_ok = xyes; then
              ATLAS_LIBPATH="-L$atlas_def/lib"
            else
              ATLAS_ERROR="CBLAS/LAPack library files not found at usual locations!"
            fi
          fi
        fi
      fi
    fi
  else
    AC_CHECK_LIB(lapack, [clapack_dpotrf],, [acx_atlas_ok=no],
		[-L$1 -lcblas -latlas -lm])
    AC_CHECK_LIB(cblas, cblas_dgemm,, [acx_atlas_ok=no],
		[-L$1 -latlas -lm])
    if test x$acx_atlas_ok = xyes; then
      ATLAS_LIBPATH="-L$1"
    else
      unset ac_cv_lib_lapack_clapack_dpotrf
      unset ac_cv_lib_cblas_cblas_dgemm
      acx_atlas_ok=yes
      AC_CHECK_LIB(lapack, [clapack_dpotrf],, [acx_atlas_ok=no],
		[-L$1/lib -lcblas -latlas -lm])
      AC_CHECK_LIB(cblas, cblas_dgemm,, [acx_atlas_ok=no],
		[-L$1/lib -latlas -lm])
      if test x$acx_atlas_ok = xyes; then
        ATLAS_LIBPATH="-L$1/lib"
      else
        ATLAS_ERROR="CBLAS/LAPack library files not found in $1!"
      fi
    fi
  fi
  LIBS="$OLIBS"
fi
 
AC_SUBST(ATLAS_LIBPATH)
AC_SUBST(ATLAS_CFLAGS)
 
dnl -------------------------------------------------------------------------
dnl Finally, check MP version and execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND
dnl -------------------------------------------------------------------------
if test x"$acx_atlas_ok" = xyes; then
  AC_DEFINE(HAVE_ATLAS,1,
	[Define if you have the ATLAS libraries and header files.])
  if test x$3 = xyes; then
dnl Check whether the multithreaded version of ATLAS is there too:
    AC_CHECK_LIB(ptcblas, cblas_dgemm,, [acx_atlas_ok=no],
	[$ATLAS_LIBPATH -lcblas -latlas -lm])
    if test x$acx_atlas_ok = xyes; then
      ATLAS_LIB="$ATLAS_LIBPATH -llapack -lptcblas -lcblas -latlas"
      LIBS="$OLIBS"
      AC_SUBST(ATLAS_LIB)
      AC_DEFINE(HAVE_ATLAS_MP,1,
	[Define if you have the parallel ATLAS libraries.])
      $4
    else
      ATLAS_ERROR="CBLAS/LAPack was compiled without multithreading support!"
      AC_SUBST(ATLAS_ERROR)
      $5         
    fi
  else
    ATLAS_LIB="$ATLAS_LIBPATH -llapack -lcblas -latlas"
    LIBS="$OLIBS"
    AC_SUBST(ATLAS_LIB)
    $4
  fi
else
  AC_SUBST(ATLAS_ERROR)
  $5
fi
 
])dnl ACX_ATLAS
 

Go to most recent revision | Compare with Previous | Blame | View Log