---
name: "acinclude"
section: "9rheolef"
platform: "linux"
package: "librheolef-dev"
version: "7.0-2+b1"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/acinclude"
---

# acinclude(9rheolef)

## NAME

**acinclude** -- autoconf macros

## DESCRIPTION

These macros test for particular system featutres that rheolef uses. These tests print the messages telling the user which feature they are looking for and what they find. They cache their results for future **configure** runs. Some of these macros *set* some shell variable, *defines* some output variables for the \`**config.h'** header, or performs Makefile macros *subsitutions*. See **autoconf** documentation for how to use such variables.

## SYNOPSIS

Follows a list of particular check required for a successful installation.

**RHEO\_CHECK\_GINAC**

Check to see if GiNaC library exists. If so, set the shell variable **rheo\_have\_ginac** to "yes", defines HAVE\_GINAC and substitues INCLUDES\_GINAC and LADD\_GINAC for adding in CFLAGS and LIBS, respectively, If not, set the shell variable rheo\_have\_ginac to "no".

**RHEO\_CHECK\_CLN**

Check to see if library **-lcln** exists. If so, set the shell variable **rheo\_have\_cln** to "yes", defines HAVE\_CLN and substitues INCLUDES\_CLN and LADD\_CLN for adding in CFLAGS and LIBS, respectively, If not, set the shell variable no "no". Includes and libraries path are searched from a given shell variable **rheo\_dir\_cln**. This shell variable could be set for instance by an appropriate **--with-cln**=*value\_dir\_cln* option. The default value is **/usr/local/math**.

**RHEO\_CHECK\_SPOOLES\_2\_0**

Check to see if spooles library has old version 2.0 since **FrontMtx\_factorInpMtx** profile has changed in version 2.2. If so, defines HAVE\_SPOOLES\_2\_0. This macro is called by RHEO\_CHECK\_SPOOLES.

**RHEO\_CHECK\_TAUCS**

Check to see if taucs library and headers exists. If so, set the shell variable "rheo\_have\_taucs" to "yes", defines HAVE\_TAUCS and substitues INCLUDES\_TAUCS and LADD\_TAUCS for adding in CXXFLAGS and LIBS, respectively, If not, set the shell variable to "no". Includes and libraries options are given shell variable $rheo\_ldadd\_taucs and $rheo\_incdir\_taucs. These shell variables could be set for instance by appropriates "--with-taucs-ldadd="'rheo\_ldadd\_taucs' and "--with-taucs-includes="'rheo\_incdir\_taucs' options.

**RHEO\_CHECK\_BOOST\_UBLAS**

Check to see if boost headers exists. If so, set the shell variable "rheo\_have\_boost" to "yes", defines HAVE\_BOOST and substitues INCLUDES\_BOOST for adding in CXXFLAGS, and LDADD\_BOOST for adding in LIBS. If not, set the shell variable to "no". Includes options are given in the shell variables $rheo\_incdir\_boost and $rheo\_libdir\_boost. These shell variables could be set for instance by appropriates "--with-boost-includes="'rheo\_incdir\_boost' and "--with-boost-libdir="'rheo\_libdir\_boost' options.

**RHEO\_CHECK\_ARMADILLO**

Check to see if armadillo headers exists. If so, set the shell variable "rheo\_have\_armadillo" to "yes", defines HAVE\_ARMADILLO and substitues INCLUDES\_ARMADILLO for adding in CXXFLAGS, and LDADD\_ARMADILLO for adding in LIBS. If not, set the shell variable to "no". Includes options are given in the shell variables $rheo\_incdir\_armadillo and $rheo\_libdir\_armadillo. These shell variables could be set for instance by appropriates "--with-armadillo-includes="'rheo\_incdir\_armadillo' and "--with-armadillo-libdir="'rheo\_libdirarmadillo' options.

**RHEO\_CHECK\_ZLIB**

Check to see if zlib library and headers exists. If so, set the shell variable "rheo\_have\_zlib" to "yes", defines HAVE\_ZLIB and substitues INCLUDES\_ZLIB and LADD\_ZLIB for adding in CXXFLAGS and LIBS, respectively, If not, set the shell variable to "no". Includes and libraries path are searched from given shell variable $rheo\_dir\_zlib/lib and $rheo\_incdir\_zlib. Default value for $rheo\_incdir\_zlib is $rheo\_dir\_zlib/include. These shell variables could be set for instance by appropriates "--with-zlib="'dir\_zlib' and "--with-zlib-includes="'incdir\_zlib' options.

**RHEO\_CHECK\_SPOOLES**

Check to see if spooles library and headers exists. If so, set the shell variable "rheo\_have\_spooles" to "yes", defines HAVE\_SPOOLES and substitues INCLUDES\_SPOOLES and LADD\_SPOOLES for adding in CXXFLAGS and LIBS, respectively, If not, set the shell variable to "no". Includes and libraries path are searched from given shell variable "rheo\_libdir\_spooles" and "rheo\_incdir\_spooles". These shell variables could be set for instance by appropriates "--with-spooles="'libdir\_spooles' and "--with-spooles-includes="'incdir\_spooles' options.

**RHEO\_CHECK\_CHOLMOD**

Check to see if cholmod library and headers exists. If so, set the shell variable "rheo\_have\_cholmod" to "yes", defines HAVE\_CHOLMOD and substitues INCLUDES\_CHOLMOD and LADD\_CHOLMOD for adding in CXXFLAGS and LIBS, respectively, If not, set the shell variable to "no". Includes and libraries path are searched from given shell variable "rheo\_libdir\_cholmod" and "rheo\_incdir\_cholmod". These shell variables could be set for instance by appropriates "--with-cholmod="'libdir\_cholmod' and "--with-cholmod-includes="'incdir\_cholmod' options.

**RHEO\_CHECK\_UMFPACK**

Check to see if umfpack library and headers exists. If so, set the shell variable "rheo\_have\_umfpack" to "yes", defines HAVE\_UMFPACK and substitues INCLUDES\_UMFPACK and LADD\_UMFPACK for adding in CXXFLAGS and LIBS, respectively, If not, set the shell variable to "no". Includes and libraries path are searched from given shell variable "rheo\_libdir\_umfpack" and "rheo\_incdir\_umfpack". These shell variables could be set for instance by appropriates "--with-umfpack="'libdir\_umfpack' and "--with-umfpack-includes="'incdir\_umfpack' options.

**RHEO\_CHECK\_MALLOC\_DBG**

Check to see if malloc debug library -lmalloc\_dbg and corresponding header \<malloc\_dbg.h\> exists. If so, set the shell variable **rheo\_have\_malloc\_dbg** to "yes", defines HAVE\_MALLOC\_DBG, add **-I***dir\_malloc\_dbg***/include** to CFLAGS, add *dir\_malloc\_dbg***/lib/libmalloc\_dbg.a** to LIBS. Here, *dir\_malloc\_dbg* is the directory such that *dir\_malloc\_dbg***/bin** appears in PATH and the command *dir\_malloc\_dbg***/bin/malloc\_dbg** exists. If not, set the variable to "no". Set also LIBS\_MALLOC\_DBG to these flags.

**RHEO\_CHECK\_DMALLOC**

Check whether the dmalloc package exists and set the corresponding shell value "rheo\_have\_dmalloc" and HAVE\_DMALLOC (in Makefile.am and config.h) accordingly, create LDADD\_DMALLOC and LDADD\_DMALLOCXX Makefile.am variables.

**RHEO\_CHECK\_NAMESPACE**

Check whether the namespace feature is supported by the C++ compiler. value. So, try to compile the following code:

```
           namespace computers {
              struct keyboard { int getkey() const { return 0; } };
           }
           namespace music {
              struct keyboard { void playNote(int note); };
           }
           namespace music {
              void keyboard::playNote(int note) { }
           }
           using namespace computers;
      int main() {
         keyboard x;
         int z = x.getkey();
         music::keyboard y;
         y.playNote(z);
         return 0;
      }

```

If it compile, set the corresponding shell variable "rheo\_have\_namespace" to "yes" and defines HAVE\_NAMESPACE. If not, set the variable no "no".

**RHEO\_CHECK\_STD\_NAMESPACE**

Some compilers (e.g. GNU C++ 2.7.2) does not support the full namespace feature. Nevertheless, they support the "std:" namespace for the C++ library. is supported by the C++ compiler. The following code is submitted to the compiler:

```
         #include<vector.h>
         extern "C" void exit(int);
         int main() {
             std::vector<int> x(3);
                  return 0;
         }

```

If it compile, set the corresponding shell variable "rheo\_have\_std\_namespace" to "yes" and defines HAVE\_STD\_NAMESPACE. If not, set the variable no "no".

**RHEO\_PROG\_GNU\_MAKE**

Find command make and check whether make is GNU make. If so, set the corresponding shell variable "rheo\_prog\_gnu\_make" to "yes" and substitues no\_print\_directory\_option to "--no-print-directory". If not, set the shell variable no "no".

**RHEO\_CHECK\_ISTREAM\_RDBUF**

**RHEO\_CHECK\_IOS\_BP**

Check to see if "iostream::rdbuf(void\*)" function exists, that set the "ios" buffer of a stream. Despite this function is standard, numerous compilers does not furnish it. a common implementation is to set directly the buffer variable. For instance, the CRAY C++ compiler implements this variable as "ios::bp". These two functions set the shell variables "rheo\_have\_istream\_rdbuf" and "rheo\_have\_ios\_bp" and define HAVE\_ISTREAM\_RDBUF and HAVE\_IOS\_BP respectively.

**RHEO\_CHECK\_IOS\_SETSTATE**

Check to see if "ios::setstate(long)" function exists, that set the "ios" state variable of a stream. Despite this function is standard, numerous compilers does not furnish it. a common implementation is to set directly the buffer variable. For instance, the CRAY C++ compiler does not implements it. This function set the shell variables "rheo\_have\_ios\_setstate" and define HAVE\_IOS\_SETSTATE.

**RHEO\_CHECK\_FILEBUF\_INT**

**RHEO\_CHECK\_FILEBUF\_FILE**

**RHEO\_CHECK\_FILEBUF\_FILE\_MODE**

Check whether "filebuf::filebuf(int fileno)", "filebuf::filebuf(FILE\* fd)" exist, or "filebuf::filebuf(FILE\* fd, ios::openmode)" exist, respectively. If so, set the corresponding shell variable "rheo\_have\_filebuf\_int" (resp. "rheo\_have\_filebuf\_file") to "yes" and defines HAVE\_FILEBUF\_INT, (resp. HAVE\_FILEBUF\_FILE). If not, set the variable no "no". Notes that there is no standardisation of this function in the "c++" library. Nevertheless, this fonctionality is useful to open a pipe stream class, as "pstream(3)".

**RHEO\_CXX\_CLOCK\_GETTIME**

Tries to determine whether clock\_gettime is useable.

**RHEO\_CHECK\_GETTIMEOFDAY**

Check whether the "gettimeofday(timeval\*, timezone\*)" function exists and set the corresponding shell value "rheo\_have\_gettimeofday" and define HAVE\_GETTIMEOFDAY accordingly.

**RHEO\_CHECK\_WIERDGETTIMEOFDAY**

This is for Solaris, where they decided to change the CALLING SEQUENCE OF gettimeofday! Check whether the "gettimeofday(timeval\*)" function exists and set the corresponding shell value "rheo\_have\_wierdgettimeofday" and define HAVE\_WIERDGETTIMEOFDAY accordingly.

**RHEO\_CHECK\_BSDGETTIMEOFDAY**

For BSD systems, check whether the "BSDgettimeofday(timeval\*, timezone\*)" function exists and set the corresponding shell value "rheo\_have\_bsdgettimeofday" and define HAVE\_BSDGETTIMEOFDAY accordingly.

**RHEO\_CHECK\_AMICCLK**

Check whether the clock "amicclk()" function exists and set the corresponding shell value "rheo\_have\_amicclk" and define HAVE\_AMICCLK accordingly.

**RHEO\_CHECK\_TEMPLATE\_FULL\_SPECIALIZATION**

Check whether the template specialization syntax "template\<\>" is supported by the compiler value. So, try to compile, run and check the return value for the following code:

```
      template<class T> struct toto {
          int tutu() const { return 1; }
      };
      template<> struct toto<float> {
          int tutu() const { return 0; }
      };
      main() {
       toto<float> x;
       return x.tutu();
      }

```

If so, set the corresponding shell variable "rheo\_have\_template\_full\_specialization" to "yes" and defines HAVE\_TEMPLATE\_FULL\_SPECIALIZATION. If not, set the variable no "no".

**RHEO\_CHECK\_ISNAN\_DOUBLE**

**RHEO\_CHECK\_ISINF\_DOUBLE**

**RHEO\_CHECK\_FINITE\_DOUBLE**

**RHEO\_CHECK\_INFINITY**

**RHEO\_CHECK\_ABS\_DOUBLE**

**RHEO\_CHECK\_SQR\_DOUBLE**

Check whether the functions

```
            bool isnan(double);
            bool isinf(double);
            bool finite(double);
            double infinity();
            double abs();
            double sqr();

```

are supported by the compiler, respectively. If so, set the corresponding shell variable "rheo\_have\_xxx" to "yes" and defines HAVE\_XXX. If not, set the variable no "no".

**RHEO\_CHECK\_FLEX**

Check to see if the "flex" command and the corresponding header "FlexLexer.h" are available. If so, set the shell variable "rheo\_have\_flex" to "yes" and substitues FLEX to "flex" and FLEXLEXER\_H to the full path for FlexLexer.h If not, set the shell variable no "no".

**RHEO\_PROG\_CC\_INTEL**

Check whether we are using INTEL C++ compiler. If so, set the shell variable "ac\_cv\_prog\_icc" to "yes" and define HAVE\_INTEL\_CXX. If not, set the shell variable no "no". The shell variable is also exported for sub-shells, such as ltconfig from libtool.

**RHEO\_PROG\_CC\_CLANG**

Check whether we are using CLANG C++ compiler. If so, set the shell variable "ac\_cv\_prog\_clang" to "yes" and define HAVE\_INTEL\_CLANG. If not, set the shell variable no "no". The shell variable is also exported for sub-shells, such as ltconfig from libtool.

**RHEO\_CLANG\_LINK\_LIBSTDCXX**

Check whether CLANG C++ compiler links correctly with std c++ lib. If not, exit with error. This is still a bug in debian/testing (stretch) in june 2016. https://llvm.org/bugs/show\_bug.cgi?id=24844

**RHEO\_RECOGNIZE\_CXX**

Check whether we are able to recognize the C++ compiler. Tested compilers:

```
         The GNU   C++ compiler that defines: __GNUC__  (egcs-1.1.1)
         The INTEL C++ compiler that defines: __ICC     (ICPC-12)

```

If so, substitue RECOGNIZED\_CXX to a specific compiler's rule file, e.g, {}"$top\_srcdir/config/gnu\_cxx.mk", for a subsequent Makefile include. If not, substitue to "/dev/null". Substitutes also EXTRA\_LDFLAGS. Raw cc is the C compiler associated to the C++ one. By this way C and C++ files are handled with a .c suffix. Special C files that require the cc compiler, such as "alloca.c" use some specific makefile rule.

 usage example:

```
    AC_PROG_CC(gcc cc icc cl)
    AC_PROG_CXX(c++ g++ cxx icpc KCC CC CC cc++ xlC aCC)
    RHEO_RECOGNIZE_CXX

```

**RHEO\_GXX2011\_PRE**

Check for the "-std=c++0x" support for g++. Requires a recent version of the GNU C++ compiler (\>= 4.5).

**RHEO\_GXX2011**

Check for the "-std=c++11" support for g++. Requires a recent version of the GNU C++ compiler (\>= 4.7).

**RHEO\_OPTIMIZE\_CXX**

Set some optimization flags associated to the recognized C++ compiler and platform.

**RHEO\_CHECK\_LATEX\_HYPEREF**

Check whether the hyperref LaTeX package exists and set the corresponding shell value "rheo\_have\_latex\_hyperref" and HAVE\_LATEX\_HYPEREF (for Makefiles) accordingly.

**RHEO\_CHECK\_MPI**

Check for the "mpirun" command, the corresponding header "mpi.h" and library "-lmpi" are available. If so, set the shell variable "rheo\_have\_mpi" to "yes", and substitues MPIRUN to "mpirun" and RUN to "mpirun -np 2", INCLUDES\_MPI and LDADD\_MPI. If not, set the shell variable no "no".

**RHEO\_CHECK\_METIS**

Check for the "cgal" computational geometry library. Defines HAVE\_METIS and substitues INCLUDES\_METIS and LDADD\_METIS.

**RHEO\_CHECK\_PARMETIS**

Check for the "parmetis" libraries. Defines HAVE\_PARMETIS and substitues INCLUDES\_PARMETIS and LDADD\_PARMETIS. Requires the MPI library.

**RHEO\_CHECK\_SCOTCH**

Check for the "scotch" distributed mesh partitioner libraries. Defines HAVE\_SCOTCH and substitues INCLUDES\_SCOTCH and LDADD\_SCOTCH. Requires the MPI library.

**RHEO\_CHECK\_BOOST**

Check for the "boost" library. Defines HAVE\_BOOST and substitues LDADD\_BOOST and INCLUDES\_BOOST.

**RHEO\_CHECK\_BLAS**

Check for the "blas" basic linear algebra subroutines library. Defines HAVE\_BLAS and substitues LDADD\_BLAS and INCLUDES\_BLAS.

**RHEO\_CHECK\_SCALAPACK**

Check for the "scalapack" basic linear algebra subroutines library. Defines HAVE\_SCALAPACK and substitues LDADD\_SCALAPACK and INCLUDES\_SCALAPACK.

**RHEO\_CHECK\_TRILINOS**

Check for the "trilinos" distributed preconditioner libraries. Defines HAVE\_TRILINOS and substitues INCLUDES\_TRILINOS and LDADD\_TRILINOS. Requires the MPI and SCOTCH libraries.

**RHEO\_CHECK\_PASTIX**

Check for the "pastix" sequential or distributed direct solver libraries, depending on the "rheo\_use\_distributed" shell variable. Defines HAVE\_PASTIX and substitues INCLUDES\_PASTIX and LDADD\_PASTIX.

**RHEO\_CHECK\_MUMPS**

Check for the "mumps" distributed direct solver libraries. Defines HAVE\_MUMPS and substitues INCLUDES\_MUMPS and LDADD\_MUMPS. Requires the MPI and SCOTCH libraries.

**RHEO\_CHECK\_MUMPS\_WITH\_PTSCOTCH\_SUPPORT**

Check whether "mumps" is configured with the "ptscotch" support Defines HAVE\_MUMPS\_WITH\_PTSCOTCH and the shell variable rheo\_have\_mumps\_with\_ptscotch.

**RHEO\_CHECK\_MUMPS\_WITH\_SCOTCH\_SUPPORT**

Check whether "mumps" is configured with the "scotch" support Defines HAVE\_MUMPS\_WITH\_SCOTCH and the shell variable rheo\_have\_mumps\_with\_scotch.

**RHEO\_CHECK\_MUMPS\_WITH\_PARMETIS\_SUPPORT**

Check whether "mumps" is configured with the "parmetis" support Defines HAVE\_MUMPS\_WITH\_PARMETIS and the shell variable rheo\_have\_mumps\_with\_parmetis.

**RHEO\_CHECK\_MUMPS\_WITH\_METIS\_SUPPORT**

Check whether "mumps" is configured with the "metis" support Defines HAVE\_MUMPS\_WITH\_METIS and the shell variable rheo\_have\_mumps\_with\_metis.

**RHEO\_CHECK\_STD\_INITIALIER\_LIST**

Some compilers (e.g. GNU C++ 4.4.x) does not support the std::initializer\_list feature. Set the corresponding shell variable "rheo\_have\_std\_initializer\_list" to "yes" and defines HAVE\_STD\_INITIALIZER\_LIST. If not, set the variable no "no".

**RHEO\_CHECK\_GMP**

Check for the "gmp" gnu multi-precision library. Defines HAVE\_GMP and substitues INCLUDES\_GMP and LDADD\_GMP.

**RHEO\_CHECK\_MPFR**

Check for the "mpfr" gnu multi-precision library. Defines HAVE\_MPFR and substitues INCLUDES\_MPFR and LDADD\_MPFR.

**RHEO\_CHECK\_CGAL**

Check for the "cgal" computational geometry library. Defines HAVE\_CGAL and substitues INCLUDES\_CGAL and LDADD\_CGAL.

**RHEO\_DEBIAN\_FIX\_LIBTOOL**

Fix rpath libtool issue for debian packaging. See also http://wiki.debian.org/RpathIssue

**RHEO\_CHECK\_FLOAT128**

Check for the "float128" arithmetic (boost multiprecision and GNU quadmath). Defines HAVE\_FLOAT128 and substitues INCLUDES\_FLOAT128 and LDADD\_FLOAT128.

## COPYRIGHT

Copyright (C) 2000-2018 Pierre Saramito \<Pierre.Saramito@imag.fr\> GPLv3+: GNU GPL version 3 or later \<http://gnu.org/licenses/gpl.html\>. This is free software: you are free to change and redistribute it.  There is NO WARRANTY, to the extent permitted by law.
