added FindGit.cmake script
[gromacs/rigid-bodies.git] / configure.ac
blob36d311958ac41c3f4840f350dfa7997c1f599853
1 #######################################################################
2 # Process this file wth autoconf to produce a configure script.
3 #######################################################################
4  
5 AC_PREREQ(2.50)
6 AC_INIT(gromacs, 4.0.99-dev-20100305, [gmx-users@gromacs.org])
7 AC_CONFIG_SRCDIR(src/gmxlib/3dview.c)
8 AC_CONFIG_AUX_DIR(config)
9 AC_CANONICAL_HOST
11 AM_INIT_AUTOMAKE(tar-ustar)
12 AC_PREFIX_DEFAULT(/usr/local/gromacs)
14 AM_CONFIG_HEADER(src/config.h)
15 dnl This is the version info according to the libtool versioning system.
16 dnl It does *not* correspond to the release number.
17 SHARED_VERSION_INFO="5:0:0"
18 AC_SUBST(SHARED_VERSION_INFO)
20 AC_DISABLE_SHARED
23 #######################################################################
24 # Simple options and makefile variables
25 #######################################################################
27 # This is currently not defined by CMake, because it's tricky to generate
28 # version.h portably (the autoconf rules for it are in src/gmxlib/Makefile.am).
29 AC_DEFINE(USE_VERSION_H,,[Use the version string from generated version.h])
31 ### Single/Double
32 AC_ARG_ENABLE(float,
33              [AC_HELP_STRING([--disable-float],
34                              [Use double instead of single precision])],, enable_float=yes)
36 AC_ARG_ENABLE(double,
37              [AC_HELP_STRING([--enable-double],
38                              [Same effect as --disable-float])],, enable_double=no)
39 if test "$enable_double" = "yes"; then
40    enable_float=no;
42 if test "$enable_float" = "no"; then
43   AC_DEFINE(GMX_DOUBLE,,[Compile in double precision])
45 AM_CONDITIONAL([GMX_DOUBLE],[test "$enable_float" = "no"])
49 ### Fortran or not
50 AC_ARG_ENABLE(fortran,
51              [AC_HELP_STRING([--enable-fortran],
52                              [Use Fortran kernels])],, 
53 [case "${host_cpu}-${host_os}" in
54   sparc*-solaris* | alpha*-* | rs6000*-aix* | powerpc*-aix* | mips*-irix*) enable_fortran=yes ;;
55   *) enable_fortran=no ;;
56  esac])
57 if test "$enable_fortran" = "yes"; then
58   AC_DEFINE(GMX_FORTRAN,,[Enable Fortran support])
60 # Generic fortran kernels will be turned off below if you enable power6-specific optimization!
61 # always use CC for linking:
62 AC_SUBST(F77LINK,"\$(LINK)")
68 ### MPI or not
69 AC_ARG_ENABLE(mpi,
70               [AC_HELP_STRING([--enable-mpi],
71                               [Compile for parallel runs using MPI]
72                               [(instead of threads)])],,enable_mpi=no)
75 ### MPI environment
76 AC_ARG_ENABLE(mpi-environment,
77               [AC_HELP_STRING([--enable-mpi-environment=VAR],
78                               [Only start parallel runs when VAR is set])],,
79 [case "${host_cpu}" in
80   mips*-irix*) enable_mpi_environment="MPI_ENVIRONMENT" ;;
81   *) enable_mpi_environment=no ;;
82 esac])
83 if test "$enable_mpi_environment" != "no"; then
84   AC_DEFINE_UNQUOTED(GMX_CHECK_MPI_ENV,"$enable_mpi_environment",[If defined, only start MPI runs when this variable is set])
87 ### MPI_IN_PLACE
88 AC_ARG_ENABLE(mpi-in-place,
89               [AC_HELP_STRING([--disable-mpi-in-place],
90                               [Disable MPI_IN_PLACE. For MPI implementations]
91                               [that have broken support for it ]
92                               [(some versions of MPICH, for example).])],, enable_mpi_in_place=yes)
96 AC_ARG_ENABLE(debug,
97               [AC_HELP_STRING([--enable-debug],
98                               [Add -g to other command line arguments])],,enable_debug=no)
100 ### IA32 assembly code
101 AC_ARG_ENABLE(ia32_sse,
102               [AC_HELP_STRING([--disable-ia32-sse],
103                               [Don't build SSE/SSE2 assembly loops on ia32])],,enable_ia32_sse=yes)
105 case "${host_cpu}-${host_vendor}" in
106    i?86-*) ;;
107    *) enable_ia32_sse=no ;;
108 esac
110 ### AMD64 assembly code
111 AC_ARG_ENABLE(x86_64_sse,
112               [AC_HELP_STRING([--disable-x86-64-sse],
113                               [Don't build SSE assembly loops on X86_64])],,enable_x86_64_sse=yes)
114 case "${host_cpu}-${host_vendor}" in
115    x86_64-* | amd64-*) ;;
116    i?86-apple) ;;
117    *) enable_x86_64_sse=no ;;
118 esac
121 ### Altivec on powerpc (motorola)
122 AC_ARG_ENABLE(ppc_altivec,
123               [AC_HELP_STRING([--disable-ppc-altivec],
124                               [Don't build Altivec loops on PowerPC])],,enable_ppc_altivec=undef)
125 # Power3/4/5 running AIX does not support altivec. We identify this with vendor=IBM.
126 # IBM powerpc 970 boxes run linux, and have vendor=unknown.
127 if test "$enable_ppc_altivec" = "undef"; then
128   case "${host_cpu}-${host_vendor}" in
129     ppc*-ibm* | powerpc*-ibm*) enable_ppc_altivec=no ;;
130     ppc*-* | powerpc*-*) enable_ppc_altivec=yes ;; 
131     *) enable_ppc_altivec=no ;;
132   esac
137 ### ia64 assembly code
138 AC_ARG_ENABLE(ia64_asm,
139               [AC_HELP_STRING([--disable-ia64-asm],
140                               [Don't build assembly loops on ia64])],,enable_ia64_asm=yes)
141 case "${host_cpu}" in
142    ia64) ;;
143    *) enable_ia64_asm=no ;;
144 esac
147 # IBM Power6-specific optimization
148 AC_ARG_ENABLE(power6,
149              [AC_HELP_STRING([--enable-power6],
150                              [Use IBM Pwr6/PPC440/PPC450-specific F77 kernels])],,enable_power6=no)
151 # Turn off generic fortran loops if we are using power6-specific optimization
152 if test "$enable_power6" = "yes"; then
153   enable_fortran=no;
156 AC_ARG_ENABLE(bluegene,
157               [AC_HELP_STRING([--enable-bluegene],
158                               [Build assembly intrinsics kernels on bluegene])],,enable_bluegene=no)
161 ### Optimize for host cpu version
162 AC_ARG_ENABLE(cpu-optimization,     
163               [AC_HELP_STRING([--disable-cpu-optimization],
164                               [No detection or tuning flags for cpu version])],, enable_cpu_optimization=yes)
167 ### Do software 1/sqrt(x)                                                                                                            
168 AC_ARG_ENABLE(software-invsqrt,
169               [AC_HELP_STRING([--disable-software-invsqrt],
170                               [No software 1/sqrt (disabled on sgi,ibm,ia64)])],,
171 [case "${host_cpu}-${host_os}" in
172   mips*-irix* | rs6000*-aix* | powerpc*-aix | ia64*-*) enable_software_invsqrt=no ;;
173   *) enable_software_invsqrt=yes ;;
174 esac])
175 if test "$enable_software_invsqrt" = "yes"; then
176   AC_DEFINE(GMX_SOFTWARE_INVSQRT,,[Use the GROMACS software 1/sqrt(x)])
178 AM_CONDITIONAL([GMX_SOFTWARE_INVSQRT],[test "$enable_software_invsqrt" = "yes"])
180 AC_ARG_ENABLE(fahcore,
181               [AC_HELP_STRING([--enable-fahcore],
182                               [Create a library with mdrun functionality])],, enable_fahcore=no)
186 # The four options below used to improve code scheduling, but the newest CPUs can usually rearrange
187 # instructions dynamically at runtime, so they might not make much difference now:
190 AC_ARG_ENABLE(all-static,
191               [AC_HELP_STRING([--enable-all-static],
192                               [Make completely static binaries])],, enable_all_static=no)
193 # Dont add the -all-static flag until after the compiler test.
196 # FFT libraries - only use one...
197 AC_ARG_WITH(fft,
198             [AC_HELP_STRING([--with-fft=@<:@fftw3/fftw2/mkl(>=6.0)/fftpack@:>@],
199                             [FFT library to use. fftw3 is default, fftpack built in.])],,
200                              with_fft=fftw3)
202 AC_ARG_ENABLE(fftw-measure,
203             [AC_HELP_STRING([--disable-fftw-measure],
204                             [Dont optimize FFTs. This produces binary exactly]
205                             [reproducible runs (as the -reprod flag to mdrun),]
206                             [and if you are using FFTW on x86 and specified its]
207                             [--enable-sse/sse2 flag (NOT default in FFTW!) the]
208                             [kernels used are close-to-optimal anyway.])],,
209                              enable_fftw_measure=yes)
212 AC_ARG_ENABLE(threads,
213               [AC_HELP_STRING([--disable-threads],    
214                               [Disable parallel runs using threads])],,enable_threads=yes)
217 ### Use external BLAS/LAPACK libraries if the user wants to.
219 AC_ARG_WITH(external_blas,
220             [AC_HELP_STRING([--with-external-blas],
221                             [Use system BLAS library (add to LIBS). Automatic on OS X.])],,
223 # default action - check if we are on OS X
224 case "${host_vendor}-${host_os}" in
225   apple-darwin*) with_external_blas="yes" ; extra_LDFLAGS="-framework Accelerate" ;;
226   *)             with_external_blas="no"  ;;
227 esac
229 AM_CONDITIONAL([GMX_EXTERNAL_BLAS], [test "$with_external_blas" = "yes"])
232 AC_ARG_WITH(external_lapack,
233             [AC_HELP_STRING([--with-external-lapack],
234                             [Use system LAPACK library (add to LIBS). Automatic on OS X.])],,
236 # default action - check if we are on OS X
237 case "${host_vendor}-${host_os}" in
238   apple-darwin*) with_external_lapack="yes" ; extra_LDFLAGS="-framework Accelerate" ;;
239   *)             with_external_lapack="no"  ;;
240 esac
242 AM_CONDITIONAL([GMX_EXTERNAL_LAPACK], [test "$with_external_lapack" = "yes"])
247 AC_ARG_WITH(qmmm_gaussian,
248               [AC_HELP_STRING([--without-qmmm-gaussian],
249                               [Use modified Gaussian0x for QM-MM (see website)])],,with_qmmm_gaussian=yes)
250 if test "$with_qmmm_gaussian" = "yes"; then
251   AC_DEFINE(GMX_QMMM_GAUSSIAN,,[Use (modified) Gaussian0x for QM-MM calculations])
255 AC_ARG_WITH(qmmm_gamess,
256               [AC_HELP_STRING([--without-qmmm-gamess],
257                               [Use modified Gamess-UK for QM-MM (see website)])],,with_qmmm_gamess=no)
258 if test "$with_qmmm_gamess" = "yes"; then
259   AC_DEFINE(GMX_QMMM_GAMESS,,[Use (modified) Gamess-UK for QM-MM calculations])
263 AC_ARG_WITH(qmmm_mopac,
264               [AC_HELP_STRING([--without-qmmm-mopac],
265                               [Use modified Mopac 7 for QM-MM (see website)])],,with_qmmm_mopac=no)
266 if test "$with_qmmm_mopac" = "yes"; then
267   AC_DEFINE(GMX_QMMM_MOPAC,,[Use (modified) Mopac 7 for QM-MM calculations])
270 AC_ARG_WITH(dlopen,
271             [AC_HELP_STRING([--without-dlopen],
272                             [do not compile with dlopen, needed to read VMD]
273                             [supported file formats])],,with_dlopen=yes)
277    
279 ############################################################
280 # Add some debug info: Who is building, and on what machine?
281 ############################################################
282 AC_DEFINE_UNQUOTED([BUILD_TIME],["`date`"],[Date and time for build])
283 AC_DEFINE_UNQUOTED([BUILD_USER],["`whoami`@`hostname`"],[User doing build])
284 AC_DEFINE_UNQUOTED([BUILD_MACHINE],["`uname -srm`"],[Hardware and OS version for build host])
288 ############################################################
289 # Checks for programs
290 ############################################################
292 # normally we use the default compiler, but on alpha/linux we try the compaq ones first
293 case "${host_cpu}-${host_os}" in
294   alpha*-linux*)
295     cc_names="ccc cc gcc"
296     f77_names="fort f77 g77"
297     ;;
298   *) 
299     cc_names="cc icc xlc gcc"
300     f77_names="f77 ifort xlf xlf77 cf77 fl32 g77 fort77 f90 xlf90 pgf77 cf77 fort fort77 pgf90"
301     ;;
302 esac
303 # the (non-mpi) c compiler, which is also used for programs executed during build stage
304 AC_PROG_CC( $cc_names )
305 # Check for environment variable CC_FOR_BUILD before overwriting it
306 if test -z "$CC_FOR_BUILD"; then
307   CC_FOR_BUILD=$CC
309 AC_SUBST(CC_FOR_BUILD) 
311 if test "$enable_fortran" = "yes"; then 
312   AC_PROG_F77( $f77_names )
313   if test -z "$F77"; then
314     AC_MSG_ERROR([No fortran compiler found])
315   fi
318 AM_PROG_AS( $CC )
320 # if we are using mpi, also get an MPICC. We cannot set that in the PROG_CC macro
321 # above, since autoconf checks that the created file can be executed. This would
322 # fail on platforms where MPI executables can only be run through a batchqueue.
324 if test "$enable_mpi" = "yes"; then
325   enable_threads="no"
326   AC_CHECK_PROGS(MPICC, mpxlc mpicc mpcc hcc, $CC)
327 # now change the normal cc to the MPI one - see the comment above.
328   CC=$MPICC
329   CXX=$MPICC
330   AC_MSG_CHECKING([whether the MPI cc command works]) # be paranoid
331   AC_TRY_LINK([#include <mpi.h>],[int argc; char **argv; MPI_Init(&argc,&argv);],
332 AC_MSG_RESULT([yes]),AC_MSG_ERROR([Cannot compile and link MPI code with $CC]))
333   AC_DEFINE(GMX_MPI,,[Make a parallel version of GROMACS using MPI])
334   AC_DEFINE(GMX_LIB_MPI,,[Use a real MPI library])
336   if test "$enable_mpi_in_place" = "yes"; then
337     # not all MPIs support MPI_IN_PLACE:
338     AC_MSG_CHECKING([for MPI_IN_PLACE in collective operations])
339     AC_TRY_COMPILE([
340 #include <mpi.h>
341 void test(void)
343     void *buf;
344     MPI_Allreduce(MPI_IN_PLACE, buf, 10, MPI_FLOAT, MPI_SUM, MPI_COMM_WORLD);
346     ],,[
347         AC_MSG_RESULT([yes])
348         AC_DEFINE(MPI_IN_PLACE_EXISTS,[],[MPI_IN_PLACE available for collective operations])
349     ],[
350         AC_MSG_RESULT([no])
351     ]) 
352   fi
354 # on the cray xt3 we have to tell autoconf that we 
355 # are actually cross-compiling even if the architecture
356 # of host and target are the same. so we enforce 
357 # cross-compilation if __QK_USER__ is defined
358   AC_MSG_CHECKING([for catamount])
359   AC_TRY_COMPILE([
360 #if defined __QK_USER__
361 #else
362 #error not catamount
363 #endif
364 ],,[
365   AC_MSG_RESULT([yes])
366   cross_compiling=yes 
367   AC_DEFINE(GMX_CRAY_XT3,[],[Enable special hacks for Cray XT3])
368   AC_DEFINE(GMX_NO_SYSTEM,[],[Ignore calls to system(3)])
369   AC_DEFINE(GMX_NO_NICE,[],[Ignore calls to nice(3)])
370   AC_DEFINE(GMX_BROKEN_CALLOC,[],[Don't use calloc(3)])
371   extra_LDFLAGS="$extra_LDFLAGS -lgmalloc -lacml"
373   AC_MSG_RESULT([no])
375 # end of "$enable_mpi" = "yes"
379 AH_TEMPLATE([F77_OR_C_FUNC],
380             [Set to F77_FUNC(name,NAME) if Fortran used, otherwise 'name' for C.])
381 AH_TEMPLATE([F77_OR_C_FUNC_],
382             [Set to F77_FUNC_(name,NAME) if Fortran used, otherwise 'name' for C.])
386 if test "$enable_fortran" = "yes"; then
387   AC_F77_LIBRARY_LDFLAGS
388   AC_F77_WRAPPERS
389   AC_DEFINE([F77_OR_C_FUNC(name,NAME)],[F77_FUNC(name,NAME)])
390   AC_DEFINE([F77_OR_C_FUNC_(name,NAME)],[F77_FUNC_(name,NAME)])
391 else
392   AC_DEFINE([F77_OR_C_FUNC(name,NAME)],[name])
393   AC_DEFINE([F77_OR_C_FUNC_(name,NAME)],[name])
398 AC_PROG_CPP
399 # Needed by libtool scripts?
400 AC_PROG_EGREP
402 if test "$enable_cpu_optimization" = "yes"; then
403   ACX_DETECT_GMXCPU
404 else
405   gmxcpu=""
407 ACX_COMPILER_MAXOPT
410 # We've postponed the threads check because we need to check with the right
411 # compilers/flags 
412 if test "$enable_threads" = "yes"; then 
413   if test "$enable_mpi" = "yes"; then
414     AC_MSG_ERROR([Cannot use both threads and MPI - yet.])
415   fi
416   if test "$with_fft" = "fftw2"; then
417     AC_MSG_ERROR([fftw2 can't be used with threads. Use fftw3 or mkl.])
418   fi 
419   AC_CHECK_HEADERS(unistd.h)
420   AC_CHECK_HEADERS(sys/time.h)
421   AC_CHECK_HEADERS(sched.h)
422   AC_CHECK_FUNCS(sysconf)
424   # for now we just assume pthreads
425   ACX_PTHREAD(,AC_MSG_ERROR([Cannot find POSIX threads - required for thread support using configure!]))
426   LIBS="$PTHREAD_LIBS $LIBS"
427   CFLAGS="$CFLAGS $PTHREAD_CFLAGS -I$srcdir/include"
428   CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS -I$srcdir/include"
429   CC="$PTHREAD_CC "
430   AC_DEFINE(THREAD_PTHREADS,,[Use pthreads for thread_mpi multithreading])
432   # profiling
433   AC_ARG_ENABLE(tmpi-profiling,
434               [AC_HELP_STRING([--enable-tmpi-profiling],
435               [Enables profiling of thread_mpi calls and wait times])],,
436               enable_tmpi_profiling=no)
437   if test "x$enable_tmpi_profiling" = "xyes"; then
438     AC_DEFINE(TMPI_PROFILE,,[Enable profiling for call and wait times])
439   fi
441   # check the atomics
442   AC_MSG_CHECKING(if atomic operations are supported)
443   CFLAGS_RET="$CFLAGS"
444   CXXFLAGS_RET="$CXXFLAGS"
445   CFLAGS="$CFLAGS -I$srcdir/include -DTMPI_CHECK_ATOMICS"
446   CXXFLAGS="$CXXFLAGS -I$srcdir/include -DTMPI_CHECK_ATOMICS"
447   # this sets a variable 'tmpi_atomics' to 'yes' if there are atomics. 
448   AC_COMPILE_IFELSE([#include "thread_mpi/atomic.h" ],
449                       [AC_MSG_RESULT(yes); tmpi_atomics=yes],
450                       [AC_MSG_WARN(
451 [No atomics.
453 This compiler+CPU combination doesn't have working atomics.
454 Thread support will be unbearably slow: disable threads.
456 Atomics should work on all but the most obscure CPU+compiler combinations;
457 if your system is not obscure -- like, for example, x86 with gcc --  please
458 contact the developers.
459 ]); tmpi_atomics=no])
460   CFLAGS="$CFLAGS_RET"
461   CXXFLAGS="$CXXFLAGS_RET"
463   AC_DEFINE(GMX_THREADS,,[Use threads for parallelization])
464   AC_DEFINE(GMX_MPI,,[Make a parallel version of GROMACS using MPI])
465   AM_CONDITIONAL(THREAD_PARALLEL,true)
466 else
467   AM_CONDITIONAL(THREAD_PARALLEL,false)
472 #############
473 # Check integer endian
474 #############
475 AC_C_BIGENDIAN([AC_DEFINE([GMX_INTEGER_BIG_ENDIAN],,[Integer byte order is big endian.])],[],[
476 AC_MSG_ERROR([Cannot determine endian in compiled output])])
477 # Little endian implied if GMX_INTEGER_BIG_ENDIAN not defined in source.
479 #############
480 # Make sure size_t can hold pointers.
481 # On some Nec machines, you reportedly need to specify a flag for size_t to be 64 bits wide.
482 #############
483 AC_MSG_CHECKING([that size_t can hold pointers])
484 AC_TRY_COMPILE([
485 #include <stdlib.h>
486 #include <stddef.h>
487 ],[int chk[sizeof(size_t)-sizeof(int *)+1];],AC_MSG_RESULT([yes]),[
488    AC_MSG_ERROR([size_t is smaller than int*. Check if your compiler needs a flag to make it 64 bit.])])
491 #############
492 # Check that SIGUSR1 is defined
493 #############
494 AC_MSG_CHECKING([for SIGUSR1])
495 AC_TRY_COMPILE([#include <signal.h>],[int i=SIGUSR1;],[
496 AC_MSG_RESULT([yes])
497 AC_DEFINE(HAVE_SIGUSR1,,[SIGUSR1 supported and defined])
498 ],AC_MSG_RESULT([no]))
500 #############
501 # Check if pipes are supported
502 #############
503 AC_MSG_CHECKING([for pipes])
504 AC_TRY_COMPILE([#include <stdio.h>],[
505 FILE *pipe=popen("/tmp/pipe","r");
507 AC_MSG_RESULT([yes])
508 AC_DEFINE(HAVE_PIPES,,[Pipes (popen/pclose) supported])
509 ],AC_MSG_RESULT([no]))
513 #############
514 # Check floating-point format and endian
515 #############
516 ACX_FLOAT_FORMAT
519 AC_PROG_INSTALL
520 AC_PROG_LN_S
521 AC_PROG_MAKE_SET
522 AC_LIBTOOL_WIN32_DLL
523 AC_PROG_LIBTOOL
524 AC_SYS_LARGEFILE
526 # Use our own version of AC_FUNC_FSEEKO from autoconf 2.63 instead
527 # of the broken one we might get from autoconf 2.61.
528 ACX_FUNC_FSEEKO_FIXED
533 ############################################################################
534 # Checks for libraries.
535 ############################################################################
537 # Don't add math library for intel compilers
538 if $CC -V 2>&1 | grep 'Intel Corporation' > /dev/null 2>&1; then
539   AC_MSG_NOTICE([Using built-in math library with intel compiler])
540 else
541   AC_CHECK_LIB(m,sqrt,,AC_MSG_ERROR([No math library found]))
544 #####
545 # Disable MASS support for now.
546 #####
549 case "$with_fft" in
550 fftw2)
551   if test "$enable_float" = "yes"; then
552     sizeof_real=4
553   else
554     sizeof_real=8
555   fi
556   ACX_CHECK_FFTW2(fftw,$sizeof_real)
557   ACX_CHECK_FFTW2(rfftw,$sizeof_real)
559   case ${ac_fftw_savedprefix} in
560    d) AC_DEFINE(FFTW2_NAME_DFFTW,,[Use the d prefix on fftw2 includes]) ;;
561    s) AC_DEFINE(FFTW2_NAME_SFFTW,,[Use the s prefix on fftw2 includes]) ;;
562    *) AC_DEFINE(FFTW2_NAME_FFTW,,[Dont use any prefix on fftw2 includes]) ;;
563   esac
565   AC_DEFINE(GMX_FFT_FFTW2,,[Use FFTW2 FFT library])
567   ;; #  end of fftw2 check
569 fftw3) # Much simpler check than fftw2
570 # Check for header <fftw3.h> AC_CHECK_HEADERS doesnt work, since we must
571 # use mpicc to get includes - cpp isnt always the same compiler.
572 AC_MSG_CHECKING([for fftw3.h])
573 AC_TRY_COMPILE([#include<fftw3.h>],,[
574 # ok, look for library file too
575 AC_MSG_RESULT(yes)
576 if test "$enable_float" = "yes"; then
577   AC_CHECK_LIB([fftw3f],main,,AC_MSG_ERROR([Cannot find fftw3f library]))
578   PKG_FFTW="fftw3f"
579 else
580   AC_CHECK_LIB([fftw3],main,,AC_MSG_ERROR([Cannot find fftw3 library]))
581   PKG_FFTW="fftw3"
583   AC_DEFINE(GMX_FFT_FFTW3,,[Use FFTW3 FFT library])
585 # not ok, echo a warning
586 AC_MSG_ERROR(
587 [Cannot find the default external FFT library (fftw3).
588 Other alternatives are 'fftw2', or 'mkl' for Intel MKL.
589 You are STRONGLY recommended to use one of these - fftw is free.
591 Use CPPFLAGS and LDFLAGS if the library is installed in a 
592 non-standard location. (see FAQ at http://www.gromacs.org)
593                                                           
594 If you dont care about performance you can also specify 'fftpack'
595 to use a slower set of FFTs built into Gromacs. 
596 (Just install FFTW3 unless you really know what you are doing).
599   AC_SUBST(PKG_FFTW)
600   ;;
602 mkl*)
603 ###########
604 # Intel Math Kernel Library version 6 and later.
605 ##########
606 AC_MSG_CHECKING([for mkl_dfti.h])
607 AC_TRY_COMPILE([#include<mkl_dfti.h>],,AC_MSG_RESULT(yes),AC_MSG_ERROR([Cannot find mkl_dfti.h header from Intel Math Kernel Library>=6.0.]\
609 ## Check for library
610 #  AC_CHECK_LIB([guide],main,,AC_MSG_ERROR([Cannot find libguide (Intel MKL)]))
611 #  AC_CHECK_LIB([mkl],DftiComputeForward,,
612 #    AC_MSG_ERROR([Cannot find Intel Math Kernel Library >= 6.0]))
613   # first check for older MKLs
614   AC_CHECK_LIB([mkl],DftiComputeForward,,[have_mkl="no"])
615   if test "$have_mkl" == "no"; then
616     # we assume it's a new MKL
617     LIBS="$LIBS -liomp5 -lmkl_sequential -lmkl_core"
618     LMKL=" -liomp5 -lmkl_sequential -lmkl_core"
619     AC_CHECK_LIB([mkl_intel_lp64],DftiComputeForward,,[have_mkl10_64="no"])
620     if test "$have_mkl10_64" == "no"; then
621       AC_CHECK_LIB([mkl_intel],DftiComputeForward,,[have_mkl10_32="no"])
622       if test "$have_mkl10_32" == "no"; then
623         AC_MSG_ERROR([Cannot find Intel Math Kernel Library >= 6.0])
624       fi
625     fi
626   fi
627   AC_DEFINE(GMX_FFT_MKL,,[Use Intel MKL FFT library])
628   AC_SUBST(LMKL)
629   ;;
631 fftpack | no)
632   AC_MSG_WARN([The built-in FFTPACK routines are slow.
633 Are you sure you don't want to use FFTW? It is free and much faster...])
634   AC_DEFINE(GMX_FFT_FFTPACK,,[Use Built-in FFTPACK FFT library])
635   ;;
637   AC_MSG_ERROR([Unknown FFT library])
638   ;;
639 esac
642 if test "$enable_fftw_measure" != "yes"; then
643    AC_DEFINE(GMX_DISABLE_FFTW_MEASURE,,[Do not optimize FFTW setups (not needed with SSE FFT kernels)])
646 ######
647 # check for xtc headers
648 case "${host_os}" in
649 cygwin* | mingw*)   # use our own xdr stuff for cygwin/mingw
650   ;;
652   AC_CHECK_HEADERS([rpc/rpc.h])
653   AC_CHECK_HEADERS([rpc/xdr.h],,,
654 [#if HAVE_RPC_RPC_H
655 # include <rpc/rpc.h>
656 #endif
658   AC_CHECK_LIB(nsl,xdr_float)
659   AC_TRY_LINK([
660 #if HAVE_RPC_RPC_H
661 #include<rpc/rpc.h> 
662 #else
663 #error NO rpc.h header
664 #endif
665 #if HAVE_RPC_XDR_H
666 #include<rpc/xdr.h>
667 #else
668 #error No xdr.h header
669 #endif
670 ],[ XDR *xd; float f; xdr_float(xd,&f);],[have_xdr="yes"])
672   if test "$have_xdr" != "yes"; then
673     AC_DEFINE(GMX_INTERNAL_XDR,,[Use our own instead of system XDR libraries])  
674     AC_MSG_WARN([Couldn't find XDR headers and/or libraries - using our own])
675   fi
676   ;;
677 esac
680 ########################################################################
681 # Checks for header files and types
682 ########################################################################
684 AC_CHECK_HEADERS([limits.h unistd.h],,AC_MSG_ERROR([Include headers not found]))
685 AC_CHECK_HEADERS(unistd.h)
686 AC_CHECK_HEADERS(sys/types.h)
687 AC_CHECK_HEADERS(sys/time.h)
688 AC_CHECK_HEADERS(dirent.h)
689 AC_CHECK_HEADERS(regex.h,,[AC_MSG_WARN(
690 [No regex.h found.
691 Regular expression matching in selections will be disabled.
692 Selections still work, but the default groups can differ from
693 those obtained with regular expressions enabled.
694 Consider installing the regular expression library from GNU libc.])])
696 #####
697 # Checks for additional and/or optional functions or libraries.
698 #AC_FUNC_MALLOC
699 AC_FUNC_MEMCMP
700 AC_TYPE_SIGNAL
701 AC_TYPE_OFF_T
702 AC_FUNC_VPRINTF
703 AM_WITH_DMALLOC
704 AC_CHECK_FUNCS(strcasecmp)
705 AC_CHECK_FUNCS(strdup)
706 AC_CHECK_FUNCS(gettimeofday)
707 AC_CHECK_FUNCS(isnan)
708 AC_CHECK_FUNCS(_isnan)
709 AC_CHECK_FUNCS(isfinite)
710 AC_CHECK_FUNCS(_isfinite)
712 # check for bool (must come late, since CFLAGS/includes might affect it)
713 AC_CHECK_TYPES([bool])
719 #############
720 # Check integer sizes, set to zero if e.g. long long is not supported.
721 # (Note: this must come *after* type checks for the corresponding types!)
722 #############
723 AC_CHECK_SIZEOF(int)
724 AC_CHECK_SIZEOF(long int)
725 AC_CHECK_SIZEOF(long long int)
726 AC_CHECK_SIZEOF(off_t)
727 AC_CHECK_SIZEOF(void*)
731 # Apple OS X is a bit strange/braindead in that it always reports itself as i386, both for
732 # 32 and 64 bit builds (even with the 64 bit kernel!).
734 # To get the SSE support right we check for the size of void * that we detected above...
735 case "${host_vendor}-${host_os}" in
736   apple-darwin*)
737   if test $ac_cv_sizeof_voidp = 8; then
738      enable_ia32_sse=no;
739   else
740      enable_x86_64_sse=no;
741   fi
742   ;;
743   *) ;;
744 esac
749 #####
750 # Look for X
751 AC_PATH_XTRA
752 if test "$no_x" != "yes"; then
753   LIBS="$X_LIBS $LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
754   INCLUDES="$INCLUDES $X_CFLAGS"
755   AM_CONDITIONAL(USE_X11,true)
756 else
757   AM_CONDITIONAL(USE_X11,false)
760 # GNU Scientific Library or not
761 AC_ARG_WITH(gsl,
762  [AC_HELP_STRING([--with-gsl],[Link to the GNU scientific library, ]
763                  [enables extra functions in analysis])],,with_gsl=no)
765 ######
766 if test "$with_gsl" = "yes"; then
767   ac_save_LDFLAGS="$LDFLAGS"
768   AC_CHECK_HEADERS([gsl/gsl_version.h],[
769 # header found, check for libraries 
770   AC_CHECK_LIB(gslcblas,main,[
771   LDFLAGS="$ac_save_LDFLAGS -lgslcblas"
772 # gslcblas library found, check main lib
773   AC_CHECK_LIB(gsl,main)])])
774   PKG_GSL="gsl"
775   AC_SUBST(PKG_GSL)
779 ######
780 # Use OpenMM libraries
781 ######
782 AC_ARG_WITH(openmm,
783  [  --with-openmm                 Use the OpenMM libraries to run on GPUs],,with_openmm=no)
785 if test "$with_openmm" = "yes"; then
787   AC_PROG_CXX
788   CPPFLAGS="$CPPFLAGS -I$OPENMM_INSTALL_DIR/include"
789   INCLUDES="$INCLUDES -I$OPENMM_INSTALL_DIR/include"
790   LDFLAGS="$LDFLAGS -L$OPENMM_INSTALL_DIR/lib -lOpenMM"
791   #AC_CHECK_HEADERS([OpenMM.h],AC_CHECK_LIB(OpenMM,main))
792   #AC_CHECK_HEADERS([OpenMM.h],,AC_MSG_ERROR([Cannot find OpenMM.h file. Please set OPENMM_INSTALL_DIR.]))
793   AC_DEFINE([USE_OPENMM],,[Use OpenMM libraries to run on GPUs])
795 #  AS_CASE([${host_cpu}-${host_os}-${host_vendor}],
796 #    [i?86-linux*], [OPENMM_HOST=linux32],
797 #    [x86_64-linux*], [OPENMM_HOST=linux64],
798 #    [amd64-linux*], [OPENMM_HOST=linux64],
799 #    [i?86-darwin*-apple], [OPENMM_HOST=apple],
800 #    [OPENMM_HOST=""])
801 #  AC_SUBST([OPENMM_HOST])
804 AM_CONDITIONAL([USE_OPENMM],[test "$with_openmm" = "yes"])
807 AC_ARG_WITH(xml,
808  [AC_HELP_STRING([--without-xml],[do not link to the xml2 library,] 
809                  [disallows the use of certain file formats])],,with_xml=yes)
811 #########
812 # Check for libxml2, but it is optional, so dont stop
813 # if it isnt there.
814 if test "$with_xml" = "yes"; then
815    ac_save_CPPFLAGS="$CPPFLAGS"
816    CPPFLAGS="$ac_save_CPPFLAGS -I/usr/include/libxml2"
817    AC_CHECK_HEADERS([libxml/parser.h],AC_CHECK_LIB(xml2,main))
818    if test "$ac_cv_lib_xml2_main" = "yes"; then
819      INCLUDES="$INCLUDES -I/usr/include/libxml2"
820    fi
821    PKG_XML2="libxml-2.0"
822    AC_SUBST(PKG_XML2)
823 # restore CPPFLAGS
824    CPPFLAGS="$ac_save_CPPFLAGS"
827 #### 
828 # And collect the f77 libs to the linker - on Solaris, f77 stuff must go first,
829 # and we need -L/usr/ucblib to find libucb... (stupid OS)
830 # On e.g. ibm the mass libraries must come before -lm... 
831 case "${host_cpu}-${host_os}" in
832   *-solaris*) 
833     LIBS="$FLIBS $LIBS" 
834     LDFLAGS="$LDFLAGS -L/usr/ucblib"
835     ;;
836   *) LIBS="$LIBS $FLIBS" ;;
837 esac
840 # add the Accelerate framework if enabled above.
841 # LDFLAGS might have been set in the CPU optimization, so we cant assign it directly before that.
842 LDFLAGS="$LDFLAGS $extra_LDFLAGS"
849 #####
850 # Checks for typedefs, structures, and compiler characteristics.
851 AC_C_CONST
852 AC_TYPE_SIZE_T
853 AC_STRUCT_TM
854 AC_C_INLINE
856 # AC_TYPE_UID_T is broken on Mac OS X, so use generic tests instead
857 AC_CHECK_TYPES([uid_t],[],[AC_DEFINE(uid_t, int, [Define to `int' if <sys/types.h> doesn't define.])],[[#include <sys/types.h>]])
858 AC_CHECK_TYPES([gid_t],[],[AC_DEFINE(gid_t, int, [Define to `int' if <sys/types.h> doesn't define.])],[[#include <sys/types.h>]])
860 AC_CHECK_TYPES([sig_atomic_t],[],[AC_DEFINE(sig_atomic_t, int, [Define to `int' (and hope it's atomic) if <signal.h> doesn't define it.])],[[#include <signal.h>]])
862     
865 # Test stuff for ia32 and x86_64 assembly, and add objects/libraries.
866 if test "$enable_ia32_sse" = "yes" -o "$enable_x86_64_sse" = "yes"; then
867   AC_MSG_CHECKING([whether your compiler can handle assembly files (*.s)])
869 # Use 64-bit registers (rsp/rbp) on x86_64
871 if test "$enable_x86_64_sse" = "yes"; then
872 cat > conftestasm.s << EOF
873 checkasm:
874         mov     %rsp, %rbp
875         ret
877 else
878 cat > conftestasm.s << EOF
879 checkasm:
880         movl    %esp, %ebp
881         ret
884   if AC_TRY_COMMAND($CC $CFLAGS -c conftestasm.s); then
885     if test -f conftestasm.o; then
886       AC_MSG_RESULT([yes])
887     else
888       AC_MSG_RESULT([no])
889       AC_MSG_ERROR([Upgrade your compiler (or disable assembly loops).])
890     fi
891   else
892     AC_MSG_RESULT([no])
893     AC_MSG_ERROR([Upgrade your compiler (or disable assembly loops).])
894   fi
896 # ok, cc understands assembly.
898 # If we are using double precision we need SSE2
899   if test "$enable_float" = "no"; then
900 #   test SSE2 on ia32:
901     if test "$enable_ia32_sse" = "yes"; then
902       AC_MSG_CHECKING([whether as fully supports ia32 SSE2])
903 cat > conftest.s << EOF
904 checkasm:
905         emms
906         movapd 32(%esi,%edx,8),%xmm4
907         emms
908         ret
910       if AC_TRY_COMMAND($CC $CFLAGS -c conftest.s); then
911         AC_MSG_RESULT([yes])
912       else
913         AC_MSG_RESULT([no])
914         AC_MSG_ERROR([Upgrade to a more recent binutils (or disable assembly loops).])
915       fi
916       AC_DEFINE([GMX_IA32_SSE2],,[Double-precision SSE2 instructions on ia32])
917     fi
918 #   test SSE2 on X86_64:
919     if test "$enable_x86_64_sse" = "yes"; then
920       AC_MSG_CHECKING([whether as fully supports X86_64 SSE2])
921 cat > conftest.s << EOF
922 checkasm:
923         emms
924         movapd 32(%rsi,%rdx,8),%xmm4
925         emms
926         ret
928       if AC_TRY_COMMAND($CC $CFLAGS -c conftest.s); then
929         AC_MSG_RESULT([yes])
930       else
931         AC_MSG_RESULT([no])
932         AC_MSG_ERROR([Upgrade to a more recent binutils (or disable assembly loops).])
933       fi
934       AC_DEFINE([GMX_X86_64_SSE2],,[Double-precision SSE2 instructions on X86_64])
935     fi
936   else
937 # end of double precision testing, now do single.
938     if test "$enable_ia32_sse" = "yes"; then
939       AC_MSG_CHECKING([whether as fully supports ia32 SSE])
940 cat > conftest.s << EOF
941 checkasm:
942         emms
943         movaps 32(%esi,%edx,8),%xmm4
944         emms
945         ret
947       if AC_TRY_COMMAND($CC $CFLAGS -c conftest.s); then
948         AC_MSG_RESULT([yes])
949       else
950         AC_MSG_RESULT([no])
951         AC_MSG_ERROR([Upgrade to a more recent binutils (or disable assembly loops).])
952       fi
953       AC_DEFINE([GMX_IA32_SSE],,[Single-precision SSE instructions on ia32])
954     fi
955 #   test SSE2 on X86_64:
956     if test "$enable_x86_64_sse" = "yes"; then
957       AC_MSG_CHECKING([whether as fully supports X86_64 SSE instructions])
958 cat > conftest.s << EOF
959 checkasm:
960         emms
961         movaps 32(%rsi,%rdx,8),%xmm4
962         emms
963         ret
965       if AC_TRY_COMMAND($CC $CFLAGS -c conftest.s); then
966         AC_MSG_RESULT([yes])
967       else
968         AC_MSG_RESULT([no])
969         AC_MSG_ERROR([Upgrade to a more recent binutils (or disable assembly loops).])
970       fi
971       AC_DEFINE([GMX_X86_64_SSE],,[Single-precision SSE instructions on X86_64])
972     fi
973   fi
977 # Test stuff for ia64 assembly
979 # Nothing to test right now.
982   
985 # Test altivec support.
987 if test "$enable_ppc_altivec" = "yes"; then
988   if test "$enable_float" = "no"; then
989     AC_MSG_WARN([PowerPC Altivec loops can only be used in single precision - disabling])
990     enable_ppc_altivec=no
991   else 
992     # On FSF (vanilla) GCC we must include altivec.h, and on apple we 
993     # should NOT do it after using -faltivec. Go figure...
994     case "${host_os}" in
995     darwin*)                            
996         # do nothing on Apple systems
997        ;;
998     *)
999         AC_CHECK_HEADERS([altivec.h])
1000        ;;
1001     esac
1003     AC_MSG_CHECKING([whether the compiler supports altivec extensions])
1004     AC_TRY_COMPILE([],[
1005 #ifndef __VEC__
1006 choke_me
1007 #endif
1009     AC_MSG_RESULT([yes])
1010     AC_DEFINE([GMX_PPC_ALTIVEC],,[Use PowerPC Altivec inner loops])],[
1011       AC_MSG_RESULT([no])
1012       AC_MSG_WARN([no altivec support found - On recent PowerPC CPUs]
1013 [you can get a huge performance gain by using an altivec-enabled compiler.]
1014 [On OS X, you need GCC>=3.3, or the IBM compilers. If you are using standard]
1015 [GCC, you need at least version 4.0])
1016       enable_ppc_altivec=no])
1017   fi  
1020 if test "$enable_ia64_asm" = "yes"; then
1021   AC_DEFINE(GMX_IA64_ASM,,[Use ia64 assembly tuned for Itanium2])
1022   AC_DEFINE(DISABLE_WATER_NLIST,,[Turn off all water neighborlist optimization])
1023   AC_DEFINE(DISABLE_WATERWATER_NLIST,,[Turn off water-water neighborlist optimization only])
1026 if test "$enable_bluegene" = "yes"; then
1027   AC_DEFINE(GMX_BLUEGENE,,[Use assembly intrinsics kernels for BlueGene])
1031 # Add the appropriate assembly loops 
1033 AM_CONDITIONAL([GMX_IA32_SSE],[test "$enable_ia32_sse" = "yes" -a "$enable_float" = "yes"])
1034 AM_CONDITIONAL([GMX_IA32_SSE2],[test "$enable_ia32_sse" = "yes" -a "$enable_float" = "no"])
1035 AM_CONDITIONAL([GMX_X86_64_SSE],[test "$enable_x86_64_sse" = "yes" -a "$enable_float" = "yes"])
1036 AM_CONDITIONAL([GMX_X86_64_SSE2],[test "$enable_x86_64_sse" = "yes" -a "$enable_float" = "no"])
1037 AM_CONDITIONAL([GMX_FORTRAN],[test "$enable_fortran" = "yes"])
1038 AM_CONDITIONAL([GMX_PPC_ALTIVEC],[test "$enable_ppc_altivec" = "yes" -a "$enable_float" = "yes"])
1039 AM_CONDITIONAL([GMX_IA64_ASM],[test "$enable_ia64_asm" = "yes"])
1040 AM_CONDITIONAL([GMX_BLUEGENE],[test "$enable_bluegene" = "yes"])
1041 AM_CONDITIONAL([GMX_POWER6],[test "$enable_power6" = "yes"])
1044 #############
1045 # Check integer endian
1046 #############
1047 AC_C_BIGENDIAN([AC_DEFINE([GMX_INTEGER_BIG_ENDIAN],,[Integer byte order is big endian.])],[],[
1048 AC_MSG_ERROR([Cannot determine endian in compiled output])])
1049 # Little endian implied if GMX_INTEGER_BIG_ENDIAN not defined in source.
1053 case "${host_cpu}" in
1054    i?86) 
1055          # Check if inline assembly works
1056          AC_MSG_CHECKING(if the compiler supports gcc inline assembly)
1057       AC_TRY_LINK([],[float f;int i; asm("fld %1\nfistpl %0\n" : "=m" (*&i) : "f" (f));],[AC_MSG_RESULT(yes)
1058 AC_DEFINE(GMX_X86_GCC_INLINE_ASM,,[Enable x86 gcc inline assembly])],[AC_MSG_RESULT(no)])
1059          # Check for MSVC inline assembly
1060      AC_MSG_CHECKING(if the compiler supports MSVC inline assembly)
1061       AC_TRY_LINK([],[float f;int i; _asm { fld f } ; _asm { fistpl i };],[AC_MSG_RESULT(yes)
1062 AC_DEFINE(GMX_X86_MSVC_INLINE_ASM,,[Enable x86 MSVC inline assembly])],[AC_MSG_RESULT(no)])
1063         ;;              
1064    *) ;;
1065 esac
1068 ############
1069 # Check dlopen
1070 ###########
1071 if test "$with_dlopen" = "yes"; then
1072       AC_MSG_CHECKING(if dlopen supported)
1073       CFLAGS_RET=$CFLAGS
1074       #LDFLAGS="$lt_cv_dlopen_libs $LDFLAGS" #can't make the macro, which is getting lt_cv_dlopen_libs, to work
1075       LDFLAGS_RET=$LDFLAGS
1076       if test "$enable_all_static" = "yes"; then  #make sure we test also whether it works static
1077          LDFLAGS="$LDFLAGS -static"
1078       fi
1079       CFLAGS="-I$srcdir/include -DGMX_DLOPEN $CFLAGS"
1080       AC_TRY_LINK([#include "$srcdir/src/gmxlib/vmddlopen.c"],,[AC_MSG_RESULT([yes])\
1081         AC_DEFINE(GMX_DLOPEN,,[Compile with dlopen])],AC_MSG_RESULT([no]))
1082       CFLAGS=$CFLAGS_RET
1083       LDFLAGS=$LDFLAGS_RET
1089 ########################################################################
1090 # Final output stage
1091 ########################################################################
1092 AS="$CC"
1093 AC_SUBST(ASFLAGS)
1094 AC_SUBST(AS)
1095 AC_SUBST(INCLUDES)          # should be automatic, but doesnt seem to be?
1097 # To tell libraries apart, we use four versions of the name. For instance, libgmx:
1098 # libgmx                single prec, no mpi.
1099 # libgmx_d              double prec, no mpi.
1100 # libgmx_mpi            single prec, mpi.
1101 # libgmx_mpi_d          double prec, mpi.
1102 # However, the non-suffixed names are linked to the _mpi and/or _d suffixed
1103 # ones upon installation if that is the only version available.
1105 if test "$enable_mpi" = "yes"; then
1106   LIBSUFFIX="_mpi"
1108 if test "$enable_float" = "no"; then
1109   LIBSUFFIX="${LIBSUFFIX}_d"
1111 AC_SUBST(LIBSUFFIX) 
1113 # Unless the user has explicitly requested a prefix/suffix/transform, we
1114 # use _d on double precision files. Don't add anything for mpi, but at the
1115 # end we tell the user it is possible and smart to do in some cases!
1116 if test "$program_transform_name" = "s,x,x,"; then
1117   name_transform_provided=no;
1118   if test "$enable_float" = "no"; then
1119     program_transform_name="s,\$\$,_d,"
1120   fi
1121 else
1122   name_transform_provided=yes;
1126 # Use a variable for RPM - this way it can be 
1127 # overridden with make RPM=rpm3 rpm
1128 RPM=rpm
1129 AC_SUBST(RPM)
1131 if test "$enable_fahcore" = "yes"; then  
1132   CPPFLAGS="$CPPFLAGS -I\$(top_srcdir)/../corewrap -include swindirect.h -DFULLINDIRECT -DUSE_FAH_XDR"  
1133   if test "$enable_mpi" = "yes"; then 
1134     CFLAGS="$CFLAGS -DMPI"  
1135   fi
1137 AM_CONDITIONAL([GMX_FAHCORE],[test "$enable_fahcore" = "yes"])
1140 if test "$enable_all_static" = "yes"; then
1141   LDFLAGS="$LDFLAGS -all-static"
1144 # we have asm source, so this is necessary for automake 1.6
1145 CCAS=$CC
1146 CCASFLAGS=$CFLAGS
1148 AC_SUBST(CCAS)
1149 AC_SUBST(CCASFLAGS)
1151 AC_CONFIG_FILES([ Makefile ])
1152 AC_CONFIG_FILES([ src/Makefile ])
1153 AC_CONFIG_FILES([ src/gmxlib/Makefile ])
1154 AC_CONFIG_FILES([ src/gmxlib/libgmx${LIBSUFFIX}.pc:src/gmxlib/libgmx.pc.in ])
1155 AC_CONFIG_FILES([ src/gmxlib/gmx_blas/Makefile ])
1156 AC_CONFIG_FILES([ src/gmxlib/gmx_lapack/Makefile ])
1157 AC_CONFIG_FILES([ src/gmxlib/selection/Makefile ])
1158 AC_CONFIG_FILES([ src/gmxlib/statistics/Makefile ])
1159 AC_CONFIG_FILES([ src/gmxlib/trajana/Makefile ])
1160 AC_CONFIG_FILES([ src/gmxlib/thread_mpi/Makefile ])
1161 AC_CONFIG_FILES([ src/gmxlib/nonbonded/Makefile ])
1162 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_c/Makefile ])
1163 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_ia32_sse/Makefile ])
1164 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_ia32_sse2/Makefile ])
1165 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_x86_64_sse/Makefile ])
1166 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_x86_64_sse2/Makefile ])
1167 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_ppc_altivec/Makefile ])
1168 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_ia64_single/Makefile ])
1169 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_ia64_double/Makefile ])
1170 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_bluegene/Makefile ])
1171 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_power6/Makefile ])
1172 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_f77_single/Makefile ])
1173 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_f77_double/Makefile ])
1174 AC_CONFIG_FILES([ include/Makefile ])
1175 AC_CONFIG_FILES([ include/types/Makefile ])
1176 AC_CONFIG_FILES([ include/thread_mpi/Makefile ])
1177 AC_CONFIG_FILES([ include/thread_mpi/atomic/Makefile ])
1178 AC_CONFIG_FILES([ src/mdlib/Makefile ])
1179 AC_CONFIG_FILES([ src/mdlib/libmd${LIBSUFFIX}.pc:src/mdlib/libmd.pc.in ])
1180 AC_CONFIG_FILES([ src/kernel/Makefile ])
1181 AC_CONFIG_FILES([ src/kernel/libgmxpreprocess${LIBSUFFIX}.pc:src/kernel/libgmxpreprocess.pc.in ])
1182 AC_CONFIG_FILES([ src/tools/Makefile ])
1183 AC_CONFIG_FILES([ src/tools/libgmxana${LIBSUFFIX}.pc:src/tools/libgmxana.pc.in ])
1184 AC_CONFIG_FILES([ src/ngmx/Makefile ])
1185 AC_CONFIG_FILES([ src/contrib/Makefile ])
1186 AC_CONFIG_FILES([ scripts/Makefile ])
1187 AC_CONFIG_FILES([ admin/Makefile ])
1188 AC_CONFIG_FILES([ share/Makefile ])
1189 AC_CONFIG_FILES([ share/tutor/Makefile ])
1190 AC_CONFIG_FILES([ share/tutor/gmxdemo/Makefile ])
1191 AC_CONFIG_FILES([ share/tutor/nmr1/Makefile ])
1192 AC_CONFIG_FILES([ share/tutor/nmr2/Makefile ])
1193 AC_CONFIG_FILES([ share/tutor/water/Makefile ])
1194 AC_CONFIG_FILES([ share/tutor/mixed/Makefile ])
1195 AC_CONFIG_FILES([ share/tutor/methanol/Makefile ])
1196 AC_CONFIG_FILES([ share/tutor/speptide/Makefile ])
1197 AC_CONFIG_FILES([ share/template/Makefile ])
1198 AC_CONFIG_FILES([ share/top/Makefile ])
1199 AC_CONFIG_FILES([ share/top/gmx.ff/Makefile ])
1200 AC_CONFIG_FILES([ share/top/gmx2.ff/Makefile ])
1201 AC_CONFIG_FILES([ share/top/encadv.ff/Makefile ])
1202 AC_CONFIG_FILES([ share/top/encads.ff/Makefile ])
1203 AC_CONFIG_FILES([ share/top/oplsaa.ff/Makefile ])
1204 AC_CONFIG_FILES([ share/top/gromos43a1.ff/Makefile ])
1205 AC_CONFIG_FILES([ share/top/gromos43a2.ff/Makefile ])
1206 AC_CONFIG_FILES([ share/top/gromos45a3.ff/Makefile ])
1207 AC_CONFIG_FILES([ share/top/gromos53a5.ff/Makefile ])
1208 AC_CONFIG_FILES([ share/top/gromos53a6.ff/Makefile ])
1209 AC_CONFIG_FILES([ share/top/charmm27.ff/Makefile ])
1210 AC_CONFIG_FILES([ share/html/Makefile ])
1211 AC_CONFIG_FILES([ share/html/images/Makefile ])
1212 AC_CONFIG_FILES([ share/html/online/Makefile ])
1213 AC_CONFIG_FILES([ man/Makefile man/man1/Makefile man/man7/Makefile ])
1214 AC_CONFIG_FILES([ Doxyfile ])
1215 AC_OUTPUT
1223 #########################################################
1224 # Echo some important info, to avoid stupid mistakes
1227 if test "$enable_float" = "no" -a "$name_transform_provided" = "no"; then
1228   echo ""
1229   echo "* You are compiling a double precision version of Gromacs -"
1230   echo "  program names will be suffixed with _d to avoid overwriting single"
1231   echo "  precision files. You can override it with --program-suffix"
1234 if test "$name_transform_provided" = "no" -a "$enable_mpi" = "yes"; then
1235   echo ""
1236   echo "* Seems you are compiling with MPI support. You can install the MPI-"
1237   echo "  enabled programs with suffixed names to have both MPI and non-MPI"
1238   echo "  versions. This is useful e.g. on supercomputers where you usually"
1239   echo "  cannot run MPI-linked programs on the login node."
1240   echo "  Set a suffix with e.g. --program-suffix=_mpi (or _mpi_d for double)."
1241   echo "  You only need MPI for mdrun, so if you already have non-MPI stuff"
1242   echo "  installed you can issue make mdrun; make install-mdrun."
1245 if test "$enable_shared" = "no"; then
1246   echo ""
1247   echo "* On most platforms you can save 10X space with dynamic libraries, although"
1248   echo "  the binaries might be less portable. Why not try --enable-shared ?"
1249 fi  
1252 if test "$tmpi_atomics" = "no"; then
1253   echo ""
1254   echo "* This compiler+CPU combination doesn't have working atomic operations."
1255   echo "  Thread support will be unbearably slow: the default number of threads"
1256   echo "  is set to 1."
1257   echo "  Atomics should work on all but the most obscure CPU+compiler"
1258   echo "  combinations; if your system is not obscure (like, for example, x86"
1259   echo "  with gcc) please contact the developers."
1260   echo ""