| 1 | gezelter | 2 | dnl **** Process this file with autoconf to produce a configure script. | 
| 2 | gezelter | 847 | AC_PREREQ(2.59) | 
| 3 | chuckv | 1191 | AC_INIT(OOPSE, 4.0, gezelter@nd.edu, oopse) | 
| 4 | gezelter | 2 | AC_CONFIG_AUX_DIR(ac-tools) | 
| 5 | gezelter | 847 | AC_CONFIG_SRCDIR([src/applications/oopse/oopse.cpp]) | 
| 6 |  |  | AC_CONFIG_HEADER([src/config.h]) | 
| 7 | gezelter | 2 |  | 
| 8 | gezelter | 957 | builtin(include, ac-tools/OOPSE.m4) | 
| 9 | gezelter | 811 | builtin(include, ac-tools/AC_CXX_HAVE_STL.m4) | 
| 10 |  |  | builtin(include, ac-tools/AC_CXX_NAMESPACES.m4) | 
| 11 |  |  | builtin(include, ac-tools/AC_CXX_STD.m4) | 
| 12 | gezelter | 1372 | builtin(include, ac-tools/ax_mpi.m4) | 
| 13 | gezelter | 2 |  | 
| 14 | gezelter | 847 | # who am i | 
| 15 |  |  | AC_CANONICAL_HOST | 
| 16 | gezelter | 2 |  | 
| 17 |  |  | AC_PREFIX_DEFAULT("/usr/local") | 
| 18 |  |  |  | 
| 19 |  |  | # set program name | 
| 20 |  |  | PROGNAME="oopse" | 
| 21 |  |  | AC_SUBST(PROGNAME) | 
| 22 |  |  |  | 
| 23 | gezelter | 847 | AC_EXEEXT | 
| 24 |  |  | AC_OBJEXT | 
| 25 |  |  | OBJEXT=".$OBJEXT" | 
| 26 |  |  |  | 
| 27 |  |  | OOPSE=oopse | 
| 28 |  |  |  | 
| 29 |  |  | dnl **** define home dir of oopse | 
| 30 |  |  | if test "x${prefix}" = "xNONE" | 
| 31 |  |  | then | 
| 32 |  |  | OOPSE_HOME=${ac_default_prefix}/oopse | 
| 33 |  |  | else | 
| 34 |  |  | OOPSE_HOME=${prefix}/oopse | 
| 35 |  |  | fi | 
| 36 |  |  | AC_ARG_ENABLE(oopse-home, | 
| 37 |  |  | [  --enable-oopse-home=DIR      define oopse home dir [PREFIX/oopse]], | 
| 38 |  |  | [OOPSE_HOME="${enableval}"]) | 
| 39 |  |  |  | 
| 40 | gezelter | 2 | # there are two ways to do debugging.  One with the --enable-debug flag | 
| 41 |  |  | # and one using the DEBUG environment variable | 
| 42 |  |  |  | 
| 43 |  |  | debug=0 | 
| 44 |  |  | AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug], [Compile OOPSE in debug mode]), [debug=1]) | 
| 45 |  |  | if test "${DEBUG}"; then | 
| 46 |  |  | AC_DEFINE(debug, 1, [Code compiled in debug mode]) | 
| 47 |  |  | msg="$msg, debug mode" | 
| 48 |  |  | fi | 
| 49 |  |  | AC_SUBST(debug) | 
| 50 |  |  |  | 
| 51 | gezelter | 961 | AC_ARG_ENABLE(single, [AC_HELP_STRING([--enable-single],[compile OOPSE in single precision])], ok=$enableval, ok=no) | 
| 52 |  |  | AC_ARG_ENABLE(float, [AC_HELP_STRING([--enable-float],[synonym for --enable-single])], ok=$enableval) | 
| 53 |  |  | if test "$ok" = "yes"; then | 
| 54 |  |  | AC_DEFINE(SINGLE_PRECISION,1,[Define to compile in single precision.]) | 
| 55 | gezelter | 962 | USE_SINGLE_PRECISION=yes | 
| 56 |  |  | AC_SUBST(USE_SINGLE_PRECISION) | 
| 57 | gezelter | 961 | fi | 
| 58 |  |  |  | 
| 59 | gezelter | 1225 | if test x"$CC" != x; then | 
| 60 |  |  | AC_CHECK_PROGS(ac_cc_set,[$CC],[no]) | 
| 61 |  |  | AS_IF([test AS_VAR_GET([ac_cc_set]) != no],[ | 
| 62 |  |  | AC_PATH_PROG(ac_cc_path,[$ac_cc_set],[no])],[ | 
| 63 |  |  | AC_ERROR([Specified C compiler $CC doesn't seem to exist!])]) | 
| 64 |  |  |  | 
| 65 |  |  | AS_IF([test AS_VAR_GET([ac_cc_path]) != no],[ | 
| 66 | gezelter | 1372 | AC_MSG_NOTICE([Will attempt to use $CC as C compiler]) | 
| 67 |  |  | MPICC=$CC | 
| 68 |  |  | ],[ | 
| 69 | gezelter | 1225 | AC_ERROR([Can't find path to user-specified C compiler $CC])]) | 
| 70 |  |  | fi | 
| 71 |  |  |  | 
| 72 |  |  | if test x"$CXX" != x; then | 
| 73 |  |  | AC_CHECK_PROGS(ac_cxx_set,[$CXX],[no]) | 
| 74 |  |  | AS_IF([test AS_VAR_GET([ac_cxx_set]) != no],[ | 
| 75 |  |  | AC_PATH_PROG(ac_cxx_path,[$ac_cxx_set],[no])],[ | 
| 76 |  |  | AC_ERROR([Specified C++ compiler $CXX doesn't seem to exist!])]) | 
| 77 |  |  |  | 
| 78 |  |  | AS_IF([test AS_VAR_GET([ac_cxx_path]) != no],[ | 
| 79 | gezelter | 1372 | AC_MSG_NOTICE([Will attempt to use $CXX as C++ compiler]) | 
| 80 |  |  | MPICXX=$CXX | 
| 81 |  |  | ],[ | 
| 82 | gezelter | 1225 | AC_ERROR([Can't find path to user-specified C++ compiler $CXX])]) | 
| 83 |  |  | fi | 
| 84 |  |  |  | 
| 85 |  |  | if test x"$FC" != x; then | 
| 86 |  |  | AC_CHECK_PROGS(ac_fc_set,[$FC],[no]) | 
| 87 |  |  | AS_IF([test AS_VAR_GET([ac_fc_set]) != no],[ | 
| 88 |  |  | AC_PATH_PROG(ac_fc_path,[$ac_fc_set],[no])],[ | 
| 89 |  |  | AC_ERROR([Specified Fortran compiler $FC doesn't seem to exist!])]) | 
| 90 |  |  |  | 
| 91 |  |  | AS_IF([test AS_VAR_GET([ac_fc_path]) != no],[ | 
| 92 | gezelter | 1372 | AC_MSG_NOTICE([Will attempt to use $FC as Fortran compiler]) | 
| 93 |  |  | MPIFC=$FC | 
| 94 |  |  | ],[ | 
| 95 | gezelter | 1225 | AC_ERROR([Can't find path to user-specified Fortran compiler $FC])]) | 
| 96 |  |  | fi | 
| 97 |  |  |  | 
| 98 |  |  |  | 
| 99 |  |  | dnl do MPI checks | 
| 100 | gezelter | 1372 | AC_LANG([C++]) | 
| 101 |  |  | AX_MPI([USE_MPI="yes"], | 
| 102 |  |  | [USE_MPI="no" | 
| 103 |  |  | AC_MSG_WARN([No suitable C++ MPI implementation found. oopse_MPI will not be built.])]) | 
| 104 |  |  | AS_IF([test AS_VAR_GET([USE_MPI]) != no],[ | 
| 105 |  |  | AC_LANG([C]) | 
| 106 |  |  | AX_MPI([USE_MPI="yes"], | 
| 107 |  |  | [USE_MPI="no" | 
| 108 |  |  | AC_MSG_WARN([No suitable C MPI implementation found. oopse_MPI will not be built.])]) | 
| 109 |  |  | ]) | 
| 110 |  |  | AS_IF([test AS_VAR_GET([USE_MPI]) != no],[ | 
| 111 |  |  | AC_LANG([Fortran]) | 
| 112 |  |  | AX_MPI([USE_MPI="yes"], | 
| 113 |  |  | [USE_MPI="no" | 
| 114 |  |  | AC_MSG_WARN([No suitable Fortran MPI implementation found. oopse_MPI will not be built.])]) | 
| 115 |  |  | ]) | 
| 116 |  |  | AS_IF([test AS_VAR_GET([USE_MPI]) != no],[ | 
| 117 |  |  | CXX=$MPICXX | 
| 118 |  |  | CC=$MPICC | 
| 119 |  |  | FC=$MPIFC | 
| 120 |  |  | ]) | 
| 121 | gezelter | 1225 | AC_SUBST(USE_MPI) | 
| 122 |  |  |  | 
| 123 | gezelter | 847 | # Checks for programs. | 
| 124 | gezelter | 1372 | AC_PROG_CXX([$CXX icpc pathCC pgCC c++ xlc++ xlC g++ CC]) | 
| 125 |  |  | AC_PROG_CC([$CC icc pathcc pgcc cc xlc gcc]) | 
| 126 |  |  | AC_PROG_FC([$FC ifort ifc pathf95 pgf95 xlf95 lf95 epcf90 pathf90 xlf90 f95 f90 gfortran g95 fort], 95) | 
| 127 | gezelter | 774 | AC_PROG_CPP | 
| 128 |  |  | AC_PROG_EGREP | 
| 129 | gezelter | 847 | AC_PROG_LN_S | 
| 130 |  |  | AC_PROG_MAKE_SET | 
| 131 |  |  | AC_PROG_RANLIB | 
| 132 |  |  | AX_SYS_PERLSHARPBANG | 
| 133 |  |  | AC_PROG_INSTALL | 
| 134 |  |  | case "x$INSTALL" in | 
| 135 |  |  | x/*) ;; | 
| 136 |  |  | *) INSTALL=`pwd`/ac-tools/"shtool install -c" ; | 
| 137 |  |  | esac | 
| 138 |  |  | MKINSTALLDIRS=`pwd`/ac-tools/"shtool mkdir -p -f" | 
| 139 |  |  | AC_CHECK_PROG(AR, ar, ar, NONE) | 
| 140 |  |  | if test "$AR" = "NONE"; then | 
| 141 |  |  | AC_CACHE_SAVE | 
| 142 |  |  | exit 1 | 
| 143 | gezelter | 2 | fi | 
| 144 | gezelter | 847 | AC_PATH_PROG(PS, ps) | 
| 145 |  |  | AC_CACHE_CHECK([for POSIX or BSD ps syntax], ac_cv_prog_ps_syntax, [ | 
| 146 |  |  | if $PS ax -o rss > /dev/null 2>&1; then | 
| 147 |  |  | ac_cv_prog_ps_ax=yes | 
| 148 |  |  | else | 
| 149 |  |  | ac_cv_prog_ps_ax=no | 
| 150 |  |  | fi | 
| 151 |  |  | if $PS -ef -o rss > /dev/null 2>&1; then | 
| 152 |  |  | ac_cv_prog_ps_ef=yes | 
| 153 |  |  | else | 
| 154 |  |  | ac_cv_prog_ps_ef=no | 
| 155 |  |  | fi | 
| 156 |  |  | if test "$ac_cv_prog_ps_ax" = yes; then | 
| 157 |  |  | ac_cv_prog_ps_syntax=BSD | 
| 158 |  |  | else | 
| 159 |  |  | if test "$ac_cv_prog_ps_ef" = yes; then | 
| 160 |  |  | ac_cv_prog_ps_syntax=POSIX | 
| 161 |  |  | else | 
| 162 |  |  | AC_MSG_ERROR(Could not determine ps syntax) | 
| 163 |  |  | fi | 
| 164 |  |  | fi | 
| 165 |  |  | ]) | 
| 166 |  |  | AC_DEFINE_UNQUOTED(PSCOMMAND, $PS, [Path to ps program]) | 
| 167 |  |  | if test "$ac_cv_prog_ps_syntax" = BSD; then | 
| 168 |  |  | AC_DEFINE(PSTYPE_IS_BSD, 1, [ps uses BSD-style arguments]) | 
| 169 |  |  | else | 
| 170 |  |  | if test "$ac_cv_prog_ps_syntax" = POSIX; then | 
| 171 |  |  | AC_DEFINE(PSTYPE_IS_POSIX, 1, [ps uses POSIX-style arguments]) | 
| 172 |  |  | else | 
| 173 |  |  | AC_MSG_ERROR(Unknown ps syntax type!) | 
| 174 |  |  | fi | 
| 175 |  |  | fi | 
| 176 | gezelter | 2 |  | 
| 177 | gezelter | 847 | AC_LANG_PUSH(Fortran) | 
| 178 |  |  | AC_FC_SRCEXT(F90) | 
| 179 | gezelter | 2 | dnl Check the flag for Fortran90 preprocessing | 
| 180 |  |  | ACX_PROG_F90_PREPFLAG | 
| 181 |  |  | dnl Check to see if a flag is required for preprocessing defines | 
| 182 |  |  | ACX_PROG_F90_PREPDEFFLAG | 
| 183 | gezelter | 847 | AC_FC_WRAPPERS | 
| 184 |  |  | AC_SUBST(FC_FUNC) | 
| 185 |  |  | AC_SUBST(FC_FUNC_) | 
| 186 |  |  | AC_FC_LIBRARY_LDFLAGS | 
| 187 | gezelter | 2 | dnl Fortran 90 module suffix | 
| 188 |  |  | AC_CHECK_MODSUFFIX | 
| 189 |  |  | dnl Fortran 90 module path specifier | 
| 190 |  |  | AC_CHECK_MODDIRFLAG | 
| 191 | gezelter | 44 | AC_F90_MODULE_NAMES | 
| 192 |  |  | pat=`echo $ac_cv_f90_module_names | sed 's/.*\(%.*%\).*/\1/'` | 
| 193 |  |  | F90_MODULE_NAMES=empty | 
| 194 |  |  | case $pat in | 
| 195 |  |  | %MODULE%) | 
| 196 |  |  | F90_MODULE_NAMES=UPPER ;; | 
| 197 |  |  | %Module%) | 
| 198 |  |  | F90_MODULE_NAMES=Mixed ;; | 
| 199 |  |  | %module%) | 
| 200 |  |  | F90_MODULE_NAMES=lower ;; | 
| 201 |  |  | *) | 
| 202 |  |  | F90_MODULE_NAMES=unknown ;; | 
| 203 |  |  | esac | 
| 204 |  |  | AC_SUBST(F90_MODULE_NAMES) | 
| 205 | gezelter | 2 | AC_LANG_POP | 
| 206 |  |  |  | 
| 207 | gezelter | 847 | AC_LANG_C | 
| 208 | gezelter | 811 |  | 
| 209 | gezelter | 753 | dnl Checks for libraries. | 
| 210 |  |  | AC_CHECK_LIB(m, asin, , exit) | 
| 211 | gezelter | 847 | ACX_CHECK_ZLIB | 
| 212 | gezelter | 957 | ACX_CHECK_FFTW | 
| 213 | chuckv | 1200 | ACX_CHECK_QHULL | 
| 214 | gezelter | 1210 | ACX_CHECK_OPENBABEL | 
| 215 | gezelter | 753 |  | 
| 216 | gezelter | 847 | # Checks for header files. | 
| 217 |  |  | AC_HEADER_STDC | 
| 218 | gezelter | 1226 | AC_CHECK_HEADERS([libintl.h limits.h machine/hal_sysinfo.h stdlib.h string.h strings.h sys/param.h sys/pstat.h sys/sysctl.h sys/sysinfo.h sys/sysmp.h sys/systemcfg.h sys/table.h sys/time.h unistd.h]) | 
| 219 | gezelter | 847 |  | 
| 220 |  |  | # Checks for typedefs, structures, and compiler characteristics. | 
| 221 |  |  | AC_HEADER_STDBOOL | 
| 222 |  |  | AC_C_CONST | 
| 223 |  |  | AC_C_INLINE | 
| 224 |  |  | AC_TYPE_SIZE_T | 
| 225 |  |  | AC_HEADER_TIME | 
| 226 |  |  |  | 
| 227 |  |  | # Checks for library functions. | 
| 228 |  |  | AC_FUNC_MALLOC | 
| 229 |  |  | AC_FUNC_REALLOC | 
| 230 |  |  | AC_FUNC_SELECT_ARGTYPES | 
| 231 |  |  | AC_FUNC_STRTOD | 
| 232 | gezelter | 1226 | AC_CHECK_FUNCS([floor getpagesize gettimeofday memset pow pstat_getdynamic pstat_getstatic select sqrt strcasecmp strchr strdup stricmp strncasecmp strnicmp strstr strtol sysmp getsysinfo sysctl table]) | 
| 233 | gezelter | 847 |  | 
| 234 | tim | 313 | # special check for _system_configuration because AIX <4.3.2 do not | 
| 235 |  |  | # contain the `physmem' member. | 
| 236 |  |  | AC_MSG_CHECKING([for external symbol _system_configuration]) | 
| 237 |  |  | AC_TRY_COMPILE([#include <sys/systemcfg.h>], | 
| 238 |  |  | [double x = _system_configuration.physmem;], | 
| 239 |  |  | [AC_MSG_RESULT([yes]) | 
| 240 |  |  | AC_DEFINE(HAVE__SYSTEM_CONFIGURATION, 1, | 
| 241 |  |  | [Define if you have the _system_configuration variable.])], | 
| 242 |  |  | [AC_MSG_RESULT([no])]) | 
| 243 |  |  |  | 
| 244 | gezelter | 847 | dnl check for strong optimization options | 
| 245 | gezelter | 345 |  | 
| 246 | gezelter | 847 | case $debug in | 
| 247 |  |  | 1) | 
| 248 |  |  | ;; | 
| 249 |  |  | *) | 
| 250 |  |  | ACX_PROG_FC_MAXOPT | 
| 251 |  |  | ACX_PROG_CC_MAXOPT | 
| 252 |  |  | ACX_PROG_CXX_MAXOPT | 
| 253 |  |  | ;; | 
| 254 |  |  | esac | 
| 255 |  |  |  | 
| 256 | gezelter | 49 | BB_ENABLE_DOXYGEN | 
| 257 | gezelter | 2 |  | 
| 258 |  |  | AC_SUBST(EXEEXT) | 
| 259 |  |  | AC_SUBST(OBJEXT) | 
| 260 |  |  | AC_SUBST(BATEXT) | 
| 261 |  |  | AC_SUBST(MKINSTALLDIRS) | 
| 262 |  |  | AC_SUBST(OOPSE) | 
| 263 |  |  | AC_SUBST(OOPSE_HOME) | 
| 264 |  |  | AC_SUBST(SUBDIRS) | 
| 265 |  |  | AC_SUBST(CFLAGS) | 
| 266 |  |  | AC_SUBST(CXXFLAGS) | 
| 267 |  |  | AC_SUBST(CPPFLAGS) | 
| 268 | gezelter | 847 | AC_SUBST(FCFLAGS) | 
| 269 | gezelter | 2 | AC_SUBST(LDFLAGS) | 
| 270 |  |  | AC_SUBST(PREPDEFFLAG) | 
| 271 | gezelter | 44 | AC_SUBST(F90_MODULE_NAMES) | 
| 272 | skuang | 1298 | AC_CONFIG_FILES([make/Makefile src/utils/Makefile src/math/Makefile src/integrators/Makefile src/applications/atom2md/Makefile scripts/filepp], [chmod 0755 scripts/*]) | 
| 273 | gezelter | 2 |  | 
| 274 |  |  | AC_OUTPUT |