| 1 | dnl **** Process this file with autoconf to produce a configure script. | 
| 2 |  | 
| 3 | AC_INIT(OOPSE, 1.0, gezelter@nd.edu, oopse) | 
| 4 | AC_CONFIG_AUX_DIR(ac-tools) | 
| 5 |  | 
| 6 | builtin(include, ac-tools/fortran90.m4) | 
| 7 | builtin(include, ac-tools/aclocal.m4) | 
| 8 |  | 
| 9 | AC_CONFIG_SRCDIR([src/oopse.cpp]) | 
| 10 |  | 
| 11 | AC_PREFIX_DEFAULT("/usr/local") | 
| 12 |  | 
| 13 | # set program name | 
| 14 | PROGNAME="oopse" | 
| 15 | AC_SUBST(PROGNAME) | 
| 16 |  | 
| 17 | # there are two ways to do debugging.  One with the --enable-debug flag | 
| 18 | # and one using the DEBUG environment variable | 
| 19 |  | 
| 20 | debug=0 | 
| 21 | AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug], [Compile OOPSE in debug mode]), [debug=1]) | 
| 22 | if test "${DEBUG}"; then | 
| 23 | AC_DEFINE(debug, 1, [Code compiled in debug mode]) | 
| 24 | msg="$msg, debug mode" | 
| 25 | fi | 
| 26 | AC_SUBST(debug) | 
| 27 |  | 
| 28 | # who am i | 
| 29 | AC_CANONICAL_HOST | 
| 30 |  | 
| 31 | dnl Checks for C compiler | 
| 32 | AC_PROG_CC([icc xlc gcc cc]) | 
| 33 |  | 
| 34 | dnl Checks for C++ compiler | 
| 35 | AC_PROG_CXX([icpc icc xlc++ xlC CC g++ c++]) | 
| 36 |  | 
| 37 | dnl If we are not running g++ then we might need some other flags | 
| 38 | dnl to get the templates compiled correctly | 
| 39 | OOPSE_TEMPLATE_FLAGS="" | 
| 40 | if test $ac_cv_prog_gxx = no; then | 
| 41 | AC_MSG_CHECKING([checking whether ${CXX} accepts -ptused -no_prelink]) | 
| 42 | echo 'void f(){}' > conftest.cc | 
| 43 | if test -z "`${CXX} -ptused -no_prelink -c conftest.cc 2>&1`"; then | 
| 44 | AC_MSG_RESULT(yes) | 
| 45 | OOPSE_TEMPLATE_FLAGS="-ptused -no_prelink" | 
| 46 | else | 
| 47 | AC_MSG_RESULT(no) | 
| 48 | fi | 
| 49 | rm -f conftest* | 
| 50 | AC_MSG_CHECKING([checking whether ${CXX} accepts -instances=static]) | 
| 51 | echo 'void f(){}' > conftest.cc | 
| 52 | if test -z "`${CXX} -instances=static -c conftest.cc 2>&1`"; then | 
| 53 | AC_MSG_RESULT(yes) | 
| 54 | OOPSE_TEMPLATE_FLAGS="-instances=static" | 
| 55 | else | 
| 56 | AC_MSG_RESULT(no) | 
| 57 | fi | 
| 58 | rm -f conftest* | 
| 59 | AC_MSG_CHECKING([checking whether ${CXX} accepts -pto]) | 
| 60 | echo 'void f(){}' > conftest.cc | 
| 61 | if test -z "`${CXX} -pto -c conftest.cc 2>&1`"; then | 
| 62 | AC_MSG_RESULT(yes) | 
| 63 | OOPSE_TEMPLATE_FLAGS="-pto" | 
| 64 | else | 
| 65 | AC_MSG_RESULT(no) | 
| 66 | fi | 
| 67 | rm -f conftest* | 
| 68 | AC_MSG_CHECKING([checking whether ${CXX} accepts -LANG:std]) | 
| 69 | echo 'void f(){}' > conftest.cc | 
| 70 | if test -z "`${CXX} -LANG:std -c conftest.cc 2>&1`"; then | 
| 71 | AC_MSG_RESULT(yes) | 
| 72 |  | 
| 73 |  | 
| 74 | EXTRA_CC_FLAG=${EXTRA_CC_FLAG}" -LANG:std" | 
| 75 | else | 
| 76 | AC_MSG_RESULT(no) | 
| 77 | fi | 
| 78 | fi | 
| 79 | AC_SUBST(OOPSE_TEMPLATE_FLAGS) | 
| 80 | AC_SUBST(EXTRA_CC_FLAG) | 
| 81 |  | 
| 82 | dnl Fortran 90 compilation checks are next | 
| 83 |  | 
| 84 | AC_PROG_F90([ifort ifc f90 xlf90 pgf90 epcf90 f95 xlf95 lf95 fort g95]) | 
| 85 | dnl Check the flag for Fortran90 preprocessing | 
| 86 | ACX_PROG_F90_PREPFLAG | 
| 87 | dnl Check to see if a flag is required for preprocessing defines | 
| 88 | ACX_PROG_F90_PREPDEFFLAG | 
| 89 | AC_LANG_PUSH(Fortran 90) | 
| 90 | AC_LANG_PREPROC(Fortran 90) | 
| 91 | AC_F90_LIBRARY_LDFLAGS | 
| 92 | dnl How does Fortran mangle function names | 
| 93 | AC_F90_WRAPPERS | 
| 94 | AC_SUBST(F90_FUNC) | 
| 95 | AC_SUBST(F90_FUNC_) | 
| 96 | dnl Fortran 90 module suffix | 
| 97 | AC_CHECK_MODSUFFIX | 
| 98 | dnl Fortran 90 module path specifier | 
| 99 | AC_CHECK_MODDIRFLAG | 
| 100 | AC_LANG_POP | 
| 101 |  | 
| 102 | dnl check for system getopt | 
| 103 | AC_LANG_PUSH(C) | 
| 104 | adl_FUNC_GETOPT_LONG | 
| 105 |  | 
| 106 | dnl check for strong optimization options | 
| 107 |  | 
| 108 | case $debug in | 
| 109 | 1) | 
| 110 | ;; | 
| 111 | *) | 
| 112 | ACX_PROG_CC_MAXOPT | 
| 113 | ACX_PROG_CXX_MAXOPT | 
| 114 | ACX_PROG_F90_MAXOPT | 
| 115 | ;; | 
| 116 | esac | 
| 117 |  | 
| 118 | AC_PROG_INSTALL | 
| 119 | AC_PROG_LN_S | 
| 120 | AC_PROG_MAKE_SET | 
| 121 | AC_PROG_RANLIB | 
| 122 | AC_PROG_YACC | 
| 123 | AC_PROG_LEX | 
| 124 | AC_CHECK_PROG(AR, ar, ar, NONE) | 
| 125 | if test "$AR" = "NONE"; then | 
| 126 | AC_MSG_ERROR(--> Can't find \`ar'!) | 
| 127 | AC_CACHE_SAVE | 
| 128 | exit 1 | 
| 129 | fi | 
| 130 |  | 
| 131 |  | 
| 132 | AC_ARG_WITH(mpi, | 
| 133 | [AC_HELP_STRING([--with-mpi=<prefix>], | 
| 134 | [compile with MPI installed in <prefix> [default=no]])], | 
| 135 | with_mpi=$withval, | 
| 136 | with_mpi="no") | 
| 137 |  | 
| 138 | case "x$with_mpi" in | 
| 139 | xyes | "x")  USE_MPI=yes;; | 
| 140 | xno) USE_MPI=no ;; | 
| 141 | *) MPI="$with_mpi"; USE_MPI=yes ;; | 
| 142 | esac | 
| 143 | if test "$USE_MPI" = "yes" -a -z "$with_mpi"; then | 
| 144 | MPI="/usr/local" | 
| 145 | fi | 
| 146 | if test "$USE_MPI" = "yes"; then | 
| 147 | ACX_MPI | 
| 148 | fi | 
| 149 | AC_SUBST(USE_MPI) | 
| 150 |  | 
| 151 | AC_ARG_WITH(sprng, | 
| 152 | [AC_HELP_STRING([--with-sprng=<prefix>], | 
| 153 | [compile with SPRNG installed in <prefix> [default=/usr/local]])], | 
| 154 | with_sprng=$withval, | 
| 155 | with_sprng="/usr/local") | 
| 156 |  | 
| 157 | case "x$with_sprng" in | 
| 158 | xyes | "x")  USE_SPRNG=yes;; | 
| 159 | xno) USE_SPRNG=no ;; | 
| 160 | *) SPRNG="$with_sprng"; USE_SPRNG=yes ;; | 
| 161 | esac | 
| 162 | if test "$USE_SPRNG" = "yes" -a -z "$with_sprng"; then | 
| 163 | SPRNG="/usr/local" | 
| 164 | fi | 
| 165 | if test "$USE_SPRNG" = "yes"; then | 
| 166 | ACX_SPRNG | 
| 167 | fi | 
| 168 | AC_SUBST(USE_SPRNG) | 
| 169 |  | 
| 170 |  | 
| 171 | CHECK_MKL | 
| 172 |  | 
| 173 |  | 
| 174 | AC_EXEEXT | 
| 175 | AC_OBJEXT | 
| 176 | OBJEXT=".$OBJEXT" | 
| 177 |  | 
| 178 | OOPSE=oopse | 
| 179 |  | 
| 180 | dnl **** define home dir of oopse | 
| 181 | if test "x${prefix}" = "xNONE" | 
| 182 | then | 
| 183 | OOPSE_HOME=${ac_default_prefix}/oopse | 
| 184 | else | 
| 185 | OOPSE_HOME=${prefix}/oopse | 
| 186 | fi | 
| 187 | AC_ARG_ENABLE(oopse-home, | 
| 188 | [  --enable-oopse-home=DIR      define oopse home dir [PREFIX/oopse]], | 
| 189 | [OOPSE_HOME="${enableval}"]) | 
| 190 |  | 
| 191 | case "x$INSTALL" in | 
| 192 | x/*) ;; | 
| 193 | *) INSTALL=`pwd`/ac-tools/"shtool install -c" ; | 
| 194 | esac | 
| 195 |  | 
| 196 | MKINSTALLDIRS=`pwd`/ac-tools/"shtool mkdir -p -f" | 
| 197 |  | 
| 198 | dnl **** Final list of subdirs | 
| 199 | SUBDIRS="libBASS libmdtools src forceFields samples utils utils/sysbuilder third-party " | 
| 200 |  | 
| 201 | dnl **** Define CFLAGS etc empty to prevent configure from setting them | 
| 202 | CFLAGS=${CFLAGS-""} | 
| 203 | CXXFLAGS=${CXXFLAGS-""} | 
| 204 | CPPFLAGS=${CPPFLAGS-""} | 
| 205 | FFLAGS=${FFLAGS-""} | 
| 206 | F90FLAGS=${F90FLAGS-""} | 
| 207 | LDFLAGS=${LDFLAGS-""} | 
| 208 | DEBUG=${DEBUG-"-g"} | 
| 209 |  | 
| 210 | case $debug in | 
| 211 | 1) | 
| 212 | FFLAGS="$DEBUG $FFLAGS" | 
| 213 | F90FLAGS="$DEBUG $F90FLAGS" | 
| 214 | ;; | 
| 215 | *) | 
| 216 | ;; | 
| 217 | esac | 
| 218 |  | 
| 219 |  | 
| 220 | AC_SUBST(EXEEXT) | 
| 221 | AC_SUBST(OBJEXT) | 
| 222 | AC_SUBST(BATEXT) | 
| 223 | AC_SUBST(MKINSTALLDIRS) | 
| 224 | AC_SUBST(OOPSE) | 
| 225 | AC_SUBST(OOPSE_HOME) | 
| 226 | AC_SUBST(SUBDIRS) | 
| 227 | AC_SUBST(CFLAGS) | 
| 228 | AC_SUBST(CXXFLAGS) | 
| 229 | AC_SUBST(CPPFLAGS) | 
| 230 | AC_SUBST(FFLAGS) | 
| 231 | AC_SUBST(F90FLAGS) | 
| 232 | AC_SUBST(LDFLAGS) | 
| 233 | AC_SUBST(PREPFLAG) | 
| 234 | AC_SUBST(PREPDEFFLAG) | 
| 235 | AC_CONFIG_HEADER([libBASS/config.h libmdtools/config.h]) | 
| 236 | AC_CONFIG_FILES([Makefile | 
| 237 | libBASS/Makefile libmdtools/Makefile src/Makefile utils/Makefile | 
| 238 | utils/sysbuilder/Makefile  forceFields/Makefile samples/Makefile | 
| 239 | third-party/Makefile | 
| 240 | samples/alkane/Makefile samples/argon/Makefile | 
| 241 | samples/lipid/Makefile samples/minimizer/Makefile | 
| 242 | samples/metals/Makefile samples/water/Makefile | 
| 243 | samples/water/dimer/Makefile samples/water/spce/Makefile | 
| 244 | samples/water/ssd/Makefile samples/water/ssde/Makefile | 
| 245 | samples/water/tip4p/Makefile samples/water/tip3p_ice/Makefile | 
| 246 | samples/zcons/Makefile | 
| 247 | ]) | 
| 248 |  | 
| 249 | AC_OUTPUT |