diff configure.in @ 9523:0ce82753dd72

more configure changes for libraries
author John W. Eaton <jwe@octave.org>
date Thu, 13 Aug 2009 18:20:31 -0400
parents ee99f9f37505
children 592a959b68e5
line wrap: on
line diff
--- a/configure.in	Thu Aug 13 15:51:57 2009 +0200
+++ b/configure.in	Thu Aug 13 18:20:31 2009 -0400
@@ -426,7 +426,7 @@
 
 OCTAVE_CHECK_LIBRARY(qhull, QHull,
   [Qhull library not found -- this will result in loss of functionality of some geometry functions.],
-  [qhull/qhull_a.h], [qh_qhull],
+  [qhull/qhull_a.h], [qh_qhull], [], [],
   [warn_qhull=
    OCTAVE_CHECK_QHULL_VERSION
    OCTAVE_CHECK_QHULL_OK([TEXINFO_QHULL="@set HAVE_QHULL"
@@ -559,71 +559,29 @@
 fi
 AC_SUBST(HDF5_LIBS)
 
-# Checks for FFTW header and library.
-
-# subdirectories of libcruft to build if they aren't found on the system:
+# Subdirectories of libcruft to build if they aren't found on the system:
 FFT_DIR="fftpack"
 AC_SUBST(FFT_DIR)
 
-# Installed fftw library, if any.
-FFTW_LIBS=''
-AC_SUBST(FFTW_LIBS)
+# Checks for FFTW header and library.
 
-AC_ARG_WITH(fftw, 
-  [AS_HELP_STRING([--without-fftw],
-     [use included fftpack instead of installed fftw])],
-  with_fftw=$withval, with_fftw=yes)
+OCTAVE_CHECK_LIBRARY(fftw3, FFTW3,
+  [FFTW3 library not found.  The slower FFTPACK library will be used instead.],
+  [fftw3.h], [fftw_plan_dft_1d])
 
-if test "$with_fftw" = yes; then
-  have_fftw3_header=no
-  with_fftw3=no
-  AC_CHECK_HEADER(fftw3.h, [have_fftw3_header=yes])
-  if test "$have_fftw3_header" = yes; then
-    AC_CHECK_LIB(fftw3, fftw_plan_dft_1d, [
-      AC_CHECK_LIB(fftw3f, fftwf_plan_dft_1d, [FFTW_LIBS="-lfftw3 -lfftw3f"; with_fftw3=yes])])
-  fi
-fi
+OCTAVE_CHECK_LIBRARY(fftw3f, FFTW3F,
+  [FFTW3F library not found.  The slower FFTPACK library will be used instead.],
+  [fftw3.h], [fftwf_plan_dft_1d])
 
-if test "$with_fftw" = yes && test "$with_fftw3" = yes; then
-  FFT_DIR=''
-  AC_DEFINE(HAVE_FFTW3, 1, [Define if the FFTW3 library is used.])
-else
-  warn_fftw="FFTW library not found.  Octave will use the (slower) FFTPACK library instead."
-  AC_MSG_WARN($warn_fftw)
+if test -n "$FFTW3_LIBS" && test -n "$FFTW3F_LIBS"; then
+  FFT_DIR=
 fi
 
 # Checks for GLPK header and library.
 
-AC_ARG_WITH(glpk,
-  [AS_HELP_STRING([--without-glpk], [don't use GLPK])],
-  with_glpk=$withval, with_glpk=yes)
-
-glpk_lib=
-if test "$with_glpk" = yes; then
-  glpk_lib="glpk"
-elif test "$with_glpk" != no; then
-  glpk_lib="$with_glpk"
-fi
-
-GLPK_LIBS=
-if test -n "$glpk_lib"; then
-  AC_CHECK_HEADERS([glpk/glpk.h glpk.h], [
-    AC_CHECK_LIB($glpk_lib, glp_lpx_simplex, [
-      GLPK_LIBS="-l$glpk_lib"
-      AC_DEFINE(GLPK_PRE_4_14, 1, [Define if GLPK version is less than 4.14.])], [
-        AC_CHECK_LIB($glpk_lib, _glp_lpx_simplex, [
-          GLPK_LIBS="-l$glpk_lib"], [])])
-
-    if test -n "$GLPK_LIBS"; then
-      AC_DEFINE(HAVE_GLPK, 1, [Define if GLPK is available.])
-    fi
-    break])
-fi
-AC_SUBST(GLPK_LIBS)
-if test -z "$GLPK_LIBS"; then
-  warn_glpk="GLPK library not found.  The glpk function for solving linear programs will be disabled."
-  AC_MSG_WARN($warn_glpk)
-fi
+OCTAVE_CHECK_LIBRARY(glpk, GLPK,
+  [GLPK library not found.  The glpk function for solving linear programs will be disabled.],
+  [glpk/glpk.h glpk.h], [_glp_lpx_simplex])
 
 # Checks for CURL header and library.
 
@@ -911,33 +869,56 @@
 fi
 
 # Check for AMD library
-AMD_LIBS=
-AC_SUBST(AMD_LIBS)
 
-AC_ARG_WITH(amd,
-  [AS_HELP_STRING([--without-amd],
-     [don't use AMD, disable some sparse functionality])],
-  with_amd=$withval, with_amd=yes)
-
-warn_amd="AMD not found. This will result in some lack of functionality for sparse matrices."
-if test "$with_amd" = yes; then
-  with_amd=no
-  AC_CHECK_HEADERS([suitesparse/amd.h ufsparse/amd.h amd/amd.h amd.h], [
-    AC_CHECK_LIB(amd, amd_postorder, [AMD_LIBS="-lamd"; with_amd=yes])
-    if test "$with_amd" = yes; then
-      AC_DEFINE(HAVE_AMD, 1, [Define if the AMD library is used.])
-      warn_amd=
-    fi
-    break])
-fi 
-if test -n "$warn_amd"; then
-  AC_MSG_WARN($warn_amd)
-fi
+OCTAVE_CHECK_LIBRARY(amd, AMD,
+  [AMD library not found. This will result in some lack of functionality for sparse matrices.],
+  [suitesparse/amd.h ufsparse/amd.h amd/amd.h amd.h],
+  [amd_postorder],
+  [], [don't use AMD library, disable some sparse functionality])
 
 # Check for CAMD library
-CAMD_LIBS=
-AC_SUBST(CAMD_LIBS)
-AC_CHECK_LIB(camd, camd_postorder, [CAMD_LIBS="-lcamd"; with_camd=yes],[with_camd=no])
+
+OCTAVE_CHECK_LIBRARY(camd, CAMD,
+  [CAMD library not found. This will result in some lack of functionality for sparse matrices.],
+  [suitesparse/camd.h ufsparse/camd.h amd/camd.h camd.h],
+  [camd_postorder],
+  [], [don't use CAMD library, disable some sparse functionality])
+
+# Check for COLAMD library
+
+OCTAVE_CHECK_LIBRARY(colamd, COLAMD,
+  [COLAMD library not found. This will result in some lack of functionality for sparse matrices.],
+  [suitesparse/colamd.h ufsparse/colamd.h amd/colamd.h colamd.h],
+  [colamd],
+  [], [don't use COLAMD library, disable some sparse functionality])
+
+# Check for CCOLAMD library
+
+OCTAVE_CHECK_LIBRARY(ccolamd, CCOLAMD,
+  [CCOLAMD library not found. This will result in some lack of functionality for sparse matrices.],
+  [suitesparse/ccolamd.h ufsparse/ccolamd.h amd/ccolamd.h ccolamd.h],
+  [ccolamd],
+  [], [don't use CCOLAMD library, disable some sparse functionality])
+
+# Check for CHOLMOD library.  If your cholmod library requires cblas,
+# then you will need to configure with --with-cholmod="-lcholmod -lcblas".
+
+save_LIBS="$LIBS"
+LIBS="$BLAS_LIBS $FLIBS $LIBS"
+OCTAVE_CHECK_LIBRARY(cholmod, CHOLMOD,
+  [CHOLMOD library not found. This will result in some lack of functionality for sparse matrices.],
+  [suitesparse/cholmod.h ufsparse/cholmod.h cholmod/cholmod.h cholmod.h],
+  [cholmod_start],
+  [], [don't use CHOLMOD library, disable some sparse functionality])
+LIBS="$save_LIBS"
+
+# Check for CXSparse library
+
+OCTAVE_CHECK_LIBRARY(cxsparse, CXSparse,
+  [CXSparse library not found. This will result in some lack of functionality for sparse matrices.],
+  [suitesparse/cs.h ufsparse/cs.h amd/cs.h cs.h],
+  [cs_di_sqr],
+  [C++], [don't use CXSparse library, disable some sparse functionality])
 
 # Check for UMFPACK library.
 
@@ -982,119 +963,12 @@
 
 AC_SUBST(TEXINFO_UMFPACK)
 
-COLAMD_LIBS=
-AC_SUBST(COLAMD_LIBS)
-
-AC_ARG_WITH(colamd,
-  [AS_HELP_STRING([--without-colamd],
-     [don't use COLAMD, disable some sparse functionality])],
-  with_colamd=$withval, with_colamd=yes)
-
-warn_colamd="COLAMD not found. This will result in some lack of functionality for sparse matrices."
-if test "$with_colamd" = yes; then
-  with_colamd=no
-  AC_CHECK_HEADERS([suitesparse/colamd.h ufsparse/colamd.h colamd/colamd.h colamd.h], [
-    AC_CHECK_LIB(colamd, colamd, [COLAMD_LIBS="-lcolamd"; with_colamd=yes])
-    if test "$with_colamd" = yes; then
-      AC_DEFINE(HAVE_COLAMD, 1, [Define if the COLAMD library is used.])
-      TEXINFO_COLAMD="@set HAVE_COLAMD"
-      warn_colamd=
-    fi
-    break])
-fi 
-if test -n "$warn_colamd"; then
-  AC_MSG_WARN($warn_colamd)
-fi
-
-AC_SUBST(TEXINFO_COLAMD)
-
-CCOLAMD_LIBS=
-AC_SUBST(CCOLAMD_LIBS)
-
-AC_ARG_WITH(ccolamd,
-  [AS_HELP_STRING([--without-ccolamd],
-     [don't use CCOLAMD, disable some sparse functionality])],
-  with_ccolamd=$withval, with_ccolamd=yes)
-
-warn_ccolamd="CCOLAMD not found. This will result in some lack of functionality for sparse matrices."
-if test "$with_ccolamd" = yes; then
-  with_ccolamd=no
-  AC_CHECK_HEADERS([suitesparse/ccolamd.h ufsparse/ccolamd.h ccolamd/ccolamd.h ccolamd.h], [
-    AC_CHECK_LIB(ccolamd, ccolamd, [CCOLAMD_LIBS="-lccolamd"; with_ccolamd=yes])
-    if test "$with_ccolamd" = yes; then
-      AC_DEFINE(HAVE_CCOLAMD, 1, [Define if the CCOLAMD library is used.])
-      warn_ccolamd=
-    fi
-    break])
-fi 
-if test -n "$warn_ccolamd"; then
-  AC_MSG_WARN($warn_ccolamd)
-fi
-
-CHOLMOD_LIBS=
-AC_SUBST(CHOLMOD_LIBS)
-
-AC_ARG_WITH(cholmod,
-  [AS_HELP_STRING([--without-cholmod],
-     [don't use CHOLMOD, disable some sparse functionality])],
-  with_cholmod=$withval, with_cholmod=yes)
-
-warn_cholmod="CHOLMOD not found. This will result in some lack of functionality for sparse matrices."
-if test "$with_cholmod" = yes && test "$with_colamd" = yes &&
-	test "$with_ccolamd" = yes && test "$with_amd" = yes; then
-  with_cholmod=no
-  AC_CHECK_HEADERS([suitesparse/cholmod.h ufsparse/cholmod.h cholmod/cholmod.h cholmod.h], [
-    AC_CHECK_LIB(cholmod, cholmod_start, [CHOLMOD_LIBS="-lcholmod"; 
-      with_cholmod=yes], [
-      AC_CHECK_LIB(cholmod, cholmod_start, [CHOLMOD_LIBS="-lcholmod -cblas"; 
-	with_cholmod=yes], [],
-	$CAMD_LIBS $AMD_LIBS $COLAMD_LIBS $CCOLAMD_LIBS $BLAS_LIBS $FLIBS)],
-      $CAMD_LIBS $AMD_LIBS $COLAMD_LIBS $CCOLAMD_LIBS $BLAS_LIBS $FLIBS)
-
-    if test "$with_cholmod" = yes; then
-      AC_DEFINE(HAVE_CHOLMOD, 1, [Define if the CHOLMOD library is used.])
-      TEXINFO_CHOLMOD="@set HAVE_CHOLMOD"
-      warn_cholmod=
-    fi
-    break])
-fi
-if test -n "$warn_cholmod"; then
-  AC_MSG_WARN($warn_cholmod)
-fi
-
-AC_SUBST(TEXINFO_CHOLMOD)
-
-CXSPARSE_LIBS=
-AC_SUBST(CXSPARSE_LIBS)
-
-AC_ARG_WITH(cxsparse,
-  [AS_HELP_STRING([--without-cxsparse],
-     [don't use CXSparse, disable some sparse functionality])],
-  with_cxsparse=$withval, with_cxsparse=yes)
-
-warn_cxsparse="CXSparse not found. This will result in some lack of functionality for sparse matrices."
-if test "$with_cxsparse" = yes; then
-  with_cxsparse=no
-  AC_LANG_PUSH(C++)
-  AC_CHECK_HEADERS([suitesparse/cs.h ufsparse/cs.h cxsparse/cs.h cs.h], [
-    AC_CHECK_LIB(cxsparse, cs_di_sqr, [CXSPARSE_LIBS="-lcxsparse"; with_cxsparse=yes])
-    if test "$with_cxsparse" = yes; then
-      AC_DEFINE(HAVE_CXSPARSE, 1, [Define if the CXSparse library is used.])
-      warn_cxsparse=
-    fi
-    break])
-  AC_LANG_POP(C++)
-fi
-if test -n "$warn_cxsparse"; then
-  AC_MSG_WARN($warn_cxsparse)
-fi
-
 ARPACK_LIBS=
 AC_SUBST(ARPACK_LIBS)
 
 AC_ARG_WITH(arpack,
   [AS_HELP_STRING([--without-arpack],
-     [don't use ARPACK, disable some sparse functionality])],
+     [don't use ARPACK library, disable some sparse functionality])],
   with_arpack=$withval, with_arpack=yes)
 
 warn_arpack="arpack not found. This will result in a lack of the eigs function."
@@ -2128,6 +2002,12 @@
 
 #define OCTAVE_EMPTY_CPP_ARG
 
+// Octave is currently unable to use FFTW unless both float
+// and double versions are both available.
+#if defined (HAVE_FFTW3) && defined (HAVE_FFTW3F)
+#define HAVE_FFTW
+#endif
+
 #include "oct-dlldefs.h"
 #include "oct-types.h"
 ])
@@ -2172,21 +2052,40 @@
   Fortran libraries:    $FLIBS
   LIBS:                 $LIBS
 
+  AMD CPPFLAGS:         $AMD_CPPFLAGS
+  AMD LDFLAGS:          $AMD_LDFLAGS
   AMD libraries:        $AMD_LIBS
   ARPACK libraries:     $ARPACK_LIBS
   BLAS libraries:       $BLAS_LIBS
+  CAMD CPPFLAGS:        $CAMD_CPPFLAGS
+  CAMD LDFLAGS:         $CAMD_LDFLAGS
   CAMD libraries:       $CAMD_LIBS
   CARBON libraries:     $CARBON_LIBS
+  CCOLAMD CPPFLAGS:     $CCOLAMD_CPPFLAGS
+  CCOLAMD LDFLAGS:      $CCOLAMD_LDFLAGS
   CCOLAMD libraries:    $CCOLAMD_LIBS
+  CHOLMOD CPPFLAGS:     $CHOLMOD_CPPFLAGS
+  CHOLMOD LDFLAGS:      $CHOLMOD_LDFLAGS
   CHOLMOD libraries:    $CHOLMOD_LIBS
+  COLAMD CPPFLAGS:      $COLAMD_CPPFLAGS
+  COLAMD LDFLAGS:       $COLAMD_LDFLAGS
   COLAMD libraries:     $COLAMD_LIBS
   CURL CPPFLAGS:        $CURL_CPPFLAGS
   CURL LDFLAGS:         $CURL_LDFLAGS
   CURL libraries:       $CURL_LIBS
+  CXSPARSE CPPFLAGS:    $CXSPARSE_CPPFLAGS
+  CXSPARSE LDFLAGS:     $CXSPARSE_LDFLAGS
   CXSPARSE libraries:   $CXSPARSE_LIBS
   DL libraries:         $DL_LIBS
-  FFTW libraries:       $FFTW_LIBS
+  FFTW3 CPPFLAGS:       $FFTW3_CPPFLAGS
+  FFTW3 LDFLAGS:        $FFTW3_LDFLAGS
+  FFTW3 libraries:      $FFTW3_LIBS
+  FFTW3F CPPFLAGS:      $FFTW3F_CPPFLAGS
+  FFTW3F LDFLAGS:       $FFTW3F_LDFLAGS
+  FFTW3F libraries:     $FFTW3F_LIBS
   FLTK backend libs:    $GRAPHICS_LIBS
+  GLPK CPPFLAGS:        $GLPK_CPPFLAGS
+  GLPK LDFLAGS:         $GLPK_LDFLAGS
   GLPK libraries:       $GLPK_LIBS
   HDF5 libraries:       $HDF5_LIBS
   OPENGL libraries:     $OPENGL_LIBS