view configure.in @ 8968:91d53dc37f79

Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations. Nothing terribly fancy in any of this. There probably is some mechanism for using the permutation vectors and some assign or index method in the sparse classes, but I've never understood all the intricacies. I'm opting for a simple implementation at the cost of possibly duplicating some functionality.
author Jason Riedy <jason@acm.org>
date Tue, 10 Mar 2009 21:54:44 -0400
parents 6994961bf1f4
children a48fba01e4ac
line wrap: on
line source

dnl configure.in
dnl
dnl Process this file with autoconf to produce a configure script.
dnl
dnl Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
dnl               2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
dnl               2009 John W. Eaton
### 
### This file is part of Octave.
### 
### Octave is free software; you can redistribute it and/or modify it
### under the terms of the GNU General Public License as published by the
### Free Software Foundation; either version 3 of the License, or (at
### your option) any later version.
### 
### Octave is distributed in the hope that it will be useful, but WITHOUT
### ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
### FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
### for more details.
### 
### You should have received a copy of the GNU General Public License
### along with Octave; see the file COPYING.  If not, see
### <http://www.gnu.org/licenses/>.

### Preserve CFLAGS and CXXFLAGS from the environment before doing
### anything else because we don't know which macros might call
### AC_PROG_CC or AC_PROG_CXX.

EXTERN_CFLAGS="$CFLAGS"
EXTERN_CXXFLAGS="$CXXFLAGS"

AC_INIT
AC_REVISION($Revision: 1.603 $)
AC_PREREQ(2.57)
AC_CONFIG_SRCDIR([src/octave.cc])
AC_CONFIG_HEADER(config.h)

OCTAVE_HOST_TYPE

AC_DEFINE(OCTAVE_SOURCE, 1, [Define if this is Octave.])
  
dnl FIXME -- we should probably only generate this file if it is missing.
### Produce unistd.h for MSVC target, this simplifies changes in
### Octave source tree and avoid problems with lex-generated code.
case "$canonical_host_type" in
  *-*-msdosmsvc)
    AC_MSG_NOTICE([Generating replacement for <unistd.h> for MSVC])
    cat << \EOF > unistd.h
/* File generated by configure script. */
#include <direct.h>
#include <io.h>
#include <process.h>
EOF
    CPPFLAGS="-I. $CPPFLAGS"
    ;;
esac

AC_GNU_SOURCE

AC_AIX
AC_MINIX
AC_ISC_POSIX

### Path separator.
sepchar=:
AC_ARG_WITH(sepchar,
  [AS_HELP_STRING([--with-sepchar=<char>],
     [use <char> as the path separation character])])
case $with_sepchar in
  yes | "")
    case "$canonical_host_type" in
      *-*-mingw* | *-*-msdosmsvc)
	sepchar=';'
        ;;
      esac
    ;;
  no)
    AC_MSG_ERROR([You are required to define a path separation character])
    ;;
  *)
    sepchar=$with_sepchar
    ;;
esac
AC_SUBST(sepchar)
AC_DEFINE_UNQUOTED(SEPCHAR, ['$sepchar'], [Define this to be the path separator for your system, as a character constant.])
AC_DEFINE_UNQUOTED(SEPCHAR_STR, ["$sepchar"], [Define this to the path separator, as a string.])

### some defaults

OCTAVE_SET_DEFAULT(man1dir, '$(mandir)/man1')
OCTAVE_SET_DEFAULT(man1ext, '.1')
OCTAVE_SET_DEFAULT(doc_cache_file, '$(octetcdir)/doc-cache')
OCTAVE_SET_DEFAULT(infofile, '$(infodir)/octave.info')
OCTAVE_SET_DEFAULT(octincludedir, '$(includedir)/octave-$(version)')
OCTAVE_SET_DEFAULT(fcnfiledir, '$(datadir)/octave/$(version)/m')
OCTAVE_SET_DEFAULT(localfcnfiledir, '$(datadir)/octave/site/m')
OCTAVE_SET_DEFAULT(localapifcnfiledir,
  '$(datadir)/octave/site/$(api_version)/m')
OCTAVE_SET_DEFAULT(localverfcnfiledir, '$(datadir)/octave/$(version)/site/m')
OCTAVE_SET_DEFAULT(octetcdir, '$(datadir)/octave/$(version)/etc')
OCTAVE_SET_DEFAULT(octlibdir, '$(libdir)/octave-$(version)')
OCTAVE_SET_DEFAULT(archlibdir,
  '$(libexecdir)/octave/$(version)/exec/$(canonical_host_type)')
OCTAVE_SET_DEFAULT(localarchlibdir,
  '$(libexecdir)/octave/site/exec/$(canonical_host_type)')
OCTAVE_SET_DEFAULT(localapiarchlibdir,
  '$(libexecdir)/octave/$(api_version)/site/exec/$(canonical_host_type)')
OCTAVE_SET_DEFAULT(localverarchlibdir,
  '$(libexecdir)/octave/$(version)/site/exec/$(canonical_host_type)')
OCTAVE_SET_DEFAULT(octfiledir,
  '$(libexecdir)/octave/$(version)/oct/$(canonical_host_type)')
OCTAVE_SET_DEFAULT(localoctfiledir,
  '$(libexecdir)/octave/site/oct/$(canonical_host_type)')
OCTAVE_SET_DEFAULT(localapioctfiledir,
  '$(libexecdir)/octave/site/oct/$(api_version)/$(canonical_host_type)')
OCTAVE_SET_DEFAULT(localveroctfiledir,
  '$(libexecdir)/octave/$(version)/site/oct/$(canonical_host_type)')
OCTAVE_SET_DEFAULT(imagedir, '$(datadir)/octave/$(version)/imagelib')

### Make configure args available for other uses.

config_opts=$ac_configure_args
AC_SUBST(config_opts)

### Make it possible to have Octave's array and matrix classes do bounds
### checking on element references.  This slows some operations down a
### bit, so it is turned off by default.

BOUNDS_CHECKING=false
AC_ARG_ENABLE(bounds-check,
  [AS_HELP_STRING([--enable-bounds-check],
     [bounds checking for indexing in internal array classes (default is no)])],
  [if test "$enableval" = yes; then BOUNDS_CHECKING=true; fi], [])
if $BOUNDS_CHECKING; then
  AC_DEFINE(BOUNDS_CHECKING, 1, [Define to use internal bounds checking.])
fi

### If possible, use a 64-bit integer type for array dimensions and indexing.

USE_64_BIT_IDX_T=false
OCTAVE_IDX_TYPE=int
AC_ARG_ENABLE(64,
  [AS_HELP_STRING([--enable-64],
     [(EXPERIMENTAL) use 64-bit integers for array dimensions and indexing])],
  [if test "$enableval" = yes; then USE_64_BIT_IDX_T=true; fi], [])
if $USE_64_BIT_IDX_T; then
  AC_CHECK_SIZEOF(void *)
  AC_CHECK_SIZEOF(int)
  AC_CHECK_SIZEOF(long)
  if test $ac_cv_sizeof_void_p -eq 8; then
    if test $ac_cv_sizeof_int -eq 8; then
      OCTAVE_IDX_TYPE=int
    elif test $ac_cv_sizeof_long -eq 8; then
      OCTAVE_IDX_TYPE=long
      AC_DEFINE(IDX_TYPE_LONG, 1, [Define to 1 if octave index type is long])
    else
      warn_64_bit="no suitable type found for octave_idx_type so disabling 64-bit features"
      AC_MSG_WARN($warn_64_bit)
      USE_64_BIT_IDX_T=false
    fi
  else
    warn_64_bit="pointers are not 64-bits wide so disabling 64-bit features"
    AC_MSG_WARN($warn_64_bit)
    USE_64_BIT_IDX_T=false
  fi
fi
AC_SUBST(OCTAVE_IDX_TYPE)
if $USE_64_BIT_IDX_T; then
  AC_DEFINE(USE_64_BIT_IDX_T, 1, [Define if using 64-bit integers for array dimensions and indexing])
fi
AC_SUBST(USE_64_BIT_IDX_T)

### It seems that there are some broken inline assembly functions in
### the GNU libc.  Since I'm not sure how to test whether we are using
### GNU libc, just disable them for all platforms.

AC_MSG_NOTICE([defining __NO_MATH_INLINES avoids buggy GNU libc exp function])
AC_DEFINE(__NO_MATH_INLINES, 1, [Define if your version of GNU libc has buggy inline assembly code for math functions like exp.])

### See which C++ compiler to use (we expect to find g++).

AC_PROG_CXX
AC_PROG_CXXCPP

### Do special things for g++.

gxx_version=`$CXX -v 2>&1 | grep "^.*g.. version" | \
  sed -e 's/^.*g.. version *//' -e 's/cygnus-//' -e 's/egcs-//' -e 's/ .*//'`

case "$gxx_version" in
  1.* | 2.[[012345678]].*)
    AC_MSG_ERROR([g++ version $gxx_version will probably fail to compile Octave]
)
  ;;
  2.9*)
    warn_gxx_version="g++ version $gxx_version is likely to cause problems"
    AC_MSG_WARN($warn_gxx_version)
  ;;
esac

CXX_VERSION=
if test -n "$gxx_version"; then
  CXX_VERSION="$gxx_version"
fi
AC_SUBST(CXX_VERSION)

OCTAVE_CXX_NEW_FRIEND_TEMPLATE_DECL
OCTAVE_CXX_ISO_COMPLIANT_LIBRARY
OCTAVE_CXX_BROKEN_REINTERPRET_CAST

### See which C compiler to use (we expect to find gcc).

AC_PROG_CC
AC_PROG_CPP
AC_PROG_GCC_TRADITIONAL

### Do special things for gcc.

gcc_version=`$CC -v 2>&1 | grep "^.*gcc version" | \
  sed -e 's/^.*g.. version *//' -e 's/cygnus-//' -e 's/egcs-//'`
case "$gcc_version" in
  2.*)
    if test -z "$LDFLAGS"; then
      LDFLAGS="-g"
      AC_MSG_NOTICE([defining LDFLAGS to be $LDFLAGS])
    fi
  ;;
  1.*)
    warn_gcc_version="gcc version $gcc_version is likely to cause problems"
    AC_MSG_WARN($warn_gcc_version)
  ;;
esac

CC_VERSION=
if test -n "$gcc_version"; then
  CC_VERSION="$gcc_version"
fi
AC_SUBST(CC_VERSION)

### The flag to create dependency varies depending on the compier.

# Assume GCC.
INCLUDE_DEPS=true
DEPEND_FLAGS="-M"
DEPEND_EXTRA_SED_PATTERN=""
if test "$GCC" = yes; then
  true
else
  case "$canonical_host_type" in
    sparc-sun-solaris2* | i386-pc-solaris2*)
      DEPEND_FLAGS="-xM1"
      DEPEND_EXTRA_SED_PATTERN="-e '/\/opt\/SUNWspro/d'"
    ;;
    *-*-msdosmsvc)
    ;;
    *)
      INCLUDE_DEPS=false
    ;;
  esac
fi
AC_SUBST(INCLUDE_DEPS)
AC_SUBST(DEPEND_FLAGS)
AC_SUBST(DEPEND_EXTRA_SED_PATTERN)

AC_PATH_X
if test "$have_x"; then
  AC_DEFINE(HAVE_X_WINDOWS, 1, [Define if you have X11])

  if test $x_includes != "NONE"; then
    X11_INCFLAGS="$x_includes"
  fi
  AC_SUBST(X11_INCFLAGS)

  if test -z $x_libraries; then
    AC_CHECK_LIB(X11, XrmInitialize, [X11_LIBS=-lX11], [X11_LIBS=])
  elif test $x_libraries != "NONE"; then
    AC_CHECK_LIB(X11, XrmInitialize, 
      [X11_LIBS="-L$x_libraries -lX11"], [X11_LIBS=], "-L$x_libraries")
  fi
  AC_SUBST(X11_LIBS)
fi

### On MacOSX system the Carbon framework is used to determine ScreenSize
OCTAVE_HAVE_FRAMEWORK(Carbon, [#include <Carbon/Carbon.h>], [CGMainDisplayID ()],
  [have_framework_carbon="yes"], [have_framework_carbon="no"])
if test $have_framework_carbon = "yes"; then
  AC_DEFINE(HAVE_FRAMEWORK_CARBON, 1, [Define if framework CARBON is available.])
  CARBON_LIBS="-Wl,-framework -Wl,Carbon"
  AC_MSG_NOTICE([adding -Wl,-framework -Wl,Carbon to CARBON_LIBS])
  AC_SUBST(CARBON_LIBS)
fi

### On Intel systems with gcc, we may need to compile with -mieee-fp
### and -ffloat-store to get full support for IEEE floating point.
###
### On Alpha/OSF systems, we need -mieee.

ieee_fp_flag=
case "$canonical_host_type" in
  ## Keep this pattern first, so that it is preferred over the
  ## following pattern for x86.
  *-*-msdosmsvc)
    CXXFLAGS="$CXXFLAGS -EHs -MD"
    CFLAGS="$CFLAGS -MD"
  ;;
  i[[3456789]]86-*-*)
    if test "$GCC" = yes; then
      OCTAVE_CC_FLAG(-mieee-fp, [
        ieee_fp_flag=-mieee-fp
        XTRA_CFLAGS="$XTRA_CFLAGS -mieee-fp"
        AC_MSG_NOTICE([adding -mieee-fp to XTRA_CFLAGS])])

###      OCTAVE_CC_FLAG(-ffloat-store, [
###        float_store_flag=-ffloat-store
###        XTRA_CFLAGS="$XTRA_CFLAGS -ffloat-store"
###        AC_MSG_RESULT([adding -ffloat-store to XTRA_CFLAGS])])
    fi
    if test "$GXX" = yes; then
      OCTAVE_CXX_FLAG(-mieee-fp, [
	ieee_fp_flag=-mieee-fp
	XTRA_CXXFLAGS="$XTRA_CXXFLAGS -mieee-fp"
	AC_MSG_NOTICE([adding -mieee-fp to XTRA_CXXFLAGS])])

###      OCTAVE_CXX_FLAG(-ffloat-store, [
###        float_store_flag=-ffloat-store
###        XTRA_CXXFLAGS="$XTRA_CXXFLAGS -ffloat-store"
###        AC_MSG_RESULT([adding -ffloat-store to XTRA_CXXFLAGS])])
    fi
  ;;
  alpha*-*-*)
    if test "$GCC" = yes; then
      OCTAVE_CC_FLAG(-mieee, [
	ieee_fp_flag=-mieee
	XTRA_CFLAGS="$XTRA_CFLAGS -mieee"
	AC_MSG_NOTICE([adding -mieee to XTRA_CFLAGS])])
    else
      OCTAVE_CC_FLAG(-ieee, [
	ieee_fp_flag=-ieee
	XTRA_CFLAGS="$XTRA_CFLAGS -ieee"
	AC_MSG_NOTICE([adding -ieee to XTRA_CFLAGS])])
    fi
    if test "$GXX" = yes; then
      OCTAVE_CXX_FLAG(-mieee, [
	ieee_fp_flag=-mieee
	XTRA_CXXFLAGS="$XTRA_CXXFLAGS -mieee"
	AC_MSG_NOTICE([adding -mieee to XTRA_CXXFLAGS])])
    else
      OCTAVE_CXX_FLAG(-ieee, [
	ieee_fp_flag=-ieee
	XTRA_CXXFLAGS="$XTRA_CXXFLAGS -ieee"
	AC_MSG_NOTICE([adding -ieee to XTRA_CXXFLAGS])])
    fi
  ;;
  *ibm-aix4*)
    OCTAVE_CC_FLAG(-mminimal-toc, [
      XTRA_CFLAGS="$XTRA_CFLAGS -mminimal-toc"])

    OCTAVE_CXX_FLAG(-mminimal-toc, [
      XTRA_CXXFLAGS="$XTRA_CXXFLAGS -mminimal-toc"])
  ;;
esac

AC_SUBST(XTRA_CFLAGS)
AC_SUBST(XTRA_CXXFLAGS)

### Use -static if compiling on Alpha OSF/1 1.3 systems.

case "$canonical_host_type" in
  alpha*-dec-osf1.3)
    LD_STATIC_FLAG=-static
  ;;
esac
if test -n "$LD_STATIC_FLAG"; then
  AC_MSG_NOTICE([defining LD_STATIC_FLAG to be $LD_STATIC_FLAG])
fi
AC_SUBST(LD_STATIC_FLAG)

### Defaults for cross compiling.  BUILD_CC and BUILD_CXX are
### the compilers that we use for building tools on the build system.
### For now, we assume that the only cross compiling we can do is
### with gcc on a Unixy system, but the dedicated hacker can override these.

if test "$cross_compiling" = yes; then
  BUILD_CC="gcc"
  BUILD_CFLAGS="-O2 -g"
  BUILD_CXX="g++"
  BUILD_CXXFLAGS="-O2 -g"
  BUILD_LDFLAGS=""
  BUILD_EXEEXT=""
else
  BUILD_CC='$(CC)'
  BUILD_CFLAGS='$(CFLAGS)'
  BUILD_CXX='$(CXX)'
  BUILD_CXXFLAGS='$(CXXFLAGS)'
  BUILD_LDFLAGS='$(LDFLAGS)'
  case "$canonical_host_type" in
    sparc-sun-solaris2*)
      if test "$GCC" != yes; then
        ## The Sun C++ compiler never seems to complete compiling
	## gendoc.cc unless we reduce the optimization level...
	BUILD_CXXFLAGS="-g -O1"
      fi
    ;;
  esac
  BUILD_EXEEXT='$(EXEEXT)'
fi

AC_ARG_VAR(BUILD_CC, [build system C compiler (used if cross compiling)])
AC_ARG_VAR(BUILD_CFLAGS, [build system C compiler flags (used if cross compiling)])
AC_ARG_VAR(BUILD_CXX, [build system C++ compiler (used if cross compiling)])
AC_ARG_VAR(BUILD_CXXFLAGS, [build system C++ compiler flags (used if cross compiling)])
AC_ARG_VAR(BUILD_LDFLAGS, [build system C++ compiler link flags (used if cross compiling)])
AC_ARG_VAR(BUILD_EXEEXT, [build system executable extension (used if cross compiling)])

dnl This is bogus.  We shouldn't have to explicitly add libc too!

### Look for math library.  If found, this will add -lm to LIBS.

case "$canonical_host_type" in
  *-*-nextstep*)
  ;;  
  *-*-linux*)
    AC_CHECK_LIB(m, sin, , , -lc)
  ;;
  *)
    AC_CHECK_LIB(m, sin)
  ;;
esac

### Check for the QHull library
AC_SUBST(QHULL_LIBS)
AC_CHECK_HEADER(qhull/qhull_a.h, have_qhull=yes, have_qhull=no)
if test "$have_qhull" = yes; then
  AC_CHECK_LIB(qhull, qh_qhull, have_qhull=yes, have_qhull=no)
  if test "$have_qhull" != yes; then
    AC_CHECK_QHULL_VERSION(have_qhull=yes, have_qhull=no)
    AC_DEFINE(NEED_QHULL_VERSION, 1, [Define if the QHull library needs a wh_version variable defined.])
  fi
  if test "$have_qhull" = yes; then
    AC_CHECK_QHULL_OK(have_qhull=yes, have_qhull=bad)
  fi
fi
if test "$have_qhull" = yes; then
  AC_DEFINE(HAVE_QHULL, 1, [Define if the QHull library is used.])
  QHULL_LIBS="-lqhull"
  TEXINFO_QHULL="@set HAVE_QHULL"
else
  if test "$have_qhull" = bad; then
    warn_qhull="Qhull library found, but seems not to work properly --- This will result in loss of functionality of some geometry functions. Please try recompiling the library with -fno-strict-aliasing."
  else
    warn_qhull="Qhull library not found --- This will result in loss of functionality of some geometry functions."
  fi
  AC_MSG_WARN($warn_qhull)
fi

AC_SUBST(TEXINFO_QHULL)

### Check for pcre/regex library.

## check for pcre-config, and if so, set CPPFLAGS appropriately
AC_CHECK_PROG(WITH_PCRE_CONFIG, pcre-config, yes, no)
if test $WITH_PCRE_CONFIG = yes ; then
  CPPFLAGS="$CPPFLAGS $(pcre-config --cflags)"
fi

## NB: no need to do separate check for pcre.h header -- checking macros is good enough
AC_CACHE_CHECK([whether pcre.h defines the macros we need], [ac_cv_pcre_h_macros_present], [
  AC_EGREP_CPP([PCRE_HAS_MACROS_WE_NEED], [
#include <pcre.h>
#if defined (PCRE_INFO_NAMECOUNT) \
  && defined (PCRE_INFO_NAMEENTRYSIZE) \
  && defined (PCRE_INFO_NAMETABLE)
PCRE_HAS_MACROS_WE_NEED
#endif], ac_cv_pcre_h_macros_present=yes, ac_cv_pcre_h_macros_present=no)])
WITH_PCRE="$ac_cv_pcre_h_macros_present"

REGEX_LIBS=

using_pcre=no
using_regex=no

if test "$WITH_PCRE" = yes; then
  if test "$WITH_PCRE_CONFIG" = yes; then
    REGEX_LIBS=$(pcre-config --libs)
  else
    REGEX_LIBS=-lpcre
  fi
  save_LIBS="$LIBS"
  LIBS="$REGEX_LIBS $LIBS"
  AC_CHECK_FUNCS(pcre_compile, [using_pcre=yes
    AC_DEFINE(HAVE_PCRE, 1, [Define if PCRE library is available.])], [
      REGEX_LIBS=
      warn_pcre="PCRE library not found.  This will result in some loss of functionality for the regular expression matching functions."
      AC_MSG_WARN($warn_pcre)])
  LIBS="$save_LIBS"
else
  warn_pcre="PCRE library not found.  This will result in some loss of functionality for the regular expression matching functions."
  AC_MSG_WARN($warn_pcre)
fi

AC_CHECK_FUNCS(regexec, [using_regex=yes], [
  AC_CHECK_LIB(regex, regexec, [using_regex=yes
    REGEX_LIBS="-lregex $REGEX_LIBS"], [
      warn_regex="regular expression functions not found.  The regular expression matching functions will be disabled."
      AC_MSG_WARN($warn_regex)])])

if test "$using_regex" = yes; then
  AC_DEFINE(HAVE_REGEX, 1, [Define if regex library is available.])
fi

AC_SUBST(REGEX_LIBS)

### Check for ZLIB library.

WITH_ZLIB=true
AC_ARG_WITH(zlib,
  [AS_HELP_STRING([--without-zlib], [don't use zlib])],
  with_zlib=$withval, with_zlib=yes)

zlib_lib=
if test "$with_zlib" = yes; then
  zlib_lib="z"
elif test "$with_zlib" != no; then
  zlib_lib="$with_zlib"
fi

ZLIB_LIBS=
WITH_ZLIB=false
if test -n "$zlib_lib"; then
  AC_CHECK_LIB($zlib_lib, gzclearerr, [
      AC_CHECK_HEADERS(zlib.h, [
	WITH_ZLIB=true
        ZLIB_LIBS="-l$zlib_lib"
        LIBS="$ZLIB_LIBS $LIBS"
        AC_DEFINE(HAVE_ZLIB, 1, [Define if ZLIB is available.])])])
fi

if $WITH_ZLIB; then
  ### Check for HDF5 library.

  WITH_HDF5=true
  AC_ARG_WITH(hdf5,
    [AS_HELP_STRING([--without-hdf5], [don't use HDF5])],
    with_hdf5=$withval, with_hdf5=yes)

  hdf5_lib=
  if test "$with_hdf5" = yes; then
    hdf5_lib="hdf5"
  elif test "$with_hdf5" != no; then
    hdf5_lib="$with_hdf5"
  fi

  HDF5_LIBS=
  WITH_HDF5=false
  if test -n "$hdf5_lib"; then
    AC_CHECK_LIB($hdf5_lib, H5Pcreate, [
      AC_CHECK_HEADERS(hdf5.h, [
        WITH_HDF5=true
        HDF5_LIBS="-l$hdf5_lib"
        LIBS="$HDF5_LIBS $LIBS"
	AC_CHECK_LIB($hdf5_lib, H5Gget_num_objs, [
          OCTAVE_HDF5_HAS_REQUIRED_API
          if test $WITH_HDF5; then
            AC_DEFINE(HAVE_HDF5, 1, [Define if HDF5 is available.])
	    AC_DEFINE(HAVE_H5GGET_NUM_OBJS, 1, [Define if HDF5 has H5Gget_num_objs.])
	  fi])])])
  fi

  if $WITH_HDF5; then
    case "$canonical_host_type" in
      *-*-msdosmsvc)
        OCTAVE_HDF5_DLL
        ;;
    esac
    true
  fi
else
  warn_zlib="ZLIB library not found.  Octave will not be able to save or load compressed data files or HDF5 files."
  AC_MSG_WARN($warn_zlib)
fi


# Checks for FFTW header and library.

# 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)

AC_ARG_WITH(fftw, 
  [AS_HELP_STRING([--without-fftw],
     [use included fftpack instead of installed fftw])],
  with_fftw=$withval, with_fftw=yes)

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

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_RESULT($warn_fftw)
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."
fi

# Checks for CURL header and library.

AC_ARG_WITH(curl,
  [AS_HELP_STRING([--without-curl], [don't use CURL])],
  with_curl=$withval, with_curl=yes)

curl_lib=
if test "$with_curl" = yes; then
  curl_lib="curl"
elif test "$with_curl" != no; then
  curl_lib="$with_curl"
else
  curl_missing=yes
fi

CURL_LIBS=
if test -n "$curl_lib"; then
  AC_CHECK_LIB($curl_lib, curl_easy_escape, [
    AC_CHECK_HEADERS(curl/curl.h, [
      CURL_LIBS="-l$curl_lib"
      AC_DEFINE(HAVE_CURL, 1, [Define if CURL is available.])], [
      curl_missing=yes])])
fi
AC_SUBST(CURL_LIBS)
if test "$curl_missing" = yes; then
  warn_curl="cURL library not found.  The urlread and urlwrite functions will be disabled."
fi

# GraphicsMagick++

warn_magick=
AC_CHECK_PROGS(MAGICK_CONFIG, [GraphicsMagick++-config GraphicsMagick-config])
if test -z "$MAGICK_CONFIG"; then
  warn_magick="GraphicsMagick++ config script not found.  Assuming GraphicsMagic++ library and header files are missing, so imread will not be fully functional"
else
  AC_DEFINE(HAVE_MAGICK, 1, [Define if GraphicsMagick++ is available.])
fi

# ---------------------------------------------------------------------

## libraries needed for graphics

warn_freetype=""
warn_ftgl=""

OCTAVE_OPENGL
if test -n "$OPENGL_LIBS"; then
  AC_DEFINE(HAVE_OPENGL, 1, [Define if OpenGL is available])

## ftgl (needs freetype 2)
  AC_CHECK_FT2([9.0.3],[],
    [warn_freetype="FreeType library not found. Native renderer will not have on-screen text"])
  if test -z "$warn_freetype"; then
    AC_LANG_PUSH(C++)
      save_LIBS="$LIBS"
      save_CXXFLAGS="$CXXFLAGS"
      save_CPPFLAGS="$CPPFLAGS"
      LIBS="$LIBS $OPENGL_LIBS $FT2_LIBS"
      CXXFLAGS="$CXXFLAGS $FT2_CFLAGS"
      CPPFLAGS="$CPPFLAGS $FT2_CFLAGS"
      has_ftgl_h=yes
      AC_CHECK_HEADERS([FTGL/ftgl.h ftgl.h], break, [
	AC_CHECK_HEADERS([FTGL/FTGL.h FTGL.h], [
          AC_DEFINE(HAVE_FTGL_UPPERCASE,1,[Define to 1 if you have FTGL.h or FTGL/FTGL.h])
	  break
	  ], has_ftgl_h=no)])
      if test "$has_ftgl_h" = yes; then
	AC_MSG_CHECKING([for FTGLTextureFont in -lftgl])
	LIBS="$LIBS -lftgl"
        AC_TRY_LINK([
#ifdef HAVE_FTGL_FTGL_H
#ifdef HAVE_FTGL_UPPERCASE
#include <FTGL/FTGL.h>
#else
#include <FTGL/ftgl.h>
#endif
#include <FTGL/FTGLTextureFont.h>
#elif HAVE_FTGL_H
#ifdef HAVE_FTGL_UPPERCASE
#include <FTGL.h>
#else
#include <ftgl.h>
#endif
#include <FTGLTextureFont.h>
#endif], [
FTGLTextureFont font("");], [
          OPENGL_LIBS="$OPENGL_LIBS $FT2_LIBS -lftgl"
	  LIBS="$save_LIBS"
	  CPPFLAGS="$save_CPPFLAGS"
          AC_DEFINE(HAVE_FTGL, 1, [Define to 1 if FTGL is present])
	  AC_MSG_RESULT(yes)
	  XTRA_CXXFLAGS="$XTRA_CXXFLAGS $FT2_CFLAGS"],[
	  AC_MSG_RESULT(no)
          warn_ftgl="FTGL library not found. Native renderer will not have on-screen text"
        ])
	LIBS="$save_LIBS"
	CXXFLAGS="$save_CXXFLAGS"
	CPPFLAGS="$save_CPPFLAGS"
      else
        warn_ftgl="FTGL headers not found. Native renderer will not have on-screen text"
      fi
    AC_LANG_POP(C++)
  fi
fi

GRAPHICS_LIBS=
GRAPHICS_CFLAGS=

## fltk (www.fltk.org)
AC_ARG_WITH(fltk-prefix,
        [  --with-fltk-prefix=PFX   Prefix where FLTK is installed (optional)],
        fltk_prefix="$withval",
        fltk_prefix="")
AC_ARG_WITH(fltk-exec-prefix,
        [  --with-fltk-exec-prefix=PFX Exec prefix where FLTK is installed (optional)],
        fltk_exec_prefix="$withval", 
        fltk_exec_prefix="")

if test -n "$fltk_exec_prefix"; then
  fltk_args="$fltk_args --exec-prefix=$fltk_exec_prefix"
  if test "x${FLTK_CONFIG+set}" != xset ; then
    FLTK_CONFIG="$fltk_exec_prefix/bin/fltk-config"
  fi
fi

if test -n "$fltk_prefix"; then
  fltk_args="$fltk_args --prefix=$fltk_prefix"
  if test x${FLTK_CONFIG+set} != xset ; then
    FLTK_CONFIG="$fltk_prefix/bin/fltk-config"
  fi
fi

AC_PATH_PROG(FLTK_CONFIG, fltk-config, no)

warn_fltk_config=""
warn_fltk_opengl=""

if test "$FLTK_CONFIG" = "no" ; then
  warn_fltk_config="FLTK config script not found.  Native graphics will be disabled."
else
  FLTK_CFLAGS="`$FLTK_CONFIG $fltkconf_args --use-gl --cflags`"
  FLTK_LDFLAGS="`$FLTK_CONFIG $fltkconf_args --use-gl --ldflags`"
  
  AC_MSG_CHECKING(for OpenGL support in FLTK)
  cat > conftest.cc <<EOF
  #include <FL/gl.h>
  int nothing=0;
EOF
  $CXX $CXXFLAGS $FLTK_CFLAGS -c conftest.cc || \
    warn_fltk_opengl="FLTK does not have OpenGL support.  Native graphics will be disabled."

  if test -z "$warn_fltk_opengl"; then
    AC_MSG_RESULT(yes)
    AC_DEFINE(HAVE_FLTK, 1, [Define if FLTK is available])
    GRAPHICS_CFLAGS="$FLTK_CFLAGS"
    GRAPHICS_LIBS="$FLTK_LDFLAGS"
  else
    AC_MSG_RESULT(no)
  fi
fi

AC_SUBST(GRAPHICS_CFLAGS)
AC_SUBST(GRAPHICS_LIBS)

OCTAVE_IEEE754_DATA_FORMAT

# ----------------------------------------------------------------------

OCTAVE_PROG_AR

AC_PROG_RANLIB

## Default FFLAGS is -O.
if test "x$FFLAGS" = x; then
  FFLAGS="-O"
fi

## the F77 variable, if set, overrides AC_PROG_F77 automatically
AC_PROG_F77
AC_F77_LIBRARY_LDFLAGS
AC_F77_DUMMY_MAIN
AC_F77_WRAPPERS

F77_TOLOWER=true
F77_APPEND_UNDERSCORE=true
F77_APPEND_EXTRA_UNDERSCORE=true

case "$ac_cv_f77_mangling" in
  "upper case") F77_TOLOWER=false ;;
esac
case "$ac_cv_f77_mangling" in
  "no underscore") F77_APPEND_UNDERSCORE=false ;;
esac
case "$ac_cv_f77_mangling" in
  "no extra underscore") F77_APPEND_EXTRA_UNDERSCORE=false ;;
esac

case "$canonical_host_type" in
  i[[3456789]]86-*-*)
    if test "$ac_cv_f77_compiler_gnu" = yes; then
      OCTAVE_F77_FLAG(-mieee-fp)
###      OCTAVE_F77_FLAG(-ffloat-store)
    fi
  ;;
  alpha*-*-*)
    if test "$ac_cv_f77_compiler_gnu" = yes; then
      OCTAVE_F77_FLAG(-mieee)
    else
      OCTAVE_F77_FLAG(-ieee)
      OCTAVE_F77_FLAG(-fpe1)
    fi
  ;;
  powerpc-apple-machten*)
    FFLAGS=
  ;;
esac

if test -n "$FFLAGS"; then
  AC_MSG_NOTICE([defining FFLAGS to be $FFLAGS])
fi

AC_SUBST(F77_TOLOWER)
AC_SUBST(F77_APPEND_UNDERSCORE)
AC_SUBST(F77_APPEND_EXTRA_UNDERSCORE)

if test -z "$F77"; then
  AC_MSG_WARN([in order to build octave, you must have a compatible])
  AC_MSG_WARN([Fortran compiler or wrapper script for f2c that functions])
  AC_MSG_WARN([as a Fortran compiler installed and in your path.])
  AC_MSG_ERROR([See the file INSTALL for more information.])
fi

XTRA_CRUFT_SH_LDFLAGS=
case "$canonical_host_type" in
  *-*-msdosmsvc)
    FLIBS="$FLIBS -lkernel32"
    XTRA_CRUFT_SH_LDFLAGS="-Wl,-def:cruft.def"
  ;;
esac
AC_SUBST(XTRA_CRUFT_SH_LDFLAGS)

FC=$F77
AC_SUBST(FC)

OCTAVE_F77_FLAG(-ffloat-store, [
AC_MSG_RESULT([setting F77_FLOAT_STORE_FLAG to -ffloat-store])
F77_FLOAT_STORE_FLAG=-ffloat-store
AC_SUBST(F77_FLOAT_STORE_FLAG)
])

### Checks for BLAS and LAPACK libraries:
# (Build subdirectories of libcruft if they aren't found on the system.)
sinclude(acx_blas.m4)
sinclude(acx_blas_f77_func.m4)
sinclude(acx_lapack.m4)
ACX_BLAS_WITH_F77_FUNC([], [BLAS_DIR="blas"])
ACX_LAPACK([BLAS_LIBS="$LAPACK_LIBS $BLAS_LIBS"], [LAPACK_DIR="lapack"])
AC_SUBST(BLAS_DIR)
AC_SUBST(LAPACK_DIR)

if test "x$acx_blas_f77_func_ok" = "xno"; then
  warn_blas_f77_incompatible="A BLAS library was detected but found incompatible with your Fortran 77 compiler.  The reference BLAS implementation will be used. To improve performance, consider using a different Fortran compiler or a switch like -ff2c to make your Fortran compiler use a calling convention compatible with the way your BLAS library was compiled, or use a different BLAS library."
  AC_MSG_WARN($warn_blas_f77_incompatible)
fi

QRUPDATE_LIBS=
AC_SUBST(QRUPDATE_LIBS)

# Check for the qrupdate library
AC_ARG_WITH(qrupdate,
  [AS_HELP_STRING([--without-qrupdate],
     [don't use qrupdate, disable QR & Cholesky updating functions])],
  with_qrupdate=$withval, with_qrupdate=yes)

warn_qrupdate="qrupdate not found. The QR & Cholesky updating functions will be slow."
if test "$with_qrupdate" = yes; then
  with_qrupdate=no
  if $have_fortran_compiler; then 
    AC_F77_FUNC(sqr1up)
  elif $have_f2c; then
    sqr1up=sqr1up_
  fi
  AC_CHECK_LIB(qrupdate, $sqr1up, 
    [QRUPDATE_LIBS="-lqrupdate"; with_qrupdate=yes], [], [$BLAS_LIBS $FLIBS])
  if test "$with_qrupdate" = yes; then
    AC_DEFINE(HAVE_QRUPDATE, 1, [Define if the qrupdate library is used.])
    warn_qrupdate=
  fi
fi
if test -n "$warn_qrupdate"; then
  AC_MSG_WARN($warn_qrupdate)
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

# 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])

# Check for UMFPACK library.

UMFPACK_LIBS=
AC_SUBST(UMFPACK_LIBS)

AC_ARG_WITH(umfpack,
  [AS_HELP_STRING([--without-umfpack],
     [don't use UMFPACK, disable some sparse functionality])],
  with_umfpack=$withval, with_umfpack=yes)

warn_umfpack="UMFPACK not found.  This will result in some lack of functionality for sparse matrices."
if test "$with_umfpack" = yes && test "$with_amd" = yes; then
  with_umfpack=no
  AC_CHECK_HEADERS([suitesparse/umfpack.h ufsparse/umfpack.h umfpack/umfpack.h umfpack.h], [
    AC_CHECK_LIB(umfpack, umfpack_zi_get_determinant, [
      UMFPACK_LIBS="-lumfpack"; with_umfpack=yes], [
        ## Invalidate the cache.
	$as_unset ac_cv_lib_umfpack_umfpack_zi_get_determinant
	AC_CHECK_LIB(umfpack, umfpack_zi_get_determinant, [
          UMFPACK_LIBS="-lumfpack"; with_umfpack=yes], [

	  ## Invalidate the cache.
	  $as_unset ac_cv_lib_umfpack_umfpack_zi_get_determinant
	  AC_CHECK_LIB(umfpack, umfpack_zi_get_determinant, [
            UMFPACK_LIBS="-lumfpack -lcblas"; with_umfpack=yes], [], $AMD_LIBS -lcblas $BLAS_LIBS)], $AMD_LIBS $BLAS_LIBS $FLIBS)], $AMD_LIBS)

    if test "$with_umfpack" = yes; then
      AC_DEFINE(HAVE_UMFPACK, 1, [Define if the UMFPACK library is used.])
      OLD_LIBS=$LIBS
      LIBS="$LIBS $UMFPACK_LIBS $AMD_LIBS $BLAS_LIBS $FLIBS"
      OCTAVE_UMFPACK_SEPERATE_SPLIT
      LIBS=$OLD_LIBS
      TEXINFO_UMFPACK="@set HAVE_UMFPACK"
      warn_umfpack=
    fi
    break])
fi
if test -n "$warn_umfpack"; then
  AC_MSG_WARN($warn_umfpack)
fi

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])],
  with_arpack=$withval, with_arpack=yes)

warn_arpack="arpack not found. This will result in a lack of the eigs function."
if test "$with_arpack" = yes; then
  with_arpack=no
  AC_CHECK_LIB(arpack, F77_FUNC(dseupd,DSEUPD), [ARPACK_LIBS="-larpack"; with_arpack=yes], , $LAPACK_LIBS $FLIBS)
  if test "$with_arpack" = yes; then
    AC_DEFINE(HAVE_ARPACK, 1, [Define if the ARPACK library is used.])
    warn_arpack=
  fi
fi
if test -n "$warn_arpack"; then
  AC_MSG_WARN($warn_arpack)
fi

### Handle shared library options.

### Enable creation of static libraries.

AC_ARG_ENABLE(static,
  [AS_HELP_STRING([--enable-static], [create static libraries])],
  [if test "$enableval" = no; then STATIC_LIBS=false;
   else STATIC_LIBS=true; fi],
  STATIC_LIBS=false)
AC_SUBST(STATIC_LIBS)

### Enable creation of shared libraries.  Currently only works with
### gcc on some systems.

AC_ARG_ENABLE(shared,
  [AS_HELP_STRING([--enable-shared],
     [create shared libraries (not all systems)])],
  [if test "$enableval" = no; then SHARED_LIBS=false;
   else SHARED_LIBS=true; fi],
  SHARED_LIBS=true)
AC_SUBST(SHARED_LIBS)

### Enable dynamic linking.  --enable-shared implies this, so
### --enable-dl is only need if you are only building static libraries
### and want to try dynamic linking too (works on some systems, for
### example, OS X and Windows).

AC_ARG_ENABLE(dl,
  [AS_HELP_STRING([--enable-dl],
     [create shared libraries (not all systems)])],
  [if test "$enableval" = no; then ENABLE_DYNAMIC_LINKING=false;
   else ENABLE_DYNAMIC_LINKING=true; fi],
  ENABLE_DYNAMIC_LINKING=true)

if $STATIC_LIBS || $SHARED_LIBS; then
  true
else
  AC_MSG_ERROR([You can't disable building static AND shared libraries!])
fi

AC_ARG_ENABLE(rpath,
  [AS_HELP_STRING([--enable-rpath],
     [override the default link options for rpath; e.g., --enable-rpath='-rpath $(octlibdir)'])],
  [ if test "$enableval" = no; then use_rpath=false;
    else
      use_rpath=true
      if test "$enableval" = yes; then true;
      else enable_rpath_arg="$enableval"; fi
    fi], [use_rpath=true])

CPICFLAG=-fPIC
CXXPICFLAG=-fPIC
FPICFLAG=-fPIC
SHLEXT=so
SHLLIB='$(SHLEXT)'
SHLBIN=
SHLEXT_VER='$(SHLEXT).$(version)'
SHLLIB_VER='$(SHLLIB).$(version)'
SHLBIN_VER='$(SHLBIN).$(version)'
SHLLINKEXT=
LIBPRE=lib
SHLLIBPRE=lib
SHLBINPRE=lib
SH_LD='$(CXX)'
SH_LDFLAGS=-shared
DL_LD='$(SH_LD)'
DL_LDFLAGS='$(SH_LDFLAGS)'
MKOCTFILE_DL_LDFLAGS='$(DL_LDFLAGS)'
SONAME_FLAGS=
RLD_FLAG=
NO_OCT_FILE_STRIP=false
TEMPLATE_AR='$(AR)'
TEMPLATE_ARFLAGS="$ARFLAGS"
CRUFT_DLL_DEFS=
OCTAVE_DLL_DEFS=
OCTINTERP_DLL_DEFS=
OCTGRAPHICS_DLL_DEFS=
library_path_var=LD_LIBRARY_PATH
case "$canonical_host_type" in
  *-*-386bsd* | *-*-netbsd*)
    SH_LD=ld
    SH_LDFLAGS=-Bshareable
  ;;
  *-*-openbsd*)
    SH_LDFLAGS='-shared -fPIC'
  ;;
  *-*-freebsd*)
    SH_LDFLAGS="-shared -Wl,-x"
    RLD_FLAG='-Wl,-rpath -Wl,$(octlibdir)'
  ;;
  alpha*-dec-osf*)
    CPICFLAG=
    CXXPICFLAG=
    FPICFLAG=
    SH_LDFLAGS="-shared -Wl,-expect_unresolved -Wl,'*'"
    RLD_FLAG='-Wl,-rpath -Wl,$(octlibdir)'
  ;;
  *-*-darwin*)
    DL_LDFLAGS='-bundle -bundle_loader $(TOPDIR)/src/octave $(LDFLAGS)'
    MKOCTFILE_DL_LDFLAGS='-bundle -bundle_loader $$BINDIR/octave-$$OCTAVE_VERSION$$EXEEXT'
    SH_LDFLAGS='-dynamiclib -single_module $(LDFLAGS)'
    case "$canonical_host_type" in
      powerpc-*)
        CXXPICFLAG=
        CPICFLAG=
        FPICFLAG=
      ;;
    esac
    SHLEXT=dylib 
    SHLLIB='$(SHLEXT)'
    SHLEXT_VER='$(version).$(SHLEXT)'
    SHLLIB_VER='$(version).$(SHLLIB)'
    NO_OCT_FILE_STRIP=true
    SONAME_FLAGS='-install_name $(octlibdir)/$@'
    library_path_var=DYLD_LIBRARY_PATH	
  ;;
  *-*-cygwin*)
    LIBPRE=cyg
    SHLLIBPRE=cyg
    SHLBINPRE=lib
    SHLEXT=dll
    SHLLIB=dll.a
    SHLBIN=a    
    DL_LDFLAGS="-shared -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc"
    SH_LDFLAGS="-shared -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--enable-auto-image-base"
    SONAME_FLAGS='-Wl,--out-implib=$(patsubst $(SHLLIBPRE)%,$(SHLBINPRE)%,$@).a'
  ;;
  *-*-mingw*)
    CPICFLAG=
    CXXPICFLAG=
    FPICFLAG=
    SHLEXT=dll
    SHLLIB=dll.a
    SHLBIN=dll
    DL_LDFLAGS="-shared -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc"
    SH_LDFLAGS="-shared -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--enable-auto-image-base"
    SONAME_FLAGS='-Wl,--out-implib=$@.a'
    library_path_var=PATH
  ;;

  *-*-msdosmsvc)
    DL_LDFLAGS="-shared"
    CPICFLAG=
    CXXPICFLAG=
    FPICFLAG=
    SHLEXT=dll
    SHLLIB=lib
    SHLBIN=dll
    LIBPRE=
    SHLLIBPRE=
    SHLBINPRE=
    SH_LDFLAGS="-shared"
      if test -n "`echo $CFLAGS | grep -e '-g'`" -o -n "`echo $CXXFLAGS | grep -e '-g'`"; then
      DL_LDFLAGS="$DL_LDFLAGS -g"
      SH_LDFLAGS="$SH_LDFLAGS -g"
    fi
    NO_OCT_FILE_STRIP=true
    library_path_var=PATH
    NO_OCT_FILE_STRIP=true
    ## Extra compilation flags.
    CRUFT_DLL_DEFS="-DCRUFT_DLL"
    OCTAVE_DLL_DEFS="-DOCTAVE_DLL"
    OCTINTERP_DLL_DEFS="-DOCTINTERP_DLL"
    OCTGRAPHICS_DLL_DEFS="-DOCTGRAPHICS_DLL"
  ;;
  *-*-linux* | *-*-gnu*)
    MKOCTFILE_DL_LDFLAGS="-shared -Wl,-Bsymbolic"
    SONAME_FLAGS='-Wl,-soname -Wl,$@'
    RLD_FLAG='-Wl,-rpath -Wl,$(octlibdir)'
  ;;
  i[[3456]]86-*-sco3.2v5*)
    SONAME_FLAGS='-Wl,-h -Wl,$@'
    RLD_FLAG=
    SH_LDFLAGS=-G
  ;;
  rs6000-ibm-aix* | powerpc-ibm-aix*)
    CPICFLAG=
    CXXPICFLAG=
    FPICFLAG=
  ;;
  hppa*-hp-hpux*)
    if test "$ac_cv_f77_compiler_gnu" = yes; then
      FPICFLAG=-fPIC
    else
      FPICFLAG=+Z
    fi
    SHLEXT=sl
    SH_LDFLAGS="-shared -fPIC"
    RLD_FLAG='-Wl,+b -Wl,$(octlibdir)'
  ;;
  *-sgi-*)
    CPICFLAG=
    CXXPICFLAG=
    FPICFLAG=
    RLD_FLAG='-rpath $(octlibdir)'
  ;;
  sparc-sun-sunos4*)
    if test "$ac_cv_f77_compiler_gnu" = yes; then
      FPICFLAG=-fPIC
    else
      FPICFLAG=-PIC
    fi
    SH_LD=ld
    SH_LDFLAGS="-assert nodefinitions"
    RLD_FLAG='-L$(octlibdir)'
  ;;
  sparc-sun-solaris2* | i386-pc-solaris2*)
    if test "$ac_cv_f77_compiler_gnu" = yes; then
      FPICFLAG=-fPIC
    else
      FPICFLAG=-KPIC
    fi
    if test "$GCC" = yes; then
      CPICFLAG=-fPIC
    else
      CPICFLAG=-KPIC
    fi
    if test "$GXX" = yes; then
      CXXPICFLAG=-fPIC
      SH_LDFLAGS=-shared
    else
      CXXPICFLAG=-KPIC
      SH_LDFLAGS=-G
    fi
    RLD_FLAG='-R $(octlibdir)'
    ## Template closures in archive libraries need a different mechanism.
    if test "$GXX" = yes; then
      true
    else
      TEMPLATE_AR='$(CXX)'
      TEMPLATE_ARFLAGS="-xar -o"
    fi
  ;;
esac

if $use_rpath; then
  if test -n "$enable_rpath_arg"; then
    RLD_FLAG="$enable_rpath_arg"
  fi
else
  RLD_FLAG=""
fi

AC_MSG_NOTICE([defining FPICFLAG to be $FPICFLAG])
AC_MSG_NOTICE([defining CPICFLAG to be $CPICFLAG])
AC_MSG_NOTICE([defining CXXPICFLAG to be $CXXPICFLAG])
AC_MSG_NOTICE([defining SHLEXT to be $SHLEXT])
AC_MSG_NOTICE([defining SHLLIB to be $SHLLIB])
AC_MSG_NOTICE([defining SHLBIN to be $SHLBIN])
AC_MSG_NOTICE([defining SHLEXT_VER to be $SHLEXT_VER])
AC_MSG_NOTICE([defining SHLLIB_VER to be $SHLLIB_VER])
AC_MSG_NOTICE([defining SHLBIN_VER to be $SHLBIN_VER])
AC_MSG_NOTICE([defining SHLLINKEXT to be $SHLLINKEXT])
AC_MSG_NOTICE([defining LIBPRE to be $LIBPRE])
AC_MSG_NOTICE([defining SHLLIBPRE to be $SHLLIBPRE])
AC_MSG_NOTICE([defining SHLBINPRE to be $SHLBINPRE])
AC_MSG_NOTICE([defining SH_LD to be $SH_LD])
AC_MSG_NOTICE([defining SH_LDFLAGS to be $SH_LDFLAGS])
AC_MSG_NOTICE([defining DL_LD to be $DL_LD])
AC_MSG_NOTICE([defining DL_LDFLAGS to be $DL_LDFLAGS])
AC_MSG_NOTICE([defining MKOCTFILE_DL_LDFLAGS to be $MKOCTFILE_DL_LDFLAGS])
AC_MSG_NOTICE([defining SONAME_FLAGS to be $SONAME_FLAGS])
AC_MSG_NOTICE([defining NO_OCT_FILE_STRIP to be $NO_OCT_FILE_STRIP])
AC_MSG_NOTICE([defining RLD_FLAG to be $RLD_FLAG])
AC_MSG_NOTICE([defining TEMPLATE_AR to be $TEMPLATE_AR])
AC_MSG_NOTICE([defining TEMPLATE_ARFLAGS to be $TEMPLATE_ARFLAGS])
AC_MSG_NOTICE([defining CRUFT_DLL_DEFS to be $CRUFT_DLL_DEFS])
AC_MSG_NOTICE([defining OCTAVE_DLL_DEFS to be $OCTAVE_DLL_DEFS])
AC_MSG_NOTICE([defining OCTINTERP_DLL_DEFS to be $OCTINTERP_DLL_DEFS])
AC_MSG_NOTICE([defining OCTGRAPHICS_DLL_DEFS to be $OCTGRAPHICS_DLL_DEFS])
AC_MSG_NOTICE([defining library_path_var to be $library_path_var])
AC_SUBST(FPICFLAG)
AC_SUBST(CPICFLAG)
AC_SUBST(CXXPICFLAG)
AC_SUBST(SHLEXT)
AC_SUBST(SHLLIB)
AC_SUBST(SHLBIN)
AC_SUBST(SHLEXT_VER)
AC_SUBST(SHLLIB_VER)
AC_SUBST(SHLBIN_VER)
AC_SUBST(SHLLINKEXT)
AC_SUBST(LIBPRE)
AC_SUBST(SHLLIBPRE)
AC_SUBST(SHLBINPRE)
AC_SUBST(SH_LD)
AC_SUBST(SH_LDFLAGS)
AC_SUBST(DL_LD)
AC_SUBST(DL_LDFLAGS)
AC_SUBST(MKOCTFILE_DL_LDFLAGS)
AC_SUBST(SONAME_FLAGS)
AC_SUBST(NO_OCT_FILE_STRIP)
AC_SUBST(RLD_FLAG)
AC_SUBST(TEMPLATE_AR)
AC_SUBST(TEMPLATE_ARFLAGS)
AC_SUBST(CRUFT_DLL_DEFS)
AC_SUBST(OCTAVE_DLL_DEFS)
AC_SUBST(OCTINTERP_DLL_DEFS)
AC_SUBST(OCTGRAPHICS_DLL_DEFS)
AC_SUBST(library_path_var)

### special checks for odd OS specific things.
###
### I am told that on some SCO systems, the only place to find some
### functions like gethostname and gettimeofday is in libsocket.

AC_CHECK_FUNCS(gethostname, [], [AC_CHECK_LIB(socket, gethostname)])
AC_CHECK_FUNCS(getpwnam, [], [AC_CHECK_LIB(sun, getpwnam)])

case "$canonical_host_type" in
  *-*-cygwin*)
   AC_CHECK_LIB(wsock32, gethostname)
   LIBS="$LIBS -lwsock32"
  ;;
  *-*-msdosmsvc* | *-*-mingw*)
  LIBS="$LIBS -lgdi32 -lws2_32 -lkernel32"
  ;;
esac

### Type stuff.

AC_TYPE_MODE_T
AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_TYPE_UID_T
AC_CHECK_TYPES([dev_t, ino_t, nlink_t, nlink_t])
AC_CHECK_TYPES([long long int, unsigned long long int])
AC_CHECK_TYPES([sigset_t, sig_atomic_t], , , [
#if defined (HAVE_SYS_TYPES_H)
#include <sys/types.h>
#endif
#include <signal.h>])

### How big are ints and how are they oriented?  These could probably
### be eliminated in favor of run-time checks.

AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
AC_CHECK_SIZEOF(long long)

### Does the C compiler handle alloca() and const correctly?

AC_FUNC_ALLOCA
AC_C_CONST

### See if we should use placement delete.

OCTAVE_PLACEMENT_DELETE

### See if we can auto allocate variable sized arrays.

OCTAVE_DYNAMIC_AUTO_ARRAYS

### See if we can use fast integer arithmetics

OCTAVE_FAST_INT_OPS

### Check for long double type (for 64-bit integers)

AC_CHECK_SIZEOF(long double)

### Checks for header files.

AC_HEADER_STDC
AC_HEADER_DIRENT
AC_HEADER_TIME
AC_HEADER_SYS_WAIT

### C headers

AC_CHECK_HEADERS(assert.h curses.h direct.h dlfcn.h fcntl.h float.h \
  floatingpoint.h grp.h ieeefp.h inttypes.h limits.h locale.h memory.h nan.h \
  ncurses.h poll.h pthread.h pwd.h stdint.h stdlib.h string.h sunmath.h sys/ioctl.h \
  sys/param.h sys/poll.h sys/resource.h sys/select.h sys/stat.h \
  sys/time.h sys/times.h sys/types.h sys/utsname.h sys/utime.h termcap.h \
  unistd.h utime.h varargs.h)

### C++ headers

AC_LANG_PUSH(C++)
AC_CHECK_HEADERS(sstream)
AC_LANG_POP(C++)

have_termios_h=no
AC_CHECK_HEADERS($TERMIOS_H, have_termios_h=yes)
AC_CHECK_HEADERS(termio.h, have_termio_h=yes, have_termio_h=no)
AC_CHECK_HEADERS(sgtty.h, have_sgtty_h=yes, have_sgtty_h=no)
AC_CHECK_HEADERS(glob.h, have_glob_h=yes, have_glob_h=no)
AC_CHECK_HEADERS(fnmatch.h, have_fnmatch_h=yes, have_fnmatch_h=no)
AC_CHECK_HEADERS(conio.h, have_conio_h=yes, have_conio_h=no)

### I'm told that termios.h is broken on NeXT systems.

case "$canonical_host_type" in
  *-*-nextstep*)
    if test "$have_termios_h" = yes; then
      AC_MSG_WARN([Ignoring termios.h on NeXT systems.])
      have_termios_h=no
    fi
  ;;
esac

if test "$have_termios_h" = yes \
    || test "$have_termio_h" = yes \
    || test "$have_sgtty_h" = yes; then
  true
else
  AC_MSG_WARN([I couldn't find termios.h, termio.h, or sgtty.h!])
fi

LIBGLOB=
AC_SUBST(LIBGLOB)
if test "$have_fnmatch_h" = yes && test "$have_glob_h" = yes; then
  AC_CHECK_FUNCS(fnmatch, have_fnmatch=yes, [
    AC_CHECK_LIB(glob, fnmatch, [have_fnmatch=yes; LIBGLOB=-lglob],
      have_fnmatch=no)])
  AC_CHECK_FUNCS(glob, have_glob=yes, [
    AC_CHECK_LIB(glob, glob, [have_glob=yes; LIBGLOB=-lglob],
      have_glob=no)])

  if test "$have_fnmatch" != yes || test "$have_glob" != yes; then
    AC_MSG_ERROR([You are required to have fnmatch and glob])
  fi
else
  AC_MSG_ERROR([You are required to have fnmatch.h and glob.h])
fi

### Checks for functions and variables.

AC_CHECK_FUNCS(atexit basename bcopy bzero canonicalize_file_name \
  chmod dup2 endgrent endpwent execvp expm1 expm1f fcntl fork fstat getcwd \
  getegid geteuid getgid getgrent getgrgid getgrnam getpgrp getpid \
  getppid getpwent getpwuid gettimeofday getuid getwd _kbhit kill \
  lgamma lgammaf lgamma_r lgammaf_r link localtime_r log1p log1pf lstat \
  memmove mkdir mkfifo mkstemp on_exit pipe poll putenv raise readlink \
  realpath rename resolvepath rindex rmdir round roundl select setgrent setlocale \
  setpwent setvbuf sigaction siglongjmp sigpending sigprocmask sigsuspend \
  snprintf stat strcasecmp strdup strerror stricmp strncasecmp \
  strnicmp strptime strsignal symlink tempnam tgamma tgammaf trunc umask \
  uname unlink usleep utime vfprintf vsprintf vsnprintf waitpid \
  _chmod _snprintf x_utime _utime32)

case "$canonical_host_type" in
  *-*-mingw*)
    ## MinGW does not provide a mkstemp function.  However, it provides
    ## the mkstemps function in libiberty.
    AC_MSG_CHECKING(for mkstemps in libiberty)
    save_LIBS="$LIBS"
    LIBS="-liberty $LIBS"
    AC_LINK_IFELSE([
      AC_LANG_PROGRAM([[int mkstemps (char *pattern, int suffix_len);]], 
       [[mkstemps ("XXXXXX", 0);]]
    )],
    [AC_MSG_RESULT(yes)
     HAVE_MKSTEMPS=yes
     AC_DEFINE(HAVE_MKSTEMPS, 1, [Define if mkstemps is available in libiberty.])
    ],
    [AC_MSG_RESULT(no)
     HAVE_MKSTEMPS=no
     LIBS="$save_LIBS"
    ])
   ;;
esac

case "$canonical_host_type" in
  *-*-msdosmsvc)
    ## The %T format specifier for strftime is reportedly broken,
    ## so use our version.  We could use an actual configure test
    ## for this.
  ;;
  *)
    AC_CHECK_FUNCS(strftime)
  ;;
esac

OCTAVE_STRPTIME_BROKEN
OCTAVE_SMART_PUTENV

case "$canonical_host_type" in
  *-*-msdosmsvc | *-*-mingw*)
    AC_MSG_CHECKING([for required _WIN32_WINNT])
    AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[
#include <windows.h>
#if _WIN32_WINNT < 0x0403
#error "Wrong version"
#endif]], []),
      AC_MSG_RESULT([none]), [
	AC_DEFINE(_WIN32_WINNT, 0x0403, [Define to 0x0403 to access InitializeCriticalSectionAndSpinCount])
	AC_MSG_RESULT([0x0403])])
    AC_MSG_CHECKING([whether _USE_MATH_DEFINES needs to be defined])
    AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[#include <math.h>]],
[[int x = M_LN2;]]),
      AC_MSG_RESULT([no]), [
	AC_DEFINE(_USE_MATH_DEFINES, 1, [Define if your system needs it to define math constants like M_LN2])
	AC_MSG_RESULT([yes])])
  ;;
esac

### Dynamic linking is now enabled only if we are building shared
### libs and some API for dynamic linking is detected.

LD_CXX='$(CXX)'
RDYNAMIC_FLAG=
DL_API_MSG=""
dlopen_api=false
shl_load_api=false
loadlibrary_api=false
dyld_api=false

if $SHARED_LIBS || $ENABLE_DYNAMIC_LINKING; then

  ## Check for dyld first since OS X can have a non-standard libdl	

  AC_CHECK_HEADER(mach-o/dyld.h)  
  if test "$ac_cv_header_mach_o_dyld_h" = yes; then
    dyld_api=true
  else 
    AC_CHECK_LIB(dld, shl_load)
    AC_CHECK_FUNCS(shl_load shl_findsym)
    if test "$ac_cv_func_shl_load" = yes \
      && test "$ac_cv_func_shl_findsym" = yes; then
      shl_load_api=true
    else
      AC_CHECK_LIB(wsock32, LoadLibrary)
      AC_CHECK_FUNCS(LoadLibrary)
      if test "$ac_cv_func_loadlibrary" = yes; then
        loadlibrary_api=true
      else
        AC_CHECK_LIB(dl, dlopen)
        AC_CHECK_FUNCS(dlopen dlsym dlerror dlclose)
        if test "$ac_cv_func_dlclose" = yes \
          && test "$ac_cv_func_dlerror" = yes \
          && test "$ac_cv_func_dlopen" = yes \
          && test "$ac_cv_func_dlsym" = yes; then
          dlopen_api=true
        else
	  case "$canonical_host_type" in
	    i[[3456]]86-*-sco3.2v5*)
	      LD_CXX='LD_RUN_PATH=$LD_RUN_PATH:$(octlibdir) $(CXX)'
	      dlopen_api=true
	    ;;
	  esac
	fi
      fi
    fi
  fi

  ## autoconf test for LoadLibrary appears broken. Bypass for cygwin/mingw 
  if $dlopen_api || $shl_load_api || $loadlibrary_api || $dyld_api; then
    true
  else
    case "$canonical_host_type" in
      *-*-cygwin* | *-*-mingw* | *-*-msdosmsvc)
       loadlibrary_api=true;
      ;;
    esac
  fi

  if $dlopen_api; then
    DL_API_MSG="(dlopen)"
    AC_DEFINE(HAVE_DLOPEN_API, 1, [Define if your system has dlopen, dlsym, dlerror, and dlclose for dynamic linking])
    OCTAVE_CXX_FLAG(-rdynamic, [RDYNAMIC_FLAG=-rdynamic])
  elif $shl_load_api; then
    DL_API_MSG="(shl_load)"
    AC_DEFINE(HAVE_SHL_LOAD_API, 1, [Define if your system has shl_load and shl_findsym for dynamic linking])
  elif $loadlibrary_api; then
    DL_API_MSG="(LoadLibrary)"
    AC_DEFINE(HAVE_LOADLIBRARY_API, 1, [Define if your system has LoadLibrary for dynamic linking])
  elif $dyld_api; then
    DL_API_MSG="(dyld)"
    AC_DEFINE(HAVE_DYLD_API, 1, [Define if your system has dyld for dynamic linking])
  fi

  if $dlopen_api || $shl_load_api || $loadlibrary_api || $dyld_api; then
    ENABLE_DYNAMIC_LINKING=true
    AC_DEFINE(ENABLE_DYNAMIC_LINKING, 1, [Define if using dynamic linking])
  fi
fi

if $SHARED_LIBS; then
   LIBOCTINTERP=-loctinterp$SHLLINKEXT
   LIBOCTAVE=-loctave$SHLLINKEXT
   LIBCRUFT=-lcruft$SHLLINKEXT
else
  LIBOCTINTERP='$(TOPDIR)/src/liboctinterp.$(LIBEXT)'
  LIBOCTAVE='$(TOPDIR)/liboctave/liboctave.$(LIBEXT)'
  LIBCRUFT='$(TOPDIR)/libcruft/libcruft.$(LIBEXT)'
fi

AC_SUBST(LD_CXX)
AC_SUBST(RDYNAMIC_FLAG)
AC_SUBST(ENABLE_DYNAMIC_LINKING)
AC_SUBST(LIBOCTINTERP)
AC_SUBST(LIBOCTAVE)
AC_SUBST(LIBCRUFT)

### There is more than one possible prototype for gettimeofday.  See
### which one (if any) appears in sys/time.h.  These tests are from
### Emacs 19.

AC_MSG_CHECKING(for struct timeval)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef TIME_WITH_SYS_TIME
#include <sys/time.h>
#include <time.h>
#else
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#else
#include <time.h>
#endif
#endif]], [[static struct timeval x; x.tv_sec = x.tv_usec;]])],
  [AC_MSG_RESULT(yes)
   HAVE_TIMEVAL=yes
   AC_DEFINE(HAVE_TIMEVAL, 1, [Define if struct timeval is defined.])],
  [AC_MSG_RESULT(no)
   HAVE_TIMEVAL=no])

if test "x$HAVE_TIMEVAL" = xyes; then
AC_MSG_CHECKING(whether gettimeofday can't accept two arguments)
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#ifdef TIME_WITH_SYS_TIME
#include <sys/time.h>
#include <time.h>
#else
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#else
#include <time.h>
#endif
#endif]], [[struct timeval time;
  struct timezone dummy;
  gettimeofday (&time, &dummy);]])],
  [AC_MSG_RESULT(no)],
  [AC_MSG_RESULT(yes)
   AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
     [Define if your system has a single-arg prototype for gettimeofday.])])
fi

dnl Would like to get rid of this cruft, and just have
dnl
dnl   AC_CHECK_FUNCS(finite isnan isinf)
dnl
dnl instead, but that used to fail on some systems...
dnl
dnl Also just using AC_CHECK_FUNCS doesn't seem to work to find isinf
dnl and isnan on Linux systems, so we use AC_CHECK_FUNC, and if that
dnl fails, we try again by including math.h and invoking the function
dnl with an argument. 

### I am told that Inf and NaN don't work on m68k HP sytems, and that
### on SCO systems, isnan and isinf don't work, but they can be
### replaced by something that does.

case "$canonical_host_type" in
  m68k-hp-hpux*)
  ;;
  *-*-sco*)
    AC_MSG_NOTICE([defining SCO to be 1])
    AC_DEFINE(SCO, 1, [Define if using an SCO system.])
    AC_MSG_NOTICE([forcing HAVE_ISINF for SCO])
    AC_DEFINE(HAVE_ISINF, 1, [Define if you have isinf().])
    AC_MSG_NOTICE([forcing HAVE_ISNAN for SCO])
    AC_DEFINE(HAVE_ISNAN, 1, [Define if you have isnan().])
  ;;
  *)
    AC_CHECK_FUNCS(finite isnan isinf copysign signbit)
    AC_CHECK_FUNCS(_finite _isnan _copysign)
    AC_CHECK_DECLS(signbit, , , [#include <math.h>])
  ;;
esac

### Check for nonstandard but common math functions that we need.

AC_CHECK_FUNCS(acosh acoshf asinh asinhf atanh atanhf erf erff erfc erfcf exp2 exp2f log2 log2f)
AC_CHECK_FUNCS(hypotf _hypotf)

### Checks for OS specific cruft.

AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_blocks, struct stat.st_rdev])

AC_STRUCT_TM
AC_STRUCT_TIMEZONE
AC_FUNC_CLOSEDIR_VOID

AC_CHECK_MEMBERS(struct group.gr_passwd)

# mkdir takes a single argument on some systems.
OCTAVE_MKDIR_TAKES_ONE_ARG

octave_found_termlib=no
for termlib in ncurses curses termcap terminfo termlib; do
  AC_CHECK_LIB(${termlib}, tputs, [TERMLIBS="${TERMLIBS} -l${termlib}"])
  case "${TERMLIBS}" in
    *-l${termlib}*)
      LIBS="$TERMLIBS $LIBS"
      AC_SUBST(TERMLIBS)
      octave_found_termlib=yes
      break
    ;;
  esac
done

if test "$octave_found_termlib" = no; then
  warn_termlibs="I couldn't find -ltermcap, -lterminfo, -lncurses, -lcurses, o\
r -ltermlib!"
  AC_MSG_WARN($warn_termlibs)
fi

OCTAVE_ENABLE_READLINE

AC_MSG_CHECKING([for struct exception in math.h])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
  [[struct exception *x; x->type; x->name;]])],
  [AC_MSG_RESULT(yes)
   AC_DEFINE(EXCEPTION_IN_MATH, 1,
     [Define if your math.h declares struct exception for matherr().])],
  [AC_MSG_RESULT(no)])

### Signal stuff.

AC_TYPE_SIGNAL
AC_CHECK_DECLS([sys_siglist], [], [],
[#include <signal.h>
/* NetBSD declares sys_siglist in unistd.h.  */
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
])
OCTAVE_SIGNAL_CHECK
OCTAVE_REINSTALL_SIGHANDLERS
if test "$ac_cv_type_signal" = "void"; then
  AC_DEFINE(RETSIGTYPE_IS_VOID, 1, [Define if this if RETSIGTYPE is defined to be void.  Needed because preprocessor comparisons to void fail on some systems.])
fi

### A system dependent kluge or two.

AC_CHECK_FUNCS(getrusage times)
case "$canonical_host_type" in
  *-*-cygwin*)
    AC_DEFINE(RUSAGE_TIMES_ONLY, 1, [Define if your struct rusage only has time information.])
  ;;
esac

### Checks for other programs used for building, testing, installing,
### and running Octave.

AC_PROG_AWK
OCTAVE_PROG_FIND
OCTAVE_PROG_SED
OCTAVE_PROG_PERL
OCTAVE_PROG_PYTHON

OCTAVE_PROG_FLEX
OCTAVE_PROG_BISON

AC_PROG_LN_S

AC_PROG_INSTALL
INSTALL_SCRIPT='${INSTALL}'
AC_SUBST(INSTALL_SCRIPT)

OCTAVE_PROG_DESKTOP_FILE_INSTALL

OCTAVE_PROG_GNUPLOT
OCTAVE_PROG_PAGER
OCTAVE_PROG_GPERF

OCTAVE_PROG_GHOSTSCRIPT
OCTAVE_PROG_MAKEINFO
OCTAVE_PROG_TEXI2DVI
OCTAVE_PROG_TEXI2PDF

### Even though we include config.h, we need to have the preprocessor
### defines available in a variable for the octave-bug script.  Use
### UGLY_DEFS for that.

AC_OUTPUT_MAKE_DEFS

### We have to insert extra levels of backslash quoting here so that
### the right thing ends up in oct-conf.h.
UGLY_DEFS=`echo $DEFS | $SED 's,\\",\\\\\\\\\\\\\\\\\\",g'`
AC_MSG_NOTICE([defining UGLY_DEFS to be $UGLY_DEFS])
AC_SUBST(UGLY_DEFS)

### Maybe add -Wall, -W, and -Wshadow to compiler flags now that we're
### done feature testing. 

try_extra_warning_flags=true
AC_ARG_ENABLE(extra-warning-flags,
  [AS_HELP_STRING([--enable-extra-warning-flags],
     [add -Wall, -W, -Wshadow, and -Wold-style-cast options to CFLAGS and CXXFLAGS  (on by default, but only if the compiler appears to accept them)])],
  [if test "$enableval" = no; then
     try_extra_warning_flags=false
   fi], [])

if $try_extra_warning_flags; then
  OCTAVE_CC_FLAG(-Wall, [
    WARN_CFLAGS="$WARN_CFLAGS -Wall";
    AC_MSG_RESULT([adding -Wall to WARN_CFLAGS])])
  OCTAVE_CC_FLAG(-W, [
    WARN_CFLAGS="$WARN_CFLAGS -W";
    AC_MSG_RESULT([adding -W to WARN_CFLAGS])])
  OCTAVE_CC_FLAG(-Wshadow, [
    WARN_CFLAGS="$WARN_CFLAGS -Wshadow";
    AC_MSG_RESULT([adding -Wshadow to WARN_CFLAGS])])

  OCTAVE_CXX_FLAG(-Wall, [
    WARN_CXXFLAGS="$WARN_CXXFLAGS -Wall";
    AC_MSG_RESULT([adding -Wall to WARN_CXXFLAGS])])
  OCTAVE_CXX_FLAG(-W, [
    WARN_CXXFLAGS="$WARN_CXXFLAGS -W";
    AC_MSG_RESULT([adding -W to WARN_CXXFLAGS])])
  OCTAVE_CXX_FLAG(-Wshadow, [
    WARN_CXXFLAGS="$WARN_CXXFLAGS -Wshadow";
    AC_MSG_RESULT([adding -Wshadow to WARN_CXXFLAGS])])
  OCTAVE_CXX_FLAG(-Wold-style-cast, [
    WARN_CXXFLAGS="$WARN_CXXFLAGS -Wold-style-cast";
    AC_MSG_RESULT([adding -Wold-style-cast to WARN_CXXFLAGS])])
fi

GCC_STRICT_FLAGS="-Wcast-align -Wcast-qual -Wmissing-prototypes \
  -Wpointer-arith -Wstrict-prototypes -Wwrite-strings"

GXX_STRICT_FLAGS="-Wcast-align -Wcast-qual -Wpointer-arith \
  -Wwrite-strings -Weffc++"

try_strict_warning_flags=false

AC_ARG_ENABLE(strict-warning-flags,
  [AS_HELP_STRING([--enable-strict-warning-flags],
     [add extra strict warning options to CFLAGS and CXXFLAGS (off by default)])],
  [if test "$enableval" = yes; then
     try_strict_warning_flags=true
   fi], [])

if $try_strict_warning_flags; then
  for flag in $GCC_STRICT_FLAGS; do
    OCTAVE_CC_FLAG($flag, [
      WARN_CFLAGS="$WARN_CFLAGS $flag";
      AC_MSG_RESULT([adding $flag to WARN_CFLAGS])])
  done
  for flag in $GXX_STRICT_FLAGS; do
    OCTAVE_CXX_FLAG($flag, [
      WARN_CXXFLAGS="$WARN_CXXFLAGS $flag";
      AC_MSG_RESULT([adding $flag to WARN_CXXFLAGS])])
  done
fi

AC_SUBST(WARN_CFLAGS)
AC_SUBST(WARN_CXXFLAGS)

### Run configure in subdirectories.

export CC
export CXX
export F77

AC_CONFIG_SUBDIRS(scripts)

### Some things to add to the bottom of config.h.

AH_BOTTOM([
#if defined (__GNUC__)
#define GCC_ATTR_DEPRECATED __attribute__ ((__deprecated__))
#define GCC_ATTR_NORETURN __attribute__ ((__noreturn__))
#define GCC_ATTR_UNUSED __attribute__ ((__unused__))
#else
#define GCC_ATTR_DEPRECATED
#define GCC_ATTR_NORETURN
#define GCC_ATTR_UNUSED
#endif

#define X_CAST(T, E) (T) (E)

#if defined (CXX_BROKEN_REINTERPRET_CAST)
#define FCN_PTR_CAST(T, E) (T) (E)
#else
#define FCN_PTR_CAST(T, E) reinterpret_cast<T> (E)
#endif

#if defined(HAVE_F2C) && !defined(F77_FUNC)
#  define F77_FUNC(x,X) x ## _
#  define F77_FUNC_(x,X) x ## __
#endif

#if !defined(HAVE_DEV_T)
typedef short dev_t;
#endif

#if !defined(HAVE_INO_T)
typedef unsigned long ino_t;
#endif

#if !defined(HAVE_NLINK_T)
typedef short nlink_t;
#endif

#if !defined(HAVE_SIGSET_T)
typedef int sigset_t;
#endif

#if !defined(HAVE_SIG_ATOMIC_T)
typedef int sig_atomic_t;
#endif

#if defined (_MSC_VER)
#define __WIN32__
#define WIN32
/* missing parameters in macros */
#pragma warning (disable: 4003)
/* missing implementations in template instantiation */
#pragma warning (disable: 4996)
/* deprecated function names (FIXME?) */
#pragma warning (disable: 4661)
#endif

#if defined (__WIN32__) && ! defined (__CYGWIN__)
#define OCTAVE_HAVE_WINDOWS_FILESYSTEM 1
#elif defined (__CYGWIN__)
#define OCTAVE_HAVE_WINDOWS_FILESYSTEM 1
#define OCTAVE_HAVE_POSIX_FILESYSTEM 1
#else
#define OCTAVE_HAVE_POSIX_FILESYSTEM 1
#endif

/* Define if we expect to have <windows.h>, Sleep, etc. */
#if defined (__WIN32__) && ! defined (__CYGWIN__)
#define OCTAVE_USE_WINDOWS_API 1
#endif

#if defined (__APPLE__) && defined (__MACH__)
#define OCTAVE_USE_OS_X_API 1
#endif

/* sigsetjmp is a macro, not a function. */
#if defined (sigsetjmp) && defined (HAVE_SIGLONGJMP)
#define OCTAVE_HAVE_SIG_JUMP
#endif

#if defined (__DECCXX)
#define __USE_STD_IOSTREAM
#endif

#if defined (_UNICOS)
#define F77_USES_CRAY_CALLING_CONVENTION
#endif

#if 0
#define F77_USES_VISUAL_FORTRAN_CALLING_CONVENTION
#endif

#ifdef USE_64_BIT_IDX_T
#define SIZEOF_OCTAVE_IDX_TYPE 8
#else
#define SIZEOF_OCTAVE_IDX_TYPE SIZEOF_INT
#endif

// To be able to use long doubles for 64-bit mixed arithmetics, we need them at
// least 80 bits wide and we need roundl declared in math.h.
// FIXME -- maybe substitute this by a more precise check in the future.
#if (SIZEOF_LONG_DOUBLE >= 10) && defined (HAVE_ROUNDL)
#define OCTAVE_INT_USE_LONG_DOUBLE
#endif

#define OCTAVE_EMPTY_CPP_ARG

#include "oct-dlldefs.h"
#include "oct-types.h"
])

### Do the substitutions in all the Makefiles.

AC_CONFIG_COMMANDS([Makefile], [if test "$ac_srcdir" != "."; then
  cp $srcdir/Makefile .
fi])

AC_SUBST(ac_config_files)

AC_CONFIG_FILES([octMakefile Makeconf test/Makefile
  doc/Makefile doc/faq/Makefile doc/interpreter/Makefile
  doc/liboctave/Makefile doc/refcard/Makefile emacs/Makefile
  examples/Makefile examples/@polynomial/Makefile liboctave/Makefile
  liboctave/oct-types.h src/Makefile src/mxarray.h libcruft/Makefile
  libcruft/Makerules libcruft/amos/Makefile libcruft/blas/Makefile
  libcruft/daspk/Makefile libcruft/dasrt/Makefile
  libcruft/dassl/Makefile libcruft/fftpack/Makefile
  libcruft/lapack/Makefile 
  libcruft/misc/Makefile libcruft/odepack/Makefile
  libcruft/ordered-qz/Makefile libcruft/quadpack/Makefile
  libcruft/ranlib/Makefile libcruft/slatec-fn/Makefile
  libcruft/slatec-err/Makefile libcruft/villad/Makefile
  libcruft/blas-xtra/Makefile libcruft/lapack-xtra/Makefile])

AC_OUTPUT

### Print a summary so that important information isn't missed.

if test -z "$F77"; then
  FORT="$F2C $F2CFLAGS"
else
  FORT="$F77 $FFLAGS"
fi

AC_MSG_NOTICE([

Octave is now configured for $canonical_host_type

  Source directory:     $srcdir
  Installation prefix:  $prefix
  C compiler:           $CC $XTRA_CFLAGS $WARN_CFLAGS $CFLAGS
  C++ compiler:         $CXX $XTRA_CXXFLAGS $WARN_CXXFLAGS $CXXFLAGS
  Fortran compiler:     $FORT
  Fortran libraries:    $FLIBS
  BLAS libraries:       $BLAS_LIBS
  FFTW libraries:       $FFTW_LIBS
  GLPK libraries:       $GLPK_LIBS
  UMFPACK libraries:    $UMFPACK_LIBS
  AMD libraries:        $AMD_LIBS
  CAMD libraries:       $CAMD_LIBS
  COLAMD libraries:     $COLAMD_LIBS
  CCOLAMD libraries:    $CCOLAMD_LIBS
  CHOLMOD libraries:    $CHOLMOD_LIBS
  CXSPARSE libraries:   $CXSPARSE_LIBS
  ARPACK libraries:     $ARPACK_LIBS
  QRUPDATE libraries:	$QRUPDATE_LIBS
  HDF5 libraries:       $HDF5_LIBS
  CURL libraries:       $CURL_LIBS
  REGEX libraries:      $REGEX_LIBS
  QHULL libraries:	$QHULL_LIBS
  OPENGL libraries:     $OPENGL_LIBS
  FLTK backend libs:    $GRAPHICS_LIBS
  X11 include flags:    $X11_INCFLAGS
  X11 libraries:        $X11_LIBS
  CARBON libraries:     $CARBON_LIBS
  LIBS:                 $LIBS
  Default pager:        $DEFAULT_PAGER
  gnuplot:              $GNUPLOT
  Magick config:        $MAGICK_CONFIG

  Do internal array bounds checking:  $BOUNDS_CHECKING
  Build static libraries:             $STATIC_LIBS
  Build shared libraries:             $SHARED_LIBS
  Dynamic Linking:                    $ENABLE_DYNAMIC_LINKING $DL_API_MSG
  Include support for GNU readline:   $USE_READLINE
  64-bit array dims and indexing:     $USE_64_BIT_IDX_T
])

warn_msg_printed=false

if $ENABLE_DYNAMIC_LINKING; then
  if $SHARED_LIBS; then
    true
  else
    AC_MSG_WARN([You used --enable-dl but not --enable-shared.])
    AC_MSG_WARN([Are you sure that is what you want to do?])
    warn_msg_printed=true
  fi
fi

if test -n "$gxx_only"; then
  AC_MSG_WARN($gxx_only)
  warn_msg_printed=true
fi

if test -n "$warn_gcc_version"; then
  AC_MSG_WARN($warn_gcc_version)
  warn_msg_printed=true
fi

if test -n "$warn_gcc_only"; then
  AC_MSG_WARN($warn_gcc_only)
  warn_msg_printed=true
fi

if test -n "$warn_readline"; then
  AC_MSG_WARN($warn_readline)
  warn_msg_printed=true
fi

if test -n "$warn_termlibs"; then
  AC_MSG_WARN($warn_termlibs)
  warn_msg_printed=true
fi

if test -n "$warn_gperf"; then
  AC_MSG_WARN($warn_gperf)
  warn_msg_printed=true
fi

if test -n "$warn_flex"; then
  AC_MSG_WARN($warn_flex)
  warn_msg_printed=true
fi

if test -n "$warn_bison"; then
  AC_MSG_WARN($warn_bison)
  warn_msg_printed=true
fi

if test -n "$warn_less"; then
  AC_MSG_WARN($warn_less)
  warn_msg_printed=true
fi

if test -n "$warn_blas_f77_incompatible"; then
  AC_MSG_WARN($warn_blas_f77_incompatible)
  warn_msg_printed=true
fi

if test -n "$warn_umfpack"; then
  AC_MSG_WARN($warn_umfpack)
  warn_msg_printed=true
fi

if test -n "$warn_qrupdate"; then
  AC_MSG_WARN($warn_qrupdate)
  warn_msg_printed=true
fi

if test -n "$warn_amd"; then
  AC_MSG_WARN($warn_amd)
  warn_msg_printed=true
fi

if test -n "$warn_colamd"; then
  AC_MSG_WARN($warn_colamd)
  warn_msg_printed=true
fi

if test -n "$warn_ccolamd"; then
  AC_MSG_WARN($warn_ccolamd)
  warn_msg_printed=true
fi

if test -n "$warn_cholmod"; then
  AC_MSG_WARN($warn_cholmod)
  warn_msg_printed=true
fi

if test -n "$warn_cxsparse"; then
  AC_MSG_WARN($warn_cxsparse)
  warn_msg_printed=true
fi

if test -n "$warn_arpack"; then
  AC_MSG_WARN($warn_arpack)
  warn_msg_printed=true
fi

if test -n "$warn_curl"; then
  AC_MSG_WARN($warn_curl)
  warn_msg_printed=true
fi

if test -n "$warn_fftw"; then
  AC_MSG_WARN($warn_fftw)
  warn_msg_printed=true
fi

if test -n "$warn_glpk"; then
  AC_MSG_WARN($warn_glpk)
  warn_msg_printed=true
fi

if test -n "$warn_magick"; then
  AC_MSG_WARN($warn_magick)
  warn_msg_printed=true
fi

if test -n "$warn_hdf5"; then
  AC_MSG_WARN($warn_hdf5)
  warn_msg_printed=true
fi

if test -n "$warn_regex"; then
  AC_MSG_WARN($warn_regex)
  warn_msg_printed=true
fi

if test -n "$warn_pcre"; then
  AC_MSG_WARN($warn_pcre)
  warn_msg_printed=true
fi

if test -n "$warn_qhull"; then
  AC_MSG_WARN($warn_qhull)
  warn_msg_printed=true
fi

if test -n "$warn_zlib"; then
  AC_MSG_WARN($warn_zlib)
  warn_msg_printed=true
fi

if test -n "$warn_ghostscript"; then
  AC_MSG_WARN($warn_ghostscript)
  warn_msg_printed=true
fi

if test -n "$warn_makeinfo"; then
  AC_MSG_WARN($warn_makeinfo)
  warn_msg_printed=true
fi

if test -n "$warn_texi2dvi"; then
  AC_MSG_WARN($warn_texi2dvi)
  warn_msg_printed=true
fi

if test -n "$warn_texi2pdf"; then
  AC_MSG_WARN($warn_texi2pdf)
  warn_msg_printed=true
fi

if test -n "$warn_64_bit"; then
  AC_MSG_WARN($warn_64_bit)
  warn_msg_printed=true
fi

if test -n "$warn_gnuplot"; then

  ## If you change this text, be sure to also change the corresponding
  ## set of warnings above.

  AC_MSG_WARN([])
  AC_MSG_WARN([I didn't find gnuplot.  It isn't necessary to have gnuplot])
  AC_MSG_WARN([installed, but you won't be able to use any of Octave's])
  AC_MSG_WARN([plotting commands without it.])
  AC_MSG_WARN([])
  AC_MSG_WARN([If gnuplot is installed but it isn't in your path, you can])
  AC_MSG_WARN([tell Octave where to find it by typing the command])
  AC_MSG_WARN([])
  AC_MSG_WARN([gnuplot_binary = "/full/path/to/gnuplot/binary"])
  AC_MSG_WARN([])
  AC_MSG_WARN([at the Octave prompt.])
  AC_MSG_WARN([])
  warn_msg_printed=true
fi

if $USE_64_BIT_IDX_T; then
  AC_MSG_WARN([])
  AC_MSG_WARN([You used the EXPERIMENTAL --enable-64 option.])
  AC_MSG_WARN([Are you sure that is what you want to do?])
  AC_MSG_WARN([])
  AC_MSG_WARN([You must ensure that the Fortran compiler generates])
  AC_MSG_WARN([code with 8 byte signed INTEGER values, and that your])
  AC_MSG_WARN([BLAS and LAPACK libraries are compiled to use 8 byte])
  AC_MSG_WARN([signed integers for array indexing.])
  AC_MSG_WARN([])
  warn_msg_printed=true
fi

native_graphics=true
if test -n "$warn_freetype"; then
  AC_MSG_WARN("$warn_freetype")
  native_graphics=false
  warn_msg_printed=true
fi

if test -n "$warn_ftgl"; then
  AC_MSG_WARN("$warn_ftgl")
  native_graphics=false
  warn_msg_printed=true
fi

if test -n "$warn_fltk_config"; then
  AC_MSG_WARN("$warn_fltk_config")
  native_graphics=false
  warn_msg_printed=true
fi

if test -n "$warn_fltk_opengl"; then
  AC_MSG_WARN("$warn_fltk_opengl")
  native_graphics=false
  warn_msg_printed=true
fi

if $native_graphics; then
  true;
else
  AC_MSG_WARN([])
  AC_MSG_WARN([I didn't find the necessary libraries to compile native])
  AC_MSG_WARN([graphics. It isn't necessary to have native graphics])
  AC_MSG_WARN([but you will have to use gnuplot or you won't be able])
  AC_MSG_WARN([to use any of Octave's plotting commands])
  AC_MSG_WARN([])
  warn_msg_printed=true
fi

if $warn_msg_printed; then
  AC_MSG_NOTICE([

NOTE: libraries may be skipped if a library is not found OR
      if the library on your system is missing required features.
])
fi

### End of configure.