| 1 | #                                               -*- Autoconf -*-
 | 
|---|
| 2 | # Process this file with autoconf to produce a configure script.
 | 
|---|
| 3 | 
 | 
|---|
| 4 | AC_PREREQ(2.59)
 | 
|---|
| 5 | AC_INIT([ElectronicStructurePACKage], 1.1, heber@ins.uni-bonn.de, ESPACK)
 | 
|---|
| 6 | AC_CONFIG_AUX_DIR([config])
 | 
|---|
| 7 | AC_CONFIG_SRCDIR([src/pcp.c])
 | 
|---|
| 8 | AC_CONFIG_HEADER([config.h])
 | 
|---|
| 9 | 
 | 
|---|
| 10 | AM_INIT_AUTOMAKE(dist-bzip2)
 | 
|---|
| 11 | 
 | 
|---|
| 12 | AC_CANONICAL_HOST
 | 
|---|
| 13 | 
 | 
|---|
| 14 | # Checks for programs.
 | 
|---|
| 15 | AC_PROG_CC
 | 
|---|
| 16 | AC_PROG_CXX
 | 
|---|
| 17 | AC_PATH_PROG([PERL],[perl])
 | 
|---|
| 18 | AC_PATH_PROG([TAR],[tar])
 | 
|---|
| 19 | AM_MISSING_PROG([DOXYGEN], [doxygen])
 | 
|---|
| 20 | 
 | 
|---|
| 21 | dnl Check for MPI-Routines
 | 
|---|
| 22 | AC_ARG_ENABLE([mpi],
 | 
|---|
| 23 |               AS_HELP_STRING([--enable-mpi],[build MPI parallel version (default is yes if MPI code can be compiled)]),
 | 
|---|
| 24 |               [enable_mpi=$enableval], [enable_mpi=maybe])
 | 
|---|
| 25 | disabled_msg="MPI version disabled."
 | 
|---|
| 26 | if test x"$enable_mpi" = xyes -o x"$enable_mpi" = xmaybe
 | 
|---|
| 27 | then
 | 
|---|
| 28 |         AC_MSG_NOTICE([checking for MPI features])
 | 
|---|
| 29 |         ACX_MPI([enable_mpi=yes
 | 
|---|
| 30 |                  CC=mpicc
 | 
|---|
| 31 |                  CXX=mpicxx],
 | 
|---|
| 32 |                 [err_msg="cannot find out how to compile MPI code."
 | 
|---|
| 33 |                  if test x"$enable_mpi" = xyes
 | 
|---|
| 34 |                  then
 | 
|---|
| 35 |                          AC_MSG_ERROR([$err_msg])
 | 
|---|
| 36 |                  else
 | 
|---|
| 37 |                          AC_MSG_WARN([$err_msg $disabled_msg])
 | 
|---|
| 38 |                          enable_mpi=no
 | 
|---|
| 39 |                  fi])
 | 
|---|
| 40 | else
 | 
|---|
| 41 |         AC_MSG_NOTICE([$disabled_msg])
 | 
|---|
| 42 | fi
 | 
|---|
| 43 | #AC_ARG_VAR([MPILIBS],[necessary libraries to link MPI C code])
 | 
|---|
| 44 | AM_CONDITIONAL([MPIVER], [test x"$enable_mpi" = xyes])
 | 
|---|
| 45 | 
 | 
|---|
| 46 | # Checks for typedefs, structures, and compiler characteristics.
 | 
|---|
| 47 | AC_TYPE_PID_T
 | 
|---|
| 48 | AC_TYPE_SIZE_T
 | 
|---|
| 49 | AC_TYPE_SIGNAL
 | 
|---|
| 50 | 
 | 
|---|
| 51 | AC_C_CONST
 | 
|---|
| 52 | AC_C_INLINE
 | 
|---|
| 53 | AC_C_VOLATILE
 | 
|---|
| 54 | AC_C_RESTRICT
 | 
|---|
| 55 | 
 | 
|---|
| 56 | # Checks for library functions.
 | 
|---|
| 57 | # use when adapted: AC_CHECK_FUNCS([floor ftruncate memmove memset mkdir modf pow realpath sqrt strchr strdup strerror strrchr strstr strtol statfs],[],[AC_MSG_WARN([Some functions not found.  Compile may fail.  Alternate methods may need to be implemented.])])
 | 
|---|
| 58 | AC_FUNC_MALLOC
 | 
|---|
| 59 | AC_FUNC_REALLOC
 | 
|---|
| 60 | AC_TYPE_SIGNAL
 | 
|---|
| 61 | 
 | 
|---|
| 62 | # Checks for fftw libraries and find out version.
 | 
|---|
| 63 | AC_CHECK_LIB(m, sqrt, ,AC_MSG_ERROR([compatible libc math library not found]))
 | 
|---|
| 64 | AC_CHECK_FUNCS([alarm atexit floor pow sqrt strchr uname strstr strrchr])
 | 
|---|
| 65 | FFTW=notfound
 | 
|---|
| 66 | RFFTW=notfound
 | 
|---|
| 67 | AC_ARG_ENABLE([fftw],
 | 
|---|
| 68 |               AS_HELP_STRING([--enable-fftw],[build FFTW-2 version (default is yes if fftw2 code can be compiled)]),
 | 
|---|
| 69 |               [enable_fftw=$enableval], [enable_fftw=maybe])
 | 
|---|
| 70 | AC_ARG_ENABLE([dfftw],
 | 
|---|
| 71 |               AS_HELP_STRING([--enable-dfftw],[build double fftw2 version (default is fftw2)]),
 | 
|---|
| 72 |               [enable_dfftw=$enableval], [enable_dfftw=maybe])
 | 
|---|
| 73 | AC_ARG_ENABLE([fftw3],
 | 
|---|
| 74 |               AS_HELP_STRING([--enable-fftw3],[build FFTW-3 version (default is fftw2)]),
 | 
|---|
| 75 |               [enable_fftw3=$enableval], [enable_fftw3=maybe])
 | 
|---|
| 76 |               
 | 
|---|
| 77 | # debugging info
 | 
|---|
| 78 | AC_ARG_ENABLE([debug],AS_HELP_STRING([--enable-debug],[Output debugging information, argument is yes or debugging level (default is no).]),
 | 
|---|
| 79 |               [enable_debug=$enableval], [enable_debug=no])
 | 
|---|
| 80 | if ! test x"$enable_debug" = xno; then
 | 
|---|
| 81 |         if test x"${enable_debug}" = xyes; then
 | 
|---|
| 82 |                 CFLAGS="-g3"
 | 
|---|
| 83 |                 CXXFLAGS="-g3"
 | 
|---|
| 84 |         else
 | 
|---|
| 85 |                 CFLAGS="-g${enable_debug}"
 | 
|---|
| 86 |                 CXXFLAGS="-g${enable_debug}"
 | 
|---|
| 87 |         fi
 | 
|---|
| 88 |   AC_DEFINE(HAVE_DEBUG,1, ["Output debugging info"])
 | 
|---|
| 89 |   AC_SUBST(HAVE_DEBUG)
 | 
|---|
| 90 | fi
 | 
|---|
| 91 | 
 | 
|---|
| 92 | # optimization level
 | 
|---|
| 93 | AC_ARG_ENABLE([optimization],AS_HELP_STRING([--enable-optimization],[Optimization level of compiler. Argument is yes or debugging level. (default is 2)]),
 | 
|---|
| 94 |               [enable_optimization=$enableval], [enable_optimization=yes])
 | 
|---|
| 95 | if test ! x"$enable_optimization" = xno; then
 | 
|---|
| 96 |         if test x"$enable_debug" = xno; then
 | 
|---|
| 97 |                 if test x"${enable_optimization}" = xyes; then
 | 
|---|
| 98 |                         CFLAGS="-O2"
 | 
|---|
| 99 |                         CXXFLAGS="-O2"
 | 
|---|
| 100 |                 else
 | 
|---|
| 101 |                         CFLAGS="-O${enable_optimization}"
 | 
|---|
| 102 |                         CXXFLAGS="-O${enable_optimization}"
 | 
|---|
| 103 |                 fi
 | 
|---|
| 104 | #       else
 | 
|---|
| 105 | #               AC_MSG_WARN(["Already specified --enable-debug!"])
 | 
|---|
| 106 |         fi
 | 
|---|
| 107 | fi
 | 
|---|
| 108 | 
 | 
|---|
| 109 | # Checks for header files.
 | 
|---|
| 110 | AC_HEADER_STDC
 | 
|---|
| 111 | AC_CHECK_HEADERS([sys/time.h unistd.h float.h stddef.h])
 | 
|---|
| 112 | AC_HEADER_STDBOOL
 | 
|---|
| 113 | 
 | 
|---|
| 114 | # check for fftw headers and subsequently for libs
 | 
|---|
| 115 | # if FFTW=.. set on success condition, -l... is not appended
 | 
|---|
| 116 | # .._HEADER doesn't show up in configh.h, .._HEADERS does!
 | 
|---|
| 117 | FFTW=notfound
 | 
|---|
| 118 | if test x"$FFTW" = xnotfound -o x"$enable_fftw" = xyes; then
 | 
|---|
| 119 |         FFTW=FFTW
 | 
|---|
| 120 |         AC_CHECK_HEADERS(fftw.h,
 | 
|---|
| 121 |                 [AC_CHECK_LIB(fftw, fftw_create_plan, , [FFTW=notfound], -lfftw)],
 | 
|---|
| 122 |                 [FFTW=notfound]
 | 
|---|
| 123 |                 )
 | 
|---|
| 124 |         
 | 
|---|
| 125 |         AC_CHECK_HEADERS(rfftw.h,
 | 
|---|
| 126 |                 [AC_CHECK_LIB(rfftw, rfftw_create_plan, , [FFTW=notfound],-lrfftw)],
 | 
|---|
| 127 |                 [FFTW=notfound]
 | 
|---|
| 128 |         )
 | 
|---|
| 129 | fi
 | 
|---|
| 130 | if test x"$FFTW" = xnotfound -o x"$enable_dfftw" = xyes; then
 | 
|---|
| 131 |         FFTW=DFFTW
 | 
|---|
| 132 |         AC_CHECK_HEADERS(dfftw.h,
 | 
|---|
| 133 |                 [AC_CHECK_LIB(dfftw, fftw_create_plan, , [FFTW=notfound],-ldfftw)],
 | 
|---|
| 134 |                 [FFTW=notfound]
 | 
|---|
| 135 |                 )
 | 
|---|
| 136 |         
 | 
|---|
| 137 |         AC_CHECK_HEADERS(drfftw.h,
 | 
|---|
| 138 |                 [AC_CHECK_LIB(drfftw, rfftw_create_plan, , [FFTW=notfound],-ldrfftw)],
 | 
|---|
| 139 |                 [FFTW=notfound]
 | 
|---|
| 140 |         )
 | 
|---|
| 141 | fi
 | 
|---|
| 142 | if test x"$FFTW" = xnotfound -o x"$enable_fftw3" = xyes; then
 | 
|---|
| 143 |         FFTW=FFTW3
 | 
|---|
| 144 |         AC_CHECK_HEADERS(fftw3.h,
 | 
|---|
| 145 |                 [AC_CHECK_LIB(fftw3, fftw_create_plan, , [FFTW=notfound],-lfftw3)],
 | 
|---|
| 146 |                 [FFTW=notfound]
 | 
|---|
| 147 |                 )
 | 
|---|
| 148 | fi
 | 
|---|
| 149 | # warn if not found
 | 
|---|
| 150 | if test x"$FFTW" = xnotfound; then
 | 
|---|
| 151 |         AC_MSG_WARN(["Missing lib(d)fftw(3) and/or lib(d)rfftw(3).\nIf exist but not in LD_.._PATH, use export LDFLAGS=-L.."])
 | 
|---|
| 152 |         AC_MSG_WARN(["Or missing header (d)fftw(3).h and/or (d)rfftw.h\nIf exist but not in PATH, use export CFLAGS=-I.."])
 | 
|---|
| 153 | fi
 | 
|---|
| 154 | # check for GNU Scientific Library
 | 
|---|
| 155 | #AC_CHECK_LIB(m,main)
 | 
|---|
| 156 | AC_CHECK_LIB(blas,main)
 | 
|---|
| 157 | AC_CHECK_LIB(gsl,main)
 | 
|---|
| 158 | 
 | 
|---|
| 159 | dnl Check for "extern inline", using a modified version
 | 
|---|
| 160 | dnl of the test for AC_C_INLINE from acspecific.mt
 | 
|---|
| 161 | dnl
 | 
|---|
| 162 | AC_CACHE_CHECK([for extern inline], ac_cv_c_extern_inline,
 | 
|---|
| 163 | [ac_cv_c_extern_inline=no
 | 
|---|
| 164 | AC_TRY_COMPILE([extern $ac_cv_c_inline double foo(double x);
 | 
|---|
| 165 | extern $ac_cv_c_inline double foo(double x) { return x+1.0; };
 | 
|---|
| 166 | double foo (double x) { return x + 1.0; };], 
 | 
|---|
| 167 | [  foo(1.0)  ],
 | 
|---|
| 168 | [ac_cv_c_extern_inline="yes"])
 | 
|---|
| 169 | ])
 | 
|---|
| 170 | 
 | 
|---|
| 171 | if test "$ac_cv_c_inline" != no ; then
 | 
|---|
| 172 |   AC_DEFINE(HAVE_INLINE,1, ["May use inline routines"])
 | 
|---|
| 173 |   AC_SUBST(HAVE_INLINE)
 | 
|---|
| 174 | fi
 | 
|---|
| 175 | 
 | 
|---|
| 176 | # test suite
 | 
|---|
| 177 | AC_CONFIG_TESTDIR(tests)
 | 
|---|
| 178 | AC_CONFIG_FILES([tests/atlocal tests/Makefile])
 | 
|---|
| 179 | AC_CONFIG_FILES([tests/pcp], [chmod +x tests/pcp])
 | 
|---|
| 180 | 
 | 
|---|
| 181 | AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile])
 | 
|---|
| 182 | AC_OUTPUT
 | 
|---|