Removed deprecated files.
[gromacs.git] / configure.ac
blobf6eef78564aed36c1cb2c26a1dfb1754ce4a7223
1 #######################################################################
2 # Process this file wth autoconf to produce a configure script.
3 #######################################################################
5 AC_PREREQ(2.50)
6 AC_INIT(GROMACS, 3.1.99_20020920, 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(gromacs, 3.1.99_20020920)
12 AC_PREFIX_DEFAULT(/usr/local/gromacs)
13 AM_CONFIG_HEADER(src/config.h)
14 dnl This is the version info according to the libtool versioning system.
15 dnl It does *not* correspond to the release number.
16 SHARED_VERSION_INFO="2:0:0"
17 AC_SUBST(SHARED_VERSION_INFO)
20 #######################################################################
21 # Simple options and makefile variables
22 #######################################################################
25 ### Single/Double
26 AC_ARG_ENABLE(float,
27  [  --disable-float               use double instead of single precision],, enable_float=yes)
28 if test "$enable_float" = "no"; then
29   AC_DEFINE(DOUBLE,,[Compile in double precision])
30   AM_CONDITIONAL(DOUBLE,true)
31 else
32   AM_CONDITIONAL(DOUBLE,false)
35 ### Fortran or not
36 AC_ARG_ENABLE(fortran,
37  [  --enable-fortran              use fortran (default on sgi,ibm,sun,axp)],, 
38 [case "${host_cpu}-${host_os}" in
39   sparc*-solaris* | alpha*-* | rs6000*-aix* | powerpc*-aix* | mips*-irix*) enable_fortran=yes ;;
40   *) enable_fortran=no ;;
41  esac])
42 if test "$enable_fortran" = "yes"; then
43   AC_DEFINE(USE_FORTRAN,,[Use Fortran for innerloops and some other core stuff])
44   GMXLIB_LIBOBJS="${GMXLIB_LIBOBJS} innerf.lo f77_wrappers.lo"
45   if test "$enable_float" = "yes"; then
46     MDLIB_LIBOBJS="${MDLIB_LIBOBJS} flincs.lo fsettle.lo fshake.lo"
47   else
48     MDLIB_LIBOBJS="${MDLIB_LIBOBJS} flincsd.lo fsettled.lo fshaked.lo"
49   fi
50 else
51   GMXLIB_LIBOBJS="${GMXLIB_LIBOBJS} innerc.lo"
52   MDLIB_LIBOBJS="${MDLIB_LIBOBJS} clincs.lo csettle.lo"
54 # always use CC for linking:
55 AC_SUBST(F77LINK,"\$(LINK)")
58 ### MPI or not
59 AC_ARG_ENABLE(mpi,
60  [  --enable-mpi                  compile for parallel runs using MPI],,enable_mpi=no)
63 ### MPI environment
64 AC_ARG_ENABLE(mpi-environment,
65  [  --enable-mpi-environment=VAR  only start parallel runs when VAR is set],,
66 [case "${host_cpu}" in
67   mips*-irix*) enable_mpi_environment="MPI_ENVIRONMENT" ;;
68   *) enable_mpi_environment=no ;;
69 esac])
70 if test "$enable_mpi_environment" != "no"; then
71   AC_DEFINE_UNQUOTED(CHECK_MPI_ENV,"$enable_mpi_environment",[If defined, only start MPI runs when this variable is set])
75 ### X86 assembly code
76 AC_ARG_ENABLE(x86_asm,     
77  [  --disable-x86-asm             don't build assembly loops on x86],,enable_x86_asm=yes)
78 case "${host_cpu}" in
79    i?86) ;;     
80    *) enable_x86_asm=no ;;
81 esac
83 ### Altivec on powerpc (motorola)
84 AC_ARG_ENABLE(ppc_altivec,
85  [  --disable-ppc-altivec         don't build Altivec loops on PowerPC],,enable_ppc_altivec=yes)
86 case "${host_cpu}-${host_vendor}" in
87    ppc*-ibm* | powerpc*-ibm*) enable_ppc_altivec=no ;;
88    ppc*-* | powerpc*-*) ;; 
89    *) enable_ppc_altivec=no ;;
90 esac
92 AC_ARG_ENABLE(axp_asm,
93  [  --enable-axp-asm              include vectorized sqrt routines for alpha],,enable_axp_asm=no)
96 ### Optimize for host cpu version
97 AC_ARG_ENABLE(cpu-optimization,     
98  [  --disable-cpu-optimization    no detection or tuning flags for cpu version],, enable_cpu_optimization=yes)
101 ### Vector machine inner loops
102 AC_ARG_ENABLE(vector,     
103  [  --enable-vector               create inner loops for a vector machine],, enable_vector=no)
104 if test "$enable_vector" = "yes"; then
105   AC_DEFINE(USE_VECTOR,,[Optimize for a vector architecture])
109 ### Simplewater hack for SGI - disabled unrolling is the same as simplewater=yes
110 AC_ARG_ENABLE(waterloop-unrolling,     
111  [  --disable-waterloop-unrolling expand the loops instead (hack for sgi)],, 
112 [case "${host_cpu}-${host_os}" in
113   mips*-irix*) enable_waterloop_unrolling=yes ;;
114   *) enable_waterloop_unrolling=no ;;
115 esac])
116 if test "$enable_waterloops_unrolling" = "no"; then
117   AC_DEFINE(SIMPLEWATER,,[Expand the water loops to three inner loops])
121 ### Turn off the special water-water loops on SGI...
122 AC_ARG_ENABLE(waterwater-loops,     
123  [  --disable-waterwater-loops    turn off double unrolled loops (hack for sgi)],,
124 [case "${host_cpu}-${host_os}" in
125   mips*-irix*) enable_waterwater_loops=no ;;
126   *) enable_waterwater_loops=yes ;;
127 esac])
128 if test "$enable_waterwater_loops" = "no"; then
129   AC_DEFINE(DISABLE_WATERWATER_LOOPS,,[Don't use special loops for water-water interactions])
133 ### Do software 1/sqrt(x)
134 AC_ARG_ENABLE(software-sqrt,     
135  [  --disable-software-sqrt       no software 1/sqrt (disabled on sgi,ibm,ia64)],,
136 [case "${host_cpu}-${host_os}" in
137   mips*-irix* | rs6000*-aix* | powerpc*-aix | ia64*-*) enable_software_sqrt=no ;;
138   *) enable_software_sqrt=yes ;;
139 esac])
140 if test "$enable_software_sqrt" = "yes"; then
141   AC_DEFINE(SOFTWARE_INVSQRT,,[Use the GROMACS software 1/sqrt(x)])
145 ### Vectorize 1/x
146 AC_ARG_ENABLE(vectorized-recip,     
147  [  --enable-vectorized-recip     vectorize LJ-only inner loops],, enable_vectorized_recip=no)
148 if test "$enable_vectorized_recip" = "yes"; then
149   AC_DEFINE(VECTORIZE_RECIP,,[Vectorize the reciprocal calculation])
150 else 
151   if test "$enable_vectorized_recip" != "no"; then
152     AC_MSG_ERROR([Vectorized reciprocal is only meaningful for normal LJ-only loops])
153   fi
156 ### Vectorize 1/sqrt(x)
157 AC_ARG_ENABLE(vectorized-sqrt,     
158  [  --enable-vectorized-sqrt=A,B  vectorize selected inner loops (default none)
159                                 choices: normal,solvent,water,water-water],, enable_vectorized_sqrt=not_selected)
160 # processing of vectorized_sqrt choices is done just before the final output stage!
163 # The four options below used to improve code scheduling, but the newest CPUs can usually rearrange
164 # instructions dynamically at runtime, so they might not make much difference now:
166 ### Force prefetching
167 AC_ARG_ENABLE(prefetch,     
168  [  --enable-prefetch=A,B         prefetch forces in selected innerloops],, enable_prefetch=no)
169 # processing of prefetch choices is done just before the final output stage!
174 AC_ARG_ENABLE(all-static,
175  [  --enable-all-static           make completely static binaries],enable_all_static=yes, enable_all_static=no)
176 # Dont add the -all-static flag until after the compiler test.
178 ### Compile without FFTW - disabling it means you can't use PME or PPPM!
179 ### N.B.: This is only intended as a last resort, or for tests - don't use it!
180 AC_ARG_WITH(fftw,
181  [  --without-fftw          if you turn this off you cannot use PME/PPPM],, with_fftw=yes)
182 if test "$with_fftw" = "no"; then
183   AC_DEFINE(WITHOUT_FFTW,,[Disable all FFTW (and thus PME/PPPM) support])
189 ############################################################
190 # Checks for programs
191 ############################################################
193 # normally we use the default compiler, but on alpha/linux we try the compaq ones first
194 case "${host_cpu}-${host_os}" in
195   alpha*-linux*)
196     cc_names="ccc cc gcc"
197     f77_names="fort f77 g77"
198     ;;
199   *) 
200     cc_names="cc xlc gcc"
201     f77_names="f77 xlf xlf77 cf77 fl32 g77 fort77 f90 xlf90 pgf77 cf77 fort fort77 pgf90"
202     ;;
203 esac
204 # the (non-mpi) c compiler, which is also used for programs executed during build stage
205 AC_PROG_CC( $cc_names )
206 # Check for environment variable CC_FOR_BUILD before overwriting it
207 if test -z "$CC_FOR_BUILD"; then
208   CC_FOR_BUILD=$CC
210 AC_SUBST(CC_FOR_BUILD) 
212 if test "$enable_fortran" = "yes"; then
213   AC_PROG_F77( $f77_names )
214   if test -z "$F77"; then
215     AC_MSG_ERROR([No fortran compiler found])
216   fi
219 # This is a libtool hack. We never use c++, but libtool supports it and
220 # thus there are macros that require it. For some reason, these macros are
221 # always expanded by the libtool scripts, unless the are already present 
222 # in the file. Thus, we include them here but never run them...
223 if test 1 = 0; then
224   AC_PROG_CXX
225   AC_PROG_CXXCPP
228 # if we are using mpi, also get an MPICC. We cannot set that in the PROG_CC macro
229 # above, since autoconf checks that the created file can be executed. This would
230 # fail on platforms where MPI executables can only be run through a batchqueue.
232 if test "$enable_mpi" = "yes"; then
233   AC_CHECK_PROGS(MPICC, mpxlc mpicc mpcc hcc, $CC)
234 # now change the normal cc to the MPI one - see the comment above.
235   CC=$MPICC
236   AC_MSG_CHECKING([whether the MPI cc command works]) # be paranoid
237   AC_TRY_LINK([#include <mpi.h>],[int argc; char **argv; MPI_Init(&argc,&argv);],
238     AC_MSG_RESULT([yes]),AC_MSG_ERROR([Cannot compile and link MPI code with $CC]))
239   AC_DEFINE(USE_MPI,,[Make a parallel version of GROMACS using MPI])
242 if test "$enable_fortran" = "yes"; then
243   AC_F77_LIBRARY_LDFLAGS
244   AC_F77_WRAPPERS
247 AC_PROG_CPP
249 if test "$enable_cpu_optimization" = "yes"; then
250   ACX_DETECT_GMXCPU
251 else
252   gmxcpu=""
254 ACX_COMPILER_MAXOPT
256 # Check x86 asm prerequisites and the capabilities of as
257 if test "$enable_x86_asm" = "yes"; then
258   AC_MSG_CHECKING([whether your compiler can handle assembly files (*.s)])
259 cat > conftestasm.s << EOF
260 checkasm:
261         movl    %esp, %ebp
262         ret
264   if AC_TRY_COMMAND($CC -c conftestasm.s); then
265     if test -f conftestasm.o; then
266       AC_MSG_RESULT([yes])
267     else
268       AC_MSG_RESULT([no])
269       AC_MSG_ERROR([Upgrade your compiler (or disable assembly loops).])
270     fi
271   else
272     AC_MSG_RESULT([no])
273     AC_MSG_ERROR([Upgrade your compiler (or disable assembly loops).])
274   fi
276 # ok, gcc understands assembly, but can it handle SSE/3DNow/SSE2 instructions?
278   if test "$enable_float" = "no"; then
279     AC_MSG_CHECKING([whether as fully supports intel syntax SSE2])
280 cat > conftest.s << EOF
281 .intel_syntax noprefix 
282 checkasm:
283         emms
284         movupd xmm0,[[checkasm]]
285         emms
286         ret
288     if AC_TRY_COMMAND($CC -c conftest.s); then
289       AC_MSG_RESULT([yes])
290     else
291       AC_MSG_RESULT([no]) 
292       AC_MSG_ERROR([Upgrade to a more recent binutils (or disable assembly loops).])
293     fi
294     GMXLIB_LIBOBJS="${GMXLIB_LIBOBJS} x86_cpuid.lo x86_sse2.lo"
295     AC_DEFINE([USE_X86_SSE2],,[Use X86 SSE2 multimedia assembly code])
296   else 
297     AC_MSG_CHECKING([whether as fully supports intel syntax SSE & 3DNow])
298 cat > conftest.s << EOF
299 .intel_syntax noprefix 
300 checkasm:
301         emms
302         pswapd mm0,mm0
303         movups xmm0,[[checkasm]]
304         emms
305         ret
307     if AC_TRY_COMMAND($CC -c conftest.s); then
308       AC_MSG_RESULT([yes])
309     else
310       AC_MSG_RESULT([no]) 
311       AC_MSG_ERROR([Upgrade to a more recent binutils (or disable assembly loops).])
312     fi
313     GMXLIB_LIBOBJS="${GMXLIB_LIBOBJS} x86_cpuid.lo x86_sse.lo x86_3dnow.lo"
314     AC_DEFINE([USE_X86_SSE_AND_3DNOW],,[Use X86 SSE/3DNow multimedia assembly code])
315   fi
318 if test "$enable_ppc_altivec" = "yes"; then
319   if test "$enable_float" = "no"; then
320     AC_MSG_WARN([PowerPC Altivec loops can only be used in single precision - disabling])
321     enable_ppc_altivec=no
322   else 
323     AC_MSG_CHECKING([whether the compiler supports altivec extensions])
324     AC_TRY_COMPILE([],[
325 #ifndef __VEC__
326 choke_me
327 #endif
329     AC_MSG_RESULT([yes])
330     GMXLIB_LIBOBJS="${GMXLIB_LIBOBJS} inner_altivec.lo"
331     AC_DEFINE([USE_PPC_ALTIVEC],,[Use PowerPC Altivec inner loops])],[
332       AC_MSG_RESULT([no])
333       AC_MSG_WARN([no altivec support found - On G4 and later Motorola PowerPC]
334 [CPUs you can get a HUGE performance gain by using an altivec-enabled compiler.]
335 [Download the latest devtools from Apple, or gcc-3.1 from ftp.gnu.org])
336       enable_ppc_altivec=no])
337   fi  
340 if test "$enable_axp_asm" = "yes"; then
341   case "${host_cpu}" in
342     alpha*) 
343       AC_DEFINE([USE_AXP_ASM],,[Use Alpha assembly for vectorized 1/sqrt])
344       cat > conftest.s << EOF
345 #ifdef __ELF__
346 .section .rodata
347 #else                   
348          .rdata
349 #endif  
351       if AC_TRY_COMMAND($CC -c conftest.s); then
352         AM_CONDITIONAL(AXP_ASM_CAPITAL_S,false)
353       else
354         AM_CONDITIONAL(AXP_ASM_CAPITAL_S,true)
355       fi
356       GMXLIB_LIBOBJS="${GMXLIB_LIBOBJS} axp_asm.lo"
357        ;;
358     *) ;;
359   esac
360 else
361   AM_CONDITIONAL(AXP_ASM_CAPITAL_S,false)
364 AC_PATH_PROG(IDENT,ident,no)
365 if test "$IDENT" != "no"; then
366   # seems as if we have the ident program, but does the
367   # compiler support it?
368   AC_MSG_CHECKING([whether the compiler supports ident])        
369   AC_TRY_CPP([#ident  "@(#) file.h 1.1 12/16/92"],[
370     AC_MSG_RESULT([yes]) 
371     AC_DEFINE(HAVE_IDENT,,[Does this machine have the ident command])],
372     AC_MSG_RESULT([no]))
375 # MPI builds on aix break with shared libs.
376 AC_DISABLE_SHARED
377 AC_PROG_LIBTOOL
378 AC_PROG_LN_S
379 AC_SYS_LARGEFILE
380 AC_FUNC_FSEEKO
385 ############################################################################
386 # Checks for libraries.
387 ############################################################################
389 # Don't add math library for intel compilers
390 if $CC -V 2>&1 | grep 'Intel Corporation' > /dev/null 2>&1; then
391   AC_MSG_NOTICE([Using built-in math library with intel compiler])
392 else
393   AC_CHECK_LIB(m,sqrt,,AC_MSG_ERROR([No math library found]))
396 #####
397 # IBM provides a MASS library with vectorized and optimized math stuff,
398 # and an xlopt library which partly overlaps this. They must come before
399 # libm in the link list, thus the test goes after that for libm!
400 if test "${host_vendor}" = "ibm"; then
401   AC_CHECK_LIB(xlopt,main)
402   AC_CHECK_LIB(mass,main)  
403   vectmass=no
404   case "$gmxcpu" in
405     power4*)
406         # first check for a power4 lib, then power3, power2.
407       AC_SEARCH_LIBS(vsrsqrt,massvp4 massvp3 massvp2 massv,[vectmass=yes]) ;;
408     power3*)
409       AC_SEARCH_LIBS(vsrsqrt,massvp3 massvp2 massv,[vectmass=yes]) ;;
410     power2*)
411       AC_SEARCH_LIBS(vsrsqrt,massvp2 massv,[vectmass=yes]) ;;
412     *)
413       AC_CHECK_LIB(massv,vsrsqrt,[vectmass=yes LIBS="$LIBS -lmassv"]) ;;
414   esac
415   if test "$vectmass" = "yes"; then
416     AC_DEFINE(HAVE_LIBMASSV_ANY,,[Use vectorized routines in the IBM MASS library])
417     if test "$enable_vectorized_recip" = "not_selected"; then
418       AC_MSG_NOTICE([vector MASS lib present - vectorizing 1/x inner loops])
419       enable_vectorized_recip="yes"
420     fi
421     if test "$enable_vectorized_sqrt" = "not_selected"; then
422       AC_MSG_NOTICE([vector MASS lib present - vectorizing 1/sqrt inner loops])
423       enable_vectorized_sqrt="yes"
424     fi    
425   else
426     echo "******************************************************************************"
427     echo "*Didn't find the IBM MASS library. It's not necessary, but can provide 20%   *"
428     echo "*performance improvement by loop vectorization. Add the library search path  *"
429     echo "*with -L in the LDFLAGS variable. If you cannot find MASS, download it from  *"
430     echo "*http://www.research.ibm.com/mass                                            *"
431     echo "******************************************************************************"
432   fi
433 fi 
435 if test "$with_fftw" = "yes"; then
436   if test "$enable_float" = "yes"; then
437     sizeof_real=4
438   else 
439     sizeof_real=8
440   fi
442   ACX_CHECK_FFTW(fftw,$sizeof_real)
443   ACX_CHECK_FFTW(rfftw,$sizeof_real)
445   if test "$enable_mpi" = "yes"; then
446     ACX_CHECK_FFTW(fftw_mpi,$sizeof_real)
447     ACX_CHECK_FFTW(rfftw_mpi,$sizeof_real)
448   fi
450   case ${ac_fftw_savedprefix} in
451    d) AC_DEFINE(FFTW_NAME_DFFTW,,[Use the d prefix on fftw includes]) ;;
452    s) AC_DEFINE(FFTW_NAME_SFFTW,,[Use the s prefix on fftw includes]) ;;
453    *) AC_DEFINE(FFTW_NAME_FFTW,,[Dont use any prefix on fftw includes]) ;;
454   esac
455 else
456   echo "*******************************************************************"
457   echo "*             WARNING! You have disabled FFTW support!            *"
458   echo "* You will not be able to use PME (Particle Mesh Ewald) summation *"
459   echo "* in your simulations. Unless you are absolutely sure you won't   *"
460   echo "* ever need this we suggest you install FFTW instead of compiling *"
461   echo "* a version of GROMACS that will be crippled!                     *"
462   echo "*******************************************************************"
463 fi # end of fftw check
465 ######
466 # check for xtc headers
467 case "${host_os}" in
468 cygwin* | mingw*)   # use our own xdr stuff for cygwin/mingw
469   GMXLIB_LIBOBJS="$GMXLIB_LIBOBJS gmx_system_xdr.lo"
470   ;;
472   AC_CHECK_HEADERS(rpc/rpc.h rpc/xdr.h,
473   [# check for xtc libs if we found headers - on solaris the xdr stuff is in libnsl
474   AC_CHECK_LIB(nsl,xdr_float)
475   AC_TRY_LINK([#include<rpc/rpc.h> 
476   #include<rpc/xdr.h>],[ XDR *xd; float f; xdr_float(xd,&f);],[have_xdr="yes"])])
478   if test "$have_xdr" != "yes"; then
479     AC_MSG_ERROR([Couldn't find XDR headers and/or libraries])
480   fi
481   ;;
482 esac
484 #####
485 # Checks for additional and/or optional functions or libraries.
486 #AC_FUNC_MALLOC
487 AC_FUNC_MEMCMP
488 AC_TYPE_SIGNAL
489 AC_FUNC_VPRINTF
490 AM_WITH_DMALLOC
491 AC_CHECK_FUNCS(strcasecmp)
492 AC_CHECK_FUNCS(strdup)
494 #####
495 # Look for X
496 AC_PATH_XTRA
497 # try to find motif headers and libraries
498 AC_FIND_MOTIF
499 use_motif=no
500 if test "$motif_libraries" != "no"; then
501   if test "$motif_includes" != "no"; then
502     GMXLIB_LIBOBJS="${GMXLIB_LIBOBJS} mgmx.lo widget.lo"
503     use_motif=yes
504   else
505     AC_MSG_NOTICE([Both libraries and includes are needed for Motif - disabling.])
506     motif_includes=no
507   fi
509 if test "$no_x" != "yes"; then
510   LIBS="$X_LIBS $LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
511   INCLUDES="$INCLUDES $X_CFLAGS $MOTIF_CFLAGS" 
512   AM_CONDITIONAL(USE_X11,true)
513 else
514   AM_CONDITIONAL(USE_X11,false)
517 #### 
518 # And collect the f77 libs to the linker - on Solaris, f77 stuff must go first,
519 # and we need -L/usr/ucblib to find libucb... (stupid OS)
520 # On e.g. ibm the mass libraries must come before -lm... 
521 case "${host_cpu}-${host_os}" in
522   *-solaris*) 
523     LIBS="$FLIBS $LIBS" 
524     LDFLAGS="$LDFLAGS -L/usr/ucblib"
525     ;;
526   *) LIBS="$LIBS $FLIBS" ;;
527 esac
536 ########################################################################
537 # Checks for header files and types
538 ########################################################################
540 AC_CHECK_HEADERS([limits.h strings.h unistd.h],,AC_MSG_ERROR([Include headers not found]))
541 AC_CHECK_HEADERS(unistd.h)
543 #####
544 # Checks for typedefs, structures, and compiler characteristics.
545 AC_C_CONST
546 AC_TYPE_SIZE_T
547 AC_STRUCT_TM
548 AC_TYPE_UID_T
549 AC_C_INLINE
550     
556 case "${host_cpu}" in
557    i?86) 
558       # disable x86trunc if inlined assembly doesnt work 
559       AC_MSG_CHECKING(if the C compiler supports inline assembly)
560       AC_TRY_LINK([],[float f;int i; asm("fld %1\nfistpl %0\n" : "=m" (*&i) : "f" (f));],[AC_MSG_RESULT(yes)
561 AC_DEFINE(USE_X86TRUNC,,[Use inline assembly truncation for x86 cpu])],[AC_MSG_RESULT(no)])
562         ;;      
563    *) enable_x86_asm=no ;;
564 esac
571 ########################################################################
572 # Process vectorization and prefetch options for inner loops
573 ########################################################################
574 # check which loops to vectorize
575 list_of_vectorized_sqrt=""
576 if test "$enable_vectorized_sqrt" != "no"; then
577   if test "$enable_vectorized_sqrt" = "yes" -o "$enable_vectorized_sqrt" = "all" ; then
578     enable_vectorized_sqrt="normal,solvent,water,water-water"
579   fi
580   if echo $enable_vectorized_sqrt | grep "normal" >/dev/null; then
581     list_of_vectorized_sqrt="normal "
582     AC_DEFINE(VECTORIZE_INVSQRT,,[Vectorize 1/sqrt(x) in normal loops])
583   fi
584   if echo $enable_vectorized_sqrt | grep "solvent" >/dev/null; then
585     list_of_vectorized_sqrt="${list_of_vectorized_sqrt}solvent "
586     AC_DEFINE(VECTORIZE_INVSQRT_S,,[Vectorize 1/sqrt(x) in solvent loops])
587   fi
588   if echo $enable_vectorized_sqrt | sed 's/water-water//' | grep "water" >/dev/null; then
589     list_of_vectorized_sqrt="${list_of_vectorized_sqrt}water "
590     AC_DEFINE(VECTORIZE_INVSQRT_W,,[Vectorize 1/sqrt(x) in water loops])
591   fi
592   if echo $enable_vectorized_sqrt | grep "water-water" >/dev/null; then
593     list_of_vectorized_sqrt="${list_of_vectorized_sqrt}water-water "
594     AC_DEFINE(VECTORIZE_INVSQRT_WW,,[Vectorize 1/sqrt(x) in water-water loops])
595   fi
597 if test -z "$list_of_vectorized_sqrt"; then
598   list_of_vectorized_sqrt="no"
603 # check loops to prefetch forces in
604 list_of_prefetch=""
605 if test "$enable_prefetch" != "no"; then
606   if test "$enable_prefetch" = "yes" -o "$enable_prefetch" = "all"; then
607     enable_prefetch="normal,solvent,water,water-water"
608   fi
609   if echo $enable_prefetch | grep "normal" >/dev/null; then
610     list_of_prefetch="normal "
611     AC_DEFINE(PREFETCH,,[Prefetch coordinates in normal loops])
612   fi
613   if echo $enable_prefetch | grep "solvent" >/dev/null; then
614     list_of_prefetch="${list_of_prefetch}solvent "
615     AC_DEFINE(PREFETCH_S,,[Prefetch coordinates in solvent loops])
616   fi
617   if echo $enable_prefetch | sed 's/water-water//' | grep "water"; then
618     list_of_prefetch="${list_of_prefetch}water "
619     AC_DEFINE(PREFETCH_W,,[Prefetch coordinates in water loops])
620   fi
621   if echo $enable_prefetch | grep "water-water" >/dev/null; then
622     list_of_prefetch="${list_of_prefetch}water-water "
623     AC_DEFINE(PREFETCH_WW,,[Prefetch coordinates in water-water loops])
624   fi
626 if test -z "$list_of_prefetch"; then
627   list_of_prefetch="no"
637 ########################################################################
638 # Final output stage
639 ########################################################################
640 AS="$CC"
641 AC_SUBST(ASFLAGS)
642 AC_SUBST(AS)
643 AC_SUBST(INCLUDES)          # should be automatic, but doesnt seem to be?
644 AC_SUBST(GMXLIB_LIBOBJS)
645 AC_SUBST(MDLIB_LIBOBJS)
647 # To tell libraries apart, we use four versions of the name. For instance, libgmx:
648 # libgmx                single prec, no mpi.
649 # libgmx_d              double prec, no mpi.
650 # libgmx_mpi            single prec, mpi.
651 # libgmx_mpi_d          double prec, mpi.
652 # However, the non-suffixed names are linked to the _mpi and/or _d suffixed
653 # ones upon installation if that is the only version available.
655 if test "$enable_mpi" = "yes"; then
656   LIBSUFFIX="_mpi"
658 if test "$enable_float" = "no"; then
659   LIBSUFFIX="${LIBSUFFIX}_d"
661 AC_SUBST(LIBSUFFIX) 
663 # Unless the user has explicitly requested a prefix/suffix/transform, we
664 # use _d on double precision files. Don't add anything for mpi, but at the
665 # end we tell the user it is possible and smart to do in some cases!
666 if test "$program_transform_name" = "s,x,x,"; then
667   name_transform_provided=no;
668   if test "$enable_float" = "no"; then
669     program_transform_name="s,\$\$,_d,"
670   fi
671 else
672   name_transform_provided=yes;
675 # Set exec-prefix from the architecture and cpu, unless it was 
676 # explicitly given by the user.
677 if test "$exec_prefix" = "NONE"; then
678   arch_exec_prefix=yes; 
679   if test -n "$gmxcpu"; then
680     exec_prefix="\${prefix}/${host}/${gmxcpu}"
681   else
682     exec_prefix="\${prefix}/${host}"
683   fi
685 AC_SUBST(exec_prefix)
689 #If the prefix doesn't contain "gromacs" or "gmx" and the datadir
690 #wasn't explicitly specified we add gromacs to the end of datadir:
691 if test "$datadir" = "\${prefix}/share" -a -z "`echo ${prefix} | grep gromacs`"; then
692   if test "${prefix}" != "NONE" -a -z "`echo ${prefix} | grep gromacs`" -a -z "`echo ${prefix} | grep gmx`"; then
693     datadir="\${prefix}/share/gromacs"
694   fi
696 AC_SUBST(datadir)
698 #If the prefix doesn't contain "gromacs" or "gmx" and the includedir
699 #wasn't explicitly specified we add gromacs to the end of includedir:
700 if test "$includedir" = "\${prefix}/include" -a -z "`echo ${prefix} | grep gromacs`"; then
701   if test "${prefix}" != "NONE" -a -z "`echo ${prefix} | grep gromacs`" -a -z "`echo ${prefix} | grep gmx`"; then
702     includedir="\${prefix}/include/gromacs"
703   fi
705 AC_SUBST(includedir)
707 # automake has started to put the man pages under share, and says it
708 # should be so according to FHS, but this is still debated so we keep
709 # the old setup unless the user says different.
710 if test "$mandir" = "\${prefix}/share/man"; then
711   mandir="\${prefix}/man"
712   AC_SUBST(mandir)
715 # Use a variable for RPM - this way it can be 
716 # overridden with make RPM=rpm3 rpm
717 RPM=rpm
718 AC_SUBST(RPM)
721 if test "$enable_all_static" = "yes"; then
722   LDFLAGS="$LDFLAGS -all-static"
725 # we have asm source, so this is necessary for automake 1.6
726 CCAS=$CC
727 CCASFLAGS=$CFLAGS
729 AC_SUBST(CCAS)
730 AC_SUBST(CCASFLAGS)
732 AC_CONFIG_FILES([ Makefile src/Makefile src/gmxlib/Makefile include/Makefile include/types/Makefile src/mdlib/Makefile src/kernel/Makefile src/tools/Makefile src/ngmx/Makefile src/contrib/Makefile scripts/Makefile admin/Makefile share/Makefile share/tutor/Makefile share/tutor/gmxdemo/Makefile share/tutor/nmr1/Makefile share/tutor/nmr2/Makefile share/tutor/water/Makefile share/tutor/mixed/Makefile share/tutor/methanol/Makefile share/tutor/speptide/Makefile share/template/Makefile share/top/Makefile share/html/Makefile share/html/images/Makefile share/html/online/Makefile man/Makefile man/man1/Makefile ])
734 AC_OUTPUT
742 #########################################################
743 # Echo some important info, to avoid stupid mistakes
746 echo ""
747 echo "GROMACS is ready to compile."
749 eval "show_path=`echo ${exec_prefix} | sed -e s,NONE,${ac_default_prefix},`"
750 eval "show_datadir=`echo ${datadir} | sed -e s,NONE,${ac_default_prefix},`"
751 echo ""
752 echo "* Binaries and libraries for this host will be installed in"
753 echo "    ${show_path}/bin" 
754 echo "    ${show_path}/lib" 
755 echo "  and shared data will placed in"
756 echo "    ${show_datadir}"
757 echo "  (You can set this with --prefix, --exec-prefix and --datadir)"
760 if test "$enable_float" = "no" -a "$name_transform_provided" = "no"; then
761   echo ""
762   echo "* You are compiling a double precision version of the package -"
763   echo "  program names will be suffixed with _d to avoid overwriting single"
764   echo "  precision files. You can override it with --program-suffix"
767 if test "$name_transform_provided" = "no" -a "$enable_mpi" = "yes"; then
768   echo ""
769   echo "* Seems you are compiling with MPI support. You can install the MPI-"
770   echo "  enabled programs with suffixed names to have both MPI and non-MPI"
771   echo "  versions. This is useful e.g. on supercomputers where you usually"
772   echo "  cannot run MPI-linked programs on the login node."
773   echo "  Set a suffix with e.g. --program-suffix=_mpi (or _mpi_d for double)."
774   echo "  You only need MPI for mdrun, so if you already have non-MPI stuff"
775   echo "  installed you can issue make mdrun; make install-mdrun."
778 if test "$enable_shared" = "yes"; then
779   echo ""
780   echo "* To save space, you might want to use shared libraries."
781   echo "  This should work on almost any platform, but since there are"
782   echo "  a few exceptions (MPI builds on aix) it is not used by default."
783   echo "  Turn it on with --enable-shared."
785 echo ""