AC_DEFUN([MP_WITH_CURSES],
  [AC_ARG_WITH(ncurses, [  --with-ncurses          Force the use of ncurses over curses],,)
   mp_save_LIBS="$LIBS"
   CURSES_LIB=""
   if test "$with_ncurses" != yes
   then
     AC_CACHE_CHECK([for working curses], mp_cv_curses,
       [LIBS="$LIBS -lcurses"
        AC_TRY_LINK(
          [#include <curses.h>],
          [chtype a; int b=A_STANDOUT, c=KEY_LEFT; initscr(); ],
          mp_cv_curses=yes, mp_cv_curses=no)])
     if test "$mp_cv_curses" = yes
     then
       AC_DEFINE(HAVE_CURSES_H)
       CURSES_LIB="-lcurses"
     fi
   fi
   if test ! "$CURSES_LIB"
   then
     AC_CACHE_CHECK([for working ncurses], mp_cv_ncurses,
       [LIBS="$mp_save_LIBS -lncurses"
        AC_TRY_LINK(
          [#include <ncurses.h>],
          [chtype a; int b=A_STANDOUT, c=KEY_LEFT; initscr(); ],
          mp_cv_ncurses=yes, mp_cv_ncurses=no)])
     if test "$mp_cv_ncurses" = yes
     then
       AC_DEFINE(HAVE_NCURSES_H)
       CURSES_LIB="-lncurses"
     fi
   fi
   LIBS="$mp_save_LIBS"
])dnl

AC_DEFUN([ACX_BLAS], [
AC_PREREQ(2.50)
AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS])
acx_blas_ok=no

AC_ARG_WITH(blas,
	[AC_HELP_STRING([--with-blas=<lib>], [use BLAS library <lib>])])
case $with_blas in
	yes | "") ;;
	no) acx_blas_ok=disable ;;
	-* | */* | *.a | *.so | *.so.* | *.o) BLAS_LIBS="$with_blas" ;;
	*) BLAS_LIBS="-l$with_blas" ;;
esac

# Get fortran linker names of BLAS functions to check for.
AC_F77_FUNC(sgemm)
AC_F77_FUNC(dgemm)

acx_blas_save_LIBS="$LIBS"
LIBS="$LIBS $FLIBS"

# First, check BLAS_LIBS environment variable
if test $acx_blas_ok = no; then
if test "x$BLAS_LIBS" != x; then
	save_LIBS="$LIBS"; LIBS="$BLAS_LIBS $LIBS"
	AC_MSG_CHECKING([for $sgemm in $BLAS_LIBS])
	AC_TRY_LINK_FUNC($sgemm, [acx_blas_ok=yes], [BLAS_LIBS=""])
	AC_MSG_RESULT($acx_blas_ok)
	LIBS="$save_LIBS"
fi
fi

# BLAS linked to by default?  (happens on some supercomputers)
if test $acx_blas_ok = no; then
	save_LIBS="$LIBS"; LIBS="$LIBS"
	AC_CHECK_FUNC($sgemm, [acx_blas_ok=yes])
	LIBS="$save_LIBS"
fi

# BLAS in ATLAS library? (http://math-atlas.sourceforge.net/)
if test $acx_blas_ok = no; then
	AC_CHECK_LIB(atlas, ATL_xerbla,
		[AC_CHECK_LIB(f77blas, $sgemm,
		[AC_CHECK_LIB(cblas, cblas_dgemm,
			[acx_blas_ok=yes
			 BLAS_LIBS="-lcblas -lf77blas -latlas"],
			[], [-lf77blas -latlas])],
			[], [-latlas])])
fi

if test $acx_blas_ok = no; then
	unset ac_cv_lib_atlas_ATL_xerbla
	save_LIBS="$LIBS";
	LIBS="-L/usr/lib/atlas $LIBS"
	AC_CHECK_LIB(atlas, ATL_xerbla,
		[AC_CHECK_LIB(f77blas, $sgemm,
		[AC_CHECK_LIB(cblas, cblas_dgemm,
			[acx_blas_ok=yes
			 BLAS_LIBS="-lcblas -lf77blas -latlas"],
			[], [-lf77blas -latlas])],
			[], [-latlas])])
	LIBS="$save_LIBS";
	if test $acx_blas_ok = yes; then
	  BLAS_LIBS="-L/usr/lib/atlas $BLAS_LIBS"
	fi	
fi

# BLAS in PhiPACK libraries? (requires generic BLAS lib, too)
if test $acx_blas_ok = no; then
	AC_CHECK_LIB(blas, $sgemm,
		[AC_CHECK_LIB(dgemm, $dgemm,
		[AC_CHECK_LIB(sgemm, $sgemm,
			[acx_blas_ok=yes; BLAS_LIBS="-lsgemm -ldgemm -lblas"],
			[], [-lblas])],
			[], [-lblas])])
fi

# BLAS in Alpha CXML library?
if test $acx_blas_ok = no; then
	AC_CHECK_LIB(cxml, $sgemm, [acx_blas_ok=yes;BLAS_LIBS="-lcxml"])
fi

# BLAS in Alpha DXML library? (now called CXML, see above)
if test $acx_blas_ok = no; then
	AC_CHECK_LIB(dxml, $sgemm, [acx_blas_ok=yes;BLAS_LIBS="-ldxml"])
fi

# BLAS in Sun Performance library?
if test $acx_blas_ok = no; then
	if test "x$GCC" != xyes; then # only works with Sun CC
		AC_CHECK_LIB(sunmath, acosp,
			[AC_CHECK_LIB(sunperf, $sgemm,
        			[BLAS_LIBS="-xlic_lib=sunperf -lsunmath"
                                 acx_blas_ok=yes],[],[-lsunmath])])
	fi
fi

# BLAS in SCSL library?  (SGI/Cray Scientific Library)
if test $acx_blas_ok = no; then
	AC_CHECK_LIB(scs, $sgemm, [acx_blas_ok=yes; BLAS_LIBS="-lscs"])
fi

# BLAS in SGIMATH library?
if test $acx_blas_ok = no; then
	AC_CHECK_LIB(complib.sgimath, $sgemm,
		     [acx_blas_ok=yes; BLAS_LIBS="-lcomplib.sgimath"])
fi

# BLAS in IBM ESSL library? (requires generic BLAS lib, too)
if test $acx_blas_ok = no; then
	AC_CHECK_LIB(blas, $sgemm,
		[AC_CHECK_LIB(essl, $sgemm,
			[acx_blas_ok=yes; BLAS_LIBS="-lessl -lblas"],
			[], [-lblas $FLIBS])])
fi

# BLAS in vector framework?
if test $acx_blas_ok = no; then
   save_LIBS="$LIBS"; LIBS="$LIBS -framework vecLib"
   AC_CHECK_LIB(m, $sgemm, [acx_blas_ok=yes
			  BLAS_LIBS="-framework vecLib"])
   LIBS="$save_LIBS"
fi

# Generic BLAS library?
if test $acx_blas_ok = no; then
	AC_CHECK_LIB(blas, $sgemm, [acx_blas_ok=yes; BLAS_LIBS="-lblas"])
fi

AC_SUBST(BLAS_LIBS)

LIBS="$acx_blas_save_LIBS"

# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
if test x"$acx_blas_ok" = xyes; then
        ifelse([$1],,AC_DEFINE(HAVE_BLAS,1,[Define if you have a BLAS library.]),[$1])
        :
else
        acx_blas_ok=no
        $2
fi
])dnl ACX_BLAS

AC_DEFUN([ACX_LAPACK], [
AC_REQUIRE([ACX_BLAS])
acx_lapack_ok=no

AC_ARG_WITH(lapack,
        [AC_HELP_STRING([--with-lapack=<lib>], [use LAPACK library <lib>])])
case $with_lapack in
        yes | "") ;;
        no) acx_lapack_ok=disable ;;
        -* | */* | *.a | *.so | *.so.* | *.o) LAPACK_LIBS="$with_lapack" ;;
        *) LAPACK_LIBS="-l$with_lapack" ;;
esac

# Get fortran linker name of LAPACK function to check for.
AC_F77_FUNC(cheev)

# We cannot use LAPACK if BLAS is not found
if test "x$acx_blas_ok" != xyes; then
        acx_lapack_ok=noblas
fi

# First, check LAPACK_LIBS environment variable
if test "x$LAPACK_LIBS" != x; then
        save_LIBS="$LIBS"; LIBS="$LAPACK_LIBS $BLAS_LIBS $LIBS $FLIBS"
        AC_MSG_CHECKING([for $cheev in $LAPACK_LIBS])
        AC_TRY_LINK_FUNC($cheev, [acx_lapack_ok=yes], [LAPACK_LIBS=""])
        AC_MSG_RESULT($acx_lapack_ok)
        LIBS="$save_LIBS"
        if test acx_lapack_ok = no; then
                LAPACK_LIBS=""
        fi
fi

# LAPACK linked to by default?  (is sometimes included in BLAS lib)
if test $acx_lapack_ok = no; then
        save_LIBS="$LIBS"; LIBS="$LIBS $BLAS_LIBS $FLIBS"
        AC_CHECK_FUNC($cheev, [acx_lapack_ok=yes])
        LIBS="$save_LIBS"
fi

# Generic LAPACK library?
for lapack in lapack lapack_rs6k; do
        if test $acx_lapack_ok = no; then
                save_LIBS="$LIBS"; LIBS="$LIBS $FLIBS"
                AC_CHECK_LIB($lapack, $cheev,
                    [acx_lapack_ok=yes; LAPACK_LIBS="-l$lapack"], [], [$FLIBS])
                LIBS="$save_LIBS"
        fi
done

AC_SUBST(LAPACK_LIBS)

# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
if test x"$acx_lapack_ok" = xyes; then
        ifelse([$1],,AC_DEFINE(HAVE_LAPACK,1,[Define if you have LAPACK library.]),[$1])
        :
else
        acx_lapack_ok=no
        $2
fi
])dnl ACX_LAPACK


dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
dnl also defines GSTUFF_PKG_ERRORS on error
AC_DEFUN([PKG_CHECK_MODULES], [
  succeeded=no

  if test -z "$PKG_CONFIG"; then
    AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
  fi

  if test "$PKG_CONFIG" = "no" ; then
     succeeded=no
  else
     PKG_CONFIG_MIN_VERSION=0.9.0
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
        AC_MSG_CHECKING(for $2)

        if $PKG_CONFIG --exists "$2" ; then
            AC_MSG_RESULT(yes)
            succeeded=yes

            AC_MSG_CHECKING($1_CFLAGS)
            $1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
            AC_MSG_RESULT($$1_CFLAGS)

            AC_MSG_CHECKING($1_LIBS)
            $1_LIBS=`$PKG_CONFIG --libs "$2"`
            AC_MSG_RESULT($$1_LIBS)
        else
            $1_CFLAGS=""
            $1_LIBS=""
            ## If we have a custom action on failure, don't print errors, but 
            ## do set a variable so people can do so.
            $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
            ifelse([$4], ,echo $$1_PKG_ERRORS,)
        fi

        AC_SUBST($1_CFLAGS)
        AC_SUBST($1_LIBS)
     else
        echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
        echo "*** See http://www.freedesktop.org/software/pkgconfig"
     fi
  fi

  if test $succeeded = yes; then
     ifelse([$3], , :, [$3])
  else
     ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4])
  fi
])

AC_DEFUN([AC_LIB_FREEMAT_DEPEND_PRINT], [
	if $3; then
		echo "$1       $2          <Found>"
	else
		echo "$1       $2          <Not found>"
	fi
])

AC_DEFUN([AC_LIB_FREEMAT_CHECK], [
extern_flags=""
need_extern="no"
LIBS="$LIBS $FLIBS"

AC_CHECK_LIB(portaudio,Pa_GetDefaultInputDevice,found_portaudio19="yes",found_portaudio19="no")
AC_CHECK_HEADER(portaudio.h,[],found_portaudio19="no")

if test x"$found_portaudio19" == xyes; then
  LIBS="-lportaudio $LIBS"
  CFLAGS="$CFLAGS"
  AC_DEFINE(HAVE_PORTAUDIO19, 1, [Set to 1 if you have libportaudio (v19 API)])
fi

if test x"$found_portaudio19" != xyes; then
AC_CHECK_LIB(portaudio,Pa_OpenStream,found_portaudio18="yes",found_portaudio18="no")
AC_CHECK_HEADER(portaudio.h,[],found_portaudio18="no")

if test x"$found_portaudio18" == xyes; then
  LIBS="-lportaudio $LIBS"
  CFLAGS="$CFLAGS"
  AC_DEFINE(HAVE_PORTAUDIO18, 1, [Set to 1 if you have libportaudio (v18 API)])
fi

fi

if (test x"$found_portaudio19" == xyes) || (test x"$found_portaudio18" == xyes); then
  found_portaudio="yes";
else
  found_portaudio="no";
fi

AC_CHECK_LIB(pcre,pcre_compile,found_pcre="yes",found_pcre="no")
AC_CHECK_HEADER(pcre.h,[],found_pcre="no")

if test x"$found_pcre" == xyes; then
  LIBS="-lpcre $LIBS"
  AC_DEFINE(HAVE_PCRE, 1, [Set to 1 if you have libpcre])
fi

AC_CHECK_LIB(avcall,__structcpy,found_avcall="yes",found_avcall="no")
AC_CHECK_HEADER(avcall.h,[],found_avcall="no")

if test x"$found_avcall" == xyes; then
  LIBS="-lavcall $LIBS"
  AC_DEFINE(HAVE_AVCALL, 1, [Set to 1 if you have libavcall])
fi    

if test x"$is_osx" == xyes; then
   LIBS="$LIBS -framework vecLib"
   found_blas="yes"
   found_lapack="yes"
else
   ACX_BLAS(found_blas="yes",found_blas="no")
   if test x"$found_blas" == xyes; then
	LIBS="$BLAS_LIBS $LIBS"
   fi
   ACX_LAPACK(found_lapack="yes",found_lapack="no")
   if test x"$found_lapack" == xyes; then
      LIBS="$LAPACK_LIBS $LIBS"
   fi
fi

AC_CHECK_LIB(amd,amd_postorder,found_amd="yes",found_amd="no")
AC_CHECK_HEADER(amd.h,found_amdh="yes",found_amdh="no")
if test x"$found_amdh" == xno; then
  AC_CHECK_HEADER(amd/amd.h,found_amdh="yes",found_amdh="no")
  if test x"$found_amdh" == xyes; then
    CFLAGS="$CFLAGS -I/usr/include/amd"
    CXXFLAGS="$CXXFLAGS -I/usr/include/amd"
  fi
fi
if test x"$found_amdh" == xno; then
  AC_CHECK_HEADER(ufsparse/amd.h,found_amdh="yes",found_amdh="no")
  if test x"$found_amdh" == xyes; then
   CFLAGS="$CFLAGS -I/usr/include/ufsparse"
   CXXFLAGS="$CXXFLAGS -I/usr/include/ufsparse"
 fi
fi

if (test x"$found_amdh" == xyes) && (test x"$found_amd" == xyes); then
    LIBS="-lamd $LIBS"
fi

AC_CHECK_LIB(umfpack,umfpack_zl_solve,found_umfpack="yes",found_umfpack="no")
AC_CHECK_HEADER(umfpack.h,found_umfpackh="yes",found_umfpackh="no")
if test x"$found_umfpackh" == xno; then
  AC_CHECK_HEADER(umfpack/umfpack.h,found_umfpackh="yes",found_umfpackh="no")
  if test x"$found_umfpackh" == xyes; then
    CFLAGS="$CFLAGS -I/usr/include/umfpack"
    CXXFLAGS="$CXXFLAGS -I/usr/include/umfpack"
  fi
fi
if test x"$found_umfpackh" == xno; then
  AC_CHECK_HEADER(ufsparse/umfpack.h,found_umfpackh="yes",found_umfpackh="no")
  if test x"$found_umfpackh" == xyes; then
    CFLAGS="$CFLAGS -I/usr/include/ufsparse"
    CXXFLAGS="$CXXFLAGS -I/usr/include/ufsparse"
  fi
fi
if (test x"$found_umfpackh" == xyes) && (test x"$found_umfpack" == xyes); then
    LIBS="-lumfpack $LIBS"
fi
if (test x"$found_amdh" == xyes) && (test x"$found_amd" == xyes) && (test x"$found_umfpackh" == xyes) && (test x"$found_umfpack" == xyes); then
    AC_DEFINE(HAVE_UMFPACK, 1, [Set to 1 if you have UMFPACK])
fi

dnl PKG_CHECK_MODULES(fftw3, fftw3 >= 3.1.0, found_fftw3="yes", found_fftw3="no")
dnl PKG_CHECK_MODULES(fftw3f, fftw3f >= 3.1.0, found_fftw3f="yes", found_fftw3f="no")

AC_CHECK_LIB(fftw3f,fftwf_malloc,found_fftw3f="yes",found_fftw3f="no")
AC_CHECK_LIB(fftw3,fftw_malloc,found_fftw3="yes",found_fftw3="no")
AC_CHECK_HEADER(fftw3.h,[],[found_fftw3="no";found_fftw3f="no"])

if test x"$found_fftw3f" == xyes; then
	LIBS="-lfftw3f $LIBS"
	AC_DEFINE(HAVE_FFTWF, 1, [Set to 1 if you have the single precision version of FFTW installed])
fi

if test x"$found_fftw3" == xyes; then
	LIBS="-lfftw3 $LIBS"
  	AC_DEFINE(HAVE_FFTW, 1, [Set to 1 if you have the double precision version of FFTW installed])
fi

AC_F77_FUNC(znaupd)
if test x"$znaupd" == x"unknown"; then
  znaupd="znaupd_"
fi

AC_CHECK_LIB(arpack,$znaupd,found_arpack="yes",found_arpack="no",[$FLIBS])
if test x"$found_arpack" == xyes; then
	LIBS="-larpack $LIBS"
	AC_DEFINE(HAVE_ARPACK, 1, [Set to 1 if you have ARPACK installed])
fi

if test x"$found_arpack" == xno; then
   AC_CHECK_LIB(ARPACK,$znaupd,found_arpack="yes",found_arpack="no",[$FLIBS])
   if test x"$found_arpack" == xyes; then
    	   LIBS="-lARPACK $LIBS"
	   AC_DEFINE(HAVE_ARPACK, 1, [Set to 1 if you have ARPACK installed])
   fi
fi

AC_CHECK_LIB(z,inflate,found_z="yes",found_z="no")
if test x"$found_z" == xyes; then
   LIBS="-lz $LIBS"
fi

AC_CHECK_HEADERS([libintl.h malloc.h stddef.h stdlib.h string.h strings.h sys/time.h unistd.h limits.h c_asm.h intrinsics.h stdint.h mach/mach_time.h sys/sysctl.h])
AC_CHECK_FUNCS([BSDgettimeofday gettimeofday gethrtime read_real_time time_base_to_time drand48 sqrt memset posix_memalign memalign _mm_malloc _mm_free clock_gettime mach_absolute_time sysctl abort])
AC_MSG_CHECKING([for _rtc intrinsic])
rtc_ok=yes
AC_TRY_LINK([#ifdef HAVE_INTRINSICS_H
#include <intrinsics.h>
#endif], [_rtc()], [AC_DEFINE(HAVE__RTC,1,[Define if you have the UNICOS _rtc() intrinsic.])], [rtc_ok=no])
AC_MSG_RESULT($rtc_ok)
AC_MSG_CHECKING([whether a cycle counter is available])
save_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS -I$srcdir/libs/libFreeMat"
AC_TRY_CPP([#include "fftw_cycle.h"
#ifndef HAVE_TICK_COUNTER
#  error No cycle counter
#endif], [ok=yes], [ok=no])
CPPFLAGS=$save_CPPFLAGS
AC_MSG_RESULT($ok)
found_cycle=$ok
if test x"$found_cycle" == xyes; then
   AC_DEFINE(HAVE_PROFILE, 1, [Set to 1 if you have a cycle counter])
fi

])


syntax highlighted by Code2HTML, v. 0.9.1