.\" .de Id .. .de Sp .if n .sp .if t .sp 0.4 .. .TH acinclude 9rheolef "rheolef-7.0" "rheolef-7.0" "rheolef-7.0" .\" label: F:acinclude .SH NAME \fBacinclude\fP -- autoconf macros .\" skip: @cindex porting the code .\" skip: @toindex @code{autoconf} .SH 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 \fBconfigure\fP runs. Some of these macros \fIset\fP some shell variable, \fIdefines\fP some output variables for the `\fBconfig.h'\fP header, or performs Makefile macros \fIsubsitutions\fP. See \fBautoconf\fP documentation for how to use such variables. .SH SYNOPSIS Follows a list of particular check required for a successful installation. .PP \fBRHEO_CHECK_GINAC\fP .PP Check to see if GiNaC library exists. If so, set the shell variable \fBrheo_have_ginac\fP 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". .PP .PP \fBRHEO_CHECK_CLN\fP .PP Check to see if library \fB-lcln\fP exists. If so, set the shell variable \fBrheo_have_cln\fP 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 \fBrheo_dir_cln\fP. This shell variable could be set for instance by an appropriate \fB--with-cln\fP=\fIvalue_dir_cln\fP option. The default value is \fB/usr/local/math\fP. .PP .PP \fBRHEO_CHECK_SPOOLES_2_0\fP .PP Check to see if spooles library has old version 2.0 since \fBFrontMtx_factorInpMtx\fP profile has changed in version 2.2. If so, defines HAVE_SPOOLES_2_0. This macro is called by RHEO_CHECK_SPOOLES. .PP .PP \fBRHEO_CHECK_TAUCS\fP .PP 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. .PP .PP \fBRHEO_CHECK_BOOST_UBLAS\fP .PP 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. .PP .PP \fBRHEO_CHECK_ARMADILLO\fP .PP 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. .PP .PP \fBRHEO_CHECK_ZLIB\fP .PP 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. .PP .PP \fBRHEO_CHECK_SPOOLES\fP .PP 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. .PP .PP \fBRHEO_CHECK_CHOLMOD\fP .PP 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. .PP .PP \fBRHEO_CHECK_UMFPACK\fP .PP 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. .PP .PP \fBRHEO_CHECK_MALLOC_DBG\fP .PP Check to see if malloc debug library -lmalloc_dbg and corresponding header exists. If so, set the shell variable \fBrheo_have_malloc_dbg\fP to "yes", defines HAVE_MALLOC_DBG, add \fB-I\fP\fIdir_malloc_dbg\fP\fB/include\fP to CFLAGS, add \fIdir_malloc_dbg\fP\fB/lib/libmalloc_dbg.a\fP to LIBS. Here, \fIdir_malloc_dbg\fP is the directory such that \fIdir_malloc_dbg\fP\fB/bin\fP appears in PATH and the command \fIdir_malloc_dbg\fP\fB/bin/malloc_dbg\fP exists. If not, set the variable to "no". Set also LIBS_MALLOC_DBG to these flags. .PP \fBRHEO_CHECK_DMALLOC\fP .PP .\" skip: @pindex dmalloc .\" skip: @toindex dmalloc, debug runtime library .\" skip: @cindex debugging .PP 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. .PP \fBRHEO_CHECK_NAMESPACE\fP .PP Check whether the namespace feature is supported by the C++ compiler. value. So, try to compile the following code: .\" begin_example .Sp .nf 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; } .Sp .fi .\" end_example If it compile, set the corresponding shell variable "rheo_have_namespace" to "yes" and defines HAVE_NAMESPACE. If not, set the variable no "no". .PP \fBRHEO_CHECK_STD_NAMESPACE\fP .PP 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: .\" begin_example .Sp .nf #include extern "C" void exit(int); int main() { std::vector x(3); return 0; } .Sp .fi .\" end_example 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". .PP \fBRHEO_PROG_GNU_MAKE\fP .PP 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". .PP \fBRHEO_CHECK_ISTREAM_RDBUF\fP .PP \fBRHEO_CHECK_IOS_BP\fP .PP 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. .PP \fBRHEO_CHECK_IOS_SETSTATE\fP .PP 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. .PP \fBRHEO_CHECK_FILEBUF_INT\fP .PP \fBRHEO_CHECK_FILEBUF_FILE\fP .PP \fBRHEO_CHECK_FILEBUF_FILE_MODE\fP .PP 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)". .PP \fBRHEO_CXX_CLOCK_GETTIME\fP .PP Tries to determine whether clock_gettime is useable. .PP \fBRHEO_CHECK_GETTIMEOFDAY\fP .PP Check whether the "gettimeofday(timeval*, timezone*)" function exists and set the corresponding shell value "rheo_have_gettimeofday" and define HAVE_GETTIMEOFDAY accordingly. .PP \fBRHEO_CHECK_WIERDGETTIMEOFDAY\fP .PP 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. .PP \fBRHEO_CHECK_BSDGETTIMEOFDAY\fP .PP 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. .PP \fBRHEO_CHECK_AMICCLK\fP .PP Check whether the clock "amicclk()" function exists and set the corresponding shell value "rheo_have_amicclk" and define HAVE_AMICCLK accordingly. .PP \fBRHEO_CHECK_TEMPLATE_FULL_SPECIALIZATION\fP .PP 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: .\" begin_example .Sp .nf template struct toto { int tutu() const { return 1; } }; template<> struct toto { int tutu() const { return 0; } }; main() { toto x; return x.tutu(); } .Sp .fi .\" end_example 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". .PP \fBRHEO_CHECK_ISNAN_DOUBLE\fP .PP \fBRHEO_CHECK_ISINF_DOUBLE\fP .PP \fBRHEO_CHECK_FINITE_DOUBLE\fP .PP \fBRHEO_CHECK_INFINITY\fP .PP \fBRHEO_CHECK_ABS_DOUBLE\fP .PP \fBRHEO_CHECK_SQR_DOUBLE\fP .PP Check whether the functions .\" begin_example .Sp .nf bool isnan(double); bool isinf(double); bool finite(double); double infinity(); double abs(); double sqr(); .Sp .fi .\" end_example 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". .PP \fBRHEO_CHECK_FLEX\fP .PP 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". .PP \fBRHEO_PROG_CC_INTEL\fP .PP 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. .PP \fBRHEO_PROG_CC_CLANG\fP .PP 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. .PP \fBRHEO_CLANG_LINK_LIBSTDCXX\fP .PP 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 .PP \fBRHEO_RECOGNIZE_CXX\fP .PP Check whether we are able to recognize the C++ compiler. Tested compilers: .\" begin_example .Sp .nf The GNU C++ compiler that defines: __GNUC__ (egcs-1.1.1) The INTEL C++ compiler that defines: __ICC (ICPC-12) .Sp .fi .\" end_example .PP 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. .PP usage example: .\" begin_example .Sp .nf AC_PROG_CC(gcc cc icc cl) AC_PROG_CXX(c++ g++ cxx icpc KCC CC CC cc++ xlC aCC) RHEO_RECOGNIZE_CXX .Sp .fi .\" end_example .PP \fBRHEO_GXX2011_PRE\fP .PP Check for the "-std=c++0x" support for g++. Requires a recent version of the GNU C++ compiler (>= 4.5). .PP \fBRHEO_GXX2011\fP .PP Check for the "-std=c++11" support for g++. Requires a recent version of the GNU C++ compiler (>= 4.7). .PP \fBRHEO_OPTIMIZE_CXX\fP .PP Set some optimization flags associated to the recognized C++ compiler and platform. .PP \fBRHEO_CHECK_LATEX_HYPEREF\fP .\" skip: @pindex latex .PP Check whether the hyperref LaTeX package exists and set the corresponding shell value "rheo_have_latex_hyperref" and HAVE_LATEX_HYPEREF (for Makefiles) accordingly. .PP \fBRHEO_CHECK_MPI\fP .PP 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". .PP \fBRHEO_CHECK_METIS\fP .PP Check for the "cgal" computational geometry library. Defines HAVE_METIS and substitues INCLUDES_METIS and LDADD_METIS. .PP \fBRHEO_CHECK_PARMETIS\fP .PP Check for the "parmetis" libraries. Defines HAVE_PARMETIS and substitues INCLUDES_PARMETIS and LDADD_PARMETIS. Requires the MPI library. .PP \fBRHEO_CHECK_SCOTCH\fP .PP Check for the "scotch" distributed mesh partitioner libraries. Defines HAVE_SCOTCH and substitues INCLUDES_SCOTCH and LDADD_SCOTCH. Requires the MPI library. .PP \fBRHEO_CHECK_BOOST\fP .PP Check for the "boost" library. Defines HAVE_BOOST and substitues LDADD_BOOST and INCLUDES_BOOST. .PP \fBRHEO_CHECK_BLAS\fP .PP Check for the "blas" basic linear algebra subroutines library. Defines HAVE_BLAS and substitues LDADD_BLAS and INCLUDES_BLAS. .PP \fBRHEO_CHECK_SCALAPACK\fP .PP Check for the "scalapack" basic linear algebra subroutines library. Defines HAVE_SCALAPACK and substitues LDADD_SCALAPACK and INCLUDES_SCALAPACK. .PP \fBRHEO_CHECK_TRILINOS\fP .PP Check for the "trilinos" distributed preconditioner libraries. Defines HAVE_TRILINOS and substitues INCLUDES_TRILINOS and LDADD_TRILINOS. Requires the MPI and SCOTCH libraries. .PP \fBRHEO_CHECK_PASTIX\fP .PP 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. .PP \fBRHEO_CHECK_MUMPS\fP .PP Check for the "mumps" distributed direct solver libraries. Defines HAVE_MUMPS and substitues INCLUDES_MUMPS and LDADD_MUMPS. Requires the MPI and SCOTCH libraries. .PP \fBRHEO_CHECK_MUMPS_WITH_PTSCOTCH_SUPPORT\fP .PP Check whether "mumps" is configured with the "ptscotch" support Defines HAVE_MUMPS_WITH_PTSCOTCH and the shell variable rheo_have_mumps_with_ptscotch. .PP \fBRHEO_CHECK_MUMPS_WITH_SCOTCH_SUPPORT\fP .PP Check whether "mumps" is configured with the "scotch" support Defines HAVE_MUMPS_WITH_SCOTCH and the shell variable rheo_have_mumps_with_scotch. .PP \fBRHEO_CHECK_MUMPS_WITH_PARMETIS_SUPPORT\fP .PP Check whether "mumps" is configured with the "parmetis" support Defines HAVE_MUMPS_WITH_PARMETIS and the shell variable rheo_have_mumps_with_parmetis. .PP \fBRHEO_CHECK_MUMPS_WITH_METIS_SUPPORT\fP .PP Check whether "mumps" is configured with the "metis" support Defines HAVE_MUMPS_WITH_METIS and the shell variable rheo_have_mumps_with_metis. .PP \fBRHEO_CHECK_STD_INITIALIER_LIST\fP .PP 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". .PP \fBRHEO_CHECK_GMP\fP .PP Check for the "gmp" gnu multi-precision library. Defines HAVE_GMP and substitues INCLUDES_GMP and LDADD_GMP. .PP \fBRHEO_CHECK_MPFR\fP .PP Check for the "mpfr" gnu multi-precision library. Defines HAVE_MPFR and substitues INCLUDES_MPFR and LDADD_MPFR. .PP \fBRHEO_CHECK_CGAL\fP .PP Check for the "cgal" computational geometry library. Defines HAVE_CGAL and substitues INCLUDES_CGAL and LDADD_CGAL. .PP \fBRHEO_DEBIAN_FIX_LIBTOOL\fP .PP Fix rpath libtool issue for debian packaging. See also http://wiki.debian.org/RpathIssue .PP \fBRHEO_CHECK_FLOAT128\fP .PP Check for the "float128" arithmetic (boost multiprecision and GNU quadmath). Defines HAVE_FLOAT128 and substitues INCLUDES_FLOAT128 and LDADD_FLOAT128. .\" skip start:SEE ALSO: .\" skip start:AUTHOR: .\" skip start:DATE: .\" END .SH COPYRIGHT Copyright (C) 2000-2018 Pierre Saramito GPLv3+: GNU GPL version 3 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.