1 #######################################################################
2 # Process this file wth autoconf to produce a configure script.
3 #######################################################################
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)
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)
23 #######################################################################
24 # Simple options and makefile variables
25 #######################################################################
29 [AC_HELP_STRING([--disable-float],
30 [Use double instead of single precision])],, enable_float=yes)
33 [AC_HELP_STRING([--enable-double],
34 [Same effect as --disable-float])],, enable_double=no)
35 if test "$enable_double" = "yes"; then
38 if test "$enable_float" = "no"; then
39 AC_DEFINE(GMX_DOUBLE,,[Compile in double precision])
41 AM_CONDITIONAL([GMX_DOUBLE],[test "$enable_float" = "no"])
46 AC_ARG_ENABLE(fortran,
47 [AC_HELP_STRING([--enable-fortran],
48 [Use Fortran kernels])],,
49 [case "${host_cpu}-${host_os}" in
50 sparc*-solaris* | alpha*-* | rs6000*-aix* | powerpc*-aix* | mips*-irix*) enable_fortran=yes ;;
51 *) enable_fortran=no ;;
53 if test "$enable_fortran" = "yes"; then
54 AC_DEFINE(GMX_FORTRAN,,[Enable Fortran support])
56 # Generic fortran kernels will be turned off below if you enable power6-specific optimization!
57 # always use CC for linking:
58 AC_SUBST(F77LINK,"\$(LINK)")
66 [AC_HELP_STRING([--enable-mpi],
67 [Compile for parallel runs using MPI]
68 [(instead of threads)])],,enable_mpi=no)
72 AC_ARG_ENABLE(mpi-environment,
73 [AC_HELP_STRING([--enable-mpi-environment=VAR],
74 [Only start parallel runs when VAR is set])],,
75 [case "${host_cpu}" in
76 mips*-irix*) enable_mpi_environment="MPI_ENVIRONMENT" ;;
77 *) enable_mpi_environment=no ;;
79 if test "$enable_mpi_environment" != "no"; then
80 AC_DEFINE_UNQUOTED(GMX_CHECK_MPI_ENV,"$enable_mpi_environment",[If defined, only start MPI runs when this variable is set])
84 AC_ARG_ENABLE(mpi-in-place,
85 [AC_HELP_STRING([--disable-mpi-in-place],
86 [Disable MPI_IN_PLACE. For MPI implementations]
87 [that have broken support for it ]
88 [(some versions of MPICH, for example).])],, enable_mpi_in_place=yes)
93 [AC_HELP_STRING([--enable-debug],
94 [Add -g to other command line arguments])],,enable_debug=no)
96 ### IA32 assembly code
97 AC_ARG_ENABLE(ia32_sse,
98 [AC_HELP_STRING([--disable-ia32-sse],
99 [Don't build SSE/SSE2 assembly loops on ia32])],,enable_ia32_sse=yes)
101 case "${host_cpu}-${host_vendor}" in
103 *) enable_ia32_sse=no ;;
106 ### AMD64 assembly code
107 AC_ARG_ENABLE(x86_64_sse,
108 [AC_HELP_STRING([--disable-x86-64-sse],
109 [Don't build SSE assembly loops on X86_64])],,enable_x86_64_sse=yes)
110 case "${host_cpu}-${host_vendor}" in
111 x86_64-* | amd64-*) ;;
113 *) enable_x86_64_sse=no ;;
117 ### Altivec on powerpc (motorola)
118 AC_ARG_ENABLE(ppc_altivec,
119 [AC_HELP_STRING([--disable-ppc-altivec],
120 [Don't build Altivec loops on PowerPC])],,enable_ppc_altivec=undef)
121 # Power3/4/5 running AIX does not support altivec. We identify this with vendor=IBM.
122 # IBM powerpc 970 boxes run linux, and have vendor=unknown.
123 if test "$enable_ppc_altivec" = "undef"; then
124 case "${host_cpu}-${host_vendor}" in
125 ppc*-ibm* | powerpc*-ibm*) enable_ppc_altivec=no ;;
126 ppc*-* | powerpc*-*) enable_ppc_altivec=yes ;;
127 *) enable_ppc_altivec=no ;;
133 ### ia64 assembly code
134 AC_ARG_ENABLE(ia64_asm,
135 [AC_HELP_STRING([--disable-ia64-asm],
136 [Don't build assembly loops on ia64])],,enable_ia64_asm=yes)
137 case "${host_cpu}" in
139 *) enable_ia64_asm=no ;;
143 # IBM Power6-specific optimization
144 AC_ARG_ENABLE(power6,
145 [AC_HELP_STRING([--enable-power6],
146 [Use IBM Pwr6/PPC440/PPC450-specific F77 kernels])],,enable_power6=no)
147 # Turn off generic fortran loops if we are using power6-specific optimization
148 if test "$enable_power6" = "yes"; then
152 AC_ARG_ENABLE(bluegene,
153 [AC_HELP_STRING([--enable-bluegene],
154 [Build assembly intrinsics kernels on bluegene])],,enable_bluegene=no)
157 ### Optimize for host cpu version
158 AC_ARG_ENABLE(cpu-optimization,
159 [AC_HELP_STRING([--disable-cpu-optimization],
160 [No detection or tuning flags for cpu version])],, enable_cpu_optimization=yes)
163 ### Do software 1/sqrt(x)
164 AC_ARG_ENABLE(software-invsqrt,
165 [AC_HELP_STRING([--disable-software-invsqrt],
166 [No software 1/sqrt (disabled on sgi,ibm,ia64)])],,
167 [case "${host_cpu}-${host_os}" in
168 mips*-irix* | rs6000*-aix* | powerpc*-aix | ia64*-*) enable_software_invsqrt=no ;;
169 *) enable_software_invsqrt=yes ;;
171 if test "$enable_software_invsqrt" = "yes"; then
172 AC_DEFINE(GMX_SOFTWARE_INVSQRT,,[Use the GROMACS software 1/sqrt(x)])
174 AM_CONDITIONAL([GMX_SOFTWARE_INVSQRT],[test "$enable_software_invsqrt" = "yes"])
176 AC_ARG_ENABLE(fahcore,
177 [AC_HELP_STRING([--enable-fahcore],
178 [Create a library with mdrun functionality])],, enable_fahcore=no)
182 # The four options below used to improve code scheduling, but the newest CPUs can usually rearrange
183 # instructions dynamically at runtime, so they might not make much difference now:
186 AC_ARG_ENABLE(all-static,
187 [AC_HELP_STRING([--enable-all-static],
188 [Make completely static binaries])],, enable_all_static=no)
189 # Dont add the -all-static flag until after the compiler test.
192 # FFT libraries - only use one...
194 [AC_HELP_STRING([--with-fft=@<:@fftw3/fftw2/mkl(>=6.0)/fftpack@:>@],
195 [FFT library to use. fftw3 is default, fftpack built in.])],,
198 AC_ARG_ENABLE(fftw-measure,
199 [AC_HELP_STRING([--disable-fftw-measure],
200 [Dont optimize FFTs. This produces binary exactly]
201 [reproducible runs (as the -reprod flag to mdrun),]
202 [and if you are using FFTW on x86 and specified its]
203 [--enable-sse/sse2 flag (NOT default in FFTW!) the]
204 [kernels used are close-to-optimal anyway.])],,
205 enable_fftw_measure=yes)
208 AC_ARG_ENABLE(threads,
209 [AC_HELP_STRING([--disable-threads],
210 [Disable parallel runs using threads])],,enable_threads=yes)
213 ### Use external BLAS/LAPACK libraries if the user wants to.
215 AC_ARG_WITH(external_blas,
216 [AC_HELP_STRING([--with-external-blas],
217 [Use system BLAS library (add to LIBS). Automatic on OS X.])],,
219 # default action - check if we are on OS X
220 case "${host_vendor}-${host_os}" in
221 apple-darwin*) with_external_blas="yes" ; extra_LDFLAGS="-framework Accelerate" ;;
222 *) with_external_blas="no" ;;
225 AM_CONDITIONAL([GMX_EXTERNAL_BLAS], [test "$with_external_blas" = "yes"])
228 AC_ARG_WITH(external_lapack,
229 [AC_HELP_STRING([--with-external-lapack],
230 [Use system LAPACK library (add to LIBS). Automatic on OS X.])],,
232 # default action - check if we are on OS X
233 case "${host_vendor}-${host_os}" in
234 apple-darwin*) with_external_lapack="yes" ; extra_LDFLAGS="-framework Accelerate" ;;
235 *) with_external_lapack="no" ;;
238 AM_CONDITIONAL([GMX_EXTERNAL_LAPACK], [test "$with_external_lapack" = "yes"])
243 AC_ARG_WITH(qmmm_gaussian,
244 [AC_HELP_STRING([--without-qmmm-gaussian],
245 [Use modified Gaussian0x for QM-MM (see website)])],,with_qmmm_gaussian=yes)
246 if test "$with_qmmm_gaussian" = "yes"; then
247 AC_DEFINE(GMX_QMMM_GAUSSIAN,,[Use (modified) Gaussian0x for QM-MM calculations])
251 AC_ARG_WITH(qmmm_gamess,
252 [AC_HELP_STRING([--without-qmmm-gamess],
253 [Use modified Gamess-UK for QM-MM (see website)])],,with_qmmm_gamess=no)
254 if test "$with_qmmm_gamess" = "yes"; then
255 AC_DEFINE(GMX_QMMM_GAMESS,,[Use (modified) Gamess-UK for QM-MM calculations])
259 AC_ARG_WITH(qmmm_mopac,
260 [AC_HELP_STRING([--without-qmmm-mopac],
261 [Use modified Mopac 7 for QM-MM (see website)])],,with_qmmm_mopac=no)
262 if test "$with_qmmm_mopac" = "yes"; then
263 AC_DEFINE(GMX_QMMM_MOPAC,,[Use (modified) Mopac 7 for QM-MM calculations])
267 [AC_HELP_STRING([--without-dlopen],
268 [do not compile with dlopen, needed to read VMD]
269 [supported file formats])],,with_dlopen=yes)
275 ############################################################
276 # Add some debug info: Who is building, and on what machine?
277 ############################################################
278 AC_DEFINE_UNQUOTED([BUILD_TIME],["`date`"],[Date and time for build])
279 AC_DEFINE_UNQUOTED([BUILD_USER],["`whoami`@`hostname`"],[User doing build])
280 AC_DEFINE_UNQUOTED([BUILD_MACHINE],["`uname -srm`"],[Hardware and OS version for build host])
283 ############################################################
284 # Checks for requirements for version information generation
285 ############################################################
287 if test -d $srcdir/.git ; then
288 AC_CHECK_PROG(have_git, git, yes, no)
289 if test "$have_git" = "yes" ; then
290 AC_MSG_CHECKING(for git >= 1.5.1)
291 if test "`git --version`" \< "git version 1.5.1" ; then
296 AC_DEFINE(USE_VERSION_H,,[Use generated version info])
299 if test "$generate_version" = "no" ; then
300 AC_MSG_WARN([No compatible git version found, won't be able to generate proper development version information.])
303 AM_CONDITIONAL([USE_VERSION_H],[test "$generate_version" = "yes"])
306 ############################################################
307 # Checks for programs
308 ############################################################
310 # normally we use the default compiler, but on alpha/linux we try the compaq ones first
311 case "${host_cpu}-${host_os}" in
313 cc_names="ccc cc gcc"
314 f77_names="fort f77 g77"
317 cc_names="cc icc xlc gcc"
318 f77_names="f77 ifort xlf xlf77 cf77 fl32 g77 fort77 f90 xlf90 pgf77 cf77 fort fort77 pgf90"
321 # the (non-mpi) c compiler, which is also used for programs executed during build stage
322 AC_PROG_CC( $cc_names )
323 # Check for environment variable CC_FOR_BUILD before overwriting it
324 if test -z "$CC_FOR_BUILD"; then
327 AC_SUBST(CC_FOR_BUILD)
329 if test "$enable_fortran" = "yes"; then
330 AC_PROG_F77( $f77_names )
331 if test -z "$F77"; then
332 AC_MSG_ERROR([No fortran compiler found])
338 # if we are using mpi, also get an MPICC. We cannot set that in the PROG_CC macro
339 # above, since autoconf checks that the created file can be executed. This would
340 # fail on platforms where MPI executables can only be run through a batchqueue.
342 if test "$enable_mpi" = "yes"; then
344 AC_CHECK_PROGS(MPICC, mpxlc mpicc mpcc hcc, $CC)
345 # now change the normal cc to the MPI one - see the comment above.
348 AC_MSG_CHECKING([whether the MPI cc command works]) # be paranoid
349 AC_TRY_LINK([#include <mpi.h>],[int argc; char **argv; MPI_Init(&argc,&argv);],
350 AC_MSG_RESULT([yes]),AC_MSG_ERROR([Cannot compile and link MPI code with $CC]))
351 AC_DEFINE(GMX_MPI,,[Make a parallel version of GROMACS using MPI])
352 AC_DEFINE(GMX_LIB_MPI,,[Use a real MPI library])
354 if test "$enable_mpi_in_place" = "yes"; then
355 # not all MPIs support MPI_IN_PLACE:
356 AC_MSG_CHECKING([for MPI_IN_PLACE in collective operations])
362 MPI_Allreduce(MPI_IN_PLACE, buf, 10, MPI_FLOAT, MPI_SUM, MPI_COMM_WORLD);
366 AC_DEFINE(MPI_IN_PLACE_EXISTS,[],[MPI_IN_PLACE available for collective operations])
372 # on the cray xt3 we have to tell autoconf that we
373 # are actually cross-compiling even if the architecture
374 # of host and target are the same. so we enforce
375 # cross-compilation if __QK_USER__ is defined
376 AC_MSG_CHECKING([for catamount])
378 #if defined __QK_USER__
385 AC_DEFINE(GMX_CRAY_XT3,[],[Enable special hacks for Cray XT3])
386 AC_DEFINE(GMX_NO_SYSTEM,[],[Ignore calls to system(3)])
387 AC_DEFINE(GMX_NO_NICE,[],[Ignore calls to nice(3)])
388 AC_DEFINE(GMX_BROKEN_CALLOC,[],[Don't use calloc(3)])
389 extra_LDFLAGS="$extra_LDFLAGS -lgmalloc -lacml"
393 # end of "$enable_mpi" = "yes"
397 AH_TEMPLATE([F77_OR_C_FUNC],
398 [Set to F77_FUNC(name,NAME) if Fortran used, otherwise 'name' for C.])
399 AH_TEMPLATE([F77_OR_C_FUNC_],
400 [Set to F77_FUNC_(name,NAME) if Fortran used, otherwise 'name' for C.])
404 if test "$enable_fortran" = "yes"; then
405 AC_F77_LIBRARY_LDFLAGS
407 AC_DEFINE([F77_OR_C_FUNC(name,NAME)],[F77_FUNC(name,NAME)])
408 AC_DEFINE([F77_OR_C_FUNC_(name,NAME)],[F77_FUNC_(name,NAME)])
410 AC_DEFINE([F77_OR_C_FUNC(name,NAME)],[name])
411 AC_DEFINE([F77_OR_C_FUNC_(name,NAME)],[name])
417 # Needed by libtool scripts?
420 if test "$enable_cpu_optimization" = "yes"; then
428 # We've postponed the threads check because we need to check with the right
430 if test "$enable_threads" = "yes"; then
431 if test "$enable_mpi" = "yes"; then
432 AC_MSG_ERROR([Cannot use both threads and MPI - yet.])
434 if test "$with_fft" = "fftw2"; then
435 AC_MSG_ERROR([fftw2 can't be used with threads. Use fftw3 or mkl.])
437 AC_CHECK_HEADERS(unistd.h)
438 AC_CHECK_HEADERS(sys/time.h)
439 AC_CHECK_HEADERS(sched.h)
440 AC_CHECK_FUNCS(sysconf)
442 # for now we just assume pthreads
443 ACX_PTHREAD(,AC_MSG_ERROR([Cannot find POSIX threads - required for thread support using configure!]))
444 LIBS="$PTHREAD_LIBS $LIBS"
445 CFLAGS="$CFLAGS $PTHREAD_CFLAGS -I$srcdir/include"
446 CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS -I$srcdir/include"
448 AC_DEFINE(THREAD_PTHREADS,,[Use pthreads for thread_mpi multithreading])
451 AC_ARG_ENABLE(tmpi-profiling,
452 [AC_HELP_STRING([--enable-tmpi-profiling],
453 [Enables profiling of thread_mpi calls and wait times])],,
454 enable_tmpi_profiling=no)
455 if test "x$enable_tmpi_profiling" = "xyes"; then
456 AC_DEFINE(TMPI_PROFILE,,[Enable profiling for call and wait times])
460 AC_MSG_CHECKING(if atomic operations are supported)
462 CXXFLAGS_RET="$CXXFLAGS"
463 CFLAGS="$CFLAGS -I$srcdir/include -DTMPI_CHECK_ATOMICS"
464 CXXFLAGS="$CXXFLAGS -I$srcdir/include -DTMPI_CHECK_ATOMICS"
465 # this sets a variable 'tmpi_atomics' to 'yes' if there are atomics.
466 AC_COMPILE_IFELSE([#include "thread_mpi/atomic.h" ],
467 [AC_MSG_RESULT(yes); tmpi_atomics=yes],
471 This compiler+CPU combination doesn't have working atomics.
472 Thread support will be unbearably slow: disable threads.
474 Atomics should work on all but the most obscure CPU+compiler combinations;
475 if your system is not obscure -- like, for example, x86 with gcc -- please
476 contact the developers.
477 ]); tmpi_atomics=no])
479 CXXFLAGS="$CXXFLAGS_RET"
481 AC_DEFINE(GMX_THREADS,,[Use threads for parallelization])
482 AC_DEFINE(GMX_MPI,,[Make a parallel version of GROMACS using MPI])
483 AM_CONDITIONAL(THREAD_PARALLEL,true)
485 AM_CONDITIONAL(THREAD_PARALLEL,false)
491 # Check integer endian
493 AC_C_BIGENDIAN([AC_DEFINE([GMX_INTEGER_BIG_ENDIAN],,[Integer byte order is big endian.])],[],[
494 AC_MSG_ERROR([Cannot determine endian in compiled output])])
495 # Little endian implied if GMX_INTEGER_BIG_ENDIAN not defined in source.
498 # Make sure size_t can hold pointers.
499 # On some Nec machines, you reportedly need to specify a flag for size_t to be 64 bits wide.
501 AC_MSG_CHECKING([that size_t can hold pointers])
505 ],[int chk[sizeof(size_t)-sizeof(int *)+1];],AC_MSG_RESULT([yes]),[
506 AC_MSG_ERROR([size_t is smaller than int*. Check if your compiler needs a flag to make it 64 bit.])])
510 # Check that SIGUSR1 is defined
512 AC_MSG_CHECKING([for SIGUSR1])
513 AC_TRY_COMPILE([#include <signal.h>],[int i=SIGUSR1;],[
515 AC_DEFINE(HAVE_SIGUSR1,,[SIGUSR1 supported and defined])
516 ],AC_MSG_RESULT([no]))
519 # Check if pipes are supported
521 AC_MSG_CHECKING([for pipes])
522 AC_TRY_COMPILE([#include <stdio.h>],[
523 FILE *pipe=popen("/tmp/pipe","r");
526 AC_DEFINE(HAVE_PIPES,,[Pipes (popen/pclose) supported])
527 ],AC_MSG_RESULT([no]))
532 # Check floating-point format and endian
544 # Use our own version of AC_FUNC_FSEEKO from autoconf 2.63 instead
545 # of the broken one we might get from autoconf 2.61.
546 ACX_FUNC_FSEEKO_FIXED
551 ############################################################################
552 # Checks for libraries.
553 ############################################################################
555 # Don't add math library for intel compilers
556 if $CC -V 2>&1 | grep 'Intel Corporation' > /dev/null 2>&1; then
557 AC_MSG_NOTICE([Using built-in math library with intel compiler])
559 AC_CHECK_LIB(m,sqrt,,AC_MSG_ERROR([No math library found]))
563 # Disable MASS support for now.
569 if test "$enable_float" = "yes"; then
574 ACX_CHECK_FFTW2(fftw,$sizeof_real)
575 ACX_CHECK_FFTW2(rfftw,$sizeof_real)
577 case ${ac_fftw_savedprefix} in
578 d) AC_DEFINE(FFTW2_NAME_DFFTW,,[Use the d prefix on fftw2 includes]) ;;
579 s) AC_DEFINE(FFTW2_NAME_SFFTW,,[Use the s prefix on fftw2 includes]) ;;
580 *) AC_DEFINE(FFTW2_NAME_FFTW,,[Dont use any prefix on fftw2 includes]) ;;
583 AC_DEFINE(GMX_FFT_FFTW2,,[Use FFTW2 FFT library])
585 ;; # end of fftw2 check
587 fftw3) # Much simpler check than fftw2
588 # Check for header <fftw3.h> AC_CHECK_HEADERS doesnt work, since we must
589 # use mpicc to get includes - cpp isnt always the same compiler.
590 AC_MSG_CHECKING([for fftw3.h])
591 AC_TRY_COMPILE([#include<fftw3.h>],,[
592 # ok, look for library file too
594 if test "$enable_float" = "yes"; then
595 AC_CHECK_LIB([fftw3f],main,,AC_MSG_ERROR([Cannot find fftw3f library]))
598 AC_CHECK_LIB([fftw3],main,,AC_MSG_ERROR([Cannot find fftw3 library]))
601 AC_DEFINE(GMX_FFT_FFTW3,,[Use FFTW3 FFT library])
603 # not ok, echo a warning
605 [Cannot find the default external FFT library (fftw3).
606 Other alternatives are 'fftw2', or 'mkl' for Intel MKL.
607 You are STRONGLY recommended to use one of these - fftw is free.
609 Use CPPFLAGS and LDFLAGS if the library is installed in a
610 non-standard location. (see FAQ at http://www.gromacs.org)
612 If you dont care about performance you can also specify 'fftpack'
613 to use a slower set of FFTs built into Gromacs.
614 (Just install FFTW3 unless you really know what you are doing).
622 # Intel Math Kernel Library version 6 and later.
624 AC_MSG_CHECKING([for mkl_dfti.h])
625 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.]\
628 # AC_CHECK_LIB([guide],main,,AC_MSG_ERROR([Cannot find libguide (Intel MKL)]))
629 # AC_CHECK_LIB([mkl],DftiComputeForward,,
630 # AC_MSG_ERROR([Cannot find Intel Math Kernel Library >= 6.0]))
631 # first check for older MKLs
632 AC_CHECK_LIB([mkl],DftiComputeForward,,[have_mkl="no"])
633 if test "$have_mkl" == "no"; then
634 # we assume it's a new MKL
635 LIBS="$LIBS -liomp5 -lmkl_sequential -lmkl_core"
636 LMKL=" -liomp5 -lmkl_sequential -lmkl_core"
637 AC_CHECK_LIB([mkl_intel_lp64],DftiComputeForward,,[have_mkl10_64="no"])
638 if test "$have_mkl10_64" == "no"; then
639 AC_CHECK_LIB([mkl_intel],DftiComputeForward,,[have_mkl10_32="no"])
640 if test "$have_mkl10_32" == "no"; then
641 AC_MSG_ERROR([Cannot find Intel Math Kernel Library >= 6.0])
645 AC_DEFINE(GMX_FFT_MKL,,[Use Intel MKL FFT library])
650 AC_MSG_WARN([The built-in FFTPACK routines are slow.
651 Are you sure you don't want to use FFTW? It is free and much faster...])
652 AC_DEFINE(GMX_FFT_FFTPACK,,[Use Built-in FFTPACK FFT library])
655 AC_MSG_ERROR([Unknown FFT library])
660 if test "$enable_fftw_measure" != "yes"; then
661 AC_DEFINE(GMX_DISABLE_FFTW_MEASURE,,[Do not optimize FFTW setups (not needed with SSE FFT kernels)])
665 # check for xtc headers
667 cygwin* | mingw*) # use our own xdr stuff for cygwin/mingw
670 AC_CHECK_HEADERS([rpc/rpc.h])
671 AC_CHECK_HEADERS([rpc/xdr.h],,,
673 # include <rpc/rpc.h>
676 AC_CHECK_LIB(nsl,xdr_float)
681 #error NO rpc.h header
686 #error No xdr.h header
688 ],[ XDR *xd; float f; xdr_float(xd,&f);],[have_xdr="yes"])
690 if test "$have_xdr" != "yes"; then
691 AC_DEFINE(GMX_INTERNAL_XDR,,[Use our own instead of system XDR libraries])
692 AC_MSG_WARN([Couldn't find XDR headers and/or libraries - using our own])
698 ########################################################################
699 # Checks for header files and types
700 ########################################################################
702 AC_CHECK_HEADERS([limits.h unistd.h],,AC_MSG_ERROR([Include headers not found]))
703 AC_CHECK_HEADERS(unistd.h)
704 AC_CHECK_HEADERS(sys/types.h)
705 AC_CHECK_HEADERS(sys/time.h)
706 AC_CHECK_HEADERS(dirent.h)
707 AC_CHECK_HEADERS(regex.h,,[AC_MSG_WARN(
709 Regular expression matching in selections will be disabled.
710 Selections still work, but the default groups can differ from
711 those obtained with regular expressions enabled.
712 Consider installing the regular expression library from GNU libc.])])
715 # Checks for additional and/or optional functions or libraries.
722 AC_CHECK_FUNCS(strcasecmp)
723 AC_CHECK_FUNCS(strdup)
724 AC_CHECK_FUNCS(gettimeofday)
725 AC_CHECK_FUNCS(isnan)
726 AC_CHECK_FUNCS(_isnan)
727 AC_CHECK_FUNCS(isfinite)
728 AC_CHECK_FUNCS(_isfinite)
729 AC_CHECK_FUNCS(fsync)
730 AC_CHECK_FUNCS(fileno)
732 # check for bool (must come late, since CFLAGS/includes might affect it)
733 AC_CHECK_TYPES([bool])
740 # Check integer sizes, set to zero if e.g. long long is not supported.
741 # (Note: this must come *after* type checks for the corresponding types!)
744 AC_CHECK_SIZEOF(long int)
745 AC_CHECK_SIZEOF(long long int)
746 AC_CHECK_SIZEOF(off_t)
747 AC_CHECK_SIZEOF(void*)
751 # Apple OS X is a bit strange/braindead in that it always reports itself as i386, both for
752 # 32 and 64 bit builds (even with the 64 bit kernel!).
754 # To get the SSE support right we check for the size of void * that we detected above...
755 case "${host_vendor}-${host_os}" in
757 if test $ac_cv_sizeof_voidp = 8; then
760 enable_x86_64_sse=no;
772 if test "$no_x" != "yes"; then
773 LIBS="$X_LIBS $LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
774 INCLUDES="$INCLUDES $X_CFLAGS"
775 AM_CONDITIONAL(USE_X11,true)
777 AM_CONDITIONAL(USE_X11,false)
780 # GNU Scientific Library or not
782 [AC_HELP_STRING([--with-gsl],[Link to the GNU scientific library, ]
783 [enables extra functions in analysis])],,with_gsl=no)
786 if test "$with_gsl" = "yes"; then
787 ac_save_LDFLAGS="$LDFLAGS"
788 AC_CHECK_HEADERS([gsl/gsl_version.h],[
789 # header found, check for libraries
790 AC_CHECK_LIB(gslcblas,main,[
791 LDFLAGS="$ac_save_LDFLAGS -lgslcblas"
792 # gslcblas library found, check main lib
793 AC_CHECK_LIB(gsl,main)])])
800 # Use OpenMM libraries
803 [ --with-openmm Use the OpenMM libraries to run on GPUs],,with_openmm=no)
805 if test "$with_openmm" = "yes"; then
808 CPPFLAGS="$CPPFLAGS -I$OPENMM_INSTALL_DIR/include"
809 INCLUDES="$INCLUDES -I$OPENMM_INSTALL_DIR/include"
810 LDFLAGS="$LDFLAGS -L$OPENMM_INSTALL_DIR/lib -lOpenMM"
811 #AC_CHECK_HEADERS([OpenMM.h],AC_CHECK_LIB(OpenMM,main))
812 #AC_CHECK_HEADERS([OpenMM.h],,AC_MSG_ERROR([Cannot find OpenMM.h file. Please set OPENMM_INSTALL_DIR.]))
813 AC_DEFINE([USE_OPENMM],,[Use OpenMM libraries to run on GPUs])
815 # AS_CASE([${host_cpu}-${host_os}-${host_vendor}],
816 # [i?86-linux*], [OPENMM_HOST=linux32],
817 # [x86_64-linux*], [OPENMM_HOST=linux64],
818 # [amd64-linux*], [OPENMM_HOST=linux64],
819 # [i?86-darwin*-apple], [OPENMM_HOST=apple],
821 # AC_SUBST([OPENMM_HOST])
824 AM_CONDITIONAL([USE_OPENMM],[test "$with_openmm" = "yes"])
828 [AC_HELP_STRING([--without-xml],[do not link to the xml2 library,]
829 [disallows the use of certain file formats])],,with_xml=yes)
832 # Check for libxml2, but it is optional, so dont stop
834 if test "$with_xml" = "yes"; then
835 ac_save_CPPFLAGS="$CPPFLAGS"
836 CPPFLAGS="$ac_save_CPPFLAGS -I/usr/include/libxml2"
837 AC_CHECK_HEADERS([libxml/parser.h],AC_CHECK_LIB(xml2,main))
838 if test "$ac_cv_lib_xml2_main" = "yes"; then
839 INCLUDES="$INCLUDES -I/usr/include/libxml2"
841 PKG_XML2="libxml-2.0"
844 CPPFLAGS="$ac_save_CPPFLAGS"
848 # And collect the f77 libs to the linker - on Solaris, f77 stuff must go first,
849 # and we need -L/usr/ucblib to find libucb... (stupid OS)
850 # On e.g. ibm the mass libraries must come before -lm...
851 case "${host_cpu}-${host_os}" in
854 LDFLAGS="$LDFLAGS -L/usr/ucblib"
856 *) LIBS="$LIBS $FLIBS" ;;
860 # add the Accelerate framework if enabled above.
861 # LDFLAGS might have been set in the CPU optimization, so we cant assign it directly before that.
862 LDFLAGS="$LDFLAGS $extra_LDFLAGS"
870 # Checks for typedefs, structures, and compiler characteristics.
876 # AC_TYPE_UID_T is broken on Mac OS X, so use generic tests instead
877 AC_CHECK_TYPES([uid_t],[],[AC_DEFINE(uid_t, int, [Define to `int' if <sys/types.h> doesn't define.])],[[#include <sys/types.h>]])
878 AC_CHECK_TYPES([gid_t],[],[AC_DEFINE(gid_t, int, [Define to `int' if <sys/types.h> doesn't define.])],[[#include <sys/types.h>]])
880 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>]])
885 # Test stuff for ia32 and x86_64 assembly, and add objects/libraries.
886 if test "$enable_ia32_sse" = "yes" -o "$enable_x86_64_sse" = "yes"; then
887 AC_MSG_CHECKING([whether your compiler can handle assembly files (*.s)])
889 # Use 64-bit registers (rsp/rbp) on x86_64
891 if test "$enable_x86_64_sse" = "yes"; then
892 cat > conftestasm.s << EOF
898 cat > conftestasm.s << EOF
904 if AC_TRY_COMMAND($CC $CFLAGS -c conftestasm.s); then
905 if test -f conftestasm.o; then
909 AC_MSG_ERROR([Upgrade your compiler (or disable assembly loops).])
913 AC_MSG_ERROR([Upgrade your compiler (or disable assembly loops).])
916 # ok, cc understands assembly.
918 # If we are using double precision we need SSE2
919 if test "$enable_float" = "no"; then
921 if test "$enable_ia32_sse" = "yes"; then
922 AC_MSG_CHECKING([whether as fully supports ia32 SSE2])
923 cat > conftest.s << EOF
926 movapd 32(%esi,%edx,8),%xmm4
930 if AC_TRY_COMMAND($CC $CFLAGS -c conftest.s); then
934 AC_MSG_ERROR([Upgrade to a more recent binutils (or disable assembly loops).])
936 AC_DEFINE([GMX_IA32_SSE2],,[Double-precision SSE2 instructions on ia32])
938 # test SSE2 on X86_64:
939 if test "$enable_x86_64_sse" = "yes"; then
940 AC_MSG_CHECKING([whether as fully supports X86_64 SSE2])
941 cat > conftest.s << EOF
944 movapd 32(%rsi,%rdx,8),%xmm4
948 if AC_TRY_COMMAND($CC $CFLAGS -c conftest.s); then
952 AC_MSG_ERROR([Upgrade to a more recent binutils (or disable assembly loops).])
954 AC_DEFINE([GMX_X86_64_SSE2],,[Double-precision SSE2 instructions on X86_64])
957 # end of double precision testing, now do single.
958 if test "$enable_ia32_sse" = "yes"; then
959 AC_MSG_CHECKING([whether as fully supports ia32 SSE])
960 cat > conftest.s << EOF
963 movaps 32(%esi,%edx,8),%xmm4
967 if AC_TRY_COMMAND($CC $CFLAGS -c conftest.s); then
971 AC_MSG_ERROR([Upgrade to a more recent binutils (or disable assembly loops).])
973 AC_DEFINE([GMX_IA32_SSE],,[Single-precision SSE instructions on ia32])
975 # test SSE2 on X86_64:
976 if test "$enable_x86_64_sse" = "yes"; then
977 AC_MSG_CHECKING([whether as fully supports X86_64 SSE instructions])
978 cat > conftest.s << EOF
981 movaps 32(%rsi,%rdx,8),%xmm4
985 if AC_TRY_COMMAND($CC $CFLAGS -c conftest.s); then
989 AC_MSG_ERROR([Upgrade to a more recent binutils (or disable assembly loops).])
991 AC_DEFINE([GMX_X86_64_SSE],,[Single-precision SSE instructions on X86_64])
997 # Test stuff for ia64 assembly
999 # Nothing to test right now.
1005 # Test altivec support.
1007 if test "$enable_ppc_altivec" = "yes"; then
1008 if test "$enable_float" = "no"; then
1009 AC_MSG_WARN([PowerPC Altivec loops can only be used in single precision - disabling])
1010 enable_ppc_altivec=no
1012 # On FSF (vanilla) GCC we must include altivec.h, and on apple we
1013 # should NOT do it after using -faltivec. Go figure...
1014 case "${host_os}" in
1016 # do nothing on Apple systems
1019 AC_CHECK_HEADERS([altivec.h])
1023 AC_MSG_CHECKING([whether the compiler supports altivec extensions])
1029 AC_MSG_RESULT([yes])
1030 AC_DEFINE([GMX_PPC_ALTIVEC],,[Use PowerPC Altivec inner loops])],[
1032 AC_MSG_WARN([no altivec support found - On recent PowerPC CPUs]
1033 [you can get a huge performance gain by using an altivec-enabled compiler.]
1034 [On OS X, you need GCC>=3.3, or the IBM compilers. If you are using standard]
1035 [GCC, you need at least version 4.0])
1036 enable_ppc_altivec=no])
1040 if test "$enable_ia64_asm" = "yes"; then
1041 AC_DEFINE(GMX_IA64_ASM,,[Use ia64 assembly tuned for Itanium2])
1042 AC_DEFINE(DISABLE_WATER_NLIST,,[Turn off all water neighborlist optimization])
1043 AC_DEFINE(DISABLE_WATERWATER_NLIST,,[Turn off water-water neighborlist optimization only])
1046 if test "$enable_bluegene" = "yes"; then
1047 AC_DEFINE(GMX_BLUEGENE,,[Use assembly intrinsics kernels for BlueGene])
1051 # Add the appropriate assembly loops
1053 AM_CONDITIONAL([GMX_IA32_SSE],[test "$enable_ia32_sse" = "yes" -a "$enable_float" = "yes"])
1054 AM_CONDITIONAL([GMX_IA32_SSE2],[test "$enable_ia32_sse" = "yes" -a "$enable_float" = "no"])
1055 AM_CONDITIONAL([GMX_X86_64_SSE],[test "$enable_x86_64_sse" = "yes" -a "$enable_float" = "yes"])
1056 AM_CONDITIONAL([GMX_X86_64_SSE2],[test "$enable_x86_64_sse" = "yes" -a "$enable_float" = "no"])
1057 AM_CONDITIONAL([GMX_FORTRAN],[test "$enable_fortran" = "yes"])
1058 AM_CONDITIONAL([GMX_PPC_ALTIVEC],[test "$enable_ppc_altivec" = "yes" -a "$enable_float" = "yes"])
1059 AM_CONDITIONAL([GMX_IA64_ASM],[test "$enable_ia64_asm" = "yes"])
1060 AM_CONDITIONAL([GMX_BLUEGENE],[test "$enable_bluegene" = "yes"])
1061 AM_CONDITIONAL([GMX_POWER6],[test "$enable_power6" = "yes"])
1065 # Check integer endian
1067 AC_C_BIGENDIAN([AC_DEFINE([GMX_INTEGER_BIG_ENDIAN],,[Integer byte order is big endian.])],[],[
1068 AC_MSG_ERROR([Cannot determine endian in compiled output])])
1069 # Little endian implied if GMX_INTEGER_BIG_ENDIAN not defined in source.
1073 case "${host_cpu}" in
1075 # Check if inline assembly works
1076 AC_MSG_CHECKING(if the compiler supports gcc inline assembly)
1077 AC_TRY_LINK([],[float f;int i; asm("fld %1\nfistpl %0\n" : "=m" (*&i) : "f" (f));],[AC_MSG_RESULT(yes)
1078 AC_DEFINE(GMX_X86_GCC_INLINE_ASM,,[Enable x86 gcc inline assembly])],[AC_MSG_RESULT(no)])
1079 # Check for MSVC inline assembly
1080 AC_MSG_CHECKING(if the compiler supports MSVC inline assembly)
1081 AC_TRY_LINK([],[float f;int i; _asm { fld f } ; _asm { fistpl i };],[AC_MSG_RESULT(yes)
1082 AC_DEFINE(GMX_X86_MSVC_INLINE_ASM,,[Enable x86 MSVC inline assembly])],[AC_MSG_RESULT(no)])
1091 if test "$with_dlopen" = "yes"; then
1092 AC_MSG_CHECKING(if dlopen supported)
1094 #LDFLAGS="$lt_cv_dlopen_libs $LDFLAGS" #can't make the macro, which is getting lt_cv_dlopen_libs, to work
1095 LDFLAGS_RET=$LDFLAGS
1096 if test "$enable_all_static" = "yes"; then #make sure we test also whether it works static
1097 LDFLAGS="$LDFLAGS -static"
1099 CFLAGS="-I$srcdir/include -DGMX_DLOPEN $CFLAGS"
1100 AC_TRY_LINK([#include "$srcdir/src/gmxlib/vmddlopen.c"],,[AC_MSG_RESULT([yes])\
1101 AC_DEFINE(GMX_DLOPEN,,[Compile with dlopen])],AC_MSG_RESULT([no]))
1103 LDFLAGS=$LDFLAGS_RET
1109 ########################################################################
1110 # Final output stage
1111 ########################################################################
1115 AC_SUBST(INCLUDES) # should be automatic, but doesnt seem to be?
1117 # To tell libraries apart, we use four versions of the name. For instance, libgmx:
1118 # libgmx single prec, no mpi.
1119 # libgmx_d double prec, no mpi.
1120 # libgmx_mpi single prec, mpi.
1121 # libgmx_mpi_d double prec, mpi.
1122 # However, the non-suffixed names are linked to the _mpi and/or _d suffixed
1123 # ones upon installation if that is the only version available.
1125 if test "$enable_mpi" = "yes"; then
1128 if test "$enable_float" = "no"; then
1129 LIBSUFFIX="${LIBSUFFIX}_d"
1133 # Unless the user has explicitly requested a prefix/suffix/transform, we
1134 # use _d on double precision files. Don't add anything for mpi, but at the
1135 # end we tell the user it is possible and smart to do in some cases!
1136 if test "$program_transform_name" = "s,x,x,"; then
1137 name_transform_provided=no;
1138 if test "$enable_float" = "no"; then
1139 program_transform_name="s,\$\$,_d,"
1142 name_transform_provided=yes;
1146 # Use a variable for RPM - this way it can be
1147 # overridden with make RPM=rpm3 rpm
1151 if test "$enable_fahcore" = "yes"; then
1152 CPPFLAGS="$CPPFLAGS -I\$(top_srcdir)/../corewrap -include swindirect.h -DFULLINDIRECT -DUSE_FAH_XDR"
1153 if test "$enable_mpi" = "yes"; then
1154 CFLAGS="$CFLAGS -DMPI"
1157 AM_CONDITIONAL([GMX_FAHCORE],[test "$enable_fahcore" = "yes"])
1160 if test "$enable_all_static" = "yes"; then
1161 LDFLAGS="$LDFLAGS -all-static"
1164 # we have asm source, so this is necessary for automake 1.6
1171 AC_CONFIG_FILES([ Makefile ])
1172 AC_CONFIG_FILES([ src/Makefile ])
1173 AC_CONFIG_FILES([ src/gmxlib/Makefile ])
1174 AC_CONFIG_FILES([ src/gmxlib/libgmx${LIBSUFFIX}.pc:src/gmxlib/libgmx.pc.in ])
1175 AC_CONFIG_FILES([ src/gmxlib/gmx_blas/Makefile ])
1176 AC_CONFIG_FILES([ src/gmxlib/gmx_lapack/Makefile ])
1177 AC_CONFIG_FILES([ src/gmxlib/selection/Makefile ])
1178 AC_CONFIG_FILES([ src/gmxlib/statistics/Makefile ])
1179 AC_CONFIG_FILES([ src/gmxlib/trajana/Makefile ])
1180 AC_CONFIG_FILES([ src/gmxlib/thread_mpi/Makefile ])
1181 AC_CONFIG_FILES([ src/gmxlib/nonbonded/Makefile ])
1182 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_c/Makefile ])
1183 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_ia32_sse/Makefile ])
1184 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_ia32_sse2/Makefile ])
1185 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_x86_64_sse/Makefile ])
1186 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_x86_64_sse2/Makefile ])
1187 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_ppc_altivec/Makefile ])
1188 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_ia64_single/Makefile ])
1189 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_ia64_double/Makefile ])
1190 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_bluegene/Makefile ])
1191 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_power6/Makefile ])
1192 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_f77_single/Makefile ])
1193 AC_CONFIG_FILES([ src/gmxlib/nonbonded/nb_kernel_f77_double/Makefile ])
1194 AC_CONFIG_FILES([ include/Makefile ])
1195 AC_CONFIG_FILES([ include/types/Makefile ])
1196 AC_CONFIG_FILES([ include/thread_mpi/Makefile ])
1197 AC_CONFIG_FILES([ include/thread_mpi/atomic/Makefile ])
1198 AC_CONFIG_FILES([ src/mdlib/Makefile ])
1199 AC_CONFIG_FILES([ src/mdlib/libmd${LIBSUFFIX}.pc:src/mdlib/libmd.pc.in ])
1200 AC_CONFIG_FILES([ src/kernel/Makefile ])
1201 AC_CONFIG_FILES([ src/kernel/libgmxpreprocess${LIBSUFFIX}.pc:src/kernel/libgmxpreprocess.pc.in ])
1202 AC_CONFIG_FILES([ src/tools/Makefile ])
1203 AC_CONFIG_FILES([ src/tools/libgmxana${LIBSUFFIX}.pc:src/tools/libgmxana.pc.in ])
1204 AC_CONFIG_FILES([ src/ngmx/Makefile ])
1205 AC_CONFIG_FILES([ src/contrib/Makefile ])
1206 AC_CONFIG_FILES([ scripts/Makefile ])
1207 AC_CONFIG_FILES([ admin/Makefile ])
1208 AC_CONFIG_FILES([ share/Makefile ])
1209 AC_CONFIG_FILES([ share/tutor/Makefile ])
1210 AC_CONFIG_FILES([ share/tutor/gmxdemo/Makefile ])
1211 AC_CONFIG_FILES([ share/tutor/nmr1/Makefile ])
1212 AC_CONFIG_FILES([ share/tutor/nmr2/Makefile ])
1213 AC_CONFIG_FILES([ share/tutor/water/Makefile ])
1214 AC_CONFIG_FILES([ share/tutor/mixed/Makefile ])
1215 AC_CONFIG_FILES([ share/tutor/methanol/Makefile ])
1216 AC_CONFIG_FILES([ share/tutor/speptide/Makefile ])
1217 AC_CONFIG_FILES([ share/template/Makefile ])
1218 AC_CONFIG_FILES([ share/top/Makefile ])
1219 AC_CONFIG_FILES([ share/top/gmx.ff/Makefile ])
1220 AC_CONFIG_FILES([ share/top/gmx2.ff/Makefile ])
1221 AC_CONFIG_FILES([ share/top/encadv.ff/Makefile ])
1222 AC_CONFIG_FILES([ share/top/encads.ff/Makefile ])
1223 AC_CONFIG_FILES([ share/top/oplsaa.ff/Makefile ])
1224 AC_CONFIG_FILES([ share/top/gromos43a1.ff/Makefile ])
1225 AC_CONFIG_FILES([ share/top/gromos43a2.ff/Makefile ])
1226 AC_CONFIG_FILES([ share/top/gromos45a3.ff/Makefile ])
1227 AC_CONFIG_FILES([ share/top/gromos53a5.ff/Makefile ])
1228 AC_CONFIG_FILES([ share/top/gromos53a6.ff/Makefile ])
1229 AC_CONFIG_FILES([ share/top/charmm27.ff/Makefile ])
1230 AC_CONFIG_FILES([ share/html/Makefile ])
1231 AC_CONFIG_FILES([ share/html/images/Makefile ])
1232 AC_CONFIG_FILES([ share/html/online/Makefile ])
1233 AC_CONFIG_FILES([ man/Makefile man/man1/Makefile man/man7/Makefile ])
1234 AC_CONFIG_FILES([ Doxyfile ])
1243 #########################################################
1244 # Echo some important info, to avoid stupid mistakes
1247 if test "$enable_float" = "no" -a "$name_transform_provided" = "no"; then
1249 echo "* You are compiling a double precision version of Gromacs -"
1250 echo " program names will be suffixed with _d to avoid overwriting single"
1251 echo " precision files. You can override it with --program-suffix"
1254 if test "$name_transform_provided" = "no" -a "$enable_mpi" = "yes"; then
1256 echo "* Seems you are compiling with MPI support. You can install the MPI-"
1257 echo " enabled programs with suffixed names to have both MPI and non-MPI"
1258 echo " versions. This is useful e.g. on supercomputers where you usually"
1259 echo " cannot run MPI-linked programs on the login node."
1260 echo " Set a suffix with e.g. --program-suffix=_mpi (or _mpi_d for double)."
1261 echo " You only need MPI for mdrun, so if you already have non-MPI stuff"
1262 echo " installed you can issue make mdrun; make install-mdrun."
1265 if test "$enable_shared" = "no"; then
1267 echo "* On most platforms you can save 10X space with dynamic libraries, although"
1268 echo " the binaries might be less portable. Why not try --enable-shared ?"
1272 if test "$tmpi_atomics" = "no"; then
1274 echo "* This compiler+CPU combination doesn't have working atomic operations."
1275 echo " Thread support will be unbearably slow: the default number of threads"
1276 echo " is set to 1."
1277 echo " Atomics should work on all but the most obscure CPU+compiler"
1278 echo " combinations; if your system is not obscure (like, for example, x86"
1279 echo " with gcc) please contact the developers."