
/* @configure_input@ */
/* This file contains defaults for various configuration options. */

/*******************/

/*
 * Set this true if the system has ANSI C header files.
 */
#ifndef STDC_HEADERS
#define STDC_HEADERS	0
#endif

/*
 * Algae can use the GNU Readline facility if it's available.
 */
#ifndef HAVE_LIBREADLINE
#define HAVE_LIBREADLINE	0
#endif

/*
 * Algae's debug level can be set by the `-d' command-line option.
 * If the DEBUG macro is false, that level defaults to 0.  If DEBUG
 * is true, the debug level defaults to 1 and additional debugging
 * code (not accessible through the debug level) is included.
 */
#ifndef DEBUG
#define DEBUG	0
#endif

/*
 * SuperLU can be compiled with its own debugging code, which also
 * produces huge amounts of output.
 */
#ifndef SUPERLU_DEBUG
#define SUPERLU_DEBUG	0
#endif

/*
 * If set, use the dbmalloc package for memory usage debugging.
 */
#ifndef DMALLOC
#define DMALLOC	0
#endif

/*
 * Algae can use the sparse routines in BCSLIB, if it's available.
 */
#ifndef HAVE_LIBBCSEXT
#define HAVE_LIBBCSEXT	0
#endif

/*
 * Should we use the single precision BCSLIB routines (as on a Cray)?
 */
#ifndef SINGLE_BCSLIB
#define SINGLE_BCSLIB	0
#endif

/*
 * Algae can call the NPSOL package, if it's available.
 */
#ifndef HAVE_NPSOL
#define HAVE_NPSOL	0
#endif

/*
 * Algae can call the SuperLU routines for solving sparse linear systems.
 */
#ifndef HAVE_LIBSUPERLU
#define HAVE_LIBSUPERLU	1
#endif

/*
 * Use fftw for fast Fourier transforms?
 */
#ifndef HAVE_FFTW3_H
#define HAVE_FFTW3_H	0
#endif
#ifndef HAVE_FFTW
#define HAVE_FFTW	0
#endif

/*
 * Enable both legacy fft and fftw?  The fftw package is meant to be a
 * drop-in replacement.  If this is set, then both packages are used,
 * and the fftw code is accessed with the `fftw' and `ifftw' functions.
 * Intended only for debugging and performance comparisons.
 */
#ifndef USE_BOTH_FFT
#define USE_BOTH_FFT	1
#endif

/*
 * Provide our own `div' function?
 */
#ifndef HAVE_DIV
#define HAVE_DIV	0
#endif

/*
 * Provide our own `div_t' typedef?  Define as `Div_t' if needed.
 */
#ifndef div_t
#undef div_t
#endif

/*
 * Some systems have <file.h> instead of <fcntl.h>.
 */
#ifndef HAVE_FCNTL_H
#define HAVE_FCNTL_H	0
#endif

/*
 * Is <sys/time.h> available?
 */
#ifndef HAVE_SYS_TIME_H
#define HAVE_SYS_TIME_H	0
#endif

/*
 * How about <sys/ioctl.h>?
 */
#ifndef HAVE_SYS_IOCTL_H
#define HAVE_SYS_IOCTL_H 0
#endif

/*
 * And <sys/wait.h>?
 */
#ifndef HAVE_SYS_WAIT_H
#define HAVE_SYS_WAIT_H 0
#endif

/*
 * Ensure that size_t is defined.
 */
#ifndef size_t
#undef size_t
#endif

/*
 * This is used for the DYNASTY I/O routines.  Usually, FORTRAN
 * unformatted records have their length, in bytes, written at the
 * beginning and end of each record.  If FORTRAN_BINARY_BY_WORDS is
 * true, the units are 4-byte words instead.
 */
#ifndef FORTRAN_BINARY_BY_WORDS
#define FORTRAN_BINARY_BY_WORDS	0
#endif

/*
 * We need <memory.h> on some systems.
 */
#ifndef HAVE_MEMORY_H
#define HAVE_MEMORY_H	0
#endif

/*
 * For systems without the `abs' function.
 */
#ifndef HAVE_ABS
#define HAVE_ABS	0
#endif

/*
 * For systems without the inverse hyperbolic trig functions.
 */
#ifndef HAVE_ACOSH
#define HAVE_ACOSH	0
#endif
#ifndef HAVE_ASINH
#define HAVE_ASINH	0
#endif
#ifndef HAVE_ATANH
#define HAVE_ATANH	0
#endif

/*
 * For systems with the `rint' math function.
 */
#ifndef HAVE_RINT
#define HAVE_RINT	0
#endif

/*
 * For systems with a lax `log' math function, where errno is not set
 * for log(0).
 */
#ifndef LAX_LOG
#define LAX_LOG		0
#endif

/*
 * Is there an `isnan' for IEEE math?
 */
#ifndef HAVE_ISNAN
#define HAVE_ISNAN	0
#endif

/*
 * Is there a `finite' for IEEE math?
 */
#ifndef HAVE_FINITE
#define HAVE_FINITE	0
#endif

/*
 * Sometimes 'rint' is there, but there's no declaration for it.
 */
#ifndef HAVE_RINT_DECL
#define HAVE_RINT_DECL	0
#endif

/*
 * Some systems (like VMS) will take some work to get `fork'
 * working.  If NO_EXEC is true, we just skip it.
 */
#ifndef NO_EXEC
#define NO_EXEC		0
#endif

/*
 * Some systems (like VMS) don't have a `fcntl' equivalent.  If
 * NO_FCNTL is true, we'll do without it, and just hope that we
 * don't get a deadlock.
 */
#ifndef NO_FCNTL
#define NO_FCNTL	0
#endif

/*
 * True if the system has a <float.h> file.
 */
#ifndef HAVE_FLOAT_H
#define HAVE_FLOAT_H	0
#endif

/*
 * True if the system has a <stdlib.h> file.
 */
#ifndef HAVE_STDLIB_H
#define HAVE_STDLIB_H	0
#endif

/*
 * True if the system has a <standards.h> file.  AIX only, AFAIK.
 */
#ifndef HAVE_STANDARDS_H
#define HAVE_STANDARDS_H	0
#endif

/*
 * True if we have the `strerror' function.
 */
#ifndef HAVE_STRERROR
#define HAVE_STRERROR	0
#endif

/*
 * True if we have the `strchr' function.
 */
#ifndef HAVE_STRCHR
#define HAVE_STRCHR	0
#endif

/*
 * True if we have the `strtod' function.
 */
#ifndef HAVE_STRTOD
#define HAVE_STRTOD	0
#endif

/*
 * True if we have the `memcpy' function.
 */
#ifndef HAVE_MEMCPY
#define HAVE_MEMCPY	0
#endif

/*
 * True if you have the `random' and `srandom' functions.
 */
#ifndef HAVE_RANDOM
#define HAVE_RANDOM	0
#endif

/*
 * True if you have the `drand48' and `srand48' functions.
 */
#ifndef HAVE_DRAND48
#define HAVE_DRAND48	0
#endif

/*
 * True if the system has a <stdarg.h> file.
 */
#ifndef HAVE_STDARG_H
#define HAVE_STDARG_H	0
#endif

/*
 * True if the system has a <unistd.h> file.
 */
#ifndef HAVE_UNISTD_H
#define HAVE_UNISTD_H	0
#endif

/*
 * True if the system has a <malloc.h> file.
 */
#ifndef HAVE_MALLOC_H
#define HAVE_MALLOC_H	0
#endif

/*
 * Skip ANSI prototyping?  Probably not a good idea if HAVE_STDARG_H is
 * false, because of conflicts in the way we've done the VA_ALIST
 * macros for the functions in "message.c".
 */
#ifndef NO_PROTOS
#define NO_PROTOS	0
#endif

/*
 * Define const empty if the compiler doesn't fully support it.
 */
#ifndef const
#undef const
#endif

/*
 * Define signed empty if the compiler doesn't support it.
 */
#ifndef signed
#undef signed
#endif

/*
 * Algae's binary files are written in IEEE big-endian form.  We need to
 * know what form this machine uses.
 */

#ifndef WORDS_BIGENDIAN
#define WORDS_BIGENDIAN	0
#endif

/*
 * LAPACK 1.0 didn't have unsymmetric generalized eigenvalue solvers.
 * Algae requires LAPACK 1.1 or later, unless this macro is true.
 */
#ifndef LAPACK_1_0
#define LAPACK_1_0	0
#endif

/*
 * Look for the memory trace function in the GNU C Library.
 */
#ifndef HAVE_MTRACE
#define HAVE_MTRACE	0
#endif
#ifndef HAVE_MCHECK_H
#define HAVE_MCHECK_H	0
#endif

/*
 * We need setitimer(3C) to run the execution profiler.
 */
#ifndef HAVE_SETITIMER
#define HAVE_SETITIMER	0
#endif

/*
 * The execution profiler signals SIGPROF every PROFILE_INTERVAL
 * microseconds.  I suppose it's a nice problem to have, but machines
 * are so fast these days that the typical system timer resolution of
 * 10ms is barely adequate for profiling.
 */
#ifndef PROFILE_INTERVAL
#define PROFILE_INTERVAL	10000
#endif

/*
 * What type do signal handlers return?
 */
#ifndef RETSIGTYPE
#define RETSIGTYPE	void
#endif

/*
 * We prefer to use sigaction(2) over signal(2) or sigset(2).  It
 * isn't available on older systems, though.
 */
#ifndef HAVE_SIGACTION
#define HAVE_SIGACTION	0
#endif

/*
 * If dlopen(3) is available, figure that we have a working dynamic
 * linking loader.
 */
#ifndef HAVE_DLOPEN
#define HAVE_DLOPEN	0
#endif

/*
 * Protect against buffer overflows.
 */
#ifndef HAVE_SNPRINTF
#define HAVE_SNPRINTF	0
#endif
#ifndef HAVE_VSNPRINTF
#define HAVE_VSNPRINTF	0
#endif

/*
 * Some systems require signal handlers to be reinstalled after
 * a signal is caught.
 */
#ifndef RESET_SIGNAL_HANDLER
#define RESET_SIGNAL_HANDLER	0
#endif

/*
 * Algae has problems running the execution profiler on some OS's.
 * In some cases, it's a shortcoming in Algae -- we don't restart
 * interrupted system calls as is required on some systems.  In
 * other cases, the problem is with OS bugs.  Set this false to
 * disable the execution profiler.
 */
#ifndef ENABLE_PROFILER
#define ENABLE_PROFILER		1
#endif

/*
 * Is there a working matherr(3) on board?
 */
#ifndef HAVE_MATHERR
#define HAVE_MATHERR	1
#endif

/*
 * On Titan machines, Fortran external names are uppercase, with no
 * leading or trailing underscores.  Algae has #defines that assume
 * these names are lowercase.  Set this macro true to skip the
 * #defines and leave them uppercase.
 */
#ifndef NO_FORTRAN_DEFS
#define NO_FORTRAN_DEFS		0
#endif

/*
 * We may need to supply our own Fortran ETIME function.
 */
#ifndef HAVE_ETIME
#define HAVE_ETIME	0
#endif

/********  floating point exception stuff  ********/

/*
 * Bring in <fenv.h> if it exists.  (Intel)
 */
#ifndef HAVE_FENV_H
#define HAVE_FENV_H	0
#endif

/*
 * Bring in <machine/fpu.h> if it exists.  (Alpha)
 */
#ifndef HAVE_MACHINE_FPU_H
#define HAVE_MACHINE_FPU_H	0
#endif

/*
 * Bring in <ieeefp.h> if it exists.  (SYSV, Sparc)
 */
#ifndef HAVE_IEEEFP_H
#define HAVE_IEEEFP_H	0
#endif

/*
 * Bring in <siginfo.h> if it exists.  (SYSV, Sparc)
 */
#ifndef HAVE_SIGINFO_H
#define HAVE_SIGINFO_H	0
#endif

/*
 * Bring in <ucontext.h> if it exists.  (SYSV, Sparc)
 */
#ifndef HAVE_UCONTEXT_H
#define HAVE_UCONTEXT_H	0
#endif

/*
 * Set floating point exception mask (Linux)
 */
#ifndef HAVE_FEENABLEEXCEPT
#define HAVE_FEENABLEEXCEPT	0
#endif

/*
 * Set floating point exception mask (Sparc, Alpha, SYSV)
 */
#ifndef HAVE_FPSETMASK
#define HAVE_FPSETMASK	0
#endif

/*
 * Set floating point exception mask (HP)
 */
#ifndef HAVE_FPSETDEFAULTS
#define HAVE_FPSETDEFAULTS	0
#endif
