From b06c4a868e8ea5e4af6a0abbd126d47375bce55a Mon Sep 17 00:00:00 2001 From: Luthaf Date: Fri, 22 Mar 2024 17:59:42 +0100 Subject: [PATCH 01/32] metatensor: scaffold the build system --- configure | 8559 ++++++++++++++++++--------------- configure.ac | 17 + src/.gitignore | 1 + src/metatensor/.gitignore | 12 + src/metatensor/Makefile | 4 + src/metatensor/README.md | 68 + src/metatensor/metatensor.cpp | 80 + src/metatensor/module.type | 1 + src/metatensor/patch-torch.sh | 45 + 9 files changed, 4983 insertions(+), 3804 deletions(-) create mode 100644 src/metatensor/.gitignore create mode 100644 src/metatensor/Makefile create mode 100644 src/metatensor/README.md create mode 100644 src/metatensor/metatensor.cpp create mode 100644 src/metatensor/module.type create mode 100755 src/metatensor/patch-torch.sh diff --git a/configure b/configure index 8f28351035..952b900b1e 100755 --- a/configure +++ b/configure @@ -1,9 +1,10 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for PLUMED 2. +# Generated by GNU Autoconf 2.72 for PLUMED 2. # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, +# Inc. # # # This configure script is free software; the Free Software Foundation @@ -14,63 +15,65 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( +else case e in #( + e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -79,13 +82,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -94,43 +90,27 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as `sh COMMAND' +# We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. @@ -151,26 +131,28 @@ case $- in # (((( esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 +# out after a failed 'exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( +else case e in #( + e) case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi " @@ -185,42 +167,54 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : -else - exitcode=1; echo positional parameters were not saved. +else case e in #( + e) exitcode=1; echo positional parameters were not saved. ;; +esac fi test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" + if (eval "$as_required") 2>/dev/null +then : as_have_required=yes -else - as_have_required=no +else case e in #( + e) as_have_required=no ;; +esac fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base + as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : break 2 fi fi @@ -228,14 +222,22 @@ fi esac as_found=false done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } IFS=$as_save_IFS +if $as_found +then : + +else case e in #( + e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi ;; +esac +fi - if test "x$CONFIG_SHELL" != x; then : + if test "x$CONFIG_SHELL" != x +then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also @@ -252,25 +254,27 @@ case $- in # (((( esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +# out after a failed 'exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 -fi +fi ;; +esac fi fi SHELL=${CONFIG_SHELL-/bin/sh} @@ -291,6 +295,7 @@ as_fn_unset () } as_unset=as_fn_unset + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -322,7 +327,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -331,7 +336,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -370,16 +375,18 @@ as_fn_executable_p () # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else - as_fn_append () +else case e in #( + e) as_fn_append () { eval $1=\$$1\$2 - } + } ;; +esac fi # as_fn_append # as_fn_arith ARG... @@ -387,16 +394,18 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else - as_fn_arith () +else case e in #( + e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } + } ;; +esac fi # as_fn_arith @@ -410,9 +419,9 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -439,7 +448,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -472,6 +481,8 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits /[$]LINENO/= ' <$as_myself | sed ' + t clear + :clear s/[$]LINENO.*/&-/ t lineno b @@ -483,7 +494,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall @@ -497,6 +508,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits exit } + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -510,6 +525,12 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -521,9 +542,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -548,10 +569,12 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated test -n "$DJDIR" || exec 7<&0 /dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -908,9 +924,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1063,6 +1079,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1112,9 +1137,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1128,9 +1153,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1158,8 +1183,8 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" + -*) as_fn_error $? "unrecognized option: '$ac_option' +Try '$0 --help' for more information" ;; *=*) @@ -1167,16 +1192,16 @@ Try \`$0 --help' for more information" # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + as_fn_error $? "invalid variable name: '$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; @@ -1192,7 +1217,7 @@ if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1200,7 +1225,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1217,7 +1242,7 @@ do as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done -# There might be people who depend on the old broken behavior: `$host' +# There might be people who depend on the old broken behavior: '$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias @@ -1256,7 +1281,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | +printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1285,7 +1310,7 @@ if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` @@ -1313,7 +1338,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures PLUMED 2 to adapt to many kinds of systems. +'configure' configures PLUMED 2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1327,11 +1352,11 @@ Configuration: --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages + -q, --quiet, --silent do not print 'checking ...' messages --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' + -C, --config-cache alias for '--cache-file=config.cache' -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] + --srcdir=DIR find the sources in DIR [configure dir or '..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @@ -1339,10 +1364,10 @@ Installation directories: --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. For better control, use the options below. @@ -1353,6 +1378,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1452,6 +1478,7 @@ Optional Features: --enable-af_cuda enable search for arrayfire_cuda, default: no --enable-af_cpu enable search for arrayfire_cpu, default: no --enable-libtorch enable search for libtorch, default: no + --enable-metatensor enable search for metatensor, default: no --disable-openmp do not use OpenMP Some influential environment variables: @@ -1479,9 +1506,8 @@ Some influential environment variables: CFLAGS C compiler flags FC Fortran compiler command FCFLAGS Fortran compiler flags - CXXCPP C++ preprocessor -Use these variables to override the choices made by `configure' or to help +Use these variables to override the choices made by 'configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. @@ -1500,9 +1526,9 @@ if test "$ac_init_help" = "recursive"; then case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1530,7 +1556,8 @@ esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive @@ -1538,7 +1565,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1548,9 +1575,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF PLUMED configure 2 -generated by GNU Autoconf 2.69 +generated by GNU Autoconf 2.72 -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2023 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1567,14 +1594,14 @@ fi ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1582,17 +1609,19 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 + ac_retval=1 ;; +esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval @@ -1605,14 +1634,14 @@ fi ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1620,17 +1649,19 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 + ac_retval=1 ;; +esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval @@ -1643,14 +1674,14 @@ fi ac_fn_fc_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1658,17 +1689,19 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_fc_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 + ac_retval=1 ;; +esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval @@ -1681,14 +1714,14 @@ fi ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1696,20 +1729,22 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 + ac_retval=1 ;; +esac fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would @@ -1727,14 +1762,14 @@ fi ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1742,20 +1777,22 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 + ac_retval=1 ;; +esac fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would @@ -1769,8 +1806,8 @@ fi # ac_fn_cxx_try_run LINENO # ------------------------ -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. ac_fn_cxx_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack @@ -1780,28 +1817,30 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: program exited with status $ac_status" >&5 + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=$ac_status + ac_retval=$ac_status ;; +esac fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno @@ -1809,130 +1848,6 @@ fi } # ac_fn_cxx_try_run -# ac_fn_cxx_try_cpp LINENO -# ------------------------ -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_cpp - -# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES -# --------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_cxx_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_cxx_check_header_mongrel - # ac_fn_cxx_check_header_compile LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in @@ -1940,37 +1855,61 @@ fi ac_fn_cxx_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : eval "$3=yes" -else - eval "$3=no" +else case e in #( + e) eval "$3=no" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_compile +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by PLUMED $as_me 2, which was -generated by GNU Autoconf 2.69. Invocation command line was +generated by GNU Autoconf 2.72. Invocation command line was - $ $0 $@ + $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log @@ -2003,8 +1942,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS @@ -2039,7 +1982,7 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; @@ -2074,11 +2017,13 @@ done # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo - $as_echo "## ---------------- ## + printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo @@ -2089,8 +2034,8 @@ trap 'exit_status=$? case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -2114,7 +2059,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ) echo - $as_echo "## ----------------- ## + printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo @@ -2122,14 +2067,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## + printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo @@ -2137,15 +2082,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - $as_echo "## ----------- ## + printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo @@ -2153,8 +2098,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; echo fi test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && @@ -2168,65 +2113,50 @@ ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h -$as_echo "/* confdefs.h */" > confdefs.h +printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac + ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" + +for ac_site_file in $ac_site_files do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } fi done @@ -2234,121 +2164,672 @@ if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## +# Test code for whether the C++ compiler supports C++98 (global declarations) +ac_cxx_conftest_cxx98_globals=' +// Does the compiler advertise C++98 conformance? +#if !defined __cplusplus || __cplusplus < 199711L +# error "Compiler does not advertise C++98 conformance" +#endif -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu +// These inclusions are to reject old compilers that +// lack the unsuffixed header files. +#include +#include +// and are *not* freestanding headers in C++98. +extern void assert (int); +namespace std { + extern int strcmp (const char *, const char *); +} +// Namespaces, exceptions, and templates were all added after "C++ 2.0". +using std::exception; +using std::strcmp; -################################################################## -# In order to add m4 macros, put then in a m4 directory and include them here. -# E.g.: -# m4_include([./m4/m4_ax_openmp.m4]) +namespace { -################################################################## -# Here we define a few useful macros +void test_exception_syntax() +{ + try { + throw "test"; + } catch (const char *s) { + // Extra parentheses suppress a warning when building autoconf itself, + // due to lint rules shared with more typical C programs. + assert (!(strcmp) (s, "test")); + } +} -# PLUMED_CONFIG_ENABLE(variablename,optionname,doc,default) -# notice that variablename and optionname are likely identical, -# they just need to be different with optionname contains a "-" -# (not allowed in shell variable names) +template struct test_template +{ + T const val; + explicit test_template(T t) : val(t) {} + template T add(U u) { return static_cast(u) + val; } +}; +} // anonymous namespace +' -# PLUMED_CHECK_CXXFLAG(flag) -# use it to check if a flag is available on this compiler +# Test code for whether the C++ compiler supports C++98 (body of main) +ac_cxx_conftest_cxx98_main=' + assert (argc); + assert (! argv[0]); +{ + test_exception_syntax (); + test_template tt (2.0); + assert (tt.add (4) == 6.0); + assert (true && !false); +} +' +# Test code for whether the C++ compiler supports C++11 (global declarations) +ac_cxx_conftest_cxx11_globals=' +// Does the compiler advertise C++ 2011 conformance? +#if !defined __cplusplus || __cplusplus < 201103L +# error "Compiler does not advertise C++11 conformance" +#endif -# PLUMED_CHECK_CFLAG(flag) -# use it to check if a flag is available on this compiler +namespace cxx11test +{ + constexpr int get_val() { return 20; } + struct testinit + { + int i; + double d; + }; -# PLUMED_CHECK_LDFLAGS(flag) -# use it to check if a flag is available on this compiler + class delegate + { + public: + delegate(int n) : n(n) {} + delegate(): delegate(2354) {} + virtual int getval() { return this->n; }; + protected: + int n; + }; -# PLUMED_SEARCH_LIBS(function,search-libs[,action-if-found][,action-if-not-found][,other-libraries]) -# same as AC_SEARCH_LIBS, but does not try any library unless $libsearch=true -# Should be used instead of AC_SEARCH_LIBS in order to make --disable-libsearch work correctly + class overridden : public delegate + { + public: + overridden(int n): delegate(n) {} + virtual int getval() override final { return this->n * 2; } + }; + class nocopy + { + public: + nocopy(int i): i(i) {} + nocopy() = default; + nocopy(const nocopy&) = delete; + nocopy & operator=(const nocopy&) = delete; + private: + int i; + }; + + // for testing lambda expressions + template Ret eval(Fn f, Ret v) + { + return f(v); + } -# PLUMED_CHECK_PACKAGE(header,function,define[,library]) -# first we check if the header is present. if so, we check if the given function can be found. + // for testing variadic templates and trailing return types + template auto sum(V first) -> V + { + return first; + } + template auto sum(V first, Args... rest) -> V + { + return first + sum(rest...); + } +} +' + +# Test code for whether the C++ compiler supports C++11 (body of main) +ac_cxx_conftest_cxx11_main=' +{ + // Test auto and decltype + auto a1 = 6538; + auto a2 = 48573953.4; + auto a3 = "String literal"; + + int total = 0; + for (auto i = a3; *i; ++i) { total += *i; } + + decltype(a2) a4 = 34895.034; +} +{ + // Test constexpr + short sa[cxx11test::get_val()] = { 0 }; +} +{ + // Test initializer lists + cxx11test::testinit il = { 4323, 435234.23544 }; +} +{ + // Test range-based for + int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, + 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; + for (auto &x : array) { x += 23; } +} +{ + // Test lambda expressions + using cxx11test::eval; + assert (eval ([](int x) { return x*2; }, 21) == 42); + double d = 2.0; + assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); + assert (d == 5.0); + assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); + assert (d == 5.0); +} +{ + // Test use of variadic templates + using cxx11test::sum; + auto a = sum(1); + auto b = sum(1, 2); + auto c = sum(1.0, 2.0, 3.0); +} +{ + // Test constructor delegation + cxx11test::delegate d1; + cxx11test::delegate d2(); + cxx11test::delegate d3(45); +} +{ + // Test override and final + cxx11test::overridden o1(55464); +} +{ + // Test nullptr + char *c = nullptr; +} +{ + // Test template brackets + test_template<::test_template> v(test_template(12)); +} +{ + // Unicode literals + char const *utf8 = u8"UTF-8 string \u2500"; + char16_t const *utf16 = u"UTF-8 string \u2500"; + char32_t const *utf32 = U"UTF-32 string \u2500"; +} +' + +# Test code for whether the C compiler supports C++11 (complete). +ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} +${ac_cxx_conftest_cxx11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_cxx_conftest_cxx98_main} + ${ac_cxx_conftest_cxx11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C++98 (complete). +ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_cxx_conftest_cxx98_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (char **p, int i) +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +/* Does the compiler advertise C99 conformance? */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +// See if C++-style comments work. + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); +extern void free (void *); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + // Work around memory leak warnings. + free (ia); + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +/* Does the compiler advertise C11 conformance? */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_cxx_list " stdio.h stdio_h HAVE_STDIO_H" +as_fn_append ac_header_cxx_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_cxx_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_cxx_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_cxx_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_cxx_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_cxx_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_cxx_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_cxx_list " unistd.h unistd_h HAVE_UNISTD_H" +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +################################################################## +# In order to add m4 macros, put then in a m4 directory and include them here. +# E.g.: +# m4_include([./m4/m4_ax_openmp.m4]) + +################################################################## +# Here we define a few useful macros + +# PLUMED_CONFIG_ENABLE(variablename,optionname,doc,default) +# notice that variablename and optionname are likely identical, +# they just need to be different with optionname contains a "-" +# (not allowed in shell variable names) + + +# PLUMED_CHECK_CXXFLAG(flag) +# use it to check if a flag is available on this compiler + + +# PLUMED_CHECK_CFLAG(flag) +# use it to check if a flag is available on this compiler + + +# PLUMED_CHECK_LDFLAGS(flag) +# use it to check if a flag is available on this compiler + + +# PLUMED_SEARCH_LIBS(function,search-libs[,action-if-found][,action-if-not-found][,other-libraries]) +# same as AC_SEARCH_LIBS, but does not try any library unless $libsearch=true +# Should be used instead of AC_SEARCH_LIBS in order to make --disable-libsearch work correctly + + +# PLUMED_CHECK_PACKAGE(header,function,define[,library]) +# first we check if the header is present. if so, we check if the given function can be found. # if it cannot be found and the fourth argument (library) has been supplied, we look for it # in the library. finally, we set the define flag @@ -2363,12 +2844,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu ################################################################## -{ $as_echo "$as_me:${as_lineno-$LINENO}: Optional modules are disabled by default" >&5 -$as_echo "$as_me: Optional modules are disabled by default" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Optional modules are disabled by default" >&5 +printf "%s\n" "$as_me: Optional modules are disabled by default" >&6;} rm -f src/*.on src/*.off # Check whether --enable-modules was given. -if test "${enable_modules+set}" = set; then : +if test ${enable_modules+y} +then : enableval=$enable_modules; rm -f src/*.on src/*.off if test "${enableval}" = yes ; then @@ -2381,18 +2863,18 @@ if test "${enable_modules+set}" = set; then : do case "$modules_mod" in (none) - { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling all optional modules" >&5 -$as_echo "$as_me: Disabling all optional modules" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling all optional modules" >&5 +printf "%s\n" "$as_me: Disabling all optional modules" >&6;} rm -f src/*.off src/*.on touch $(grep default-on src/*/module.type | sed "s|/module.type:.*|.off|") ;; (all) - { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling all optional modules" >&5 -$as_echo "$as_me: Enabling all optional modules" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling all optional modules" >&5 +printf "%s\n" "$as_me: Enabling all optional modules" >&6;} rm -f src/*.off src/*.off touch $(grep default-off src/*/module.type | sed "s|/module.type:.*|.on|") ;; (reset) - { $as_echo "$as_me:${as_lineno-$LINENO}: Resetting modules to default" >&5 -$as_echo "$as_me: Resetting modules to default" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Resetting modules to default" >&5 +printf "%s\n" "$as_me: Resetting modules to default" >&6;} rm -f src/*.on src/*.off ;; (-*) modules_mod=`echo "${modules_mod}" | sed "s|-||"` @@ -2402,8 +2884,8 @@ $as_echo "$as_me: Resetting modules to default" >&6;} if grep -q always src/$modules_mod/module.type ; then as_fn_error $? "trying to remove module $modules_mod which is always enabled" "$LINENO" 5 fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling module ${modules_mod}" >&5 -$as_echo "$as_me: Disabling module ${modules_mod}" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling module ${modules_mod}" >&5 +printf "%s\n" "$as_me: Disabling module ${modules_mod}" >&6;} rm -f src/$modules_mod.on touch src/$modules_mod.off ;; (+*) @@ -2411,16 +2893,16 @@ $as_echo "$as_me: Disabling module ${modules_mod}" >&6;} if test ! -f src/$modules_mod/module.type ; then as_fn_error $? "trying to add module $modules_mod which does not exist" "$LINENO" 5 fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling module ${modules_mod}" >&5 -$as_echo "$as_me: Enabling module ${modules_mod}" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling module ${modules_mod}" >&5 +printf "%s\n" "$as_me: Enabling module ${modules_mod}" >&6;} rm -f src/$modules_mod.off touch src/$modules_mod.on ;; (*) if test ! -f src/$modules_mod/module.type ; then as_fn_error $? "trying to add module $modules_mod which does not exist" "$LINENO" 5 fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling module ${modules_mod}" >&5 -$as_echo "$as_me: Enabling module ${modules_mod}" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling module ${modules_mod}" >&5 +printf "%s\n" "$as_me: Enabling module ${modules_mod}" >&6;} rm -f src/$modules_mod.off touch src/$modules_mod.on ;; esac @@ -2439,18 +2921,20 @@ fi libsearch= # Check whether --enable-libsearch was given. -if test "${enable_libsearch+set}" = set; then : +if test ${enable_libsearch+y} +then : enableval=$enable_libsearch; case "${enableval}" in (yes) libsearch=true ;; (no) libsearch=false ;; (*) as_fn_error $? "wrong argument to --enable-libsearch" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) libsearch=true ;; (no) libsearch=false ;; esac - + ;; +esac fi @@ -2461,18 +2945,20 @@ fi static_patch= # Check whether --enable-static-patch was given. -if test "${enable_static_patch+set}" = set; then : +if test ${enable_static_patch+y} +then : enableval=$enable_static_patch; case "${enableval}" in (yes) static_patch=true ;; (no) static_patch=false ;; (*) as_fn_error $? "wrong argument to --enable-static-patch" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) static_patch=true ;; (no) static_patch=false ;; esac - + ;; +esac fi @@ -2480,77 +2966,86 @@ fi doc= # Check whether --enable-doc was given. -if test "${enable_doc+set}" = set; then : +if test ${enable_doc+y} +then : enableval=$enable_doc; case "${enableval}" in (yes) doc=true ;; (no) doc=false ;; (*) as_fn_error $? "wrong argument to --enable-doc" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) doc=true ;; (no) doc=false ;; esac - + ;; +esac fi pdfdoc= # Check whether --enable-pdfdoc was given. -if test "${enable_pdfdoc+set}" = set; then : +if test ${enable_pdfdoc+y} +then : enableval=$enable_pdfdoc; case "${enableval}" in (yes) pdfdoc=true ;; (no) pdfdoc=false ;; (*) as_fn_error $? "wrong argument to --enable-pdfdoc" "$LINENO" 5 ;; esac -else - case "no" in +else case e in #( + e) case "no" in (yes) pdfdoc=true ;; (no) pdfdoc=false ;; esac - + ;; +esac fi debug= # Check whether --enable-debug was given. -if test "${enable_debug+set}" = set; then : +if test ${enable_debug+y} +then : enableval=$enable_debug; case "${enableval}" in (yes) debug=true ;; (no) debug=false ;; (*) as_fn_error $? "wrong argument to --enable-debug" "$LINENO" 5 ;; esac -else - case "no" in +else case e in #( + e) case "no" in (yes) debug=true ;; (no) debug=false ;; esac - + ;; +esac fi gcov= # Check whether --enable-gcov was given. -if test "${enable_gcov+set}" = set; then : +if test ${enable_gcov+y} +then : enableval=$enable_gcov; case "${enableval}" in (yes) gcov=true ;; (no) gcov=false ;; (*) as_fn_error $? "wrong argument to --enable-gcov" "$LINENO" 5 ;; esac -else - case "no" in +else case e in #( + e) case "no" in (yes) gcov=true ;; (no) gcov=false ;; esac - + ;; +esac fi # Check whether --enable-cxx was given. -if test "${enable_cxx+set}" = set; then : +if test ${enable_cxx+y} +then : enableval=$enable_cxx; case "${enableval}" in (11) cxx_level=17 ;; @@ -2561,665 +3056,758 @@ if test "${enable_cxx+set}" = set; then : (none) cxx_level="" ;; (*) as_fn_error $? "cxx level not supported" "$LINENO" 5 esac - { $as_echo "$as_me:${as_lineno-$LINENO}: Selected C++ level: $cxx_level" >&5 -$as_echo "$as_me: Selected C++ level: $cxx_level" >&6;} - -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Selected C++ level: $cxx_level" >&5 +printf "%s\n" "$as_me: Selected C++ level: $cxx_level" >&6;} +else case e in #( + e) cxx_level="17" - + ;; +esac fi basic_warnings= # Check whether --enable-basic-warnings was given. -if test "${enable_basic_warnings+set}" = set; then : +if test ${enable_basic_warnings+y} +then : enableval=$enable_basic_warnings; case "${enableval}" in (yes) basic_warnings=true ;; (no) basic_warnings=false ;; (*) as_fn_error $? "wrong argument to --enable-basic-warnings" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) basic_warnings=true ;; (no) basic_warnings=false ;; esac - + ;; +esac fi fussy= # Check whether --enable-fussy was given. -if test "${enable_fussy+set}" = set; then : +if test ${enable_fussy+y} +then : enableval=$enable_fussy; case "${enableval}" in (yes) fussy=true ;; (no) fussy=false ;; (*) as_fn_error $? "wrong argument to --enable-fussy" "$LINENO" 5 ;; esac -else - case "no" in +else case e in #( + e) case "no" in (yes) fussy=true ;; (no) fussy=false ;; esac - + ;; +esac fi debug_glibcxx= # Check whether --enable-debug-glibcxx was given. -if test "${enable_debug_glibcxx+set}" = set; then : +if test ${enable_debug_glibcxx+y} +then : enableval=$enable_debug_glibcxx; case "${enableval}" in (yes) debug_glibcxx=true ;; (no) debug_glibcxx=false ;; (*) as_fn_error $? "wrong argument to --enable-debug-glibcxx" "$LINENO" 5 ;; esac -else - case "no" in +else case e in #( + e) case "no" in (yes) debug_glibcxx=true ;; (no) debug_glibcxx=false ;; esac - + ;; +esac fi shared= # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : +if test ${enable_shared+y} +then : enableval=$enable_shared; case "${enableval}" in (yes) shared=true ;; (no) shared=false ;; (*) as_fn_error $? "wrong argument to --enable-shared" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) shared=true ;; (no) shared=false ;; esac - + ;; +esac fi dependency_tracking= # Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : +if test ${enable_dependency_tracking+y} +then : enableval=$enable_dependency_tracking; case "${enableval}" in (yes) dependency_tracking=true ;; (no) dependency_tracking=false ;; (*) as_fn_error $? "wrong argument to --enable-dependency-tracking" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) dependency_tracking=true ;; (no) dependency_tracking=false ;; esac - + ;; +esac fi no_gnu_unique= # Check whether --enable-no-gnu-unique was given. -if test "${enable_no_gnu_unique+set}" = set; then : +if test ${enable_no_gnu_unique+y} +then : enableval=$enable_no_gnu_unique; case "${enableval}" in (yes) no_gnu_unique=true ;; (no) no_gnu_unique=false ;; (*) as_fn_error $? "wrong argument to --enable-no-gnu-unique" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) no_gnu_unique=true ;; (no) no_gnu_unique=false ;; esac - + ;; +esac fi rpath= # Check whether --enable-rpath was given. -if test "${enable_rpath+set}" = set; then : +if test ${enable_rpath+y} +then : enableval=$enable_rpath; case "${enableval}" in (yes) rpath=true ;; (no) rpath=false ;; (*) as_fn_error $? "wrong argument to --enable-rpath" "$LINENO" 5 ;; esac -else - case "no" in +else case e in #( + e) case "no" in (yes) rpath=true ;; (no) rpath=false ;; esac - + ;; +esac fi absolute_soname= # Check whether --enable-absolute-soname was given. -if test "${enable_absolute_soname+set}" = set; then : +if test ${enable_absolute_soname+y} +then : enableval=$enable_absolute_soname; case "${enableval}" in (yes) absolute_soname=true ;; (no) absolute_soname=false ;; (*) as_fn_error $? "wrong argument to --enable-absolute-soname" "$LINENO" 5 ;; esac -else - case "no" in +else case e in #( + e) case "no" in (yes) absolute_soname=true ;; (no) absolute_soname=false ;; esac - + ;; +esac fi absolute_install_name= # Check whether --enable-absolute-install-name was given. -if test "${enable_absolute_install_name+set}" = set; then : +if test ${enable_absolute_install_name+y} +then : enableval=$enable_absolute_install_name; case "${enableval}" in (yes) absolute_install_name=true ;; (no) absolute_install_name=false ;; (*) as_fn_error $? "wrong argument to --enable-absolute-install-name" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) absolute_install_name=true ;; (no) absolute_install_name=false ;; esac - + ;; +esac fi loader_path= # Check whether --enable-loader-path was given. -if test "${enable_loader_path+set}" = set; then : +if test ${enable_loader_path+y} +then : enableval=$enable_loader_path; case "${enableval}" in (yes) loader_path=true ;; (no) loader_path=false ;; (*) as_fn_error $? "wrong argument to --enable-loader-path" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) loader_path=true ;; (no) loader_path=false ;; esac - + ;; +esac fi bsymbolic= # Check whether --enable-bsymbolic was given. -if test "${enable_bsymbolic+set}" = set; then : +if test ${enable_bsymbolic+y} +then : enableval=$enable_bsymbolic; case "${enableval}" in (yes) bsymbolic=true ;; (no) bsymbolic=false ;; (*) as_fn_error $? "wrong argument to --enable-bsymbolic" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) bsymbolic=true ;; (no) bsymbolic=false ;; esac - + ;; +esac fi ld_r= # Check whether --enable-ld-r was given. -if test "${enable_ld_r+set}" = set; then : +if test ${enable_ld_r+y} +then : enableval=$enable_ld_r; case "${enableval}" in (yes) ld_r=true ;; (no) ld_r=false ;; (*) as_fn_error $? "wrong argument to --enable-ld-r" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) ld_r=true ;; (no) ld_r=false ;; esac - + ;; +esac fi ar_cr= # Check whether --enable-ar-cr was given. -if test "${enable_ar_cr+set}" = set; then : +if test ${enable_ar_cr+y} +then : enableval=$enable_ar_cr; case "${enableval}" in (yes) ar_cr=true ;; (no) ar_cr=false ;; (*) as_fn_error $? "wrong argument to --enable-ar-cr" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) ar_cr=true ;; (no) ar_cr=false ;; esac - + ;; +esac fi static_archive= # Check whether --enable-static-archive was given. -if test "${enable_static_archive+set}" = set; then : +if test ${enable_static_archive+y} +then : enableval=$enable_static_archive; case "${enableval}" in (yes) static_archive=true ;; (no) static_archive=false ;; (*) as_fn_error $? "wrong argument to --enable-static-archive" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) static_archive=true ;; (no) static_archive=false ;; esac - + ;; +esac fi asmjit= # Check whether --enable-asmjit was given. -if test "${enable_asmjit+set}" = set; then : +if test ${enable_asmjit+y} +then : enableval=$enable_asmjit; case "${enableval}" in (yes) asmjit=true ;; (no) asmjit=false ;; (*) as_fn_error $? "wrong argument to --enable-asmjit" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) asmjit=true ;; (no) asmjit=false ;; esac - + ;; +esac fi mpi= # Check whether --enable-mpi was given. -if test "${enable_mpi+set}" = set; then : +if test ${enable_mpi+y} +then : enableval=$enable_mpi; case "${enableval}" in (yes) mpi=true ;; (no) mpi=false ;; (*) as_fn_error $? "wrong argument to --enable-mpi" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) mpi=true ;; (no) mpi=false ;; esac - + ;; +esac fi external_lapack= # Check whether --enable-external-lapack was given. -if test "${enable_external_lapack+set}" = set; then : +if test ${enable_external_lapack+y} +then : enableval=$enable_external_lapack; case "${enableval}" in (yes) external_lapack=true ;; (no) external_lapack=false ;; (*) as_fn_error $? "wrong argument to --enable-external-lapack" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) external_lapack=true ;; (no) external_lapack=false ;; esac - + ;; +esac fi external_blas= # Check whether --enable-external-blas was given. -if test "${enable_external_blas+set}" = set; then : +if test ${enable_external_blas+y} +then : enableval=$enable_external_blas; case "${enableval}" in (yes) external_blas=true ;; (no) external_blas=false ;; (*) as_fn_error $? "wrong argument to --enable-external-blas" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) external_blas=true ;; (no) external_blas=false ;; esac - + ;; +esac fi molfile_plugins= # Check whether --enable-molfile-plugins was given. -if test "${enable_molfile_plugins+set}" = set; then : +if test ${enable_molfile_plugins+y} +then : enableval=$enable_molfile_plugins; case "${enableval}" in (yes) molfile_plugins=true ;; (no) molfile_plugins=false ;; (*) as_fn_error $? "wrong argument to --enable-molfile-plugins" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) molfile_plugins=true ;; (no) molfile_plugins=false ;; esac - + ;; +esac fi external_molfile_plugins= # Check whether --enable-external-molfile-plugins was given. -if test "${enable_external_molfile_plugins+set}" = set; then : +if test ${enable_external_molfile_plugins+y} +then : enableval=$enable_external_molfile_plugins; case "${enableval}" in (yes) external_molfile_plugins=true ;; (no) external_molfile_plugins=false ;; (*) as_fn_error $? "wrong argument to --enable-external-molfile-plugins" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) external_molfile_plugins=true ;; (no) external_molfile_plugins=false ;; esac - + ;; +esac fi zlib= # Check whether --enable-zlib was given. -if test "${enable_zlib+set}" = set; then : +if test ${enable_zlib+y} +then : enableval=$enable_zlib; case "${enableval}" in (yes) zlib=true ;; (no) zlib=false ;; (*) as_fn_error $? "wrong argument to --enable-zlib" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) zlib=true ;; (no) zlib=false ;; esac - + ;; +esac fi dlopen= # Check whether --enable-dlopen was given. -if test "${enable_dlopen+set}" = set; then : +if test ${enable_dlopen+y} +then : enableval=$enable_dlopen; case "${enableval}" in (yes) dlopen=true ;; (no) dlopen=false ;; (*) as_fn_error $? "wrong argument to --enable-dlopen" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) dlopen=true ;; (no) dlopen=false ;; esac - + ;; +esac fi dladdr= # Check whether --enable-dladdr was given. -if test "${enable_dladdr+set}" = set; then : +if test ${enable_dladdr+y} +then : enableval=$enable_dladdr; case "${enableval}" in (yes) dladdr=true ;; (no) dladdr=false ;; (*) as_fn_error $? "wrong argument to --enable-dladdr" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) dladdr=true ;; (no) dladdr=false ;; esac - + ;; +esac fi rtld_default= # Check whether --enable-rtld_default was given. -if test "${enable_rtld_default+set}" = set; then : +if test ${enable_rtld_default+y} +then : enableval=$enable_rtld_default; case "${enableval}" in (yes) rtld_default=true ;; (no) rtld_default=false ;; (*) as_fn_error $? "wrong argument to --enable-rtld_default" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) rtld_default=true ;; (no) rtld_default=false ;; esac - + ;; +esac fi subprocess= # Check whether --enable-subprocess was given. -if test "${enable_subprocess+set}" = set; then : +if test ${enable_subprocess+y} +then : enableval=$enable_subprocess; case "${enableval}" in (yes) subprocess=true ;; (no) subprocess=false ;; (*) as_fn_error $? "wrong argument to --enable-subprocess" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) subprocess=true ;; (no) subprocess=false ;; esac - + ;; +esac fi execinfo= # Check whether --enable-execinfo was given. -if test "${enable_execinfo+set}" = set; then : +if test ${enable_execinfo+y} +then : enableval=$enable_execinfo; case "${enableval}" in (yes) execinfo=true ;; (no) execinfo=false ;; (*) as_fn_error $? "wrong argument to --enable-execinfo" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) execinfo=true ;; (no) execinfo=false ;; esac - + ;; +esac fi gsl= # Check whether --enable-gsl was given. -if test "${enable_gsl+set}" = set; then : +if test ${enable_gsl+y} +then : enableval=$enable_gsl; case "${enableval}" in (yes) gsl=true ;; (no) gsl=false ;; (*) as_fn_error $? "wrong argument to --enable-gsl" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) gsl=true ;; (no) gsl=false ;; esac - + ;; +esac fi boost_graph= # Check whether --enable-boost_graph was given. -if test "${enable_boost_graph+set}" = set; then : +if test ${enable_boost_graph+y} +then : enableval=$enable_boost_graph; case "${enableval}" in (yes) boost_graph=true ;; (no) boost_graph=false ;; (*) as_fn_error $? "wrong argument to --enable-boost_graph" "$LINENO" 5 ;; esac -else - case "no" in +else case e in #( + e) case "no" in (yes) boost_graph=true ;; (no) boost_graph=false ;; esac - + ;; +esac fi boost_serialization= # Check whether --enable-boost_serialization was given. -if test "${enable_boost_serialization+set}" = set; then : +if test ${enable_boost_serialization+y} +then : enableval=$enable_boost_serialization; case "${enableval}" in (yes) boost_serialization=true ;; (no) boost_serialization=false ;; (*) as_fn_error $? "wrong argument to --enable-boost_serialization" "$LINENO" 5 ;; esac -else - case "no" in +else case e in #( + e) case "no" in (yes) boost_serialization=true ;; (no) boost_serialization=false ;; esac - + ;; +esac fi fftw= # Check whether --enable-fftw was given. -if test "${enable_fftw+set}" = set; then : +if test ${enable_fftw+y} +then : enableval=$enable_fftw; case "${enableval}" in (yes) fftw=true ;; (no) fftw=false ;; (*) as_fn_error $? "wrong argument to --enable-fftw" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) fftw=true ;; (no) fftw=false ;; esac - + ;; +esac fi python= # Check whether --enable-python was given. -if test "${enable_python+set}" = set; then : +if test ${enable_python+y} +then : enableval=$enable_python; case "${enableval}" in (yes) python=true ;; (no) python=false ;; (*) as_fn_error $? "wrong argument to --enable-python" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) python=true ;; (no) python=false ;; esac - + ;; +esac fi pycv= # Check whether --enable-pycv was given. -if test "${enable_pycv+set}" = set; then : +if test ${enable_pycv+y} +then : enableval=$enable_pycv; case "${enableval}" in (yes) pycv=true ;; (no) pycv=false ;; (*) as_fn_error $? "wrong argument to --enable-pycv" "$LINENO" 5 ;; esac -else - case "yes" in +else case e in #( + e) case "yes" in (yes) pycv=true ;; (no) pycv=false ;; esac - + ;; +esac fi af_ocl= # Check whether --enable-af_ocl was given. -if test "${enable_af_ocl+set}" = set; then : +if test ${enable_af_ocl+y} +then : enableval=$enable_af_ocl; case "${enableval}" in (yes) af_ocl=true ;; (no) af_ocl=false ;; (*) as_fn_error $? "wrong argument to --enable-af_ocl" "$LINENO" 5 ;; esac -else - case "no" in +else case e in #( + e) case "no" in (yes) af_ocl=true ;; (no) af_ocl=false ;; esac - + ;; +esac fi af_cuda= # Check whether --enable-af_cuda was given. -if test "${enable_af_cuda+set}" = set; then : +if test ${enable_af_cuda+y} +then : enableval=$enable_af_cuda; case "${enableval}" in (yes) af_cuda=true ;; (no) af_cuda=false ;; (*) as_fn_error $? "wrong argument to --enable-af_cuda" "$LINENO" 5 ;; esac -else - case "no" in +else case e in #( + e) case "no" in (yes) af_cuda=true ;; (no) af_cuda=false ;; esac - + ;; +esac fi af_cpu= # Check whether --enable-af_cpu was given. -if test "${enable_af_cpu+set}" = set; then : +if test ${enable_af_cpu+y} +then : enableval=$enable_af_cpu; case "${enableval}" in (yes) af_cpu=true ;; (no) af_cpu=false ;; (*) as_fn_error $? "wrong argument to --enable-af_cpu" "$LINENO" 5 ;; esac -else - case "no" in +else case e in #( + e) case "no" in (yes) af_cpu=true ;; (no) af_cpu=false ;; esac - + ;; +esac fi libtorch= # Check whether --enable-libtorch was given. -if test "${enable_libtorch+set}" = set; then : +if test ${enable_libtorch+y} +then : enableval=$enable_libtorch; case "${enableval}" in (yes) libtorch=true ;; (no) libtorch=false ;; (*) as_fn_error $? "wrong argument to --enable-libtorch" "$LINENO" 5 ;; esac -else - case "no" in +else case e in #( + e) case "no" in (yes) libtorch=true ;; (no) libtorch=false ;; esac - + ;; +esac fi #added by luigibonati +metatensor= +# Check whether --enable-metatensor was given. +if test ${enable_metatensor+y} +then : + enableval=$enable_metatensor; case "${enableval}" in + (yes) metatensor=true ;; + (no) metatensor=false ;; + (*) as_fn_error $? "wrong argument to --enable-metatensor" "$LINENO" 5 ;; + esac +else case e in #( + e) case "no" in + (yes) metatensor=true ;; + (no) metatensor=false ;; + esac + ;; +esac +fi + + + @@ -3253,6 +3841,12 @@ compilers="mpic++ mpicxx mpiicpc openmpic++ openmpicxx $compilers" fi # do the actual search + + + + + + ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -3267,38 +3861,44 @@ if test -z "$CXX"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CXX"; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi +fi ;; +esac fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf "%s\n" "$CXX" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3311,38 +3911,44 @@ if test -z "$CXX"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CXX"; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +printf "%s\n" "$ac_ct_CXX" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3354,8 +3960,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX @@ -3365,7 +3971,7 @@ fi fi fi # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do @@ -3375,7 +3981,7 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -3385,7 +3991,7 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done @@ -3393,7 +3999,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -3405,9 +4011,9 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 -$as_echo_n "checking whether the C++ compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 +printf %s "checking whether the C++ compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" @@ -3428,13 +4034,14 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. +# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. @@ -3449,12 +4056,12 @@ do # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' + # safe: cross compilers may not add the suffix if given an '-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. @@ -3465,48 +4072,52 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else - ac_file='' +else case e in #( + e) ac_file='' ;; +esac fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +See 'config.log' for more details" "$LINENO" 5; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 -$as_echo_n "checking for C++ compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 +printf %s "checking for C++ compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) +# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will +# work properly (i.e., refer to 'conftest.exe'), while it won't with +# 'rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in @@ -3516,15 +4127,16 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } ;; +esac fi rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext @@ -3533,9 +4145,11 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; return ferror (f) || fclose (f) != 0; ; @@ -3545,8 +4159,8 @@ _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in @@ -3554,10 +4168,10 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in @@ -3565,39 +4179,41 @@ $as_echo "$ac_try_echo"; } >&5 *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C++ compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C++ compiled programs. +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -3611,11 +4227,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in @@ -3624,31 +4241,34 @@ $as_echo "$ac_try_echo"; } >&5 break;; esac done -else - $as_echo "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } ;; +esac fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 +printf %s "checking whether the compiler supports GNU C++... " >&6; } +if test ${ac_cv_cxx_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -3658,30 +4278,36 @@ main () return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else - ac_compiler_gnu=no +else case e in #( + e) ac_compiler_gnu=no ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - + ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi -ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +printf %s "checking whether $CXX accepts -g... " >&6; } +if test ${ac_cv_prog_cxx_g+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" @@ -3689,57 +4315,63 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : ac_cv_prog_cxx_g=yes -else - CXXFLAGS="" +else case e in #( + e) CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : -else - ac_cxx_werror_flag=$ac_save_cxx_werror_flag +else case e in #( + e) ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : ac_cv_prog_cxx_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } +if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then @@ -3754,12 +4386,121 @@ else CXXFLAGS= fi fi +ac_prog_cxx_stdcxx=no +if test x$ac_prog_cxx_stdcxx = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 +printf %s "checking for $CXX option to enable C++11 features... " >&6; } +if test ${ac_cv_prog_cxx_cxx11+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cxx_cxx11=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx11_program +_ACEOF +for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx11" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX ;; +esac +fi + +if test "x$ac_cv_prog_cxx_cxx11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cxx_cxx11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx11" ;; +esac +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 + ac_prog_cxx_stdcxx=cxx11 ;; +esac +fi +fi +if test x$ac_prog_cxx_stdcxx = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 +printf %s "checking for $CXX option to enable C++98 features... " >&6; } +if test ${ac_cv_prog_cxx_cxx98+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cxx_cxx98=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx98_program +_ACEOF +for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx98=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx98" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX ;; +esac +fi + +if test "x$ac_cv_prog_cxx_cxx98" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cxx_cxx98" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx98" ;; +esac +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 + ac_prog_cxx_stdcxx=cxx98 ;; +esac +fi +fi + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -3770,38 +4511,44 @@ if test -n "$ac_tool_prefix"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi +fi ;; +esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3814,38 +4561,44 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3857,8 +4610,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -3866,23 +4619,23 @@ esac fi -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion; do +for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -3892,20 +4645,21 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -3915,30 +4669,36 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else - ac_compiler_gnu=no +else case e in #( + e) ac_compiler_gnu=no ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu - + ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi -ac_test_CFLAGS=${CFLAGS+set} +ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" @@ -3946,57 +4706,63 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes -else - CFLAGS="" +else case e in #( + e) CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else - ac_c_werror_flag=$ac_save_c_werror_flag +else case e in #( + e) ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then @@ -4011,94 +4777,153 @@ else CFLAGS= fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_c89=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext -CC=$ac_save_CC +CC=$ac_save_CC ;; +esac +fi +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" ;; +esac fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - +fi fi ac_ext=c @@ -4121,38 +4946,44 @@ if test -n "$ac_tool_prefix"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_FC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$FC"; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_FC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$FC"; then ac_cv_prog_FC="$FC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_FC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi +fi ;; +esac fi FC=$ac_cv_prog_FC if test -n "$FC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5 -$as_echo "$FC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FC" >&5 +printf "%s\n" "$FC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4165,38 +4996,44 @@ if test -z "$FC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_FC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_FC"; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_FC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_FC"; then ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_FC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_FC=$ac_cv_prog_ac_ct_FC if test -n "$ac_ct_FC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5 -$as_echo "$ac_ct_FC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5 +printf "%s\n" "$ac_ct_FC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4208,8 +5045,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac FC=$ac_ct_FC @@ -4218,7 +5055,7 @@ fi # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do @@ -4228,7 +5065,7 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -4238,21 +5075,22 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done rm -f a.out -# If we don't use `.F' as extension, the preprocessor is not run on the +# If we don't use '.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran compiler" >&5 -$as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; } -if ${ac_cv_fc_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat > conftest.$ac_ext <<_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU Fortran" >&5 +printf %s "checking whether the compiler supports GNU Fortran... " >&6; } +if test ${ac_cv_fc_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat > conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me @@ -4260,43 +5098,52 @@ else end _ACEOF -if ac_fn_fc_try_compile "$LINENO"; then : +if ac_fn_fc_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else - ac_compiler_gnu=no +else case e in #( + e) ac_compiler_gnu=no ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_fc_compiler_gnu=$ac_compiler_gnu - + ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5 -$as_echo "$ac_cv_fc_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_fc_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_fc_compiler_gnu + ac_ext=$ac_save_ext -ac_test_FCFLAGS=${FCFLAGS+set} +ac_test_FCFLAGS=${FCFLAGS+y} ac_save_FCFLAGS=$FCFLAGS FCFLAGS= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5 -$as_echo_n "checking whether $FC accepts -g... " >&6; } -if ${ac_cv_prog_fc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - FCFLAGS=-g +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5 +printf %s "checking whether $FC accepts -g... " >&6; } +if test ${ac_cv_prog_fc_g+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) FCFLAGS=-g cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF -if ac_fn_fc_try_compile "$LINENO"; then : +if ac_fn_fc_try_compile "$LINENO" +then : ac_cv_prog_fc_g=yes -else - ac_cv_prog_fc_g=no +else case e in #( + e) ac_cv_prog_fc_g=no ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5 -$as_echo "$ac_cv_prog_fc_g" >&6; } -if test "$ac_test_FCFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5 +printf "%s\n" "$ac_cv_prog_fc_g" >&6; } +if test $ac_test_FCFLAGS; then FCFLAGS=$ac_save_FCFLAGS elif test $ac_cv_prog_fc_g = yes; then if test "x$ac_cv_fc_compiler_gnu" = xyes; then @@ -4336,26 +5183,26 @@ if test -z "$LDSHARED" ; then LDSHARED="$CXX" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial CXX: $CXX" >&5 -$as_echo "$as_me: Initial CXX: $CXX" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial CXXFLAGS: $CXXFLAGS" >&5 -$as_echo "$as_me: Initial CXXFLAGS: $CXXFLAGS" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial CPPFLAGS: $CPPFLAGS" >&5 -$as_echo "$as_me: Initial CPPFLAGS: $CPPFLAGS" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial CFLAGS: $CFLAGS" >&5 -$as_echo "$as_me: Initial CFLAGS: $CFLAGS" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial LDFLAGS: $LDFLAGS" >&5 -$as_echo "$as_me: Initial LDFLAGS: $LDFLAGS" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial LIBS: $LIBS" >&5 -$as_echo "$as_me: Initial LIBS: $LIBS" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial STATIC_LIBS: $STATIC_LIBS" >&5 -$as_echo "$as_me: Initial STATIC_LIBS: $STATIC_LIBS" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial LD: $LD" >&5 -$as_echo "$as_me: Initial LD: $LD" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial LDSHARED: $LDSHARED" >&5 -$as_echo "$as_me: Initial LDSHARED: $LDSHARED" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial SOEXT: $SOEXT" >&5 -$as_echo "$as_me: Initial SOEXT: $SOEXT" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial CXX: $CXX" >&5 +printf "%s\n" "$as_me: Initial CXX: $CXX" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial CXXFLAGS: $CXXFLAGS" >&5 +printf "%s\n" "$as_me: Initial CXXFLAGS: $CXXFLAGS" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial CPPFLAGS: $CPPFLAGS" >&5 +printf "%s\n" "$as_me: Initial CPPFLAGS: $CPPFLAGS" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial CFLAGS: $CFLAGS" >&5 +printf "%s\n" "$as_me: Initial CFLAGS: $CFLAGS" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial LDFLAGS: $LDFLAGS" >&5 +printf "%s\n" "$as_me: Initial LDFLAGS: $LDFLAGS" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial LIBS: $LIBS" >&5 +printf "%s\n" "$as_me: Initial LIBS: $LIBS" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial STATIC_LIBS: $STATIC_LIBS" >&5 +printf "%s\n" "$as_me: Initial STATIC_LIBS: $STATIC_LIBS" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial LD: $LD" >&5 +printf "%s\n" "$as_me: Initial LD: $LD" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial LDSHARED: $LDSHARED" >&5 +printf "%s\n" "$as_me: Initial LDSHARED: $LDSHARED" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial SOEXT: $SOEXT" >&5 +printf "%s\n" "$as_me: Initial SOEXT: $SOEXT" >&6;} # check C++ flags if test $shared = true @@ -4364,48 +5211,52 @@ then save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fPIC" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -fPIC" >&5 -$as_echo_n "checking whether $CXX accepts -fPIC... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -fPIC" >&5 +printf %s "checking whether $CXX accepts -fPIC... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext @@ -4417,48 +5268,52 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fPIC" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -fPIC" >&5 -$as_echo_n "checking whether $CC accepts -fPIC... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -fPIC" >&5 +printf %s "checking whether $CC accepts -fPIC... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CCFLAGS="$save_CCFLAGS" +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CCFLAGS="$save_CCFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CCFLAGS="$save_CCFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CCFLAGS="$save_CCFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -4473,94 +5328,102 @@ then save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wall" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wall" >&5 -$as_echo_n "checking whether $CXX accepts -Wall... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wall" >&5 +printf %s "checking whether $CXX accepts -Wall... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -pedantic" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -pedantic" >&5 -$as_echo_n "checking whether $CXX accepts -pedantic... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -pedantic" >&5 +printf %s "checking whether $CXX accepts -pedantic... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi @@ -4569,48 +5432,52 @@ then save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -std=c++$cxx_level" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -std=c++$cxx_level" >&5 -$as_echo_n "checking whether $CXX accepts -std=c++$cxx_level... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -std=c++$cxx_level" >&5 +printf %s "checking whether $CXX accepts -std=c++$cxx_level... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi @@ -4619,48 +5486,52 @@ then save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -g" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +printf %s "checking whether $CXX accepts -g... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi @@ -4672,27 +5543,29 @@ then save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS --coverage" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether LDFLAGS can contain --coverage" >&5 -$as_echo_n "checking whether LDFLAGS can contain --coverage... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether LDFLAGS can contain --coverage" >&5 +printf %s "checking whether LDFLAGS can contain --coverage... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; LDFLAGS="$save_LDFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; LDFLAGS="$save_LDFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext STATIC_LIBS="$STATIC_LIBS --coverage" @@ -4703,467 +5576,507 @@ then save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wextra" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wextra" >&5 -$as_echo_n "checking whether $CXX accepts -Wextra... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wextra" >&5 +printf %s "checking whether $CXX accepts -Wextra... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wfloat-equal" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wfloat-equal" >&5 -$as_echo_n "checking whether $CXX accepts -Wfloat-equal... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wfloat-equal" >&5 +printf %s "checking whether $CXX accepts -Wfloat-equal... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wwrite-strings" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wwrite-strings" >&5 -$as_echo_n "checking whether $CXX accepts -Wwrite-strings... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wwrite-strings" >&5 +printf %s "checking whether $CXX accepts -Wwrite-strings... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wpointer-arith" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wpointer-arith" >&5 -$as_echo_n "checking whether $CXX accepts -Wpointer-arith... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wpointer-arith" >&5 +printf %s "checking whether $CXX accepts -Wpointer-arith... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wcast-qual" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wcast-qual" >&5 -$as_echo_n "checking whether $CXX accepts -Wcast-qual... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wcast-qual" >&5 +printf %s "checking whether $CXX accepts -Wcast-qual... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wcast-align" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wcast-align" >&5 -$as_echo_n "checking whether $CXX accepts -Wcast-align... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wcast-align" >&5 +printf %s "checking whether $CXX accepts -Wcast-align... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wconversion" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wconversion" >&5 -$as_echo_n "checking whether $CXX accepts -Wconversion... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wconversion" >&5 +printf %s "checking whether $CXX accepts -Wconversion... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wredundant-decls" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wredundant-decls" >&5 -$as_echo_n "checking whether $CXX accepts -Wredundant-decls... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wredundant-decls" >&5 +printf %s "checking whether $CXX accepts -Wredundant-decls... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wvariadic-macros" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wvariadic-macros" >&5 -$as_echo_n "checking whether $CXX accepts -Wvariadic-macros... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wvariadic-macros" >&5 +printf %s "checking whether $CXX accepts -Wvariadic-macros... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wold-style-cast" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wold-style-cast" >&5 -$as_echo_n "checking whether $CXX accepts -Wold-style-cast... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wold-style-cast" >&5 +printf %s "checking whether $CXX accepts -Wold-style-cast... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX declares c++17 support" >&5 -$as_echo_n "checking whether $CXX declares c++17 support... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX declares c++17 support" >&5 +printf %s "checking whether $CXX declares c++17 support... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5172,44 +6085,46 @@ this_compiler_does_not_support_cxx17 #endif int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; }; +if ac_fn_cxx_try_compile "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; }; support_cxx17=true -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } ; - support_cxx17=false +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ; + support_cxx17=false ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test "$support_cxx17" = false then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C++17 support is required as of PLUMED 2.10" >&5 -$as_echo "$as_me: WARNING: C++17 support is required as of PLUMED 2.10" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your compiler appears not to support C++17" >&5 -$as_echo "$as_me: WARNING: Your compiler appears not to support C++17" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please change compiler or make sure that everything works correctly" >&5 -$as_echo "$as_me: WARNING: Please change compiler or make sure that everything works correctly" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: C++17 support is required as of PLUMED 2.10" >&5 +printf "%s\n" "$as_me: WARNING: C++17 support is required as of PLUMED 2.10" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Your compiler appears not to support C++17" >&5 +printf "%s\n" "$as_me: WARNING: Your compiler appears not to support C++17" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please change compiler or make sure that everything works correctly" >&5 +printf "%s\n" "$as_me: WARNING: Please change compiler or make sure that everything works correctly" >&2;} fi # We assume now that compiler supports C++11 library -$as_echo "#define __PLUMED_WRAPPER_LIBCXX11 1" >>confdefs.h +printf "%s\n" "#define __PLUMED_WRAPPER_LIBCXX11 1" >>confdefs.h if test "$dependency_tracking" = true then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX can generate dependency file with -MM -MF" >&5 -$as_echo_n "checking whether $CXX can generate dependency file with -MM -MF... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX can generate dependency file with -MM -MF" >&5 +printf %s "checking whether $CXX can generate dependency file with -MM -MF... " >&6; } dependency=ko echo "#include \"conftest1.h\"" > conftest.cpp echo "#include \"conftest2.h\"" > conftest1.h @@ -5217,12 +6132,12 @@ $as_echo_n "checking whether $CXX can generate dependency file with -MM -MF... " $CXX $CXXFLAGS -c -MM -MFconftest.d conftest.cpp 1> /dev/null 2> /dev/null grep conftest2 conftest.d 1> /dev/null 2>/dev/null && dependency=ok if test "$dependency" = ok ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } disable_dependency_tracking=no else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } disable_dependency_tracking=yes fi else @@ -5230,11 +6145,11 @@ else fi if test "$disable_dependency_tracking" = yes ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dependencies tracking disabled - always make clean before make" >&5 -$as_echo "$as_me: WARNING: dependencies tracking disabled - always make clean before make" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: dependencies tracking disabled - always make clean before make" >&5 +printf "%s\n" "$as_me: WARNING: dependencies tracking disabled - always make clean before make" >&2;} else - { $as_echo "$as_me:${as_lineno-$LINENO}: dependency tracking enabled" >&5 -$as_echo "$as_me: dependency tracking enabled" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: dependency tracking enabled" >&5 +printf "%s\n" "$as_me: dependency tracking enabled" >&6;} fi @@ -5243,55 +6158,59 @@ then save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-gnu-unique" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -fno-gnu-unique" >&5 -$as_echo_n "checking whether $CXX accepts -fno-gnu-unique... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -fno-gnu-unique" >&5 +printf %s "checking whether $CXX accepts -fno-gnu-unique... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi #### Compulsory libraries #### # some of them might be made optional if we find that are not available in some system -{ $as_echo "$as_me:${as_lineno-$LINENO}: Now we will check compulsory headers and libraries" >&5 -$as_echo "$as_me: Now we will check compulsory headers and libraries" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Now we will check compulsory headers and libraries" >&5 +printf "%s\n" "$as_me: Now we will check compulsory headers and libraries" >&6;} found=ko @@ -5316,8 +6235,8 @@ $as_echo "$as_me: Now we will check compulsory headers and libraries" >&6;} fi # check without libraries - { $as_echo "$as_me:${as_lineno-$LINENO}: checking filesystem library without extra libs" >&5 -$as_echo_n "checking filesystem library without extra libs... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem library without extra libs" >&5 +printf %s "checking filesystem library without extra libs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5334,22 +6253,24 @@ int main(){ } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$found" = "ko" ; then if test "$multiple" = "yes" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking filesystem library with $all_LIBS" >&5 -$as_echo_n "checking filesystem library with $all_LIBS... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem library with $all_LIBS" >&5 +printf %s "checking filesystem library with $all_LIBS... " >&6; } LIBS="$all_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5367,22 +6288,24 @@ int main(){ } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext else for testlib in $testlibs do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking filesystem library with -l$testlib" >&5 -$as_echo_n "checking filesystem library with -l$testlib... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem library with -l$testlib" >&5 +printf %s "checking filesystem library with -l$testlib... " >&6; } LIBS="-l$testlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5400,16 +6323,18 @@ int main(){ } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test $found = ok ; then break @@ -5420,12 +6345,12 @@ rm -f core conftest.err conftest.$ac_objext \ fi if test $found = ok ; then - $as_echo "#define __PLUMED_CXX17_FILESYSTEM 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_CXX17_FILESYSTEM 1" >>confdefs.h __PLUMED_CXX17_FILESYSTEM=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_CXX17_FILESYSTEM" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_CXX17_FILESYSTEM" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_CXX17_FILESYSTEM" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_CXX17_FILESYSTEM" >&2;} LIBS="$save_LIBS" fi @@ -5444,452 +6369,474 @@ lapack_found= # external lapack can only work with external blas # thus, if external blas are disabled also external lapack should be disabled if test "$external_blas" = false && test "$external_lapack" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Internal blas can only be used with internal lapack" >&5 -$as_echo "$as_me: Internal blas can only be used with internal lapack" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: Will not search for external lapack" >&5 -$as_echo "$as_me: Will not search for external lapack" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Internal blas can only be used with internal lapack" >&5 +printf "%s\n" "$as_me: Internal blas can only be used with internal lapack" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Will not search for external lapack" >&5 +printf "%s\n" "$as_me: Will not search for external lapack" >&6;} external_lapack=false fi # first look for blas if test "$external_blas" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dgemv_ can be linked with no library" >&5 -$as_echo_n "checking whether dgemv_ can be linked with no library... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether dgemv_ can be linked with no library" >&5 +printf %s "checking whether dgemv_ can be linked with no library... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dgemv_ (); +namespace conftest { + extern "C" int dgemv_ (); +} int -main () +main (void) { -return dgemv_ (); +return conftest::dgemv_ (); ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } blas_found=underscore -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dgemv_ can be linked with no library" >&5 -$as_echo_n "checking whether dgemv_ can be linked with no library... " >&6; } +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether dgemv_ can be linked with no library" >&5 +printf %s "checking whether dgemv_ can be linked with no library... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dgemv (); +namespace conftest { + extern "C" int dgemv (); +} int -main () +main (void) { -return dgemv (); +return conftest::dgemv (); ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } blas_found=nounderscore -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv_" >&5 -$as_echo_n "checking for library containing dgemv_... " >&6; } -if ${ac_cv_search_dgemv_+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv_" >&5 +printf %s "checking for library containing dgemv_... " >&6; } +if test ${ac_cv_search_dgemv_+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dgemv_ (); +namespace conftest { + extern "C" int dgemv_ (); +} int -main () +main (void) { -return dgemv_ (); +return conftest::dgemv_ (); ; return 0; } _ACEOF -for ac_lib in '' blas; do +for ac_lib in '' blas +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_dgemv_=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_dgemv_+:} false; then : + if test ${ac_cv_search_dgemv_+y} +then : break fi done -if ${ac_cv_search_dgemv_+:} false; then : +if test ${ac_cv_search_dgemv_+y} +then : -else - ac_cv_search_dgemv_=no +else case e in #( + e) ac_cv_search_dgemv_=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv_" >&5 -$as_echo "$ac_cv_search_dgemv_" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv_" >&5 +printf "%s\n" "$ac_cv_search_dgemv_" >&6; } ac_res=$ac_cv_search_dgemv_ -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" blas_found=underscore -else - +else case e in #( + e) if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv" >&5 -$as_echo_n "checking for library containing dgemv... " >&6; } -if ${ac_cv_search_dgemv+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv" >&5 +printf %s "checking for library containing dgemv... " >&6; } +if test ${ac_cv_search_dgemv+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dgemv (); +namespace conftest { + extern "C" int dgemv (); +} int -main () +main (void) { -return dgemv (); +return conftest::dgemv (); ; return 0; } _ACEOF -for ac_lib in '' blas; do +for ac_lib in '' blas +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_dgemv=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_dgemv+:} false; then : + if test ${ac_cv_search_dgemv+y} +then : break fi done -if ${ac_cv_search_dgemv+:} false; then : +if test ${ac_cv_search_dgemv+y} +then : -else - ac_cv_search_dgemv=no +else case e in #( + e) ac_cv_search_dgemv=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv" >&5 -$as_echo "$ac_cv_search_dgemv" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv" >&5 +printf "%s\n" "$ac_cv_search_dgemv" >&6; } ac_res=$ac_cv_search_dgemv -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" blas_found=nounderscore fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv" >&5 -$as_echo_n "checking for library containing dgemv... " >&6; } -if ${ac_cv_search_dgemv+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv" >&5 +printf %s "checking for library containing dgemv... " >&6; } +if test ${ac_cv_search_dgemv+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dgemv (); +namespace conftest { + extern "C" int dgemv (); +} int -main () +main (void) { -return dgemv (); +return conftest::dgemv (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_dgemv=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_dgemv+:} false; then : + if test ${ac_cv_search_dgemv+y} +then : break fi done -if ${ac_cv_search_dgemv+:} false; then : +if test ${ac_cv_search_dgemv+y} +then : -else - ac_cv_search_dgemv=no +else case e in #( + e) ac_cv_search_dgemv=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv" >&5 -$as_echo "$ac_cv_search_dgemv" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv" >&5 +printf "%s\n" "$ac_cv_search_dgemv" >&6; } ac_res=$ac_cv_search_dgemv -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" blas_found=nounderscore fi fi - + ;; +esac fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv_" >&5 -$as_echo_n "checking for library containing dgemv_... " >&6; } -if ${ac_cv_search_dgemv_+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv_" >&5 +printf %s "checking for library containing dgemv_... " >&6; } +if test ${ac_cv_search_dgemv_+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dgemv_ (); +namespace conftest { + extern "C" int dgemv_ (); +} int -main () +main (void) { -return dgemv_ (); +return conftest::dgemv_ (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_dgemv_=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_dgemv_+:} false; then : + if test ${ac_cv_search_dgemv_+y} +then : break fi done -if ${ac_cv_search_dgemv_+:} false; then : +if test ${ac_cv_search_dgemv_+y} +then : -else - ac_cv_search_dgemv_=no +else case e in #( + e) ac_cv_search_dgemv_=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv_" >&5 -$as_echo "$ac_cv_search_dgemv_" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv_" >&5 +printf "%s\n" "$ac_cv_search_dgemv_" >&6; } ac_res=$ac_cv_search_dgemv_ -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" blas_found=underscore -else - +else case e in #( + e) if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv" >&5 -$as_echo_n "checking for library containing dgemv... " >&6; } -if ${ac_cv_search_dgemv+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv" >&5 +printf %s "checking for library containing dgemv... " >&6; } +if test ${ac_cv_search_dgemv+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dgemv (); +namespace conftest { + extern "C" int dgemv (); +} int -main () +main (void) { -return dgemv (); +return conftest::dgemv (); ; return 0; } _ACEOF -for ac_lib in '' blas; do +for ac_lib in '' blas +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_dgemv=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_dgemv+:} false; then : + if test ${ac_cv_search_dgemv+y} +then : break fi done -if ${ac_cv_search_dgemv+:} false; then : +if test ${ac_cv_search_dgemv+y} +then : -else - ac_cv_search_dgemv=no +else case e in #( + e) ac_cv_search_dgemv=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv" >&5 -$as_echo "$ac_cv_search_dgemv" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv" >&5 +printf "%s\n" "$ac_cv_search_dgemv" >&6; } ac_res=$ac_cv_search_dgemv -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" blas_found=nounderscore fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv" >&5 -$as_echo_n "checking for library containing dgemv... " >&6; } -if ${ac_cv_search_dgemv+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv" >&5 +printf %s "checking for library containing dgemv... " >&6; } +if test ${ac_cv_search_dgemv+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dgemv (); +namespace conftest { + extern "C" int dgemv (); +} int -main () +main (void) { -return dgemv (); +return conftest::dgemv (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_dgemv=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_dgemv+:} false; then : + if test ${ac_cv_search_dgemv+y} +then : break fi done -if ${ac_cv_search_dgemv+:} false; then : +if test ${ac_cv_search_dgemv+y} +then : -else - ac_cv_search_dgemv=no +else case e in #( + e) ac_cv_search_dgemv=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv" >&5 -$as_echo "$ac_cv_search_dgemv" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv" >&5 +printf "%s\n" "$ac_cv_search_dgemv" >&6; } ac_res=$ac_cv_search_dgemv -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" blas_found=nounderscore fi fi - + ;; +esac fi fi - + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi # if not found, then use internal lapack and blas if test -z "$blas_found" ; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using internal lapack and blas, could be inefficient" >&5 -$as_echo "$as_me: WARNING: using internal lapack and blas, could be inefficient" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using internal lapack and blas, could be inefficient" >&5 +printf "%s\n" "$as_me: WARNING: using internal lapack and blas, could be inefficient" >&2;} fi # if found, also look for external lapack if test -n "$blas_found" ; then -$as_echo "#define __PLUMED_HAS_EXTERNAL_BLAS 1" >>confdefs.h +printf "%s\n" "#define __PLUMED_HAS_EXTERNAL_BLAS 1" >>confdefs.h if test "$external_lapack" = true ; then @@ -5900,119 +6847,127 @@ case "$blas_found" in esac if test "${libsearch}" = true ; then - as_ac_Search=`$as_echo "ac_cv_search_$search_for" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing $search_for" >&5 -$as_echo_n "checking for library containing $search_for... " >&6; } -if eval \${$as_ac_Search+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + as_ac_Search=`printf "%s\n" "ac_cv_search_$search_for" | sed "$as_sed_sh"` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing $search_for" >&5 +printf %s "checking for library containing $search_for... " >&6; } +if eval test \${$as_ac_Search+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $search_for (); +namespace conftest { + extern "C" int $search_for (); +} int -main () +main (void) { -return $search_for (); +return conftest::$search_for (); ; return 0; } _ACEOF -for ac_lib in '' lapack; do +for ac_lib in '' lapack +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : eval "$as_ac_Search=\$ac_res" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if eval \${$as_ac_Search+:} false; then : + if eval test \${$as_ac_Search+y} +then : break fi done -if eval \${$as_ac_Search+:} false; then : +if eval test \${$as_ac_Search+y} +then : -else - eval "$as_ac_Search=no" +else case e in #( + e) eval "$as_ac_Search=no" ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi eval ac_res=\$$as_ac_Search - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval ac_res=\$$as_ac_Search -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" lapack_found=yes fi else - as_ac_Search=`$as_echo "ac_cv_search_$search_for" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing $search_for" >&5 -$as_echo_n "checking for library containing $search_for... " >&6; } -if eval \${$as_ac_Search+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + as_ac_Search=`printf "%s\n" "ac_cv_search_$search_for" | sed "$as_sed_sh"` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing $search_for" >&5 +printf %s "checking for library containing $search_for... " >&6; } +if eval test \${$as_ac_Search+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $search_for (); +namespace conftest { + extern "C" int $search_for (); +} int -main () +main (void) { -return $search_for (); +return conftest::$search_for (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : eval "$as_ac_Search=\$ac_res" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if eval \${$as_ac_Search+:} false; then : + if eval test \${$as_ac_Search+y} +then : break fi done -if eval \${$as_ac_Search+:} false; then : +if eval test \${$as_ac_Search+y} +then : -else - eval "$as_ac_Search=no" +else case e in #( + e) eval "$as_ac_Search=no" ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi eval ac_res=\$$as_ac_Search - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval ac_res=\$$as_ac_Search -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" lapack_found=yes fi @@ -6023,10 +6978,10 @@ fi # if not found, then use internal lapack with external blas if test -z "$lapack_found" ; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using internal lapack, could be inefficient" >&5 -$as_echo "$as_me: WARNING: using internal lapack, could be inefficient" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using internal lapack, could be inefficient" >&5 +printf "%s\n" "$as_me: WARNING: using internal lapack, could be inefficient" >&2;} else -$as_echo "#define __PLUMED_HAS_EXTERNAL_LAPACK 1" >>confdefs.h +printf "%s\n" "#define __PLUMED_HAS_EXTERNAL_LAPACK 1" >>confdefs.h fi @@ -6037,7 +6992,7 @@ fi # in the latter case, also (internal) lapack names will be underscored consistently if test "$blas_found" = nounderscore then - $as_echo "#define F77_NO_UNDERSCORE 1" >>confdefs.h + printf "%s\n" "#define F77_NO_UNDERSCORE 1" >>confdefs.h fi @@ -6046,14 +7001,15 @@ if test -n "$blas_found" ; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sdot returns float" >&5 -$as_echo_n "checking whether sdot returns float... " >&6; } -if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not checked (cross compiling)" >&5 -$as_echo "not checked (cross compiling)" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sdot returns float" >&5 +printf %s "checking whether sdot returns float... " >&6; } +if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not checked (cross compiling)" >&5 +printf "%s\n" "not checked (cross compiling)" >&6; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if ! defined(F77_NO_UNDERSCORE) @@ -6079,29 +7035,33 @@ int main(){ } _ACEOF -if ac_fn_cxx_try_run "$LINENO"; then : - sdot_returns_float=yes ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - sdot_returns_float=no ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +if ac_fn_cxx_try_run "$LINENO" +then : + sdot_returns_float=yes ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) sdot_returns_float=no ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi if test "$sdot_returns_float" = no ; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sdot returns double" >&5 -$as_echo_n "checking whether sdot returns double... " >&6; } -if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not checked (cross compiling)" >&5 -$as_echo "not checked (cross compiling)" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sdot returns double" >&5 +printf %s "checking whether sdot returns double... " >&6; } +if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not checked (cross compiling)" >&5 +printf "%s\n" "not checked (cross compiling)" >&6; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if ! defined(F77_NO_UNDERSCORE) @@ -6127,35 +7087,38 @@ int main(){ } _ACEOF -if ac_fn_cxx_try_run "$LINENO"; then : - sdot_returns_double=yes ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - sdot_returns_double=no ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +if ac_fn_cxx_try_run "$LINENO" +then : + sdot_returns_double=yes ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) sdot_returns_double=no ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi fi if test "$sdot_returns_double" = yes ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Setting workaround for blas float functions returning double" >&5 -$as_echo "$as_me: Setting workaround for blas float functions returning double" >&6;} - $as_echo "#define __PLUMED_BLAS_RETURNS_FLOAT double" >>confdefs.h + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Setting workaround for blas float functions returning double" >&5 +printf "%s\n" "$as_me: Setting workaround for blas float functions returning double" >&6;} + printf "%s\n" "#define __PLUMED_BLAS_RETURNS_FLOAT double" >>confdefs.h if test -n "$lapack_found" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Setting workaround for lapack float functions returning double" >&5 -$as_echo "$as_me: Setting workaround for lapack float functions returning double" >&6;} - $as_echo "#define __PLUMED_LAPACK_RETURNS_FLOAT double" >>confdefs.h + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Setting workaround for lapack float functions returning double" >&5 +printf "%s\n" "$as_me: Setting workaround for lapack float functions returning double" >&6;} + printf "%s\n" "#define __PLUMED_LAPACK_RETURNS_FLOAT double" >>confdefs.h fi else if test "$sdot_returns_float" = no && test "$sdot_returns_double" = no ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: There is a problem with your blas implementation" >&5 -$as_echo "$as_me: WARNING: There is a problem with your blas implementation" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: There is a problem with your blas implementation" >&5 +printf "%s\n" "$as_me: WARNING: There is a problem with your blas implementation" >&2;} fi fi @@ -6165,8 +7128,8 @@ fi #### End of compulsory libraries #### #### Optional libraries #### -{ $as_echo "$as_me:${as_lineno-$LINENO}: Now we will check for optional headers and libraries" >&5 -$as_echo "$as_me: Now we will check for optional headers and libraries" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Now we will check for optional headers and libraries" >&5 +printf "%s\n" "$as_me: Now we will check for optional headers and libraries" >&6;} ############################################################# # I add the possibility to completely remove molfile_plugins @@ -6182,520 +7145,165 @@ if test $molfile_plugins = true ; then # Check for molfile_plugins and use internal fallback if not found. TG # We always have molfile, now -$as_echo "#define __PLUMED_HAS_MOLFILE_PLUGINS 1" >>confdefs.h +printf "%s\n" "#define __PLUMED_HAS_MOLFILE_PLUGINS 1" >>confdefs.h if test "$external_molfile_plugins" = true ; then - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } -if test -z "$CXXCPP"; then - if ${ac_cv_prog_CXXCPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CXXCPP=$CXXCPP - -fi - CXXCPP=$ac_cv_prog_CXXCPP -else - ac_cv_prog_CXXCPP=$CXXCPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -$as_echo "$CXXCPP" >&6; } -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin + ac_header= ac_cache= +for ac_item in $ac_header_cxx_list do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count + if test $ac_cache; then + ac_fn_cxx_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : +done -else - ac_cv_header_stdc=no -fi -rm -f conftest* -fi -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_cxx_try_run "$LINENO"; then : -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then -$as_echo "#define STDC_HEADERS 1" >>confdefs.h -fi +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_cxx_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi -done - - - found=ko __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS=no - ac_fn_cxx_check_header_mongrel "$LINENO" "libmolfile_plugin.h" "ac_cv_header_libmolfile_plugin_h" "$ac_includes_default" -if test "x$ac_cv_header_libmolfile_plugin_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "libmolfile_plugin.h" "ac_cv_header_libmolfile_plugin_h" "$ac_includes_default" +if test "x$ac_cv_header_libmolfile_plugin_h" = xyes +then : if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing molfile_dcdplugin_init" >&5 -$as_echo_n "checking for library containing molfile_dcdplugin_init... " >&6; } -if ${ac_cv_search_molfile_dcdplugin_init+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing molfile_dcdplugin_init" >&5 +printf %s "checking for library containing molfile_dcdplugin_init... " >&6; } +if test ${ac_cv_search_molfile_dcdplugin_init+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char molfile_dcdplugin_init (); +namespace conftest { + extern "C" int molfile_dcdplugin_init (); +} int -main () +main (void) { -return molfile_dcdplugin_init (); +return conftest::molfile_dcdplugin_init (); ; return 0; } _ACEOF -for ac_lib in '' molfile_plugin; do +for ac_lib in '' molfile_plugin +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_molfile_dcdplugin_init=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_molfile_dcdplugin_init+:} false; then : + if test ${ac_cv_search_molfile_dcdplugin_init+y} +then : break fi done -if ${ac_cv_search_molfile_dcdplugin_init+:} false; then : +if test ${ac_cv_search_molfile_dcdplugin_init+y} +then : -else - ac_cv_search_molfile_dcdplugin_init=no +else case e in #( + e) ac_cv_search_molfile_dcdplugin_init=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_molfile_dcdplugin_init" >&5 -$as_echo "$ac_cv_search_molfile_dcdplugin_init" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_molfile_dcdplugin_init" >&5 +printf "%s\n" "$ac_cv_search_molfile_dcdplugin_init" >&6; } ac_res=$ac_cv_search_molfile_dcdplugin_init -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing molfile_dcdplugin_init" >&5 -$as_echo_n "checking for library containing molfile_dcdplugin_init... " >&6; } -if ${ac_cv_search_molfile_dcdplugin_init+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing molfile_dcdplugin_init" >&5 +printf %s "checking for library containing molfile_dcdplugin_init... " >&6; } +if test ${ac_cv_search_molfile_dcdplugin_init+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char molfile_dcdplugin_init (); +namespace conftest { + extern "C" int molfile_dcdplugin_init (); +} int -main () +main (void) { -return molfile_dcdplugin_init (); +return conftest::molfile_dcdplugin_init (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_molfile_dcdplugin_init=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_molfile_dcdplugin_init+:} false; then : + if test ${ac_cv_search_molfile_dcdplugin_init+y} +then : break fi done -if ${ac_cv_search_molfile_dcdplugin_init+:} false; then : +if test ${ac_cv_search_molfile_dcdplugin_init+y} +then : -else - ac_cv_search_molfile_dcdplugin_init=no +else case e in #( + e) ac_cv_search_molfile_dcdplugin_init=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_molfile_dcdplugin_init" >&5 -$as_echo "$ac_cv_search_molfile_dcdplugin_init" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_molfile_dcdplugin_init" >&5 +printf "%s\n" "$ac_cv_search_molfile_dcdplugin_init" >&6; } ac_res=$ac_cv_search_molfile_dcdplugin_init -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -6705,21 +7313,20 @@ fi fi - if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS 1" >>confdefs.h __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS" >&2;} fi if test "$__PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS" != yes ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using internal molfile_plugins, which only support dcd/xtc/trr/trj/crd files" >&5 -$as_echo "$as_me: WARNING: using internal molfile_plugins, which only support dcd/xtc/trr/trj/crd files" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using internal molfile_plugins, which only support dcd/xtc/trr/trj/crd files" >&5 +printf "%s\n" "$as_me: WARNING: using internal molfile_plugins, which only support dcd/xtc/trr/trj/crd files" >&2;} else - $as_echo "#define __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS 1" >>confdefs.h fi fi @@ -6728,43 +7335,44 @@ fi # this is special and is also attached to STATIC_LIBS # this flag should be used also when linking MD engines to allow plumed # to be loaded later -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); +namespace conftest { + extern "C" int dlopen (); +} int -main () +main (void) { -return dlopen (); +return conftest::dlopen (); ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no +else case e in #( + e) ac_cv_lib_dl_dlopen=no ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : STATIC_LIBS="-ldl $STATIC_LIBS" LIBS="-ldl $LIBS" fi @@ -6773,120 +7381,129 @@ fi found=ko __PLUMED_HAS_DLADDR=no - ac_fn_cxx_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" +if test "x$ac_cv_header_dlfcn_h" = xyes +then : if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dladdr" >&5 -$as_echo_n "checking for library containing dladdr... " >&6; } -if ${ac_cv_search_dladdr+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dladdr" >&5 +printf %s "checking for library containing dladdr... " >&6; } +if test ${ac_cv_search_dladdr+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dladdr (); +namespace conftest { + extern "C" int dladdr (); +} int -main () +main (void) { -return dladdr (); +return conftest::dladdr (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_dladdr=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_dladdr+:} false; then : + if test ${ac_cv_search_dladdr+y} +then : break fi done -if ${ac_cv_search_dladdr+:} false; then : +if test ${ac_cv_search_dladdr+y} +then : -else - ac_cv_search_dladdr=no +else case e in #( + e) ac_cv_search_dladdr=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dladdr" >&5 -$as_echo "$ac_cv_search_dladdr" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dladdr" >&5 +printf "%s\n" "$ac_cv_search_dladdr" >&6; } ac_res=$ac_cv_search_dladdr -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dladdr" >&5 -$as_echo_n "checking for library containing dladdr... " >&6; } -if ${ac_cv_search_dladdr+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dladdr" >&5 +printf %s "checking for library containing dladdr... " >&6; } +if test ${ac_cv_search_dladdr+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dladdr (); +namespace conftest { + extern "C" int dladdr (); +} int -main () +main (void) { -return dladdr (); +return conftest::dladdr (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_dladdr=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_dladdr+:} false; then : + if test ${ac_cv_search_dladdr+y} +then : break fi done -if ${ac_cv_search_dladdr+:} false; then : +if test ${ac_cv_search_dladdr+y} +then : -else - ac_cv_search_dladdr=no +else case e in #( + e) ac_cv_search_dladdr=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dladdr" >&5 -$as_echo "$ac_cv_search_dladdr" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dladdr" >&5 +printf "%s\n" "$ac_cv_search_dladdr" >&6; } ac_res=$ac_cv_search_dladdr -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -6896,14 +7513,13 @@ fi fi - if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_DLADDR 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_DLADDR 1" >>confdefs.h __PLUMED_HAS_DLADDR=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_DLADDR" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_DLADDR" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_DLADDR" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_DLADDR" >&2;} fi @@ -6913,120 +7529,129 @@ if test $mpi = true ; then found=ko __PLUMED_HAS_MPI=no - ac_fn_cxx_check_header_mongrel "$LINENO" "mpi.h" "ac_cv_header_mpi_h" "$ac_includes_default" -if test "x$ac_cv_header_mpi_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "mpi.h" "ac_cv_header_mpi_h" "$ac_includes_default" +if test "x$ac_cv_header_mpi_h" = xyes +then : if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing MPI_Init" >&5 -$as_echo_n "checking for library containing MPI_Init... " >&6; } -if ${ac_cv_search_MPI_Init+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing MPI_Init" >&5 +printf %s "checking for library containing MPI_Init... " >&6; } +if test ${ac_cv_search_MPI_Init+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char MPI_Init (); +namespace conftest { + extern "C" int MPI_Init (); +} int -main () +main (void) { -return MPI_Init (); +return conftest::MPI_Init (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_MPI_Init=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_MPI_Init+:} false; then : + if test ${ac_cv_search_MPI_Init+y} +then : break fi done -if ${ac_cv_search_MPI_Init+:} false; then : +if test ${ac_cv_search_MPI_Init+y} +then : -else - ac_cv_search_MPI_Init=no +else case e in #( + e) ac_cv_search_MPI_Init=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_MPI_Init" >&5 -$as_echo "$ac_cv_search_MPI_Init" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_MPI_Init" >&5 +printf "%s\n" "$ac_cv_search_MPI_Init" >&6; } ac_res=$ac_cv_search_MPI_Init -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing MPI_Init" >&5 -$as_echo_n "checking for library containing MPI_Init... " >&6; } -if ${ac_cv_search_MPI_Init+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing MPI_Init" >&5 +printf %s "checking for library containing MPI_Init... " >&6; } +if test ${ac_cv_search_MPI_Init+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char MPI_Init (); +namespace conftest { + extern "C" int MPI_Init (); +} int -main () +main (void) { -return MPI_Init (); +return conftest::MPI_Init (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_MPI_Init=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_MPI_Init+:} false; then : + if test ${ac_cv_search_MPI_Init+y} +then : break fi done -if ${ac_cv_search_MPI_Init+:} false; then : +if test ${ac_cv_search_MPI_Init+y} +then : -else - ac_cv_search_MPI_Init=no +else case e in #( + e) ac_cv_search_MPI_Init=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_MPI_Init" >&5 -$as_echo "$ac_cv_search_MPI_Init" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_MPI_Init" >&5 +printf "%s\n" "$ac_cv_search_MPI_Init" >&6; } ac_res=$ac_cv_search_MPI_Init -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -7036,14 +7661,13 @@ fi fi - if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_MPI 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_MPI 1" >>confdefs.h __PLUMED_HAS_MPI=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_MPI" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_MPI" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_MPI" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_MPI" >&2;} fi if test "$__PLUMED_HAS_MPI" = yes; then @@ -7055,76 +7679,89 @@ fi # search for openmp is automatically disabled by autoconf # when configuring with --disable-openmp - - OPENMP_CXXFLAGS= - # Check whether --enable-openmp was given. -if test "${enable_openmp+set}" = set; then : +if test -e penmp || test -e mp; then + as_fn_error $? "AC_OPENMP clobbers files named 'mp' and 'penmp'. Aborting configure because one of these files already exists." "$LINENO" 5 +fi +# Check whether --enable-openmp was given. +if test ${enable_openmp+y} +then : enableval=$enable_openmp; fi + OPENMP_CXXFLAGS= if test "$enable_openmp" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CXX option to support OpenMP" >&5 -$as_echo_n "checking for $CXX option to support OpenMP... " >&6; } -if ${ac_cv_prog_cxx_openmp+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to support OpenMP" >&5 +printf %s "checking for $CXX option to support OpenMP... " >&6; } +if test ${ac_cv_prog_cxx_openmp+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cxx_openmp='not found' + for ac_option in '' -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp -homp \ + -Popenmp --openmp; do + + ac_save_CXXFLAGS=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $ac_option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef _OPENMP - choke me +#error "OpenMP not supported" #endif #include -int main () { return omp_get_num_threads (); } +int main (void) { return omp_get_num_threads (); } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - ac_cv_prog_cxx_openmp='none needed' -else - ac_cv_prog_cxx_openmp='unsupported' - for ac_option in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp -homp \ - -Popenmp --openmp; do - ac_save_CXXFLAGS=$CXXFLAGS - CXXFLAGS="$CXXFLAGS $ac_option" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +if ac_fn_cxx_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef _OPENMP - choke me +#error "OpenMP not supported" #endif #include -int main () { return omp_get_num_threads (); } +int main (void) { return omp_get_num_threads (); } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_prog_cxx_openmp=$ac_option +else case e in #( + e) ac_cv_prog_cxx_openmp='unsupported' ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - CXXFLAGS=$ac_save_CXXFLAGS - if test "$ac_cv_prog_cxx_openmp" != unsupported; then - break - fi - done fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CXXFLAGS=$ac_save_CXXFLAGS + + if test "$ac_cv_prog_cxx_openmp" != 'not found'; then + break + fi + done + if test "$ac_cv_prog_cxx_openmp" = 'not found'; then + ac_cv_prog_cxx_openmp='unsupported' + elif test "$ac_cv_prog_cxx_openmp" = ''; then + ac_cv_prog_cxx_openmp='none needed' + fi + rm -f penmp mp ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_openmp" >&5 -$as_echo "$ac_cv_prog_cxx_openmp" >&6; } - case $ac_cv_prog_cxx_openmp in #( - "none needed" | unsupported) - ;; #( - *) - OPENMP_CXXFLAGS=$ac_cv_prog_cxx_openmp ;; - esac +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_openmp" >&5 +printf "%s\n" "$ac_cv_prog_cxx_openmp" >&6; } + if test "$ac_cv_prog_cxx_openmp" != 'unsupported' && \ + test "$ac_cv_prog_cxx_openmp" != 'none needed'; then + OPENMP_CXXFLAGS="$ac_cv_prog_cxx_openmp" + fi fi if test $asmjit = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether architecture is X86/X64" >&5 -$as_echo_n "checking whether architecture is X86/X64... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether architecture is X86/X64" >&5 +printf %s "checking whether architecture is X86/X64... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7137,28 +7774,30 @@ this_is_not_x86_x64 #endif int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; }; +if ac_fn_cxx_try_compile "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; }; x86_x64=true -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } ; - x86_x64=false +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ; + x86_x64=false ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $asmjit = true && test $x86_x64 = false ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: asmjit does not support this architecture, it will be disabled" >&5 -$as_echo "$as_me: WARNING: asmjit does not support this architecture, it will be disabled" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: asmjit does not support this architecture, it will be disabled" >&5 +printf "%s\n" "$as_me: WARNING: asmjit does not support this architecture, it will be disabled" >&2;} asmjit=false fi @@ -7168,115 +7807,123 @@ if test $asmjit = true ; then if test `(uname)` = Linux ; then if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 -$as_echo_n "checking for library containing clock_gettime... " >&6; } -if ${ac_cv_search_clock_gettime+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +printf %s "checking for library containing clock_gettime... " >&6; } +if test ${ac_cv_search_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char clock_gettime (); +namespace conftest { + extern "C" int clock_gettime (); +} int -main () +main (void) { -return clock_gettime (); +return conftest::clock_gettime (); ; return 0; } _ACEOF -for ac_lib in '' rt; do +for ac_lib in '' rt +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_clock_gettime=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_clock_gettime+:} false; then : + if test ${ac_cv_search_clock_gettime+y} +then : break fi done -if ${ac_cv_search_clock_gettime+:} false; then : +if test ${ac_cv_search_clock_gettime+y} +then : -else - ac_cv_search_clock_gettime=no +else case e in #( + e) ac_cv_search_clock_gettime=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 -$as_echo "$ac_cv_search_clock_gettime" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf "%s\n" "$ac_cv_search_clock_gettime" >&6; } ac_res=$ac_cv_search_clock_gettime -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 -$as_echo_n "checking for library containing clock_gettime... " >&6; } -if ${ac_cv_search_clock_gettime+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +printf %s "checking for library containing clock_gettime... " >&6; } +if test ${ac_cv_search_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char clock_gettime (); +namespace conftest { + extern "C" int clock_gettime (); +} int -main () +main (void) { -return clock_gettime (); +return conftest::clock_gettime (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_clock_gettime=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_clock_gettime+:} false; then : + if test ${ac_cv_search_clock_gettime+y} +then : break fi done -if ${ac_cv_search_clock_gettime+:} false; then : +if test ${ac_cv_search_clock_gettime+y} +then : -else - ac_cv_search_clock_gettime=no +else case e in #( + e) ac_cv_search_clock_gettime=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 -$as_echo "$ac_cv_search_clock_gettime" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf "%s\n" "$ac_cv_search_clock_gettime" >&6; } ac_res=$ac_cv_search_clock_gettime -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -7287,13 +7934,13 @@ fi found=ok fi if test "$found" = ok ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling embedded asmjit" >&5 -$as_echo "$as_me: Enabling embedded asmjit" >&6;} - $as_echo "#define __PLUMED_HAS_ASMJIT 1" >>confdefs.h + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling embedded asmjit" >&5 +printf "%s\n" "$as_me: Enabling embedded asmjit" >&6;} + printf "%s\n" "#define __PLUMED_HAS_ASMJIT 1" >>confdefs.h else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot link clock_gettime on this Linux, asmjit will not be enabled" >&5 -$as_echo "$as_me: WARNING: cannot link clock_gettime on this Linux, asmjit will not be enabled" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot link clock_gettime on this Linux, asmjit will not be enabled" >&5 +printf "%s\n" "$as_me: WARNING: cannot link clock_gettime on this Linux, asmjit will not be enabled" >&2;} fi fi @@ -7301,120 +7948,129 @@ if test $dlopen = true ; then found=ko __PLUMED_HAS_DLOPEN=no - ac_fn_cxx_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" +if test "x$ac_cv_header_dlfcn_h" = xyes +then : if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 -$as_echo_n "checking for library containing dlopen... " >&6; } -if ${ac_cv_search_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); +namespace conftest { + extern "C" int dlopen (); +} int -main () +main (void) { -return dlopen (); +return conftest::dlopen (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_dlopen=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_dlopen+:} false; then : + if test ${ac_cv_search_dlopen+y} +then : break fi done -if ${ac_cv_search_dlopen+:} false; then : +if test ${ac_cv_search_dlopen+y} +then : -else - ac_cv_search_dlopen=no +else case e in #( + e) ac_cv_search_dlopen=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 -$as_echo "$ac_cv_search_dlopen" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf "%s\n" "$ac_cv_search_dlopen" >&6; } ac_res=$ac_cv_search_dlopen -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 -$as_echo_n "checking for library containing dlopen... " >&6; } -if ${ac_cv_search_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); +namespace conftest { + extern "C" int dlopen (); +} int -main () +main (void) { -return dlopen (); +return conftest::dlopen (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_dlopen=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_dlopen+:} false; then : + if test ${ac_cv_search_dlopen+y} +then : break fi done -if ${ac_cv_search_dlopen+:} false; then : +if test ${ac_cv_search_dlopen+y} +then : -else - ac_cv_search_dlopen=no +else case e in #( + e) ac_cv_search_dlopen=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 -$as_echo "$ac_cv_search_dlopen" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf "%s\n" "$ac_cv_search_dlopen" >&6; } ac_res=$ac_cv_search_dlopen -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -7424,14 +8080,13 @@ fi fi - if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_DLOPEN 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_DLOPEN 1" >>confdefs.h __PLUMED_HAS_DLOPEN=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_DLOPEN" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_DLOPEN" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_DLOPEN" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_DLOPEN" >&2;} fi fi @@ -7460,8 +8115,8 @@ if test $rtld_default = true ; then fi # check without libraries - { $as_echo "$as_me:${as_lineno-$LINENO}: checking RTLD_DEFAULT without extra libs" >&5 -$as_echo_n "checking RTLD_DEFAULT without extra libs... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking RTLD_DEFAULT without extra libs" >&5 +printf %s "checking RTLD_DEFAULT without extra libs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7474,22 +8129,24 @@ main () } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$found" = "ko" ; then if test "$multiple" = "yes" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking RTLD_DEFAULT with $all_LIBS" >&5 -$as_echo_n "checking RTLD_DEFAULT with $all_LIBS... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking RTLD_DEFAULT with $all_LIBS" >&5 +printf %s "checking RTLD_DEFAULT with $all_LIBS... " >&6; } LIBS="$all_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7503,22 +8160,24 @@ main () } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext else for testlib in $testlibs do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking RTLD_DEFAULT with -l$testlib" >&5 -$as_echo_n "checking RTLD_DEFAULT with -l$testlib... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking RTLD_DEFAULT with -l$testlib" >&5 +printf %s "checking RTLD_DEFAULT with -l$testlib... " >&6; } LIBS="-l$testlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7532,16 +8191,18 @@ main () } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test $found = ok ; then break @@ -7552,12 +8213,12 @@ rm -f core conftest.err conftest.$ac_objext \ fi if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_RTLD_DEFAULT 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_RTLD_DEFAULT 1" >>confdefs.h __PLUMED_HAS_RTLD_DEFAULT=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_RTLD_DEFAULT" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_RTLD_DEFAULT" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_RTLD_DEFAULT" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_RTLD_DEFAULT" >&2;} LIBS="$save_LIBS" fi @@ -7587,8 +8248,8 @@ if test $subprocess = true ; then fi # check without libraries - { $as_echo "$as_me:${as_lineno-$LINENO}: checking subprocess without extra libs" >&5 -$as_echo_n "checking subprocess without extra libs... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking subprocess without extra libs" >&5 +printf %s "checking subprocess without extra libs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7624,22 +8285,24 @@ main () _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$found" = "ko" ; then if test "$multiple" = "yes" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking subprocess with $all_LIBS" >&5 -$as_echo_n "checking subprocess with $all_LIBS... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking subprocess with $all_LIBS" >&5 +printf %s "checking subprocess with $all_LIBS... " >&6; } LIBS="$all_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7676,22 +8339,24 @@ main () _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext else for testlib in $testlibs do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking subprocess with -l$testlib" >&5 -$as_echo_n "checking subprocess with -l$testlib... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking subprocess with -l$testlib" >&5 +printf %s "checking subprocess with -l$testlib... " >&6; } LIBS="-l$testlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7728,16 +8393,18 @@ main () _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test $found = ok ; then break @@ -7748,12 +8415,12 @@ rm -f core conftest.err conftest.$ac_objext \ fi if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_SUBPROCESS 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_SUBPROCESS 1" >>confdefs.h __PLUMED_HAS_SUBPROCESS=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_SUBPROCESS" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_SUBPROCESS" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_SUBPROCESS" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_SUBPROCESS" >&2;} LIBS="$save_LIBS" fi @@ -7763,120 +8430,129 @@ if test $execinfo = true ; then found=ko __PLUMED_HAS_EXECINFO=no - ac_fn_cxx_check_header_mongrel "$LINENO" "execinfo.h" "ac_cv_header_execinfo_h" "$ac_includes_default" -if test "x$ac_cv_header_execinfo_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "execinfo.h" "ac_cv_header_execinfo_h" "$ac_includes_default" +if test "x$ac_cv_header_execinfo_h" = xyes +then : if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing backtrace" >&5 -$as_echo_n "checking for library containing backtrace... " >&6; } -if ${ac_cv_search_backtrace+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing backtrace" >&5 +printf %s "checking for library containing backtrace... " >&6; } +if test ${ac_cv_search_backtrace+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char backtrace (); +namespace conftest { + extern "C" int backtrace (); +} int -main () +main (void) { -return backtrace (); +return conftest::backtrace (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_backtrace=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_backtrace+:} false; then : + if test ${ac_cv_search_backtrace+y} +then : break fi done -if ${ac_cv_search_backtrace+:} false; then : +if test ${ac_cv_search_backtrace+y} +then : -else - ac_cv_search_backtrace=no +else case e in #( + e) ac_cv_search_backtrace=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_backtrace" >&5 -$as_echo "$ac_cv_search_backtrace" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_backtrace" >&5 +printf "%s\n" "$ac_cv_search_backtrace" >&6; } ac_res=$ac_cv_search_backtrace -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing backtrace" >&5 -$as_echo_n "checking for library containing backtrace... " >&6; } -if ${ac_cv_search_backtrace+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing backtrace" >&5 +printf %s "checking for library containing backtrace... " >&6; } +if test ${ac_cv_search_backtrace+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char backtrace (); +namespace conftest { + extern "C" int backtrace (); +} int -main () +main (void) { -return backtrace (); +return conftest::backtrace (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_backtrace=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_backtrace+:} false; then : + if test ${ac_cv_search_backtrace+y} +then : break fi done -if ${ac_cv_search_backtrace+:} false; then : +if test ${ac_cv_search_backtrace+y} +then : -else - ac_cv_search_backtrace=no +else case e in #( + e) ac_cv_search_backtrace=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_backtrace" >&5 -$as_echo "$ac_cv_search_backtrace" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_backtrace" >&5 +printf "%s\n" "$ac_cv_search_backtrace" >&6; } ac_res=$ac_cv_search_backtrace -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -7886,14 +8562,13 @@ fi fi - if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_EXECINFO 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_EXECINFO 1" >>confdefs.h __PLUMED_HAS_EXECINFO=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_EXECINFO" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_EXECINFO" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_EXECINFO" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_EXECINFO" >&2;} fi fi @@ -7901,120 +8576,129 @@ if test $zlib = true ; then found=ko __PLUMED_HAS_ZLIB=no - ac_fn_cxx_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" -if test "x$ac_cv_header_zlib_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" +if test "x$ac_cv_header_zlib_h" = xyes +then : if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gzopen" >&5 -$as_echo_n "checking for library containing gzopen... " >&6; } -if ${ac_cv_search_gzopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gzopen" >&5 +printf %s "checking for library containing gzopen... " >&6; } +if test ${ac_cv_search_gzopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gzopen (); +namespace conftest { + extern "C" int gzopen (); +} int -main () +main (void) { -return gzopen (); +return conftest::gzopen (); ; return 0; } _ACEOF -for ac_lib in '' z; do +for ac_lib in '' z +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_gzopen=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_gzopen+:} false; then : + if test ${ac_cv_search_gzopen+y} +then : break fi done -if ${ac_cv_search_gzopen+:} false; then : +if test ${ac_cv_search_gzopen+y} +then : -else - ac_cv_search_gzopen=no +else case e in #( + e) ac_cv_search_gzopen=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gzopen" >&5 -$as_echo "$ac_cv_search_gzopen" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gzopen" >&5 +printf "%s\n" "$ac_cv_search_gzopen" >&6; } ac_res=$ac_cv_search_gzopen -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gzopen" >&5 -$as_echo_n "checking for library containing gzopen... " >&6; } -if ${ac_cv_search_gzopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gzopen" >&5 +printf %s "checking for library containing gzopen... " >&6; } +if test ${ac_cv_search_gzopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gzopen (); +namespace conftest { + extern "C" int gzopen (); +} int -main () +main (void) { -return gzopen (); +return conftest::gzopen (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_gzopen=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_gzopen+:} false; then : + if test ${ac_cv_search_gzopen+y} +then : break fi done -if ${ac_cv_search_gzopen+:} false; then : +if test ${ac_cv_search_gzopen+y} +then : -else - ac_cv_search_gzopen=no +else case e in #( + e) ac_cv_search_gzopen=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gzopen" >&5 -$as_echo "$ac_cv_search_gzopen" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gzopen" >&5 +printf "%s\n" "$ac_cv_search_gzopen" >&6; } ac_res=$ac_cv_search_gzopen -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -8024,14 +8708,13 @@ fi fi - if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_ZLIB 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_ZLIB 1" >>confdefs.h __PLUMED_HAS_ZLIB=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ZLIB" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_ZLIB" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ZLIB" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_ZLIB" >&2;} fi fi @@ -8040,174 +8723,187 @@ if test $gsl = true ; then found=ko if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing cblas_dgemv" >&5 -$as_echo_n "checking for library containing cblas_dgemv... " >&6; } -if ${ac_cv_search_cblas_dgemv+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing cblas_dgemv" >&5 +printf %s "checking for library containing cblas_dgemv... " >&6; } +if test ${ac_cv_search_cblas_dgemv+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char cblas_dgemv (); +namespace conftest { + extern "C" int cblas_dgemv (); +} int -main () +main (void) { -return cblas_dgemv (); +return conftest::cblas_dgemv (); ; return 0; } _ACEOF -for ac_lib in '' gslcblas; do +for ac_lib in '' gslcblas +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_cblas_dgemv=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_cblas_dgemv+:} false; then : + if test ${ac_cv_search_cblas_dgemv+y} +then : break fi done -if ${ac_cv_search_cblas_dgemv+:} false; then : +if test ${ac_cv_search_cblas_dgemv+y} +then : -else - ac_cv_search_cblas_dgemv=no +else case e in #( + e) ac_cv_search_cblas_dgemv=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_cblas_dgemv" >&5 -$as_echo "$ac_cv_search_cblas_dgemv" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_cblas_dgemv" >&5 +printf "%s\n" "$ac_cv_search_cblas_dgemv" >&6; } ac_res=$ac_cv_search_cblas_dgemv -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - ac_fn_cxx_check_header_mongrel "$LINENO" "gsl/gsl_vector.h" "ac_cv_header_gsl_gsl_vector_h" "$ac_includes_default" -if test "x$ac_cv_header_gsl_gsl_vector_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "gsl/gsl_vector.h" "ac_cv_header_gsl_gsl_vector_h" "$ac_includes_default" +if test "x$ac_cv_header_gsl_gsl_vector_h" = xyes +then : if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gsl_vector_alloc" >&5 -$as_echo_n "checking for library containing gsl_vector_alloc... " >&6; } -if ${ac_cv_search_gsl_vector_alloc+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gsl_vector_alloc" >&5 +printf %s "checking for library containing gsl_vector_alloc... " >&6; } +if test ${ac_cv_search_gsl_vector_alloc+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gsl_vector_alloc (); +namespace conftest { + extern "C" int gsl_vector_alloc (); +} int -main () +main (void) { -return gsl_vector_alloc (); +return conftest::gsl_vector_alloc (); ; return 0; } _ACEOF -for ac_lib in '' gsl; do +for ac_lib in '' gsl +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_gsl_vector_alloc=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_gsl_vector_alloc+:} false; then : + if test ${ac_cv_search_gsl_vector_alloc+y} +then : break fi done -if ${ac_cv_search_gsl_vector_alloc+:} false; then : +if test ${ac_cv_search_gsl_vector_alloc+y} +then : -else - ac_cv_search_gsl_vector_alloc=no +else case e in #( + e) ac_cv_search_gsl_vector_alloc=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsl_vector_alloc" >&5 -$as_echo "$ac_cv_search_gsl_vector_alloc" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsl_vector_alloc" >&5 +printf "%s\n" "$ac_cv_search_gsl_vector_alloc" >&6; } ac_res=$ac_cv_search_gsl_vector_alloc -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gsl_vector_alloc" >&5 -$as_echo_n "checking for library containing gsl_vector_alloc... " >&6; } -if ${ac_cv_search_gsl_vector_alloc+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gsl_vector_alloc" >&5 +printf %s "checking for library containing gsl_vector_alloc... " >&6; } +if test ${ac_cv_search_gsl_vector_alloc+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gsl_vector_alloc (); +namespace conftest { + extern "C" int gsl_vector_alloc (); +} int -main () +main (void) { -return gsl_vector_alloc (); +return conftest::gsl_vector_alloc (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_gsl_vector_alloc=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_gsl_vector_alloc+:} false; then : + if test ${ac_cv_search_gsl_vector_alloc+y} +then : break fi done -if ${ac_cv_search_gsl_vector_alloc+:} false; then : +if test ${ac_cv_search_gsl_vector_alloc+y} +then : -else - ac_cv_search_gsl_vector_alloc=no +else case e in #( + e) ac_cv_search_gsl_vector_alloc=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsl_vector_alloc" >&5 -$as_echo "$ac_cv_search_gsl_vector_alloc" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsl_vector_alloc" >&5 +printf "%s\n" "$ac_cv_search_gsl_vector_alloc" >&6; } ac_res=$ac_cv_search_gsl_vector_alloc -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -8218,178 +8914,190 @@ fi fi - fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing cblas_dgemv" >&5 -$as_echo_n "checking for library containing cblas_dgemv... " >&6; } -if ${ac_cv_search_cblas_dgemv+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing cblas_dgemv" >&5 +printf %s "checking for library containing cblas_dgemv... " >&6; } +if test ${ac_cv_search_cblas_dgemv+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char cblas_dgemv (); +namespace conftest { + extern "C" int cblas_dgemv (); +} int -main () +main (void) { -return cblas_dgemv (); +return conftest::cblas_dgemv (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_cblas_dgemv=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_cblas_dgemv+:} false; then : + if test ${ac_cv_search_cblas_dgemv+y} +then : break fi done -if ${ac_cv_search_cblas_dgemv+:} false; then : +if test ${ac_cv_search_cblas_dgemv+y} +then : -else - ac_cv_search_cblas_dgemv=no +else case e in #( + e) ac_cv_search_cblas_dgemv=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_cblas_dgemv" >&5 -$as_echo "$ac_cv_search_cblas_dgemv" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_cblas_dgemv" >&5 +printf "%s\n" "$ac_cv_search_cblas_dgemv" >&6; } ac_res=$ac_cv_search_cblas_dgemv -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - ac_fn_cxx_check_header_mongrel "$LINENO" "gsl/gsl_vector.h" "ac_cv_header_gsl_gsl_vector_h" "$ac_includes_default" -if test "x$ac_cv_header_gsl_gsl_vector_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "gsl/gsl_vector.h" "ac_cv_header_gsl_gsl_vector_h" "$ac_includes_default" +if test "x$ac_cv_header_gsl_gsl_vector_h" = xyes +then : if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gsl_vector_alloc" >&5 -$as_echo_n "checking for library containing gsl_vector_alloc... " >&6; } -if ${ac_cv_search_gsl_vector_alloc+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gsl_vector_alloc" >&5 +printf %s "checking for library containing gsl_vector_alloc... " >&6; } +if test ${ac_cv_search_gsl_vector_alloc+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gsl_vector_alloc (); +namespace conftest { + extern "C" int gsl_vector_alloc (); +} int -main () +main (void) { -return gsl_vector_alloc (); +return conftest::gsl_vector_alloc (); ; return 0; } _ACEOF -for ac_lib in '' gsl; do +for ac_lib in '' gsl +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_gsl_vector_alloc=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_gsl_vector_alloc+:} false; then : + if test ${ac_cv_search_gsl_vector_alloc+y} +then : break fi done -if ${ac_cv_search_gsl_vector_alloc+:} false; then : +if test ${ac_cv_search_gsl_vector_alloc+y} +then : -else - ac_cv_search_gsl_vector_alloc=no +else case e in #( + e) ac_cv_search_gsl_vector_alloc=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsl_vector_alloc" >&5 -$as_echo "$ac_cv_search_gsl_vector_alloc" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsl_vector_alloc" >&5 +printf "%s\n" "$ac_cv_search_gsl_vector_alloc" >&6; } ac_res=$ac_cv_search_gsl_vector_alloc -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gsl_vector_alloc" >&5 -$as_echo_n "checking for library containing gsl_vector_alloc... " >&6; } -if ${ac_cv_search_gsl_vector_alloc+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gsl_vector_alloc" >&5 +printf %s "checking for library containing gsl_vector_alloc... " >&6; } +if test ${ac_cv_search_gsl_vector_alloc+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gsl_vector_alloc (); +namespace conftest { + extern "C" int gsl_vector_alloc (); +} int -main () +main (void) { -return gsl_vector_alloc (); +return conftest::gsl_vector_alloc (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_gsl_vector_alloc=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_gsl_vector_alloc+:} false; then : + if test ${ac_cv_search_gsl_vector_alloc+y} +then : break fi done -if ${ac_cv_search_gsl_vector_alloc+:} false; then : +if test ${ac_cv_search_gsl_vector_alloc+y} +then : -else - ac_cv_search_gsl_vector_alloc=no +else case e in #( + e) ac_cv_search_gsl_vector_alloc=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsl_vector_alloc" >&5 -$as_echo "$ac_cv_search_gsl_vector_alloc" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsl_vector_alloc" >&5 +printf "%s\n" "$ac_cv_search_gsl_vector_alloc" >&6; } ac_res=$ac_cv_search_gsl_vector_alloc -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -8400,17 +9108,16 @@ fi fi - fi fi if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_GSL 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_GSL 1" >>confdefs.h else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_GSL" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_GSL" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_GSL" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_GSL" >&2;} fi fi @@ -8438,8 +9145,8 @@ if test $boost_graph = true ; then fi # check without libraries - { $as_echo "$as_me:${as_lineno-$LINENO}: checking boost graph without extra libs" >&5 -$as_echo_n "checking boost graph without extra libs... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking boost graph without extra libs" >&5 +printf %s "checking boost graph without extra libs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8454,22 +9161,24 @@ main () } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$found" = "ko" ; then if test "$multiple" = "yes" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking boost graph with $all_LIBS" >&5 -$as_echo_n "checking boost graph with $all_LIBS... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking boost graph with $all_LIBS" >&5 +printf %s "checking boost graph with $all_LIBS... " >&6; } LIBS="$all_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8485,22 +9194,24 @@ main () } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext else for testlib in $testlibs do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking boost graph with -l$testlib" >&5 -$as_echo_n "checking boost graph with -l$testlib... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking boost graph with -l$testlib" >&5 +printf %s "checking boost graph with -l$testlib... " >&6; } LIBS="-l$testlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8516,16 +9227,18 @@ main () } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test $found = ok ; then break @@ -8536,12 +9249,12 @@ rm -f core conftest.err conftest.$ac_objext \ fi if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_BOOST_GRAPH 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_BOOST_GRAPH 1" >>confdefs.h __PLUMED_HAS_BOOST_GRAPH=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_BOOST_GRAPH" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_BOOST_GRAPH" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_BOOST_GRAPH" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_BOOST_GRAPH" >&2;} LIBS="$save_LIBS" fi @@ -8571,8 +9284,8 @@ if test $boost_serialization = true ; then fi # check without libraries - { $as_echo "$as_me:${as_lineno-$LINENO}: checking boost serialization without extra libs" >&5 -$as_echo_n "checking boost serialization without extra libs... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking boost serialization without extra libs" >&5 +printf %s "checking boost serialization without extra libs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8585,22 +9298,24 @@ int main() { } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$found" = "ko" ; then if test "$multiple" = "yes" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking boost serialization with $all_LIBS" >&5 -$as_echo_n "checking boost serialization with $all_LIBS... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking boost serialization with $all_LIBS" >&5 +printf %s "checking boost serialization with $all_LIBS... " >&6; } LIBS="$all_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8614,22 +9329,24 @@ int main() { } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext else for testlib in $testlibs do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking boost serialization with -l$testlib" >&5 -$as_echo_n "checking boost serialization with -l$testlib... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking boost serialization with -l$testlib" >&5 +printf %s "checking boost serialization with -l$testlib... " >&6; } LIBS="-l$testlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8643,16 +9360,18 @@ int main() { } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test $found = ok ; then break @@ -8663,12 +9382,12 @@ rm -f core conftest.err conftest.$ac_objext \ fi if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_BOOST_SERIALIZATION 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_BOOST_SERIALIZATION 1" >>confdefs.h __PLUMED_HAS_BOOST_SERIALIZATION=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_BOOST_SERIALIZATION" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_BOOST_SERIALIZATION" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_BOOST_SERIALIZATION" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_BOOST_SERIALIZATION" >&2;} LIBS="$save_LIBS" fi @@ -8679,120 +9398,129 @@ if test $fftw = true ; then found=ko __PLUMED_HAS_FFTW=no - ac_fn_cxx_check_header_mongrel "$LINENO" "fftw3.h" "ac_cv_header_fftw3_h" "$ac_includes_default" -if test "x$ac_cv_header_fftw3_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "fftw3.h" "ac_cv_header_fftw3_h" "$ac_includes_default" +if test "x$ac_cv_header_fftw3_h" = xyes +then : if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing fftw_execute" >&5 -$as_echo_n "checking for library containing fftw_execute... " >&6; } -if ${ac_cv_search_fftw_execute+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing fftw_execute" >&5 +printf %s "checking for library containing fftw_execute... " >&6; } +if test ${ac_cv_search_fftw_execute+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char fftw_execute (); +namespace conftest { + extern "C" int fftw_execute (); +} int -main () +main (void) { -return fftw_execute (); +return conftest::fftw_execute (); ; return 0; } _ACEOF -for ac_lib in '' fftw3; do +for ac_lib in '' fftw3 +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_fftw_execute=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_fftw_execute+:} false; then : + if test ${ac_cv_search_fftw_execute+y} +then : break fi done -if ${ac_cv_search_fftw_execute+:} false; then : +if test ${ac_cv_search_fftw_execute+y} +then : -else - ac_cv_search_fftw_execute=no +else case e in #( + e) ac_cv_search_fftw_execute=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fftw_execute" >&5 -$as_echo "$ac_cv_search_fftw_execute" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fftw_execute" >&5 +printf "%s\n" "$ac_cv_search_fftw_execute" >&6; } ac_res=$ac_cv_search_fftw_execute -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing fftw_execute" >&5 -$as_echo_n "checking for library containing fftw_execute... " >&6; } -if ${ac_cv_search_fftw_execute+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing fftw_execute" >&5 +printf %s "checking for library containing fftw_execute... " >&6; } +if test ${ac_cv_search_fftw_execute+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char fftw_execute (); +namespace conftest { + extern "C" int fftw_execute (); +} int -main () +main (void) { -return fftw_execute (); +return conftest::fftw_execute (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_fftw_execute=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_fftw_execute+:} false; then : + if test ${ac_cv_search_fftw_execute+y} +then : break fi done -if ${ac_cv_search_fftw_execute+:} false; then : +if test ${ac_cv_search_fftw_execute+y} +then : -else - ac_cv_search_fftw_execute=no +else case e in #( + e) ac_cv_search_fftw_execute=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fftw_execute" >&5 -$as_echo "$ac_cv_search_fftw_execute" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fftw_execute" >&5 +printf "%s\n" "$ac_cv_search_fftw_execute" >&6; } ac_res=$ac_cv_search_fftw_execute -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -8802,14 +9530,13 @@ fi fi - if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_FFTW 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_FFTW 1" >>confdefs.h __PLUMED_HAS_FFTW=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_FFTW" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_FFTW" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_FFTW" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_FFTW" >&2;} fi fi @@ -8832,38 +9559,44 @@ if test -z "$PYTHON_BIN" ; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_PYTHON_BIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$PYTHON_BIN"; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PYTHON_BIN+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$PYTHON_BIN"; then ac_cv_prog_PYTHON_BIN="$PYTHON_BIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_PYTHON_BIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi +fi ;; +esac fi PYTHON_BIN=$ac_cv_prog_PYTHON_BIN if test -n "$PYTHON_BIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_BIN" >&5 -$as_echo "$PYTHON_BIN" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_BIN" >&5 +printf "%s\n" "$PYTHON_BIN" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8872,11 +9605,11 @@ done fi if test -n "$PYTHON_BIN" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Python executable is $PYTHON_BIN" >&5 -$as_echo "$as_me: Python executable is $PYTHON_BIN" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Python executable is $PYTHON_BIN" >&5 +printf "%s\n" "$as_me: Python executable is $PYTHON_BIN" >&6;} if test $pycv = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pycv: support for required python modules (python3, pybind11, numpy)" >&5 -$as_echo_n "checking pycv: support for required python modules (python3, pybind11, numpy)... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pycv: support for required python modules (python3, pybind11, numpy)" >&5 +printf %s "checking pycv: support for required python modules (python3, pybind11, numpy)... " >&6; } testimport=" import numpy import pybind11 @@ -8888,35 +9621,35 @@ import pybind11 python_config=python${pyver}-config if ${python_config} --ldflags --embed 1>/dev/null 2>/dev/null ;then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } PYBIND11_CFLAGS="$($PYTHON_BIN -m pybind11 --includes) -fvisibility=hidden" PYTHON_CFLAGS=$(${python_config} --cflags --embed) PYTHON_LDFLAGS=$(${python_config} --ldflags --embed) #TODO: conda_fixup PLUMED_CAN_PYCV=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable pycv" >&5 -$as_echo "$as_me: WARNING: cannot enable pycv" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"PyCV needs python to be embeddable, please rebuild python\"" >&5 -$as_echo "$as_me: WARNING: \"PyCV needs python to be embeddable, please rebuild python\"" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable pycv" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable pycv" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: \"PyCV needs python to be embeddable, please rebuild python\"" >&5 +printf "%s\n" "$as_me: WARNING: \"PyCV needs python to be embeddable, please rebuild python\"" >&2;} fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable pycv" >&5 -$as_echo "$as_me: WARNING: cannot enable pycv" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable pycv" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable pycv" >&2;} fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable pycv" >&5 -$as_echo "$as_me: WARNING: cannot enable pycv" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable pycv" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable pycv" >&2;} fi if test $python = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking python wrapper: support for required python modules (python3, setuptools, cython)" >&5 -$as_echo_n "checking python wrapper: support for required python modules (python3, setuptools, cython)... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python wrapper: support for required python modules (python3, setuptools, cython)" >&5 +printf %s "checking python wrapper: support for required python modules (python3, setuptools, cython)... " >&6; } testimport=" from setuptools import setup from setuptools import Extension @@ -8926,20 +9659,20 @@ if sys.version_info < (3,): raise ImportError('PLUMED>= 2.6 only supports Python 3') " if echo "$testimport" | "$PYTHON_BIN" 1>/dev/null 2>/dev/null; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - $as_echo "#define __PLUMED_HAS_PYTHON 1" >>confdefs.h + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + printf "%s\n" "#define __PLUMED_HAS_PYTHON 1" >>confdefs.h CYTHON_FOUND=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable python interface" >&5 -$as_echo "$as_me: WARNING: cannot enable python interface" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable python interface" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable python interface" >&2;} fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable python interface" >&5 -$as_echo "$as_me: WARNING: cannot enable python interface" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable python interface" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable python interface" >&2;} fi fi @@ -8952,120 +9685,129 @@ if test "$af_ocl" = true ; then found=ko __PLUMED_HAS_ARRAYFIRE=no - ac_fn_cxx_check_header_mongrel "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" -if test "x$ac_cv_header_arrayfire_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" +if test "x$ac_cv_header_arrayfire_h" = xyes +then : if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -$as_echo_n "checking for library containing af_is_double... " >&6; } -if ${ac_cv_search_af_is_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +printf %s "checking for library containing af_is_double... " >&6; } +if test ${ac_cv_search_af_is_double+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char af_is_double (); +namespace conftest { + extern "C" int af_is_double (); +} int -main () +main (void) { -return af_is_double (); +return conftest::af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' afopencl; do +for ac_lib in '' afopencl +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_af_is_double+:} false; then : + if test ${ac_cv_search_af_is_double+y} +then : break fi done -if ${ac_cv_search_af_is_double+:} false; then : +if test ${ac_cv_search_af_is_double+y} +then : -else - ac_cv_search_af_is_double=no +else case e in #( + e) ac_cv_search_af_is_double=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -$as_echo "$ac_cv_search_af_is_double" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +printf "%s\n" "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -$as_echo_n "checking for library containing af_is_double... " >&6; } -if ${ac_cv_search_af_is_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +printf %s "checking for library containing af_is_double... " >&6; } +if test ${ac_cv_search_af_is_double+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char af_is_double (); +namespace conftest { + extern "C" int af_is_double (); +} int -main () +main (void) { -return af_is_double (); +return conftest::af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_af_is_double+:} false; then : + if test ${ac_cv_search_af_is_double+y} +then : break fi done -if ${ac_cv_search_af_is_double+:} false; then : +if test ${ac_cv_search_af_is_double+y} +then : -else - ac_cv_search_af_is_double=no +else case e in #( + e) ac_cv_search_af_is_double=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -$as_echo "$ac_cv_search_af_is_double" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +printf "%s\n" "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -9075,133 +9817,141 @@ fi fi - if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_ARRAYFIRE 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_ARRAYFIRE 1" >>confdefs.h __PLUMED_HAS_ARRAYFIRE=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&2;} fi found=ko __PLUMED_HAS_ARRAYFIRE_OCL=no - ac_fn_cxx_check_header_mongrel "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" -if test "x$ac_cv_header_arrayfire_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" +if test "x$ac_cv_header_arrayfire_h" = xyes +then : if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -$as_echo_n "checking for library containing af_is_double... " >&6; } -if ${ac_cv_search_af_is_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +printf %s "checking for library containing af_is_double... " >&6; } +if test ${ac_cv_search_af_is_double+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char af_is_double (); +namespace conftest { + extern "C" int af_is_double (); +} int -main () +main (void) { -return af_is_double (); +return conftest::af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' afopencl; do +for ac_lib in '' afopencl +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_af_is_double+:} false; then : + if test ${ac_cv_search_af_is_double+y} +then : break fi done -if ${ac_cv_search_af_is_double+:} false; then : +if test ${ac_cv_search_af_is_double+y} +then : -else - ac_cv_search_af_is_double=no +else case e in #( + e) ac_cv_search_af_is_double=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -$as_echo "$ac_cv_search_af_is_double" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +printf "%s\n" "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -$as_echo_n "checking for library containing af_is_double... " >&6; } -if ${ac_cv_search_af_is_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +printf %s "checking for library containing af_is_double... " >&6; } +if test ${ac_cv_search_af_is_double+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char af_is_double (); +namespace conftest { + extern "C" int af_is_double (); +} int -main () +main (void) { -return af_is_double (); +return conftest::af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_af_is_double+:} false; then : + if test ${ac_cv_search_af_is_double+y} +then : break fi done -if ${ac_cv_search_af_is_double+:} false; then : +if test ${ac_cv_search_af_is_double+y} +then : -else - ac_cv_search_af_is_double=no +else case e in #( + e) ac_cv_search_af_is_double=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -$as_echo "$ac_cv_search_af_is_double" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +printf "%s\n" "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -9211,14 +9961,13 @@ fi fi - if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_ARRAYFIRE_OCL 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_ARRAYFIRE_OCL 1" >>confdefs.h __PLUMED_HAS_ARRAYFIRE_OCL=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE_OCL" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE_OCL" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE_OCL" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE_OCL" >&2;} fi fi @@ -9226,120 +9975,129 @@ if test "$af_cuda" = true ; then found=ko __PLUMED_HAS_ARRAYFIRE=no - ac_fn_cxx_check_header_mongrel "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" -if test "x$ac_cv_header_arrayfire_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" +if test "x$ac_cv_header_arrayfire_h" = xyes +then : if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -$as_echo_n "checking for library containing af_is_double... " >&6; } -if ${ac_cv_search_af_is_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +printf %s "checking for library containing af_is_double... " >&6; } +if test ${ac_cv_search_af_is_double+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char af_is_double (); +namespace conftest { + extern "C" int af_is_double (); +} int -main () +main (void) { -return af_is_double (); +return conftest::af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' afcuda; do +for ac_lib in '' afcuda +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_af_is_double+:} false; then : + if test ${ac_cv_search_af_is_double+y} +then : break fi done -if ${ac_cv_search_af_is_double+:} false; then : +if test ${ac_cv_search_af_is_double+y} +then : -else - ac_cv_search_af_is_double=no +else case e in #( + e) ac_cv_search_af_is_double=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -$as_echo "$ac_cv_search_af_is_double" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +printf "%s\n" "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -$as_echo_n "checking for library containing af_is_double... " >&6; } -if ${ac_cv_search_af_is_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +printf %s "checking for library containing af_is_double... " >&6; } +if test ${ac_cv_search_af_is_double+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char af_is_double (); +namespace conftest { + extern "C" int af_is_double (); +} int -main () +main (void) { -return af_is_double (); +return conftest::af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_af_is_double+:} false; then : + if test ${ac_cv_search_af_is_double+y} +then : break fi done -if ${ac_cv_search_af_is_double+:} false; then : +if test ${ac_cv_search_af_is_double+y} +then : -else - ac_cv_search_af_is_double=no +else case e in #( + e) ac_cv_search_af_is_double=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -$as_echo "$ac_cv_search_af_is_double" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +printf "%s\n" "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -9349,133 +10107,141 @@ fi fi - if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_ARRAYFIRE 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_ARRAYFIRE 1" >>confdefs.h __PLUMED_HAS_ARRAYFIRE=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&2;} fi found=ko __PLUMED_HAS_ARRAYFIRE_CUDA=no - ac_fn_cxx_check_header_mongrel "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" -if test "x$ac_cv_header_arrayfire_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" +if test "x$ac_cv_header_arrayfire_h" = xyes +then : if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -$as_echo_n "checking for library containing af_is_double... " >&6; } -if ${ac_cv_search_af_is_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +printf %s "checking for library containing af_is_double... " >&6; } +if test ${ac_cv_search_af_is_double+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char af_is_double (); +namespace conftest { + extern "C" int af_is_double (); +} int -main () +main (void) { -return af_is_double (); +return conftest::af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' afcuda; do +for ac_lib in '' afcuda +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_af_is_double+:} false; then : + if test ${ac_cv_search_af_is_double+y} +then : break fi done -if ${ac_cv_search_af_is_double+:} false; then : +if test ${ac_cv_search_af_is_double+y} +then : -else - ac_cv_search_af_is_double=no +else case e in #( + e) ac_cv_search_af_is_double=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -$as_echo "$ac_cv_search_af_is_double" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +printf "%s\n" "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -$as_echo_n "checking for library containing af_is_double... " >&6; } -if ${ac_cv_search_af_is_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +printf %s "checking for library containing af_is_double... " >&6; } +if test ${ac_cv_search_af_is_double+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char af_is_double (); +namespace conftest { + extern "C" int af_is_double (); +} int -main () +main (void) { -return af_is_double (); +return conftest::af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_af_is_double+:} false; then : + if test ${ac_cv_search_af_is_double+y} +then : break fi done -if ${ac_cv_search_af_is_double+:} false; then : +if test ${ac_cv_search_af_is_double+y} +then : -else - ac_cv_search_af_is_double=no +else case e in #( + e) ac_cv_search_af_is_double=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -$as_echo "$ac_cv_search_af_is_double" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +printf "%s\n" "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -9485,14 +10251,13 @@ fi fi - if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_ARRAYFIRE_CUDA 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_ARRAYFIRE_CUDA 1" >>confdefs.h __PLUMED_HAS_ARRAYFIRE_CUDA=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE_CUDA" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE_CUDA" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE_CUDA" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE_CUDA" >&2;} fi fi @@ -9500,120 +10265,129 @@ if test "$af_cpu" = true ; then found=ko __PLUMED_HAS_ARRAYFIRE=no - ac_fn_cxx_check_header_mongrel "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" -if test "x$ac_cv_header_arrayfire_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" +if test "x$ac_cv_header_arrayfire_h" = xyes +then : if test "${libsearch}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -$as_echo_n "checking for library containing af_is_double... " >&6; } -if ${ac_cv_search_af_is_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +printf %s "checking for library containing af_is_double... " >&6; } +if test ${ac_cv_search_af_is_double+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char af_is_double (); +namespace conftest { + extern "C" int af_is_double (); +} int -main () +main (void) { -return af_is_double (); +return conftest::af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' afcpu; do +for ac_lib in '' afcpu +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_af_is_double+:} false; then : + if test ${ac_cv_search_af_is_double+y} +then : break fi done -if ${ac_cv_search_af_is_double+:} false; then : +if test ${ac_cv_search_af_is_double+y} +then : -else - ac_cv_search_af_is_double=no +else case e in #( + e) ac_cv_search_af_is_double=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -$as_echo "$ac_cv_search_af_is_double" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +printf "%s\n" "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -$as_echo_n "checking for library containing af_is_double... " >&6; } -if ${ac_cv_search_af_is_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +printf %s "checking for library containing af_is_double... " >&6; } +if test ${ac_cv_search_af_is_double+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char af_is_double (); +namespace conftest { + extern "C" int af_is_double (); +} int -main () +main (void) { -return af_is_double (); +return conftest::af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' ; do +for ac_lib in '' +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO"; then : + if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_af_is_double+:} false; then : + if test ${ac_cv_search_af_is_double+y} +then : break fi done -if ${ac_cv_search_af_is_double+:} false; then : +if test ${ac_cv_search_af_is_double+y} +then : -else - ac_cv_search_af_is_double=no +else case e in #( + e) ac_cv_search_af_is_double=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -$as_echo "$ac_cv_search_af_is_double" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +printf "%s\n" "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -9623,66 +10397,74 @@ fi fi - if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_ARRAYFIRE 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_ARRAYFIRE 1" >>confdefs.h __PLUMED_HAS_ARRAYFIRE=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&2;} fi fi +# metatensor requires libtorch +if test $metatensor = true ; then + libtorch=true; +fi + #added by luigibonati if test $libtorch = true ; then # disable as-needed in linking libraries (both static and shared) save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wl,--no-as-needed" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wl,--no-as-needed" >&5 -$as_echo_n "checking whether $CXX accepts -Wl,--no-as-needed... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wl,--no-as-needed" >&5 +printf %s "checking whether $CXX accepts -Wl,--no-as-needed... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext LDSHARED="$LDSHARED -Wl,--no-as-needed " @@ -9711,8 +10493,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi # check without libraries - { $as_echo "$as_me:${as_lineno-$LINENO}: checking libtorch_cuda without extra libs" >&5 -$as_echo_n "checking libtorch_cuda without extra libs... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libtorch_cuda without extra libs" >&5 +printf %s "checking libtorch_cuda without extra libs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9729,22 +10511,24 @@ $as_echo_n "checking libtorch_cuda without extra libs... " >&6; } } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$found" = "ko" ; then if test "$multiple" = "yes" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking libtorch_cuda with $all_LIBS" >&5 -$as_echo_n "checking libtorch_cuda with $all_LIBS... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libtorch_cuda with $all_LIBS" >&5 +printf %s "checking libtorch_cuda with $all_LIBS... " >&6; } LIBS="$all_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9762,22 +10546,24 @@ $as_echo_n "checking libtorch_cuda with $all_LIBS... " >&6; } } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext else for testlib in $testlibs do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking libtorch_cuda with -l$testlib" >&5 -$as_echo_n "checking libtorch_cuda with -l$testlib... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libtorch_cuda with -l$testlib" >&5 +printf %s "checking libtorch_cuda with -l$testlib... " >&6; } LIBS="-l$testlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9795,16 +10581,18 @@ $as_echo_n "checking libtorch_cuda with -l$testlib... " >&6; } } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test $found = ok ; then break @@ -9815,12 +10603,12 @@ rm -f core conftest.err conftest.$ac_objext \ fi if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_LIBTORCH 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_LIBTORCH 1" >>confdefs.h __PLUMED_HAS_LIBTORCH=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&2;} LIBS="$save_LIBS" fi @@ -9851,8 +10639,8 @@ $as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&2;} fi # check without libraries - { $as_echo "$as_me:${as_lineno-$LINENO}: checking libtorch_cpu without extra libs" >&5 -$as_echo_n "checking libtorch_cpu without extra libs... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libtorch_cpu without extra libs" >&5 +printf %s "checking libtorch_cpu without extra libs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9865,22 +10653,24 @@ $as_echo_n "checking libtorch_cpu without extra libs... " >&6; } } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$found" = "ko" ; then if test "$multiple" = "yes" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking libtorch_cpu with $all_LIBS" >&5 -$as_echo_n "checking libtorch_cpu with $all_LIBS... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libtorch_cpu with $all_LIBS" >&5 +printf %s "checking libtorch_cpu with $all_LIBS... " >&6; } LIBS="$all_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9894,22 +10684,24 @@ $as_echo_n "checking libtorch_cpu with $all_LIBS... " >&6; } } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext else for testlib in $testlibs do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking libtorch_cpu with -l$testlib" >&5 -$as_echo_n "checking libtorch_cpu with -l$testlib... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libtorch_cpu with -l$testlib" >&5 +printf %s "checking libtorch_cpu with -l$testlib... " >&6; } LIBS="-l$testlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9923,16 +10715,18 @@ $as_echo_n "checking libtorch_cpu with -l$testlib... " >&6; } } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : found=ok - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test $found = ok ; then break @@ -9943,23 +10737,151 @@ rm -f core conftest.err conftest.$ac_objext \ fi if test $found = ok ; then - $as_echo "#define __PLUMED_HAS_LIBTORCH 1" >>confdefs.h + printf "%s\n" "#define __PLUMED_HAS_LIBTORCH 1" >>confdefs.h __PLUMED_HAS_LIBTORCH=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&5 -$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&2;} LIBS="$save_LIBS" fi fi fi +if test $metatensor = true ; then + # find metatensor and metatensor_torch + + found=ko + __PLUMED_HAS_METATENSOR=no + if test "${libsearch}" = true ; then + testlibs="metatensor metatensor_torch" + else + testlibs="" + fi + save_LIBS="$LIBS" + + # check if multiple libraries are required simultaneously + multiple="no" + if test "true" = "true"; then + multiple="yes" + all_LIBS="" + for testlib in $testlibs; + do + all_LIBS="$all_LIBS -l$testlib" + done + testlibs=" " # to check only without libraries, and later with all together + fi + + # check without libraries + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking metatensor without extra libs" >&5 +printf %s "checking metatensor without extra libs... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + int main() { + metatensor_torch::version(); + return 0; + } + +_ACEOF +if ac_fn_cxx_try_link "$LINENO" +then : + found=ok + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + if test "$found" = "ko" ; then + if test "$multiple" = "yes" ; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking metatensor with $all_LIBS" >&5 +printf %s "checking metatensor with $all_LIBS... " >&6; } + LIBS="$all_LIBS $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + int main() { + metatensor_torch::version(); + return 0; + } + +_ACEOF +if ac_fn_cxx_try_link "$LINENO" +then : + found=ok + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + else + for testlib in $testlibs + do + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking metatensor with -l$testlib" >&5 +printf %s "checking metatensor with -l$testlib... " >&6; } + LIBS="-l$testlib $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + int main() { + metatensor_torch::version(); + return 0; + } + +_ACEOF +if ac_fn_cxx_try_link "$LINENO" +then : + found=ok + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test $found = ok ; then + break + fi + LIBS="$save_LIBS" + done + fi + fi + + if test $found = ok ; then + printf "%s\n" "#define __PLUMED_HAS_METATENSOR 1" >>confdefs.h + + __PLUMED_HAS_METATENSOR=yes + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_METATENSOR" >&5 +printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_METATENSOR" >&2;} + LIBS="$save_LIBS" + fi + +fi + # in non-debug mode, add -DNDEBUG if test "$debug" = false ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Release mode, adding -DNDEBUG" >&5 -$as_echo "$as_me: Release mode, adding -DNDEBUG" >&6;} - $as_echo "#define NDEBUG 1" >>confdefs.h + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Release mode, adding -DNDEBUG" >&5 +printf "%s\n" "$as_me: Release mode, adding -DNDEBUG" >&6;} + printf "%s\n" "#define NDEBUG 1" >>confdefs.h fi @@ -9968,16 +10890,16 @@ fi # also take note that we are using this to relax `make nmcheck` use_debug_glibcxx=no if test "$debug_glibcxx" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Check boundaries, adding -D_GLIBCXX_DEBUG" >&5 -$as_echo "$as_me: Check boundaries, adding -D_GLIBCXX_DEBUG" >&6;} - $as_echo "#define _GLIBCXX_DEBUG 1" >>confdefs.h + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Check boundaries, adding -D_GLIBCXX_DEBUG" >&5 +printf "%s\n" "$as_me: Check boundaries, adding -D_GLIBCXX_DEBUG" >&6;} + printf "%s\n" "#define _GLIBCXX_DEBUG 1" >>confdefs.h use_debug_glibcxx=yes fi # this is necessary in many MPI implementations # I leave it by default, since it seems harmless -$as_echo "#define _REENTRANT 1" >>confdefs.h +printf "%s\n" "#define _REENTRANT 1" >>confdefs.h #### Options for dynamic library to work properly #### @@ -9992,112 +10914,116 @@ $as_echo "#define _REENTRANT 1" >>confdefs.h if test "$shared" = true ; then case `(uname)` in (Darwin) - { $as_echo "$as_me:${as_lineno-$LINENO}: *** Special settings for dynamic libraries on OSX ***" >&5 -$as_echo "$as_me: *** Special settings for dynamic libraries on OSX ***" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: Dynamic library extension is 'dylib'" >&5 -$as_echo "$as_me: Dynamic library extension is 'dylib'" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: LDSHARED needs special flags" >&5 -$as_echo "$as_me: LDSHARED needs special flags" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: *** Special settings for dynamic libraries on OSX ***" >&5 +printf "%s\n" "$as_me: *** Special settings for dynamic libraries on OSX ***" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Dynamic library extension is 'dylib'" >&5 +printf "%s\n" "$as_me: Dynamic library extension is 'dylib'" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: LDSHARED needs special flags" >&5 +printf "%s\n" "$as_me: LDSHARED needs special flags" >&6;} SOEXT=dylib LDSHARED="$LDSHARED -dynamiclib -Wl,-headerpad_max_install_names" if test "$rpath" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Switching off rpath on OSX" >&5 -$as_echo "$as_me: Switching off rpath on OSX" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Switching off rpath on OSX" >&5 +printf "%s\n" "$as_me: Switching off rpath on OSX" >&6;} rpath=false fi ;; (Linux) - { $as_echo "$as_me:${as_lineno-$LINENO}: *** Special settings for dynamic libraries on Linux ***" >&5 -$as_echo "$as_me: *** Special settings for dynamic libraries on Linux ***" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: Dynamic library extension is 'so'" >&5 -$as_echo "$as_me: Dynamic library extension is 'so'" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: LDSHARED and LDFLAGS need special flags" >&5 -$as_echo "$as_me: LDSHARED and LDFLAGS need special flags" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: *** Special settings for dynamic libraries on Linux ***" >&5 +printf "%s\n" "$as_me: *** Special settings for dynamic libraries on Linux ***" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Dynamic library extension is 'so'" >&5 +printf "%s\n" "$as_me: Dynamic library extension is 'so'" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: LDSHARED and LDFLAGS need special flags" >&5 +printf "%s\n" "$as_me: LDSHARED and LDFLAGS need special flags" >&6;} SOEXT=so LDSHARED="$LDSHARED -shared" save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -rdynamic" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether LDFLAGS can contain -rdynamic" >&5 -$as_echo_n "checking whether LDFLAGS can contain -rdynamic... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether LDFLAGS can contain -rdynamic" >&5 +printf %s "checking whether LDFLAGS can contain -rdynamic... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; LDFLAGS="$save_LDFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; LDFLAGS="$save_LDFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$bsymbolic" = true ; then save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -Wl,-Bsymbolic" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether LDFLAGS can contain -Wl,-Bsymbolic" >&5 -$as_echo_n "checking whether LDFLAGS can contain -Wl,-Bsymbolic... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether LDFLAGS can contain -Wl,-Bsymbolic" >&5 +printf %s "checking whether LDFLAGS can contain -Wl,-Bsymbolic... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; LDFLAGS="$save_LDFLAGS" +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; LDFLAGS="$save_LDFLAGS" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi ;; (*) - { $as_echo "$as_me:${as_lineno-$LINENO}: *** Dynamic library only enabled on OSX and Linux ***" >&5 -$as_echo "$as_me: *** Dynamic library only enabled on OSX and Linux ***" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: *** Dynamic library only enabled on OSX and Linux ***" >&5 +printf "%s\n" "$as_me: *** Dynamic library only enabled on OSX and Linux ***" >&6;} esac fi # check linking of runtime library if test -n "$SOEXT" then - { $as_echo "$as_me:${as_lineno-$LINENO}: Using LDSHARED='$LDSHARED'" >&5 -$as_echo "$as_me: Using LDSHARED='$LDSHARED'" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: Using LDFLAGS='$LDFLAGS'" >&5 -$as_echo "$as_me: Using LDFLAGS='$LDFLAGS'" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether LDSHARED can create dynamic libraries" >&5 -$as_echo_n "checking whether LDSHARED can create dynamic libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Using LDSHARED='$LDSHARED'" >&5 +printf "%s\n" "$as_me: Using LDSHARED='$LDSHARED'" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Using LDFLAGS='$LDFLAGS'" >&5 +printf "%s\n" "$as_me: Using LDFLAGS='$LDFLAGS'" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether LDSHARED can create dynamic libraries" >&5 +printf %s "checking whether LDSHARED can create dynamic libraries... " >&6; } rm -f conftest.* echo "void f(void){ return;}" > conftest.cpp $CXX $CXXFLAGS $CPPFLAGS -c conftest.cpp 1>/dev/null 2>/dev/null $LDSHARED $LDFLAGS conftest.o -o conftest.$SOEXT 1>/dev/null 2>/dev/null if test -f conftest.$SOEXT then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dynamic library will be disabled" >&5 -$as_echo "$as_me: WARNING: dynamic library will be disabled" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: dynamic library will be disabled" >&5 +printf "%s\n" "$as_me: WARNING: dynamic library will be disabled" >&2;} SOEXT= fi if test -n "$SOEXT" && test "$rpath" = true ; then @@ -10105,38 +11031,44 @@ $as_echo "$as_me: WARNING: dynamic library will be disabled" >&2;} readelf="" # Extract the first word of "readelf", so it can be a program name with args. set dummy readelf; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_readelf+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$readelf"; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_readelf+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$readelf"; then ac_cv_prog_readelf="$readelf" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_readelf="found" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi +fi ;; +esac fi readelf=$ac_cv_prog_readelf if test -n "$readelf"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $readelf" >&5 -$as_echo "$readelf" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $readelf" >&5 +printf "%s\n" "$readelf" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -10146,20 +11078,20 @@ fi if readelf -d conftest.$SOEXT | grep RPATH | grep -q /some/random/dir ; then LD_MAIN_RUNPATH="-Wl,-R -Wl,\"$libdir:$LIBRARY_PATH\"" LDSHARED="$LDSHARED $LD_MAIN_RUNPATH" - { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling RPATH" >&5 -$as_echo "$as_me: Enabling RPATH" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling RPATH" >&5 +printf "%s\n" "$as_me: Enabling RPATH" >&6;} elif readelf -d conftest.$SOEXT | grep RUNPATH | grep -q /some/random/dir ; then LD_MAIN_RUNPATH="-Wl,-R -Wl,\"$libdir:$LIBRARY_PATH\"" LDSHARED="$LDSHARED $LD_MAIN_RUNPATH" - { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling RUNPATH" >&5 -$as_echo "$as_me: Enabling RUNPATH" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling RUNPATH" >&5 +printf "%s\n" "$as_me: Enabling RUNPATH" >&6;} else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: -R option seems not working, disabling rpath" >&5 -$as_echo "$as_me: WARNING: -R option seems not working, disabling rpath" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -R option seems not working, disabling rpath" >&5 +printf "%s\n" "$as_me: WARNING: -R option seems not working, disabling rpath" >&2;} fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: readelf not available, no way to set rpath" >&5 -$as_echo "$as_me: WARNING: readelf not available, no way to set rpath" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: readelf not available, no way to set rpath" >&5 +printf "%s\n" "$as_me: WARNING: readelf not available, no way to set rpath" >&2;} fi fi rm -f conftest.* @@ -10176,38 +11108,44 @@ make_doc=yes ### Look for doxygen # Extract the first word of "doxygen", so it can be a program name with args. set dummy doxygen; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_doxygen+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$doxygen"; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_doxygen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$doxygen"; then ac_cv_prog_doxygen="$doxygen" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_doxygen="found" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi +fi ;; +esac fi doxygen=$ac_cv_prog_doxygen if test -n "$doxygen"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $doxygen" >&5 -$as_echo "$doxygen" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $doxygen" >&5 +printf "%s\n" "$doxygen" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -10216,54 +11154,60 @@ then doxygen_version=`doxygen --version | awk 'BEGIN{FS="."}{if($1>1 || ($1==1 && $2>=8)) print "ok"}'` if test "$doxygen_version" = ok then - { $as_echo "$as_me:${as_lineno-$LINENO}: Doxygen version is fine" >&5 -$as_echo "$as_me: Doxygen version is fine" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Doxygen version is fine" >&5 +printf "%s\n" "$as_me: Doxygen version is fine" >&6;} else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Doxygen version is <1.8" >&5 -$as_echo "$as_me: WARNING: Doxygen version is <1.8" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Doxygen version is <1.8" >&5 +printf "%s\n" "$as_me: WARNING: Doxygen version is <1.8" >&2;} make_doc=no fi # Extract the first word of "dot", so it can be a program name with args. set dummy dot; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_dot+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$dot"; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_dot+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$dot"; then ac_cv_prog_dot="$dot" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_dot="found" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi +fi ;; +esac fi dot=$ac_cv_prog_dot if test -n "$dot"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dot" >&5 -$as_echo "$dot" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dot" >&5 +printf "%s\n" "$dot" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "$dot" != found then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You will not be able to see diagrams in the manual" >&5 -$as_echo "$as_me: WARNING: You will not be able to see diagrams in the manual" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You will not be able to see diagrams in the manual" >&5 +printf "%s\n" "$as_me: WARNING: You will not be able to see diagrams in the manual" >&2;} fi else make_doc=no @@ -10272,36 +11216,37 @@ fi if test "$make_doc" = yes then - { $as_echo "$as_me:${as_lineno-$LINENO}: Manuals will be generated" >&5 -$as_echo "$as_me: Manuals will be generated" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Manuals will be generated" >&5 +printf "%s\n" "$as_me: Manuals will be generated" >&6;} else - { $as_echo "$as_me:${as_lineno-$LINENO}: Manuals will not be generated" >&5 -$as_echo "$as_me: Manuals will not be generated" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Manuals will not be generated" >&5 +printf "%s\n" "$as_me: Manuals will not be generated" >&6;} fi make_pdfdoc="" if test "$pdfdoc" = true && test "$make_doc" = yes then - { $as_echo "$as_me:${as_lineno-$LINENO}: A PDF version of the manual will be generated" >&5 -$as_echo "$as_me: A PDF version of the manual will be generated" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: A PDF version of the manual will be generated" >&5 +printf "%s\n" "$as_me: A PDF version of the manual will be generated" >&6;} make_pdfdoc=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: A PDF version of the manual will not be generated" >&5 -$as_echo "$as_me: A PDF version of the manual will not be generated" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: A PDF version of the manual will not be generated" >&5 +printf "%s\n" "$as_me: A PDF version of the manual will not be generated" >&6;} make_pdfdoc=no fi program_can_run="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can be run on this machine" >&5 -$as_echo_n "checking whether a program can be run on this machine... " >&6; } -if test "$cross_compiling" = yes; then : - program_can_run=no ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (cross compiling)" >&5 -$as_echo "no (cross compiling)" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can be run on this machine" >&5 +printf %s "checking whether a program can be run on this machine... " >&6; } +if test "$cross_compiling" = yes +then : + program_can_run=no ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (cross compiling)" >&5 +printf "%s\n" "no (cross compiling)" >&6; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __PLUMED_HAS_MPI @@ -10321,29 +11266,33 @@ int main(int argc,char*argv[]){ } _ACEOF -if ac_fn_cxx_try_run "$LINENO"; then : - program_can_run=yes ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - program_can_run=no ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +if ac_fn_cxx_try_run "$LINENO" +then : + program_can_run=yes ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) program_can_run=no ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi if test $mpi_found = ok ; then program_can_run_mpi="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program compiled with mpi can be run on this machine" >&5 -$as_echo_n "checking whether a program compiled with mpi can be run on this machine... " >&6; } -if test "$cross_compiling" = yes; then : - program_can_run_mpi=no ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (cross compiling)" >&5 -$as_echo "no (cross compiling)" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program compiled with mpi can be run on this machine" >&5 +printf %s "checking whether a program compiled with mpi can be run on this machine... " >&6; } +if test "$cross_compiling" = yes +then : + program_can_run_mpi=no ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (cross compiling)" >&5 +printf "%s\n" "no (cross compiling)" >&6; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __PLUMED_HAS_MPI @@ -10359,26 +11308,29 @@ int main(int argc,char*argv[]){ } _ACEOF -if ac_fn_cxx_try_run "$LINENO"; then : - program_can_run_mpi=yes ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - program_can_run_mpi=no ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +if ac_fn_cxx_try_run "$LINENO" +then : + program_can_run_mpi=yes ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) program_can_run_mpi=no ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi fi if test $mpi_found = ok ; then if test -n "$MPIEXEC" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Regtest suite will use $MPIEXEC command to run MPI tests" >&5 -$as_echo "$as_me: Regtest suite will use $MPIEXEC command to run MPI tests" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Regtest suite will use $MPIEXEC command to run MPI tests" >&5 +printf "%s\n" "$as_me: Regtest suite will use $MPIEXEC command to run MPI tests" >&6;} else - { $as_echo "$as_me:${as_lineno-$LINENO}: Regtest suite will use env var PLUMED_MPIRUN to run MPI tests (default: mpirun)" >&5 -$as_echo "$as_me: Regtest suite will use env var PLUMED_MPIRUN to run MPI tests (default: mpirun)" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Regtest suite will use env var PLUMED_MPIRUN to run MPI tests (default: mpirun)" >&5 +printf "%s\n" "$as_me: Regtest suite will use env var PLUMED_MPIRUN to run MPI tests (default: mpirun)" >&6;} fi fi @@ -10391,22 +11343,22 @@ fi if test "$absolute_soname" = true ; then if test "$SOEXT" = "dylib" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-absolute-soname has no effect on OSX" >&5 -$as_echo "$as_me: WARNING: --enable-absolute-soname has no effect on OSX" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --enable-absolute-soname has no effect on OSX" >&5 +printf "%s\n" "$as_me: WARNING: --enable-absolute-soname has no effect on OSX" >&2;} else - { $as_echo "$as_me:${as_lineno-$LINENO}: enabling absolute soname. Full path will be hardcoded in plumed library soname" >&5 -$as_echo "$as_me: enabling absolute soname. Full path will be hardcoded in plumed library soname" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: enabling absolute soname. Full path will be hardcoded in plumed library soname" >&5 +printf "%s\n" "$as_me: enabling absolute soname. Full path will be hardcoded in plumed library soname" >&6;} use_absolute_soname=yes fi fi if test "$absolute_install_name" = false ; then if test "$SOEXT" = "so" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --disable-absolute-install-name has no effect on Linux" >&5 -$as_echo "$as_me: WARNING: --disable-absolute-install-name has no effect on Linux" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --disable-absolute-install-name has no effect on Linux" >&5 +printf "%s\n" "$as_me: WARNING: --disable-absolute-install-name has no effect on Linux" >&2;} else - { $as_echo "$as_me:${as_lineno-$LINENO}: enabling relative install_name. You will have to set DYLD_LIBRARY_PATH yor plumed libraries to be found at runtime" >&5 -$as_echo "$as_me: enabling relative install_name. You will have to set DYLD_LIBRARY_PATH yor plumed libraries to be found at runtime" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: enabling relative install_name. You will have to set DYLD_LIBRARY_PATH yor plumed libraries to be found at runtime" >&5 +printf "%s\n" "$as_me: enabling relative install_name. You will have to set DYLD_LIBRARY_PATH yor plumed libraries to be found at runtime" >&6;} use_absolute_soname=no fi fi @@ -10423,17 +11375,17 @@ else fi #### This further tests are required to allow linking with non c++ compiler -{ $as_echo "$as_me:${as_lineno-$LINENO}: PLUMED seems to be configured properly!" >&5 -$as_echo "$as_me: PLUMED seems to be configured properly!" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: **************************" >&5 -$as_echo "$as_me: **************************" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: PLUMED seems to be configured properly!" >&5 +printf "%s\n" "$as_me: PLUMED seems to be configured properly!" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **************************" >&5 +printf "%s\n" "$as_me: **************************" >&6;} LD_RO= if test "$ld_r" = true ; then for test_LD_RO in "$($CXX --print-prog-name=ld) -r -o" "$CXX -Wl,-r -o" "ld -r -o" do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ objects can be grouped with $test_LD_RO" >&5 -$as_echo_n "checking whether C++ objects can be grouped with $test_LD_RO... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ objects can be grouped with $test_LD_RO" >&5 +printf %s "checking whether C++ objects can be grouped with $test_LD_RO... " >&6; } rm -f conftest* @@ -10459,13 +11411,13 @@ EOF if test -f conftest.exe then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } LD_RO="$test_LD_RO" break else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi done @@ -10476,8 +11428,8 @@ AR_CR= if test "$ar_cr" = true ; then for test_AR_CR in "$($CXX --print-prog-name=ar) cr" "ar cr" do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether static libraries can be created with $test_AR_CR" >&5 -$as_echo_n "checking whether static libraries can be created with $test_AR_CR... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether static libraries can be created with $test_AR_CR" >&5 +printf %s "checking whether static libraries can be created with $test_AR_CR... " >&6; } rm -f conftest* @@ -10503,13 +11455,13 @@ EOF if test -f conftest.exe then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } AR_CR="$test_AR_CR" break else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi done @@ -10520,15 +11472,15 @@ make_static_archive=no if test "${static_archive}" = true ; then if test -z "$LD_RO" || test -z "$AR_CR" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no way to create a static archive if ld -ro or ar cr do not work" >&5 -$as_echo "$as_me: WARNING: no way to create a static archive if ld -ro or ar cr do not work" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: no way to create a static archive if ld -ro or ar cr do not work" >&5 +printf "%s\n" "$as_me: WARNING: no way to create a static archive if ld -ro or ar cr do not work" >&2;} static_archive=false fi fi if test "${static_archive}" = true ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether static-object constructors can be linked from a static archive" >&5 -$as_echo_n "checking whether static-object constructors can be linked from a static archive... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether static-object constructors can be linked from a static archive" >&5 +printf %s "checking whether static-object constructors can be linked from a static archive... " >&6; } magic_token=c1bc476d093a3a5c67b4530e6c54c633593fe9aa rm -f conftest-* @@ -10560,21 +11512,21 @@ EOF # $CXX $CXXFLAGS -o conftest.exe conftest-main.o conftest-both.a 1> /dev/null 2> /dev/null if grep -q $magic_token ./conftest.exe ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } make_static_archive=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi fi if test "${static_patch}" = true ; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: I will now check if C++ objects can be linked by C/Fortran compilers" >&5 -$as_echo "$as_me: I will now check if C++ objects can be linked by C/Fortran compilers" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: This is relevant if you want to use plumed patch --static on a non-C++ code" >&5 -$as_echo "$as_me: This is relevant if you want to use plumed patch --static on a non-C++ code" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: I will now check if C++ objects can be linked by C/Fortran compilers" >&5 +printf "%s\n" "$as_me: I will now check if C++ objects can be linked by C/Fortran compilers" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: This is relevant if you want to use plumed patch --static on a non-C++ code" >&5 +printf "%s\n" "$as_me: This is relevant if you want to use plumed patch --static on a non-C++ code" >&6;} for compiler in CC FC do @@ -10618,37 +11570,37 @@ EOF for testlib in "" $testlibs ; do comment= test -n "$testlib" && comment=" with library $testlib" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $name can link a C++ object$comment" >&5 -$as_echo_n "checking whether $name can link a C++ object$comment... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $name can link a C++ object$comment" >&5 +printf %s "checking whether $name can link a C++ object$comment... " >&6; } $compexe conftest.o conftest-main.o $LDFLAGS $testlib $LIBS -o conftest.exe 1>/dev/null 2>/dev/null if test -f conftest.exe then found=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } LIBS="$testlib $LIBS" break else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi done if test -z "$found" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You might have problems linking $name programs." >&5 -$as_echo "$as_me: WARNING: You might have problems linking $name programs." >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please add c++ library to LIBS" >&5 -$as_echo "$as_me: WARNING: Please add c++ library to LIBS" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You might have problems linking $name programs." >&5 +printf "%s\n" "$as_me: WARNING: You might have problems linking $name programs." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please add c++ library to LIBS" >&5 +printf "%s\n" "$as_me: WARNING: Please add c++ library to LIBS" >&2;} fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: $compiler compiler not configured" >&5 -$as_echo "$as_me: $compiler compiler not configured" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $compiler compiler not configured" >&5 +printf "%s\n" "$as_me: $compiler compiler not configured" >&6;} fi rm -f conftest.* conftest-main.* done else -{ $as_echo "$as_me:${as_lineno-$LINENO}: Static patching is disabled, thus tests required for static patching will be skipped" >&5 -$as_echo "$as_me: Static patching is disabled, thus tests required for static patching will be skipped" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Static patching is disabled, thus tests required for static patching will be skipped" >&5 +printf "%s\n" "$as_me: Static patching is disabled, thus tests required for static patching will be skipped" >&6;} fi if test "$prefix" = NONE @@ -10662,12 +11614,13 @@ for ac_prog in pkg-config do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_pkgconfig_bin+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $pkgconfig_bin in +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_pkgconfig_bin+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $pkgconfig_bin in [\\/]* | ?:[\\/]*) ac_cv_path_pkgconfig_bin="$pkgconfig_bin" # Let the user override the test with a path. ;; @@ -10676,11 +11629,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_pkgconfig_bin="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_pkgconfig_bin="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10688,15 +11645,16 @@ done IFS=$as_save_IFS ;; +esac ;; esac fi pkgconfig_bin=$ac_cv_path_pkgconfig_bin if test -n "$pkgconfig_bin"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pkgconfig_bin" >&5 -$as_echo "$pkgconfig_bin" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pkgconfig_bin" >&5 +printf "%s\n" "$pkgconfig_bin" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -10707,25 +11665,25 @@ done if test -z "$BASH_COMPLETION_DIR" && test -n "$pkgconfig_bin"; then if test "$prefix" = "$(pkg-config --variable=prefix bash-completion 2>/dev/null)" then - { $as_echo "$as_me:${as_lineno-$LINENO}: bash-completion is installed on the same prefix where plumed will be installed" >&5 -$as_echo "$as_me: bash-completion is installed on the same prefix where plumed will be installed" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: bash-completion is installed on the same prefix where plumed will be installed" >&5 +printf "%s\n" "$as_me: bash-completion is installed on the same prefix where plumed will be installed" >&6;} if pkg-config --variable=completionsdir bash-completion 2>/dev/null >/dev/null ; then BASH_COMPLETION_DIR="$(pkg-config --variable=completionsdir bash-completion 2>/dev/null)" fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: bash-completion is not installed or it is installed on a different prefix" >&5 -$as_echo "$as_me: bash-completion is not installed or it is installed on a different prefix" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: bash-completion is not installed or it is installed on a different prefix" >&5 +printf "%s\n" "$as_me: bash-completion is not installed or it is installed on a different prefix" >&6;} pkgconfig_bin="" fi fi if test -n "$BASH_COMPLETION_DIR" then - { $as_echo "$as_me:${as_lineno-$LINENO}: bash completion for plumed will be installed in $BASH_COMPLETION_DIR" >&5 -$as_echo "$as_me: bash completion for plumed will be installed in $BASH_COMPLETION_DIR" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: bash completion for plumed will be installed in $BASH_COMPLETION_DIR" >&5 +printf "%s\n" "$as_me: bash completion for plumed will be installed in $BASH_COMPLETION_DIR" >&6;} else - { $as_echo "$as_me:${as_lineno-$LINENO}: bash completion for plumed will not be installed" >&5 -$as_echo "$as_me: bash completion for plumed will not be installed" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: bash completion for plumed will not be installed" >&5 +printf "%s\n" "$as_me: bash completion for plumed will not be installed" >&6;} fi @@ -10736,9 +11694,9 @@ test "$program_prefix" != NONE && test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. -# By default was `s,x,x', remove it if useless. +# By default was 's,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` +program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` @@ -10746,13 +11704,9 @@ program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` program_transform_name_sh=$(echo "${program_transform_name}" | sed 's:\$\$:$:g') program_name=$(echo plumed | sed "$program_transform_name_sh") -cat >>confdefs.h <<_ACEOF -#define __PLUMED_PROGRAM_NAME "$program_name" -_ACEOF +printf "%s\n" "#define __PLUMED_PROGRAM_NAME \"$program_name\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define __PLUMED_SOEXT "$SOEXT" -_ACEOF +printf "%s\n" "#define __PLUMED_SOEXT \"$SOEXT\"" >>confdefs.h if test "$(echo "$program_name" | tr 'A-Z' 'a-z')" != "$(echo "$program_name" | tr 'A-Z' 'a-z' | sed 's/wrapper$//')" ; then @@ -10768,79 +11722,79 @@ if test "$(echo "$program_name" | tr 'A-Z' 'a-z')" != "$(echo "$program_name" | as_fn_error $? "$program_name is not a valid program name (should not terminate with -config)" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: **** PLUMED will be installed using the following paths:" >&5 -$as_echo "$as_me: **** PLUMED will be installed using the following paths:" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: **** prefix: $prefix" >&5 -$as_echo "$as_me: **** prefix: $prefix" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** PLUMED will be installed using the following paths:" >&5 +printf "%s\n" "$as_me: **** PLUMED will be installed using the following paths:" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** prefix: $prefix" >&5 +printf "%s\n" "$as_me: **** prefix: $prefix" >&6;} if test "$exec_prefix" = NONE ; then exec_prefix_='${prefix}' else exec_prefix_="${exec_prefix}" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: **** exec_prefix: $exec_prefix_" >&5 -$as_echo "$as_me: **** exec_prefix: $exec_prefix_" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: **** bindir: $bindir" >&5 -$as_echo "$as_me: **** bindir: $bindir" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: **** libdir: $libdir" >&5 -$as_echo "$as_me: **** libdir: $libdir" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: **** includedir: $includedir" >&5 -$as_echo "$as_me: **** includedir: $includedir" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: **** datarootdir: $datarootdir" >&5 -$as_echo "$as_me: **** datarootdir: $datarootdir" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: **** datadir: $datadir" >&5 -$as_echo "$as_me: **** datadir: $datadir" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: **** docdir: ${datarootdir}/doc/$program_name" >&5 -$as_echo "$as_me: **** docdir: ${datarootdir}/doc/$program_name" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: **** htmldir: $htmldir" >&5 -$as_echo "$as_me: **** htmldir: $htmldir" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: **** Executable will be named $program_name" >&5 -$as_echo "$as_me: **** Executable will be named $program_name" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: **** As of PLUMED 2.5, you cannot change paths anymore during \"make install\"" >&5 -$as_echo "$as_me: **** As of PLUMED 2.5, you cannot change paths anymore during \"make install\"" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: **** Please configure and make clean to change the prefix" >&5 -$as_echo "$as_me: **** Please configure and make clean to change the prefix" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** exec_prefix: $exec_prefix_" >&5 +printf "%s\n" "$as_me: **** exec_prefix: $exec_prefix_" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** bindir: $bindir" >&5 +printf "%s\n" "$as_me: **** bindir: $bindir" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** libdir: $libdir" >&5 +printf "%s\n" "$as_me: **** libdir: $libdir" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** includedir: $includedir" >&5 +printf "%s\n" "$as_me: **** includedir: $includedir" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** datarootdir: $datarootdir" >&5 +printf "%s\n" "$as_me: **** datarootdir: $datarootdir" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** datadir: $datadir" >&5 +printf "%s\n" "$as_me: **** datadir: $datadir" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** docdir: ${datarootdir}/doc/$program_name" >&5 +printf "%s\n" "$as_me: **** docdir: ${datarootdir}/doc/$program_name" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** htmldir: $htmldir" >&5 +printf "%s\n" "$as_me: **** htmldir: $htmldir" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** Executable will be named $program_name" >&5 +printf "%s\n" "$as_me: **** Executable will be named $program_name" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** As of PLUMED 2.5, you cannot change paths anymore during \"make install\"" >&5 +printf "%s\n" "$as_me: **** As of PLUMED 2.5, you cannot change paths anymore during \"make install\"" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** Please configure and make clean to change the prefix" >&5 +printf "%s\n" "$as_me: **** Please configure and make clean to change the prefix" >&6;} if test -z "$BASH_COMPLETION_DIR" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: **** Bash completion for plumed will not be installed, please add the following two lines to your bashrc" >&5 -$as_echo "$as_me: WARNING: **** Bash completion for plumed will not be installed, please add the following two lines to your bashrc" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: **** _$program_name() { eval \"\$($program_name --no-mpi completion 2>/dev/null)\";}" >&5 -$as_echo "$as_me: WARNING: **** _$program_name() { eval \"\$($program_name --no-mpi completion 2>/dev/null)\";}" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: **** complete -F _$program_name -o default $program_name" >&5 -$as_echo "$as_me: WARNING: **** complete -F _$program_name -o default $program_name" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: **** Bash completion for plumed will not be installed, please add the following two lines to your bashrc" >&5 +printf "%s\n" "$as_me: WARNING: **** Bash completion for plumed will not be installed, please add the following two lines to your bashrc" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: **** _$program_name() { eval \"\$($program_name --no-mpi completion 2>/dev/null)\";}" >&5 +printf "%s\n" "$as_me: WARNING: **** _$program_name() { eval \"\$($program_name --no-mpi completion 2>/dev/null)\";}" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: **** complete -F _$program_name -o default $program_name" >&5 +printf "%s\n" "$as_me: WARNING: **** complete -F _$program_name -o default $program_name" >&2;} fi if test $mpi = true; then if test $mpi_found = ok; then - { $as_echo "$as_me:${as_lineno-$LINENO}: **** PLUMED will be compiled using MPI" >&5 -$as_echo "$as_me: **** PLUMED will be compiled using MPI" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** PLUMED will be compiled using MPI" >&5 +printf "%s\n" "$as_me: **** PLUMED will be compiled using MPI" >&6;} else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: **** PLUMED will NOT be compiled using MPI because MPI have not been found!" >&5 -$as_echo "$as_me: WARNING: **** PLUMED will NOT be compiled using MPI because MPI have not been found!" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: **** PLUMED will NOT be compiled using MPI because MPI have not been found!" >&5 +printf "%s\n" "$as_me: WARNING: **** PLUMED will NOT be compiled using MPI because MPI have not been found!" >&2;} fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: **** PLUMED will be compiled without MPI" >&5 -$as_echo "$as_me: **** PLUMED will be compiled without MPI" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** PLUMED will be compiled without MPI" >&5 +printf "%s\n" "$as_me: **** PLUMED will be compiled without MPI" >&6;} fi if test $program_can_run = no ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: plumed executable will not run on this machine" >&5 -$as_echo "$as_me: WARNING: plumed executable will not run on this machine" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: to patch an MD code use 'plumed-patch'" >&5 -$as_echo "$as_me: WARNING: to patch an MD code use 'plumed-patch'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: plumed executable will not run on this machine" >&5 +printf "%s\n" "$as_me: WARNING: plumed executable will not run on this machine" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: to patch an MD code use 'plumed-patch'" >&5 +printf "%s\n" "$as_me: WARNING: to patch an MD code use 'plumed-patch'" >&2;} elif test $mpi_found = ok ; then if test $program_can_run_mpi = no ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: plumed executable will not run on this machine" >&5 -$as_echo "$as_me: WARNING: plumed executable will not run on this machine" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unless you invoke it as 'plumed --no-mpi'" >&5 -$as_echo "$as_me: WARNING: unless you invoke it as 'plumed --no-mpi'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: all command line tools are thus available as 'plumed --no-mpi name-of-the-tool'" >&5 -$as_echo "$as_me: WARNING: all command line tools are thus available as 'plumed --no-mpi name-of-the-tool'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: e.g. 'plumed --no-mpi driver'" >&5 -$as_echo "$as_me: WARNING: e.g. 'plumed --no-mpi driver'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: to patch an MD code use 'plumed --no-mpi patch'" >&5 -$as_echo "$as_me: WARNING: to patch an MD code use 'plumed --no-mpi patch'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: (notice that MPI will be available anyway in the patched code)" >&5 -$as_echo "$as_me: WARNING: (notice that MPI will be available anyway in the patched code)" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: plumed executable will not run on this machine" >&5 +printf "%s\n" "$as_me: WARNING: plumed executable will not run on this machine" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unless you invoke it as 'plumed --no-mpi'" >&5 +printf "%s\n" "$as_me: WARNING: unless you invoke it as 'plumed --no-mpi'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: all command line tools are thus available as 'plumed --no-mpi name-of-the-tool'" >&5 +printf "%s\n" "$as_me: WARNING: all command line tools are thus available as 'plumed --no-mpi name-of-the-tool'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: e.g. 'plumed --no-mpi driver'" >&5 +printf "%s\n" "$as_me: WARNING: e.g. 'plumed --no-mpi driver'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: to patch an MD code use 'plumed --no-mpi patch'" >&5 +printf "%s\n" "$as_me: WARNING: to patch an MD code use 'plumed --no-mpi patch'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: (notice that MPI will be available anyway in the patched code)" >&5 +printf "%s\n" "$as_me: WARNING: (notice that MPI will be available anyway in the patched code)" >&2;} fi fi @@ -10867,8 +11821,8 @@ cat >confcache <<\_ACEOF # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the # following values. _ACEOF @@ -10884,8 +11838,8 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -10898,14 +11852,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote + # 'set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) - # `set' quotes correctly as required by POSIX, so do not add quotes. + # 'set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | @@ -10915,15 +11869,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; /^ac_cv_env_/b end t clear :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else @@ -10937,8 +11891,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;} fi fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -10969,9 +11923,7 @@ s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote -s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g -s/\[/\\&/g -s/\]/\\&/g +s/[][ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\$/$$/g H :any @@ -10991,7 +11943,7 @@ U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" @@ -11007,8 +11959,8 @@ LTLIBOBJS=$ac_ltlibobjs ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL @@ -11031,63 +11983,65 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( +else case e in #( + e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -11096,13 +12050,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -11111,43 +12058,27 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as `sh COMMAND' +# We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] @@ -11160,9 +12091,9 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -11193,22 +12124,25 @@ as_fn_unset () { eval $1=; unset $1;} } as_unset=as_fn_unset + # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else - as_fn_append () +else case e in #( + e) as_fn_append () { eval $1=\$$1\$2 - } + } ;; +esac fi # as_fn_append # as_fn_arith ARG... @@ -11216,16 +12150,18 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else - as_fn_arith () +else case e in #( + e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } + } ;; +esac fi # as_fn_arith @@ -11252,7 +12188,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -11274,6 +12210,10 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -11287,6 +12227,12 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -11298,9 +12244,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -11328,7 +12274,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -11337,7 +12283,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -11381,10 +12327,12 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated exec 6>&1 @@ -11400,7 +12348,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by PLUMED $as_me 2, which was -generated by GNU Autoconf 2.69. Invocation command line was +generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -11427,7 +12375,7 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions +'$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. @@ -11449,14 +12397,16 @@ $config_files Report bugs to the package provider." _ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ PLUMED config.status 2 -configured by $0, generated by GNU Autoconf 2.69, +configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2023 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -11493,28 +12443,28 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; + printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; + printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; + printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; @@ -11535,7 +12485,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" @@ -11549,7 +12499,7 @@ exec 5>>config.log sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - $as_echo "$ac_log" + printf "%s\n" "$ac_log" } >&5 _ACEOF @@ -11566,7 +12516,7 @@ do "sourceme.sh") CONFIG_FILES="$CONFIG_FILES sourceme.sh" ;; "stamp-h") CONFIG_FILES="$CONFIG_FILES stamp-h" ;; - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; esac done @@ -11576,7 +12526,7 @@ done # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree @@ -11584,7 +12534,7 @@ fi # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. +# after its creation but before its name has been assigned to '$tmp'. $debug || { tmp= ac_tmp= @@ -11608,7 +12558,7 @@ ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. +# This happens for instance with './config.status config.h'. if test -n "$CONFIG_FILES"; then @@ -11774,7 +12724,7 @@ do esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -11796,33 +12746,33 @@ do -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. + # because $ac_f cannot contain ':'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done - # Let's still pretend it is `configure' which instantiates (i.e., don't + # Let's still pretend it is 'configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | + ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac @@ -11839,7 +12789,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | +printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -11863,9 +12813,9 @@ $as_echo X"$ac_file" | case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -11918,8 +12868,8 @@ ac_sed_dataroot=' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' @@ -11932,7 +12882,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 esac _ACEOF -# Neutralize VPATH when `$srcdir' = `.'. +# Neutralize VPATH when '$srcdir' = '.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 @@ -11961,9 +12911,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" @@ -12015,8 +12965,9 @@ if test "$no_create" != yes; then $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi + diff --git a/configure.ac b/configure.ac index debe3346d0..66fc4a0f2f 100644 --- a/configure.ac +++ b/configure.ac @@ -323,6 +323,7 @@ PLUMED_CONFIG_ENABLE([af_ocl],[search for arrayfire_ocl],[no]) PLUMED_CONFIG_ENABLE([af_cuda],[search for arrayfire_cuda],[no]) PLUMED_CONFIG_ENABLE([af_cpu],[search for arrayfire_cpu],[no]) PLUMED_CONFIG_ENABLE([libtorch],[search for libtorch],[no]) #added by luigibonati +PLUMED_CONFIG_ENABLE([metatensor],[search for metatensor],[no]) AC_ARG_VAR(SOEXT,[extension of dynamic libraries (so/dylib)]) AC_ARG_VAR(STATIC_LIBS,[variables that should be linked statically directly to MD code - configure will add here -ldl if necessary ]) @@ -926,6 +927,11 @@ if test "$af_cpu" = true ; then PLUMED_CHECK_PACKAGE([arrayfire.h],[af_is_double],[__PLUMED_HAS_ARRAYFIRE],[afcpu]) fi +# metatensor requires libtorch +if test $metatensor = true ; then + libtorch=true; +fi + #added by luigibonati if test $libtorch = true ; then # disable as-needed in linking libraries (both static and shared) @@ -963,6 +969,17 @@ if test $libtorch = true ; then fi fi +if test $metatensor = true ; then + # find metatensor and metatensor_torch + PLUMED_CHECK_CXX_PACKAGE([metatensor],[ + #include + int main() { + metatensor_torch::version(); + return 0; + } + ], [__PLUMED_HAS_METATENSOR], [metatensor metatensor_torch], [true]) +fi + # in non-debug mode, add -DNDEBUG if test "$debug" = false ; then AC_MSG_NOTICE([Release mode, adding -DNDEBUG]) diff --git a/src/.gitignore b/src/.gitignore index b0a047c56e..9dcf4a92f5 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -65,6 +65,7 @@ !/pytorch !/membranefusion !/wham +!/metatensor # And just ignore these files *.xxd diff --git a/src/metatensor/.gitignore b/src/metatensor/.gitignore new file mode 100644 index 0000000000..10af78cac2 --- /dev/null +++ b/src/metatensor/.gitignore @@ -0,0 +1,12 @@ +/* +# in this directory, only accept source, Makefile and README +!/.gitignore +!/*.c +!/*.cpp +!/*.h +!/*.sh +!/Makefile +!/README +!/README.md +!/module.type +!/COPYRIGHT diff --git a/src/metatensor/Makefile b/src/metatensor/Makefile new file mode 100644 index 0000000000..fce705eebf --- /dev/null +++ b/src/metatensor/Makefile @@ -0,0 +1,4 @@ +USE=core + +#generic makefile +include ../maketools/make.module diff --git a/src/metatensor/README.md b/src/metatensor/README.md new file mode 100644 index 0000000000..4c636371e2 --- /dev/null +++ b/src/metatensor/README.md @@ -0,0 +1,68 @@ +# Metatensor module for PLUMED + + +## Building the code + +1. You'll need to fist install libtorch, either by installing PyTorch itself + with Python, or by downloading the prebuilt C++ library from + https://pytorch.org/get-started/locally/. + +```bash +# point this to the path where you extracted the C++ libtorch +TORCH_PREFIX=../../.. +# if you used Python to install torch, you can do this: +TORCH_CMAKE_PREFIX=$(python -c "import torch; print(torch.utils.cmake_prefix_path)") +TORCH_PREFIX=$(cd "$TORCH_CMAKE_PREFIX/../.." && pwd) + +# patch a bug from torch's MKL detection +cd +./src/metatensor/patch-torch.sh "$TORCH_PREFIX" +``` + +2. a) build and install metatensor-torch from source. You'll need a rust + compiler on your system, the easiest way is by using https://rustup.rs/ + +```bash +cd + +# define a location where metatensor should be installed +METATENSOR_PREFIX=<...> + +METATENSOR_TORCH_PREFIX="$METATENSOR_PREFIX" + +git clone https://github.com/lab-cosmo/metatensor --tag metatensor-torch-v0.3.0 +cd metatensor + +mkdir build && cd build +cmake -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_INSTALL_PREFIX="$METATENSOR_PREFIX" \ + -DCMAKE_PREFIX_PATH="$TORCH_PREFIX" \ + -DBUILD_METATENSOR_TORCH=ON \ + -DMETATENSOR_INSTALL_BOTH_STATIC_SHARED=OFF \ + .. + +cmake --build . --target install --parallel +``` + +2. b) alternatively, use metatensor-torch from Python (`pip install metatensor[torch]`) + +```bash +METATENSOR_CMAKE_PREFIX=$(python -c "import metatensor; print(metatensor.utils.cmake_prefix_path)") +METATENSOR_PREFIX=$(cd "$METATENSOR_CMAKE_PREFIX/../.." && pwd) + +METATENSOR_TORCH_CMAKE_PREFIX=$(python -c "import torch; print(torch.utils.cmake_prefix_path)") +METATENSOR_TORCH_PREFIX=$(cd "$METATENSOR_TORCH_CMAKE_PREFIX/../.." && pwd) +``` + +3. build Plumed itself + +```bash +cd + +# configure with metatensor +./configure --enable-libtorch --enable-metatensor --enable-modules=+metatensor \ + LDFLAGS="-L$TORCH_PREFIX/lib -L$METATENSOR_PREFIX/lib -L$METATENSOR_TORCH_PREFIX/lib" \ + CPPFLAGS="-I$TORCH_PREFIX/include -I$TORCH_PREFIX/include/torch/csrc/api/include -I$METATENSOR_PREFIX/include -I$METATENSOR_TORCH_PREFIX/include" + +make -j && make install +``` diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp new file mode 100644 index 0000000000..e27373ee8f --- /dev/null +++ b/src/metatensor/metatensor.cpp @@ -0,0 +1,80 @@ +/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Copyright (c) 2024 Guillaume Fraux + + This module is free software: you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the Free + Software Foundation, either version 3 of the License, or (at your option) + any later version. + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ + +#if !defined(__PLUMED_HAS_LIBTORCH) || !defined(__PLUMED_HAS_METATENSOR) + +// give a nice error message if the user tries to enable +// metatensor without enabling the corresponding libraries +#error "can not compile the metatensor module without the corresponding libraries, either the disable metatensor module or configure with `--enable-metatensor --enable-libtorch` and make sure the libraries can be found" + +#else + +#include "core/ActionAtomistic.h" +#include "core/ActionWithValue.h" +#include "core/ActionRegister.h" +#include "core/PlumedMain.h" + + +#include +#include + + +namespace PLMD { + +class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { +public: + static void registerKeywords(Keywords& keys); + explicit MetatensorPlumedAction(const ActionOptions&); + + void calculate() override; + void apply() override; + unsigned getNumberOfDerivatives() override; + +private: + + metatensor_torch::TorchTensorMap output_; +}; + +PLUMED_REGISTER_ACTION(MetatensorPlumedAction, "METATENSOR") + +void MetatensorPlumedAction::registerKeywords(Keywords& keys) { + Action::registerKeywords(keys); + ActionAtomistic::registerKeywords(keys); + ActionWithValue::registerKeywords(keys); + + throw std::runtime_error("unimplemented"); +} + +MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): + Action(options), + ActionAtomistic(options), + ActionWithValue(options) +{ + throw std::runtime_error("unimplemented"); +} + +unsigned MetatensorPlumedAction::getNumberOfDerivatives() { + // gradients w.r.t. positions (3 x N values) + gradients w.r.t. strain (9 values) + return 3 * this->getNumberOfAtoms() + 9; +} + + +void MetatensorPlumedAction::calculate() { + throw std::runtime_error("unimplemented"); +} + + +void MetatensorPlumedAction::apply() { + throw std::runtime_error("unimplemented"); +} + +} // namespace PLMD + + +#endif diff --git a/src/metatensor/module.type b/src/metatensor/module.type new file mode 100644 index 0000000000..de83273033 --- /dev/null +++ b/src/metatensor/module.type @@ -0,0 +1 @@ +default-off diff --git a/src/metatensor/patch-torch.sh b/src/metatensor/patch-torch.sh new file mode 100755 index 0000000000..8ec7cafac0 --- /dev/null +++ b/src/metatensor/patch-torch.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash + +# This pulls in the fix from https://github.com/pytorch/pytorch/pull/119945 +# until it is properly released + +set -eu + +TORCH_PREFIX=$1 + +if [ -f "$TORCH_PREFIX/share/cmake/Caffe2/public/mkl.cmake" ]; then + MKL_CMAKE="$TORCH_PREFIX/share/cmake/Caffe2/public/mkl.cmake" +elif [ -f "$TORCH_PREFIX/Caffe2/public/mkl.cmake" ]; then + MKL_CMAKE="$TORCH_PREFIX/Caffe2/public/mkl.cmake" +else + echo "Failed to find mkl.cmake in '$TORCH_PREFIX'" + exit 1 +fi + +cat > "$MKL_CMAKE" << EOF + +find_package(MKL QUIET) + +if(TARGET caffe2::mkl) + return() +endif() + +add_library(caffe2::mkl INTERFACE IMPORTED) +target_include_directories(caffe2::mkl INTERFACE \${MKL_INCLUDE_DIR}) +target_link_libraries(caffe2::mkl INTERFACE \${MKL_LIBRARIES}) +foreach(MKL_LIB IN LISTS MKL_LIBRARIES) + if(EXISTS "\${MKL_LIB}") + get_filename_component(MKL_LINK_DIR "\${MKL_LIB}" DIRECTORY) + if(IS_DIRECTORY "\${MKL_LINK_DIR}") + target_link_directories(caffe2::mkl INTERFACE "\${MKL_LINK_DIR}") + endif() + endif() +endforeach() + +# TODO: This is a hack, it will not pick up architecture dependent +# MKL libraries correctly; see https://github.com/pytorch/pytorch/issues/73008 +set_property( + TARGET caffe2::mkl PROPERTY INTERFACE_LINK_DIRECTORIES + \${MKL_ROOT}/lib \${MKL_ROOT}/lib/intel64 \${MKL_ROOT}/lib/intel64_win \${MKL_ROOT}/lib/win-x64) + +EOF From 92be03b594a74b7e04649a2b81273e50789aefdf Mon Sep 17 00:00:00 2001 From: Luthaf Date: Thu, 28 Mar 2024 17:07:01 +0100 Subject: [PATCH 02/32] Fix build instructions on Linux --- src/metatensor/README.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/metatensor/README.md b/src/metatensor/README.md index 4c636371e2..1cf1e5b0c8 100644 --- a/src/metatensor/README.md +++ b/src/metatensor/README.md @@ -14,6 +14,8 @@ TORCH_PREFIX=../../.. TORCH_CMAKE_PREFIX=$(python -c "import torch; print(torch.utils.cmake_prefix_path)") TORCH_PREFIX=$(cd "$TORCH_CMAKE_PREFIX/../.." && pwd) +TORCH_INCLUDES="-I$TORCH_PREFIX/include -I$TORCH_PREFIX/include/torch/csrc/api/include" + # patch a bug from torch's MKL detection cd ./src/metatensor/patch-torch.sh "$TORCH_PREFIX" @@ -30,7 +32,7 @@ METATENSOR_PREFIX=<...> METATENSOR_TORCH_PREFIX="$METATENSOR_PREFIX" -git clone https://github.com/lab-cosmo/metatensor --tag metatensor-torch-v0.3.0 +git clone https://github.com/lab-cosmo/metatensor --branch=metatensor-torch-v0.4.0 cd metatensor mkdir build && cd build @@ -59,10 +61,18 @@ METATENSOR_TORCH_PREFIX=$(cd "$METATENSOR_TORCH_CMAKE_PREFIX/../.." && pwd) ```bash cd -# configure with metatensor +# configure PLUMED with metatensor +./configure --enable-libtorch --enable-metatensor --enable-modules=+metatensor \ + LDFLAGS="-L$TORCH_PREFIX/lib -L$METATENSOR_PREFIX/lib -L$METATENSOR_TORCH_PREFIX/lib" \ + CPPFLAGS="$TORCH_INCLUDES -I$METATENSOR_PREFIX/include -I$METATENSOR_TORCH_PREFIX/include" + +# If you are on Linux and use a pip-installed version of libtorch, or the +# pre-cxx11-ABI build of libtorch, you'll need to add "-D_GLIBCXX_USE_CXX11_ABI=0" +# to the compilation flags: ./configure --enable-libtorch --enable-metatensor --enable-modules=+metatensor \ LDFLAGS="-L$TORCH_PREFIX/lib -L$METATENSOR_PREFIX/lib -L$METATENSOR_TORCH_PREFIX/lib" \ - CPPFLAGS="-I$TORCH_PREFIX/include -I$TORCH_PREFIX/include/torch/csrc/api/include -I$METATENSOR_PREFIX/include -I$METATENSOR_TORCH_PREFIX/include" + CPPFLAGS="$TORCH_INCLUDES -I$METATENSOR_PREFIX/include -I$METATENSOR_TORCH_PREFIX/include" \ + CXXFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" make -j && make install ``` From a48796d6f5d35251d6421602e58896661eaa5c08 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Mon, 8 Apr 2024 18:03:35 +0200 Subject: [PATCH 03/32] Implementation of the metatensor action This seems to be mostly working, we now need to test it and quick the tires! --- regtest/.gitignore | 1 + regtest/metatensor/rt-soap/.gitignore | 2 + regtest/metatensor/rt-soap/Makefile | 1 + regtest/metatensor/rt-soap/config | 5 + .../metatensor/rt-soap/crystal_structure.xyz | 178 ++++ regtest/metatensor/rt-soap/plumed.dat | 12 + regtest/metatensor/rt-soap/soap_cv.py | 105 +++ src/metatensor/README.md | 12 +- src/metatensor/metatensor.cpp | 517 ++++++++++- src/metatensor/vesin-single-build.cpp | 839 ++++++++++++++++++ src/metatensor/vesin.h | 134 +++ 11 files changed, 1780 insertions(+), 26 deletions(-) create mode 100644 regtest/metatensor/rt-soap/.gitignore create mode 100644 regtest/metatensor/rt-soap/Makefile create mode 100644 regtest/metatensor/rt-soap/config create mode 100644 regtest/metatensor/rt-soap/crystal_structure.xyz create mode 100644 regtest/metatensor/rt-soap/plumed.dat create mode 100644 regtest/metatensor/rt-soap/soap_cv.py create mode 100644 src/metatensor/vesin-single-build.cpp create mode 100644 src/metatensor/vesin.h diff --git a/regtest/.gitignore b/regtest/.gitignore index 192ad04ae4..256848674e 100644 --- a/regtest/.gitignore +++ b/regtest/.gitignore @@ -42,6 +42,7 @@ !/clusters !/unittest !/wham +!/metatensor # These files we just want to ignore completely tmp report.txt diff --git a/regtest/metatensor/rt-soap/.gitignore b/regtest/metatensor/rt-soap/.gitignore new file mode 100644 index 0000000000..7d07b69c6c --- /dev/null +++ b/regtest/metatensor/rt-soap/.gitignore @@ -0,0 +1,2 @@ +extensions/ +soap_cv.pt diff --git a/regtest/metatensor/rt-soap/Makefile b/regtest/metatensor/rt-soap/Makefile new file mode 100644 index 0000000000..3703b27cea --- /dev/null +++ b/regtest/metatensor/rt-soap/Makefile @@ -0,0 +1 @@ +include ../../scripts/test.make diff --git a/regtest/metatensor/rt-soap/config b/regtest/metatensor/rt-soap/config new file mode 100644 index 0000000000..307851a20e --- /dev/null +++ b/regtest/metatensor/rt-soap/config @@ -0,0 +1,5 @@ +plumed_modules=metatensor +plumed_needs=metatensor +type=driver +# this is to test a different name +arg="--plumed plumed.dat --ixyz crystal_structure.xyz --dump-forces forces --dump-forces-fmt %8.4f --debug-forces forces.num" diff --git a/regtest/metatensor/rt-soap/crystal_structure.xyz b/regtest/metatensor/rt-soap/crystal_structure.xyz new file mode 100644 index 0000000000..236e93d355 --- /dev/null +++ b/regtest/metatensor/rt-soap/crystal_structure.xyz @@ -0,0 +1,178 @@ +176 +10.8151 11.1671 12.6671 +N 1.28413 0.0356836 12.195 +N 4.15648 11.1648 5.88207 +N 6.66501 5.56845 0.433575 +N 9.55986 5.61216 6.79708 +N 3.19304 0.415601 0.79143 +N 2.20149 10.7488 7.12262 +N 8.66181 5.16664 11.8319 +N 7.55431 5.98008 5.60745 +O 0.588269 10.7008 10.069 +O 4.8823 0.501289 3.74831 +O 5.96103 6.07786 2.60388 +O 10.243 5.10818 8.93897 +O 9.14171 8.47003 10.3675 +O 7.07259 2.7051 3.99376 +O 3.70069 8.25989 2.31089 +O 1.67804 2.88647 8.67235 +O 10.6638 1.07613 7.81409 +O 5.58016 10.0738 1.4989 +O 5.26318 4.50881 4.91221 +O 0.188342 6.66055 11.1768 +O 2.59101 9.42059 0.233576 +O 2.79327 1.7319 6.52566 +O 8.0305 7.282 12.4527 +O 8.2152 3.85759 6.13971 +O 3.82264 2.485 1.51498 +O 1.64119 8.66909 7.85617 +O 9.20944 3.10331 11.2096 +O 7.03065 7.99741 4.82086 +O 10.1687 1.63869 1.57326 +O 6.06204 9.48052 7.85816 +O 4.79055 3.89767 11.091 +O 0.625828 7.29331 4.78201 +C 2.95238 1.72613 1.06281 +C 2.39424 9.44611 7.32799 +C 8.34889 3.87138 11.6213 +C 7.84063 7.30003 5.3126 +C 2.36095 10.6306 0.183825 +C 3.05248 0.576928 6.49156 +C 7.74299 6.09163 12.4796 +C 8.47531 5.07354 6.11657 +C 1.11456 1.43798 12.1146 +C 4.34028 9.73065 5.75877 +C 6.56198 4.11671 0.624847 +C 9.70287 7.04878 6.88873 +C 1.52986 2.17765 0.678822 +C 3.85612 9.03075 7.04374 +C 7.00303 3.4499 11.9504 +C 9.23522 7.75214 5.61205 +C 0.398007 10.3598 11.4259 +C 5.00925 0.855939 5.14878 +C 5.80886 6.44152 1.24675 +C 10.4388 4.72998 7.54811 +C 9.68665 10.4586 11.7387 +C 6.44378 0.752554 5.38023 +C 4.30831 6.3222 0.894521 +C 1.08084 4.85311 7.26565 +C 9.13597 9.89693 10.3582 +C 7.10879 1.28477 4.08154 +C 3.70376 6.83428 2.27981 +C 1.70103 4.35143 8.59228 +C 10.0922 10.4258 9.38103 +C 6.11343 0.779889 3.03707 +C 4.72635 6.30337 3.28925 +C 0.706842 4.86811 9.62774 +C 9.63945 0.573215 8.71565 +C 6.58754 10.6145 2.36632 +C 4.28809 4.99295 3.94499 +C 1.17869 6.1342 10.2792 +C 1.46661 3.64735 0.563839 +C 3.91337 7.45062 6.83304 +C 6.89236 1.9212 12.138 +C 9.31088 9.26262 5.79701 +C 0.49689 1.86112 1.86459 +C 4.90182 9.32548 8.20692 +C 5.9603 3.7177 10.8188 +C 10.2874 7.39666 4.47252 +C 1.05177 1.68814 3.25477 +C 4.38145 9.48367 9.61965 +C 6.45079 3.90566 9.38004 +C 9.75263 7.25408 3.08129 +C 0.991026 0.195369 3.56821 +C 4.32584 10.96 9.93137 +C 6.46726 5.35922 9.10466 +C 9.80269 5.76208 2.72201 +C 0.128048 2.46113 4.27152 +C 5.29095 8.70348 10.617 +C 5.55851 3.11593 8.44484 +C 10.6702 8.04546 2.03703 +H 4.10239 11.1459 1.09329 +H 1.30213 0.0342548 7.42189 +H 9.53281 5.60692 11.5551 +H 6.66589 5.53935 5.23088 +H 8.64718 8.09618 11.1453 +H 7.60533 3.01489 4.78942 +H 3.23645 8.63677 1.61018 +H 2.20095 2.55921 7.88601 +H 0.379193 1.73168 8.24643 +H 5.04373 9.3881 1.93904 +H 5.78935 3.80089 4.40439 +H 10.4567 7.37919 10.7535 +H 0.104051 1.73809 11.8608 +H 5.30499 9.43917 5.54202 +H 5.53299 3.87341 0.812386 +H 10.6884 7.36664 7.10621 +H 1.78896 1.81187 11.2638 +H 3.68439 9.3429 4.9022 +H 7.12753 3.75643 1.45471 +H 9.08085 7.38722 7.78966 +H 0.697568 9.29512 11.6168 +H 4.66031 1.90419 5.29401 +H 6.09731 7.44726 1.04688 +H 10.0692 3.7367 7.3867 +H 9.38022 9.89395 12.6339 +H 6.79461 1.33138 6.26903 +H 3.96278 6.9026 0.0896576 +H 1.42227 4.31828 6.41678 +H 9.44192 0.322678 11.8104 +H 6.81651 10.8324 5.48627 +H 3.96238 5.27012 0.847479 +H 1.43779 5.92571 7.14938 +H 8.11352 10.2845 10.2269 +H 8.10148 0.852127 3.86806 +H 2.70619 6.46082 2.46064 +H 2.7613 4.72198 8.75886 +H 10.3267 9.63132 8.60634 +H 5.9242 1.48199 2.2331 +H 4.8782 7.07518 4.06084 +H 0.525666 4.08661 10.4007 +H 8.76306 0.369849 8.15227 +H 7.48526 10.8057 1.82079 +H 3.3422 5.20994 4.52094 +H 2.07818 5.96684 10.8643 +H 9.41381 1.29284 9.49431 +H 6.77874 9.85185 3.13693 +H 4.03685 4.26764 3.12524 +H 1.38637 6.94525 9.50275 +H 2.1846 3.98948 12.4268 +H 3.1876 7.08306 6.13166 +H 7.60275 1.57516 0.261558 +H 8.61406 9.57521 6.56965 +H 0.494526 4.01383 0.245591 +H 4.94626 7.18663 6.57171 +H 5.86353 1.59166 12.4312 +H 10.3224 9.5727 6.09657 +H 1.77827 4.23366 1.4863 +H 3.69279 6.9806 7.78454 +H 7.17693 1.38145 11.1517 +H 9.05764 9.78475 4.85955 +H 2.05845 2.03468 3.34088 +H 3.31336 9.105 9.65719 +H 7.44442 3.52356 9.32561 +H 8.75636 7.64728 3.02387 +H 1.7089 10.8043 2.93884 +H 3.66568 0.380257 9.29099 +H 7.17053 5.95779 9.6717 +H 9.10914 5.19244 3.33095 +H 1.35776 0.0583836 4.6365 +H 4.09743 0.00380453 10.9624 +H 6.77825 5.49627 8.02518 +H 9.44701 5.64256 1.66552 +H 0.0490674 10.9316 3.47795 +H 5.36527 0.220938 9.78787 +H 5.44707 5.78211 9.23447 +H 10.7855 5.34902 2.8569 +H 0.46903 2.26044 5.28333 +H 4.9299 8.92286 11.6417 +H 5.88028 3.32144 7.4085 +H 10.3598 7.85218 1.02466 +H 0.215689 3.5216 4.08985 +H 5.25018 7.63447 10.4261 +H 5.58329 2.03707 8.55595 +H 10.6224 9.11714 2.23242 +H 9.89429 2.11629 4.1664 +H 6.30059 9.05835 10.5129 +H 4.49554 3.4428 8.48274 +H 0.872511 7.66384 2.14979 diff --git a/regtest/metatensor/rt-soap/plumed.dat b/regtest/metatensor/rt-soap/plumed.dat new file mode 100644 index 0000000000..8237e14c41 --- /dev/null +++ b/regtest/metatensor/rt-soap/plumed.dat @@ -0,0 +1,12 @@ +soap: METATENSOR ... + MODEL=soap_cv.pt + EXTENSIONS_DIRECTORY=../extensions + SPECIES=1-40 +... + + +scalar: SUM ARG=soap PERIODIC=NO +BIASVALUE ARG=scalar + + +PRINT ARG=soap FILE=soap.matx STRIDE=1 FMT=%8.4f diff --git a/regtest/metatensor/rt-soap/soap_cv.py b/regtest/metatensor/rt-soap/soap_cv.py new file mode 100644 index 0000000000..9b22113501 --- /dev/null +++ b/regtest/metatensor/rt-soap/soap_cv.py @@ -0,0 +1,105 @@ +from typing import Dict, List, Optional + +import torch +from metatensor.torch import Labels, TensorBlock, TensorMap +from metatensor.torch.atomistic import ( + MetatensorAtomisticModel, + ModelCapabilities, + ModelMetadata, + ModelOutput, + System, +) +from rascaline.torch import SoapPowerSpectrum + + +class SOAP_CV(torch.nn.Module): + def __init__(self, species): + super().__init__() + + self.neighbor_type_pairs = Labels( + names=["neighbor_1_type", "neighbor_2_type"], + values=torch.tensor( + [[t1, t2] for t1 in species for t2 in species if t1 <= t2] + ), + ) + self.calculator = SoapPowerSpectrum( + cutoff=4.0, + max_angular=6, + max_radial=6, + radial_basis={"Gto": {}}, + cutoff_function={"ShiftedCosine": {"width": 0.5}}, + center_atom_weight=1.0, + atomic_gaussian_width=0.3, + ) + + self.pca_projection = torch.rand(2520, 3, dtype=torch.float64) + + def forward( + self, + systems: List[System], + outputs: Dict[str, ModelOutput], + selected_atoms: Optional[Labels], + ) -> Dict[str, TensorMap]: + + if "collective_variable" not in outputs: + return {} + + output = outputs["collective_variable"] + + soap = self.calculator(systems, selected_samples=selected_atoms) + soap = soap.keys_to_samples("center_type") + soap = soap.keys_to_properties(self.neighbor_type_pairs) + + if not output.per_atom: + raise ValueError("per_atom=False is not supported") + + soap_block = soap.block() + projected = soap_block.values @ self.pca_projection + + block = TensorBlock( + values=projected, + samples=soap_block.samples, + components=[], + properties=Labels("soap_pca", torch.tensor([[0], [1], [2]])), + ) + cv = TensorMap(keys=Labels("_", torch.tensor([[0]])), blocks=[block]) + + return {"collective_variable": cv} + + +cv = SOAP_CV(species=[1, 6, 7, 8]) +cv.eval() + + +capabilites = ModelCapabilities( + outputs={ + "collective_variable": ModelOutput( + quantity="", + unit="", + per_atom=True, + explicit_gradients=["postions"], + ) + }, + interaction_range=4.0, + supported_devices=["cpu", "cuda"], + length_unit="nm", + atomic_types=[6, 1, 7, 8], + # dtype=TODO +) + +metadata = ModelMetadata( + name="Collective Variable test", + description=""" +A simple collective variable for testing purposes +""", + authors=["..."], + references={ + "implementation": ["ref to SOAP code"], + "architecture": ["ref to SOAP"], + "model": ["ref to paper"], + }, +) + + +model = MetatensorAtomisticModel(cv, metadata, capabilites) +model.export("soap_cv.pt", collect_extensions="extensions") diff --git a/src/metatensor/README.md b/src/metatensor/README.md index 1cf1e5b0c8..28c72d71ef 100644 --- a/src/metatensor/README.md +++ b/src/metatensor/README.md @@ -52,7 +52,7 @@ cmake --build . --target install --parallel METATENSOR_CMAKE_PREFIX=$(python -c "import metatensor; print(metatensor.utils.cmake_prefix_path)") METATENSOR_PREFIX=$(cd "$METATENSOR_CMAKE_PREFIX/../.." && pwd) -METATENSOR_TORCH_CMAKE_PREFIX=$(python -c "import torch; print(torch.utils.cmake_prefix_path)") +METATENSOR_TORCH_CMAKE_PREFIX=$(python -c "import metatensor.torch; print(metatensor.torch.utils.cmake_prefix_path)") METATENSOR_TORCH_PREFIX=$(cd "$METATENSOR_TORCH_CMAKE_PREFIX/../.." && pwd) ``` @@ -61,18 +61,24 @@ METATENSOR_TORCH_PREFIX=$(cd "$METATENSOR_TORCH_CMAKE_PREFIX/../.." && pwd) ```bash cd +# set the rpath to make sure plumed executable will be able to find the right libraries +RPATH="-Wl,-rpath,$TORCH_PREFIX/lib -Wl,-rpath,$METATENSOR_PREFIX/lib -Wl,-rpath,$METATENSOR_TORCH_PREFIX/lib" + # configure PLUMED with metatensor ./configure --enable-libtorch --enable-metatensor --enable-modules=+metatensor \ - LDFLAGS="-L$TORCH_PREFIX/lib -L$METATENSOR_PREFIX/lib -L$METATENSOR_TORCH_PREFIX/lib" \ + LDFLAGS="-L$TORCH_PREFIX/lib -L$METATENSOR_PREFIX/lib -L$METATENSOR_TORCH_PREFIX/lib $RPATH" \ CPPFLAGS="$TORCH_INCLUDES -I$METATENSOR_PREFIX/include -I$METATENSOR_TORCH_PREFIX/include" # If you are on Linux and use a pip-installed version of libtorch, or the # pre-cxx11-ABI build of libtorch, you'll need to add "-D_GLIBCXX_USE_CXX11_ABI=0" # to the compilation flags: ./configure --enable-libtorch --enable-metatensor --enable-modules=+metatensor \ - LDFLAGS="-L$TORCH_PREFIX/lib -L$METATENSOR_PREFIX/lib -L$METATENSOR_TORCH_PREFIX/lib" \ + LDFLAGS="-L$TORCH_PREFIX/lib -L$METATENSOR_PREFIX/lib -L$METATENSOR_TORCH_PREFIX/lib $RPATH" \ CPPFLAGS="$TORCH_INCLUDES -I$METATENSOR_PREFIX/include -I$METATENSOR_TORCH_PREFIX/include" \ CXXFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" make -j && make install ``` + + + diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index e27373ee8f..f705d2394e 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -7,25 +7,57 @@ any later version. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ -#if !defined(__PLUMED_HAS_LIBTORCH) || !defined(__PLUMED_HAS_METATENSOR) - -// give a nice error message if the user tries to enable -// metatensor without enabling the corresponding libraries -#error "can not compile the metatensor module without the corresponding libraries, either the disable metatensor module or configure with `--enable-metatensor --enable-libtorch` and make sure the libraries can be found" - -#else - #include "core/ActionAtomistic.h" #include "core/ActionWithValue.h" #include "core/ActionRegister.h" #include "core/PlumedMain.h" +#if !defined(__PLUMED_HAS_LIBTORCH) || !defined(__PLUMED_HAS_METATENSOR) + +namespace PLMD { namespace metatensor { +class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { +public: + static void registerKeywords(Keywords& keys); + explicit MetatensorPlumedAction(const ActionOptions&) { + throw std::runtime_error( + "Can not use metatensor action without the corresponding libraries. \n" + "Make sure to configure with `--enable-metatensor --enable-libtorch` " + "and that the corresponding libraries are found" + ); + } +}; + +}} // namespace PLMD::metatensor + +#else + +#include + #include +#include "torch/csrc/autograd/autograd.h" + #include +#include + +#include "vesin.h" + + +// TEMPORARY HACK +#include +// TEMPORARY HACK + +namespace PLMD { namespace metatensor { +// We will cast Vector/Tensor to pointers to arrays and doubles, so let's make +// sure this is legal to do +static_assert(std::is_standard_layout::value); +static_assert(sizeof(PLMD::Vector) == sizeof(std::array)); +static_assert(alignof(PLMD::Vector) == alignof(std::array)); -namespace PLMD { +static_assert(std::is_standard_layout::value); +static_assert(sizeof(PLMD::Tensor) == sizeof(std::array, 3>)); +static_assert(alignof(PLMD::Tensor) == alignof(std::array, 3>)); class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { public: @@ -37,26 +69,145 @@ class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { unsigned getNumberOfDerivatives() override; private: + void createSystem(); - metatensor_torch::TorchTensorMap output_; -}; + // compute a neighbor list following metatensor format, using data from PLUMED + metatensor_torch::TorchTensorBlock computeNeighbors( + metatensor_torch::NeighborsListOptions request, + const std::vector& positions, + const PLMD::Tensor& cell + ); -PLUMED_REGISTER_ACTION(MetatensorPlumedAction, "METATENSOR") + torch::jit::Module model_; -void MetatensorPlumedAction::registerKeywords(Keywords& keys) { - Action::registerKeywords(keys); - ActionAtomistic::registerKeywords(keys); - ActionWithValue::registerKeywords(keys); + torch::Tensor atomic_types_; + // store the strain to be able to compute the virial with autograd + torch::Tensor strain_; + + metatensor_torch::System system_; + metatensor_torch::ModelEvaluationOptions evaluations_options_; + bool check_consistency_ = true; + metatensor_torch::TorchTensorMap output_; +}; - throw std::runtime_error("unimplemented"); -} MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): Action(options), ActionAtomistic(options), ActionWithValue(options) { - throw std::runtime_error("unimplemented"); + std::string extensions_directory; + this->parse("EXTENSIONS_DIRECTORY", extensions_directory); + + // TEMPORARY BAD CODE, TO BE REMOVED + dlopen( + (extensions_directory + "/rascaline/lib/librascaline.dylib").c_str(), + RTLD_LOCAL | RTLD_NOW + ); + + dlopen( + (extensions_directory + "/rascaline/torch/lib/librascaline_torch.dylib").c_str(), + RTLD_LOCAL | RTLD_NOW + ); + // END OF TEMPORARY BAD CODE, TO BE REMOVED + + // load the model + std::string model_path; + this->parse("MODEL", model_path); + + try { + this->model_ = metatensor_torch::load_atomistic_model(model_path); + } catch (const std::exception& e) { + error("failed to load model at '" + model_path + "': " + e.what()); + } + + + // parse the atomic types from the input file + std::vector atomic_types; + std::vector species_to_metatensor_types; + parseVector("SPECIES_TO_METATENSOR_TYPES", species_to_metatensor_types); + bool has_custom_types = !species_to_metatensor_types.empty(); + + std::vector all_atoms; + parseAtomList("SPECIES", all_atoms); + + auto n_species = 0; + if (all_atoms.empty()) { + std::vector t; + for (int i=1;;i++) { + parseAtomList("SPECIES", i, t); + if (t.empty()) { + break; + } + + int32_t type = i; + if (has_custom_types) { + if (species_to_metatensor_types.size() < i) { + error( + "SPECIES_TO_METATENSOR_TYPES is too small, " + "it should have one entry for each species (we have at least " + + std::to_string(i) + " species and " + + std::to_string(species_to_metatensor_types.size()) + + "entries in SPECIES_TO_METATENSOR_TYPES)" + ); + } + + type = species_to_metatensor_types[i - 1]; + } + + log.printf(" Species %d includes atoms : ", i); + for(unsigned j=0; jwarning( + "SPECIES_TO_METATENSOR_TYPES contains more entries (" + + std::to_string(species_to_metatensor_types.size()) + + ") than there where species (" + std::to_string(n_species) + ")" + ); + } + + this->atomic_types_ = torch::tensor(std::move(atomic_types)); + + // Request the atoms and check we have read in everything + requestAtoms(all_atoms); + + // TODO: selected_atoms + // evaluations_options_->set_selected_atoms() + + // setup the output + // TODO: define the size/type of output a bit better + this->addValue({1, 1}); + this->setNotPeriodic(); + this->getPntrToComponent(0)->buildDataStore(); + + // create evaluation options for the model. These won't change during the + // simulation, so we initialize them once here. + evaluations_options_ = torch::make_intrusive(); + evaluations_options_->set_length_unit(getUnits().getLengthString()); + + auto output = torch::make_intrusive(); + // TODO: should this be configurable? + output->per_atom = true; + // we are using torch autograd system to compute gradients, so we don't need + // any explicit gradients. + output->explicit_gradients = {}; + evaluations_options_->outputs.insert("collective_variable", output); } unsigned MetatensorPlumedAction::getNumberOfDerivatives() { @@ -65,16 +216,336 @@ unsigned MetatensorPlumedAction::getNumberOfDerivatives() { } +void MetatensorPlumedAction::createSystem() { + const auto& cell = this->getPbc().getBox(); + + auto tensor_options = torch::TensorOptions().dtype(torch::kFloat64).device(torch::kCPU); + auto torch_cell = torch::zeros({3, 3}, tensor_options); + + // TODO: check if cell is stored in row or column major order + // TODO: check if cell is zero for non-periodic systems + torch_cell[0][0] = cell(0, 0); + torch_cell[0][1] = cell(0, 1); + torch_cell[0][2] = cell(0, 2); + + torch_cell[1][0] = cell(1, 0); + torch_cell[1][1] = cell(1, 1); + torch_cell[1][2] = cell(1, 2); + + torch_cell[2][0] = cell(2, 0); + torch_cell[2][1] = cell(2, 1); + torch_cell[2][2] = cell(2, 2); + + const auto& positions = this->getPositions(); + + auto torch_positions = torch::from_blob( + const_cast(positions.data()), + {static_cast(positions.size()), 3}, + tensor_options + ); + + // setup torch's automatic gradient tracking + if (!this->doNotCalculateDerivatives()) { + torch_positions.requires_grad_(true); + + this->strain_ = torch::eye(3, tensor_options.requires_grad(true)); + + // pretend to scale positions/cell by the strain so that it enters the + // computational graph. + torch_positions = torch_positions.matmul(this->strain_); + torch_positions.retain_grad(); + + torch_cell = torch_cell.matmul(this->strain_); + } + + + // TODO: move data to another dtype/device as requested by the model or user + this->system_ = torch::make_intrusive( + this->atomic_types_, + torch_positions, + torch_cell + ); + + // compute the neighbors list requested by the model, and register them with + // the system + auto nl_requests = this->model_.run_method("requested_neighbors_lists"); + for (auto request_ivalue: nl_requests.toList()) { + auto request = request_ivalue.get().toCustomClass(); + + auto neighbors = this->computeNeighbors(request, positions, cell); + metatensor_torch::register_autograd_neighbors(this->system_, neighbors, this->check_consistency_); + this->system_->add_neighbors_list(request, neighbors); + } +} + + +metatensor_torch::TorchTensorBlock MetatensorPlumedAction::computeNeighbors( + metatensor_torch::NeighborsListOptions request, + const std::vector& positions, + const PLMD::Tensor& cell +) { + auto labels_options = torch::TensorOptions().dtype(torch::kInt32).device(torch::kCPU); + auto neighbor_component = torch::make_intrusive( + "xyz", + torch::tensor({0, 1, 2}, labels_options).reshape({3, 1}) + ); + auto neighbor_properties = torch::make_intrusive( + "distance", torch::zeros({1, 1}, labels_options) + ); + + auto cutoff = request->engine_cutoff(this->getUnits().getLengthString()); + + auto periodic = ( + cell(0, 0) == 0.0 && cell(0, 1) == 0.0 && cell(0, 2) == 0.0 && + cell(1, 0) == 0.0 && cell(1, 1) == 0.0 && cell(1, 2) == 0.0 && + cell(2, 0) == 0.0 && cell(2, 2) == 0.0 && cell(2, 2) == 0.0 + ); + + // use https://github.com/Luthaf/vesin to compute the requested neighbor + // lists since we can not get these from PLUMED + VesinOptions options; + options.cutoff = cutoff; + options.full = request->full_list(); + options.return_shifts = true; + options.return_distances = false; + options.return_vectors = true; + + VesinNeighborsList* vesin_neighbor_list = new VesinNeighborsList(); + memset(vesin_neighbor_list, 0, sizeof(VesinNeighborsList)); + + const char* error_message = NULL; + int status = vesin_neighbors( + reinterpret_cast(positions.data()), + positions.size(), + reinterpret_cast(&cell(0, 0)), + periodic, + VesinCPU, + options, + vesin_neighbor_list, + &error_message + ); + + if (status != EXIT_SUCCESS) { + this->error( + "failed to compute neighbor list (cutoff=" + std::to_string(cutoff) + + "full=" + (request->full_list() ? "true" : "false") + "): " + error_message + ); + } + + // transform from vesin to metatensor format + auto n_pairs = static_cast(vesin_neighbor_list->length); + + auto pair_vectors = torch::from_blob( + vesin_neighbor_list->vectors, + {n_pairs, 3, 1}, + /*deleter*/ [=](void*) { + vesin_free(vesin_neighbor_list); + delete vesin_neighbor_list; + }, + torch::TensorOptions().dtype(torch::kFloat64).device(torch::kCPU) + ); + + auto pair_samples_values = torch::zeros({n_pairs, 5}, labels_options); + for (unsigned i=0; i(vesin_neighbor_list->pairs[i][0]); + pair_samples_values[i][1] = static_cast(vesin_neighbor_list->pairs[i][1]); + pair_samples_values[i][2] = vesin_neighbor_list->shifts[i][0]; + pair_samples_values[i][3] = vesin_neighbor_list->shifts[i][1]; + pair_samples_values[i][4] = vesin_neighbor_list->shifts[i][2]; + } + + auto neighbor_samples = torch::make_intrusive( + std::vector{"first_atom", "second_atom", "cell_shift_a", "cell_shift_b", "cell_shift_c"}, + pair_samples_values + ); + + auto neighbors = torch::make_intrusive( + pair_vectors, + neighbor_samples, + std::vector{neighbor_component}, + neighbor_properties + ); + + return neighbors; +} + + void MetatensorPlumedAction::calculate() { - throw std::runtime_error("unimplemented"); + this->createSystem(); + + try { + auto ivalue_output = this->model_.forward({ + std::vector{this->system_}, + evaluations_options_, + this->check_consistency_, + }); + + auto dict_output = ivalue_output.toGenericDict(); + auto cv = dict_output.at("collective_variable"); + this->output_ = cv.toCustomClass(); + } catch (const std::exception& e) { + error("failed to evaluate the model: " + std::string(e.what())); + } + + // send the output back to plumed + plumed_massert(this->output_->keys()->count() == 1, "output should have a single block"); + auto block = metatensor_torch::TensorMapHolder::block_by_id(this->output_, 0); + plumed_massert(block->components().empty(), "components are not yet supported in the output"); + auto torch_values = block->values().to(torch::kCPU).to(torch::kFloat64); + auto n_samples = torch_values.size(0); + auto n_properties = torch_values.size(1); + + Value* value = this->getPntrToComponent(0); + const auto& value_shape = value->getShape(); + // reshape the plumed `Value` to hold the data returned by the model + if (n_samples == 1) { + if (n_properties == 1) { + // the CV is a single scalar + if (value->getRank() != 0) { + log.printf(" output of metatensor model is a scalar\n"); + value->setShape({}); + } + + value->set(torch_values.item()); + } else { + // we have multiple CV describing a single thing (atom or full system) + if (value->getRank() != 1 || value_shape[0] != n_properties) { + log.printf(" output of metatensor model is a 1x%d vector\n", n_properties); + value->setShape({static_cast(n_properties)}); + } + + for (unsigned i=0; iset(i, torch_values[0][i].item()); + } + } + } else { + if (n_properties == 1) { + // we have a single CV describing multiple things (i.e. atoms) + if (value->getRank() != 1 || value_shape[0] != n_samples) { + log.printf(" output of metatensor model is a %dx1 vector\n", n_samples); + value->setShape({static_cast(n_samples)}); + } + + // TODO: check sample order? + for (unsigned i=0; iset(i, torch_values[i][0].item()); + } + } else { + // the CV is a matrix + if (value->getRank() != 2 || value_shape[0] != n_samples || value_shape[1] != n_properties) { + log.printf(" output of metatensor model is a %dx%d matrix\n", n_samples, n_properties); + value->setShape({ + static_cast(n_samples), + static_cast(n_properties), + }); + value->reshapeMatrixStore(n_properties); + } + + // TODO: check sample order? + for (unsigned i=0; iset(i * n_properties + j, torch_values[i][j].item()); + } + } + } + } } void MetatensorPlumedAction::apply() { - throw std::runtime_error("unimplemented"); -} + auto* value = this->getPntrToComponent(0); + if (!value->forcesWereAdded()) { + return; + } + + auto block = metatensor_torch::TensorMapHolder::block_by_id(this->output_, 0); + auto torch_values = block->values().to(torch::kCPU).to(torch::kFloat64); + auto n_samples = torch_values.size(0); + auto n_properties = torch_values.size(1); + + auto output_grad = torch::zeros_like(torch_values); + if (n_samples == 1) { + if (n_properties == 1) { + output_grad[0][0] = value->getForce(); + } else { + for (unsigned i=0; igetForce(i); + } + } + } else { + if (n_properties == 1) { + // TODO: check sample order? + for (unsigned i=0; igetForce(i); + } + } else { + // TODO: check sample order? + for (unsigned i=0; igetForce(i * n_properties + j); + } + } + } + } + + auto input_grad = torch::autograd::grad( + {torch_values}, + {this->system_->positions(), this->strain_}, + {output_grad} + ); + plumed_assert(input_grad[0].is_cpu()); + plumed_assert(input_grad[0].is_contiguous()); + + plumed_assert(input_grad[1].is_cpu()); + plumed_assert(input_grad[1].is_contiguous()); -} // namespace PLMD + auto positions_grad = input_grad[0]; + auto strain_grad = input_grad[1]; + auto derivatives = std::vector( + positions_grad.data_ptr(), + positions_grad.data_ptr() + 3 * this->system_->size() + ); + + // add virials to the derivatives + derivatives.push_back(strain_grad[0][0].item()); + derivatives.push_back(strain_grad[0][1].item()); + derivatives.push_back(strain_grad[0][2].item()); + + derivatives.push_back(strain_grad[1][0].item()); + derivatives.push_back(strain_grad[1][1].item()); + derivatives.push_back(strain_grad[1][2].item()); + + derivatives.push_back(strain_grad[2][0].item()); + derivatives.push_back(strain_grad[2][1].item()); + derivatives.push_back(strain_grad[2][2].item()); + + + unsigned index = 0; + this->setForcesOnAtoms(derivatives, index); +} + +}} // namespace PLMD::metatensor #endif + + +namespace PLMD { namespace metatensor { + // use the same implementation for both the actual action and the dummy one + // (when libtorch and libmetatensor could not be found). + void MetatensorPlumedAction::registerKeywords(Keywords& keys) { + Action::registerKeywords(keys); + ActionAtomistic::registerKeywords(keys); + ActionWithValue::registerKeywords(keys); + + keys.add("compulsory", "MODEL", "path to the exported metatensor model"); + keys.add("optional", "EXTENSIONS_DIRECTORY", "path to the directory containing TorchScript extensions to load"); + + keys.add("numbered", "SPECIES", "the atoms in each PLUMED species"); + keys.reset_style("SPECIES", "atoms"); + + keys.add("optional", "SPECIES_TO_METATENSOR_TYPES", "mapping from PLUMED SPECIES to metatensor's atomic types"); + } + + PLUMED_REGISTER_ACTION(MetatensorPlumedAction, "METATENSOR") +}} diff --git a/src/metatensor/vesin-single-build.cpp b/src/metatensor/vesin-single-build.cpp new file mode 100644 index 0000000000..3821b30e98 --- /dev/null +++ b/src/metatensor/vesin-single-build.cpp @@ -0,0 +1,839 @@ +#include +#include +#include + +#include +#include +#include + +#ifndef VESIN_CPU_CELL_LIST_HPP +#define VESIN_CPU_CELL_LIST_HPP + +#include + +#include "vesin.h" + +#ifndef VESIN_TYPES_HPP +#define VESIN_TYPES_HPP + +#ifndef VESIN_MATH_HPP +#define VESIN_MATH_HPP + +#include +#include +#include + +namespace vesin { +struct Vector; + +Vector operator*(Vector vector, double scalar); + +struct Vector: public std::array { + double dot(Vector other) const { + return (*this)[0] * other[0] + (*this)[1] * other[1] + (*this)[2] * other[2]; + } + + double norm() const { + return std::sqrt(this->dot(*this)); + } + + Vector normalize() const { + return *this * (1.0 / this->norm()); + } + + Vector cross(Vector other) const { + return Vector{ + (*this)[1] * other[2] - (*this)[2] * other[1], + (*this)[2] * other[0] - (*this)[0] * other[2], + (*this)[0] * other[1] - (*this)[1] * other[0], + }; + } +}; + +inline Vector operator+(Vector u, Vector v) { + return Vector{ + u[0] + v[0], + u[1] + v[1], + u[2] + v[2], + }; +} + +inline Vector operator-(Vector u, Vector v) { + return Vector{ + u[0] - v[0], + u[1] - v[1], + u[2] - v[2], + }; +} + +inline Vector operator*(double scalar, Vector vector) { + return Vector{ + scalar * vector[0], + scalar * vector[1], + scalar * vector[2], + }; +} + +inline Vector operator*(Vector vector, double scalar) { + return Vector{ + scalar * vector[0], + scalar * vector[1], + scalar * vector[2], + }; +} + + +struct Matrix: public std::array, 3> { + double determinant() const { + return (*this)[0][0] * ((*this)[1][1] * (*this)[2][2] - (*this)[2][1] * (*this)[1][2]) + - (*this)[0][1] * ((*this)[1][0] * (*this)[2][2] - (*this)[1][2] * (*this)[2][0]) + + (*this)[0][2] * ((*this)[1][0] * (*this)[2][1] - (*this)[1][1] * (*this)[2][0]); + } + + Matrix inverse() const { + auto det = this->determinant(); + + if (std::abs(det) < 1e-30) { + throw std::runtime_error("this matrix is not invertible"); + } + + auto inverse = Matrix(); + inverse[0][0] = ((*this)[1][1] * (*this)[2][2] - (*this)[2][1] * (*this)[1][2]) / det; + inverse[0][1] = ((*this)[0][2] * (*this)[2][1] - (*this)[0][1] * (*this)[2][2]) / det; + inverse[0][2] = ((*this)[0][1] * (*this)[1][2] - (*this)[0][2] * (*this)[1][1]) / det; + inverse[1][0] = ((*this)[1][2] * (*this)[2][0] - (*this)[1][0] * (*this)[2][2]) / det; + inverse[1][1] = ((*this)[0][0] * (*this)[2][2] - (*this)[0][2] * (*this)[2][0]) / det; + inverse[1][2] = ((*this)[1][0] * (*this)[0][2] - (*this)[0][0] * (*this)[1][2]) / det; + inverse[2][0] = ((*this)[1][0] * (*this)[2][1] - (*this)[2][0] * (*this)[1][1]) / det; + inverse[2][1] = ((*this)[2][0] * (*this)[0][1] - (*this)[0][0] * (*this)[2][1]) / det; + inverse[2][2] = ((*this)[0][0] * (*this)[1][1] - (*this)[1][0] * (*this)[0][1]) / det; + return inverse; + } +}; + + +inline Vector operator*(Matrix matrix, Vector vector) { + return Vector{ + matrix[0][0] * vector[0] + matrix[0][1] * vector[1] + matrix[0][2] * vector[2], + matrix[1][0] * vector[0] + matrix[1][1] * vector[1] + matrix[1][2] * vector[2], + matrix[2][0] * vector[0] + matrix[2][1] * vector[1] + matrix[2][2] * vector[2], + }; +} + +inline Vector operator*(Vector vector, Matrix matrix) { + return Vector{ + vector[0] * matrix[0][0] + vector[1] * matrix[1][0] + vector[2] * matrix[2][0], + vector[0] * matrix[0][1] + vector[1] * matrix[1][1] + vector[2] * matrix[2][1], + vector[0] * matrix[0][2] + vector[1] * matrix[1][2] + vector[2] * matrix[2][2], + }; +} + +} + +#endif + +namespace vesin { + +class BoundingBox { +public: + BoundingBox(Matrix matrix, bool periodic): matrix_(std::move(matrix)), periodic_(periodic) { + if (periodic) { + this->inverse_ = matrix_.inverse(); + } else { + this->matrix_ = Matrix{{{ + {{1, 0, 0}}, + {{0, 1, 0}}, + {{0, 0, 1}} + }}}; + this->inverse_ = matrix_; + } + } + + const Matrix& matrix() const { + return this->matrix_; + } + + bool periodic() const { + return this->periodic_; + } + + /// Convert a vector from cartesian coordinates to fractional coordinates + Vector cartesian_to_fractional(Vector cartesian) const { + return cartesian * inverse_; + } + + /// Convert a vector from fractional coordinates to cartesian coordinates + Vector fractional_to_cartesian(Vector fractional) const { + return fractional * matrix_; + } + + /// Get the three distances between faces of the bounding box + Vector distances_between_faces() const { + auto a = Vector{matrix_[0]}; + auto b = Vector{matrix_[1]}; + auto c = Vector{matrix_[2]}; + + // Plans normal vectors + auto na = b.cross(c).normalize(); + auto nb = c.cross(a).normalize(); + auto nc = a.cross(b).normalize(); + + return Vector{ + std::abs(na.dot(a)), + std::abs(nb.dot(b)), + std::abs(nc.dot(c)), + }; + } + +private: + Matrix matrix_; + Matrix inverse_; + bool periodic_; +}; + + +/// A cell shift represents the displacement along cell axis between the actual +/// position of an atom and a periodic image of this atom. +/// +/// The cell shift can be used to reconstruct the vector between two points, +/// wrapped inside the unit cell. +struct CellShift: public std::array { + /// Compute the shift vector in cartesian coordinates, using the given cell + /// matrix (stored in row major order). + Vector cartesian(Matrix cell) const { + auto vector = Vector{ + static_cast((*this)[0]), + static_cast((*this)[1]), + static_cast((*this)[2]), + }; + return vector * cell; + } +}; + +inline CellShift operator+(CellShift a, CellShift b) { + return CellShift{ + a[0] + b[0], + a[1] + b[1], + a[2] + b[2], + }; +} + +inline CellShift operator-(CellShift a, CellShift b) { + return CellShift{ + a[0] - b[0], + a[1] - b[1], + a[2] - b[2], + }; +} + + + +} + +#endif + +namespace vesin { namespace cpu { + +void free_neighbors(VesinNeighborList& neighbors); + +void neighbors( + const Vector* points, + size_t n_points, + BoundingBox cell, + VesinOptions options, + VesinNeighborList& neighbors +); + + +/// The cell list is used to sort atoms inside bins/cells. +/// +/// The list of potential pairs is then constructed by looking through all +/// neighboring cells (the number of cells to search depends on the cutoff and +/// the size of the cells) for each atom to create pair candidates. +class CellList { +public: + /// Create a new `CellList` for the given bounding box and cutoff, + /// determining all required parameters. + CellList(BoundingBox box, double cutoff); + + /// Add a single point to the cell list at the given `position`. The point + /// is uniquely identified by its `index`. + void add_point(size_t index, Vector position); + + /// Iterate over all possible pairs, calling the given callback every time + template + void foreach_pair(Function callback); + +private: + /// How many cells do we need to look at when searching neighbors to include + /// all neighbors below cutoff + std::array n_search_; + + /// the cells themselves are a list of points & corresponding + /// shift to place the point inside the cell + struct Point { + size_t index; + CellShift shift; + }; + struct Cell: public std::vector {}; + + // raw data for the cells + std::vector cells_; + // shape of the cell array + std::array cells_shape_; + + BoundingBox box_; + + Cell& get_cell(std::array index); +}; + +/// Wrapper around `VesinNeighborsList` that behaves like a std::vector, +/// automatically growing memory allocations. +class GrowableNeighborsList { +public: + VesinNeighborList& neighbors; + size_t capacity; + VesinOptions options; + + size_t length() const { + return neighbors.length; + } + + void increment_length() { + neighbors.length += 1; + } + + void set_pair(size_t index, size_t first, size_t second); + void set_shift(size_t index, vesin::CellShift shift); + void set_distance(size_t index, double distance); + void set_vector(size_t index, vesin::Vector vector); + + // reset length to 0, and allocate/deallocate members of + // `neighbors` according to `options` + void reset(); + + // allocate more memory & update capacity + void grow(); +}; + +}} + +#endif + +using namespace vesin::cpu; + +void vesin::cpu::neighbors( + const Vector* points, + size_t n_points, + BoundingBox cell, + VesinOptions options, + VesinNeighborList& raw_neighbors +) { + auto cell_list = CellList(cell, options.cutoff); + + for (size_t i=0; i second) { + return; + } + + if (first == second) { + // When creating pairs between a point and one of its periodic + // images, the code generate multiple redundant pairs (e.g. with + // shifts 0 1 1 and 0 -1 -1); and we want to only keep one of + // these. + if (shift[0] + shift[1] + shift[2] < 0) { + // drop shifts on the negative half-space + return; + } + + if ((shift[0] + shift[1] + shift[2] == 0) + && (shift[2] < 0 || (shift[2] == 0 && shift[1] < 0))) { + // drop shifts in the negative half plane or the negative + // shift[1] axis. See below for a graphical representation: + // we are keeping the shifts indicated with `O` and dropping + // the ones indicated with `X` + // + // O O O │ O O O + // O O O │ O O O + // O O O │ O O O + // ─X─X─X─┼─O─O─O─ + // X X X │ X X X + // X X X │ X X X + // X X X │ X X X + return; + } + } + } + + auto vector = points[second] - points[first] + shift.cartesian(cell_matrix); + auto distance2 = vector.dot(vector); + + if (distance2 < cutoff2) { + auto index = neighbors.length(); + neighbors.set_pair(index, first, second); + + if (options.return_shifts) { + neighbors.set_shift(index, shift); + } + + if (options.return_distances) { + neighbors.set_distance(index, std::sqrt(distance2)); + } + + if (options.return_vectors) { + neighbors.set_vector(index, vector); + } + + neighbors.increment_length(); + } + }); +} + +/* ========================================================================== */ + +/// Maximal number of cells, we need to use this to prevent having too many +/// cells with a small bounding box and a large cutoff +#define MAX_NUMBER_OF_CELLS 1e5 + + +/// Function to compute both quotient and remainder of the division of a by b. +/// This function follows Python convention, making sure the remainder have the +/// same sign as `b`. +static std::tuple divmod(int32_t a, size_t b) { + assert(b < (std::numeric_limits::max())); + auto b_32 = static_cast(b); + auto quotient = a / b_32; + auto remainder = a % b_32; + if (remainder < 0) { + remainder += b; + quotient -= 1; + } + return std::make_tuple(quotient, remainder); +} + +/// Apply the `divmod` function to three components at the time +static std::tuple, std::array> +divmod(std::array a, std::array b) { + auto [qx, rx] = divmod(a[0], b[0]); + auto [qy, ry] = divmod(a[1], b[1]); + auto [qz, rz] = divmod(a[2], b[2]); + return std::make_tuple( + std::array{qx, qy, qz}, + std::array{rx, ry, rz} + ); +} + +CellList::CellList(BoundingBox box, double cutoff): + n_search_({0, 0, 0}), + cells_shape_({0, 0, 0}), + box_(std::move(box)) +{ + auto distances_between_faces = box_.distances_between_faces(); + + auto n_cells = Vector{ + std::clamp(std::trunc(distances_between_faces[0] / cutoff), 1.0, HUGE_VAL), + std::clamp(std::trunc(distances_between_faces[1] / cutoff), 1.0, HUGE_VAL), + std::clamp(std::trunc(distances_between_faces[2] / cutoff), 1.0, HUGE_VAL), + }; + + assert(std::isfinite(n_cells[0]) && std::isfinite(n_cells[1]) && std::isfinite(n_cells[2])); + + // limit memory consumption by ensuring we have less than `MAX_N_CELLS` + // cells to look though + auto n_cells_total = n_cells[0] * n_cells[1] * n_cells[2]; + if (n_cells_total > MAX_NUMBER_OF_CELLS) { + // set the total number of cells close to MAX_N_CELLS, while keeping + // roughly the ratio of cells in each direction + auto ratio_x_y = n_cells[0] / n_cells[1]; + auto ratio_y_z = n_cells[1] / n_cells[2]; + + n_cells[2] = std::trunc(std::cbrt(MAX_NUMBER_OF_CELLS / (ratio_x_y * ratio_y_z * ratio_y_z))); + n_cells[1] = std::trunc(ratio_y_z * n_cells[2]); + n_cells[0] = std::trunc(ratio_x_y * n_cells[1]); + } + + // number of cells to search in each direction to make sure all possible + // pairs below the cutoff are accounted for. + this->n_search_ = std::array{ + static_cast(std::ceil(cutoff * n_cells[0] / distances_between_faces[0])), + static_cast(std::ceil(cutoff * n_cells[1] / distances_between_faces[1])), + static_cast(std::ceil(cutoff * n_cells[2] / distances_between_faces[2])), + }; + + this->cells_shape_ = std::array{ + static_cast(n_cells[0]), + static_cast(n_cells[1]), + static_cast(n_cells[2]), + }; + + for (size_t spatial=0; spatial<3; spatial++) { + if (n_search_[spatial] < 1) { + n_search_[spatial] = 1; + } + + // don't look for neighboring cells if we have only one cell and no + // periodic boundary condition + if (n_cells[spatial] == 1 && !box.periodic()) { + n_search_[spatial] = 0; + } + } + + this->cells_.resize(cells_shape_[0] * cells_shape_[1] * cells_shape_[2]); +} + +void CellList::add_point(size_t index, Vector position) { + auto fractional = box_.cartesian_to_fractional(position); + + // find the cell in which this atom should go + auto cell_index = std::array{ + static_cast(std::floor(fractional[0] * cells_shape_[0])), + static_cast(std::floor(fractional[1] * cells_shape_[1])), + static_cast(std::floor(fractional[2] * cells_shape_[2])), + }; + + // deal with pbc by wrapping the atom inside if it was outside of the + // cell + CellShift shift; + // auto (shift, cell_index) = + if (box_.periodic()) { + auto result = divmod(cell_index, cells_shape_); + shift = CellShift{std::move(std::get<0>(result))}; + cell_index = std::move(std::get<1>(result)); + } else { + shift = CellShift({0, 0, 0}); + cell_index = std::array{ + std::clamp(cell_index[0], 0, static_cast(cells_shape_[0] - 1)), + std::clamp(cell_index[1], 0, static_cast(cells_shape_[1] - 1)), + std::clamp(cell_index[2], 0, static_cast(cells_shape_[2] - 1)), + }; + } + + this->get_cell(cell_index).emplace_back(Point{index, shift}); +} + + +template +void CellList::foreach_pair(Function callback) { + for (int32_t cell_i_x=0; cell_i_x(cells_shape_[0]); cell_i_x++) { + for (int32_t cell_i_y=0; cell_i_y(cells_shape_[1]); cell_i_y++) { + for (int32_t cell_i_z=0; cell_i_z(cells_shape_[2]); cell_i_z++) { + auto& current_cell = this->get_cell({cell_i_x, cell_i_y, cell_i_z}); + // look through each neighboring cell + for (int32_t delta_x=-n_search_[0]; delta_x<=n_search_[0]; delta_x++) { + for (int32_t delta_y=-n_search_[1]; delta_y<=n_search_[1]; delta_y++) { + for (int32_t delta_z=-n_search_[2]; delta_z<=n_search_[2]; delta_z++) { + auto cell_i = std::array{ + cell_i_x + delta_x, + cell_i_y + delta_y, + cell_i_z + delta_z, + }; + + // shift vector from one cell to the other and index of + // the neighboring cell + auto [cell_shift, neighbor_cell_i] = divmod(cell_i, cells_shape_); + + for (const auto& atom_i: current_cell) { + for (const auto& atom_j: this->get_cell(neighbor_cell_i)) { + auto shift = CellShift{cell_shift} + atom_i.shift - atom_j.shift; + auto shift_is_zero = shift[0] == 0 && shift[1] == 0 && shift[2] == 0; + + if (!box_.periodic() && !shift_is_zero) { + // do not create pairs crossing the periodic + // boundaries in a non-periodic box + continue; + } + + if (atom_i.index == atom_j.index && shift_is_zero) { + // only create pairs with the same atom twice if the + // pair spans more than one bounding box + continue; + } + + callback(atom_i.index, atom_j.index, shift); + } + } // loop over atoms in current neighbor cells + }}} + }}} // loop over neighboring cells +} + +CellList::Cell& CellList::get_cell(std::array index) { + size_t linear_index = (cells_shape_[0] * cells_shape_[1] * index[2]) + + (cells_shape_[0] * index[1]) + + index[0]; + return cells_[linear_index]; +} + +/* ========================================================================== */ + + +void GrowableNeighborsList::set_pair(size_t index, size_t first, size_t second) { + if (index >= this->capacity) { + this->grow(); + } + + this->neighbors.pairs[index][0] = first; + this->neighbors.pairs[index][1] = second; +} + +void GrowableNeighborsList::set_shift(size_t index, vesin::CellShift shift) { + if (index >= this->capacity) { + this->grow(); + } + + this->neighbors.shifts[index][0] = shift[0]; + this->neighbors.shifts[index][1] = shift[1]; + this->neighbors.shifts[index][2] = shift[2]; +} + +void GrowableNeighborsList::set_distance(size_t index, double distance) { + if (index >= this->capacity) { + this->grow(); + } + + this->neighbors.distances[index] = distance; +} + +void GrowableNeighborsList::set_vector(size_t index, vesin::Vector vector) { + if (index >= this->capacity) { + this->grow(); + } + + this->neighbors.vectors[index][0] = vector[0]; + this->neighbors.vectors[index][1] = vector[1]; + this->neighbors.vectors[index][2] = vector[2]; +} + +template +static scalar_t (*alloc(scalar_t (*ptr)[N], size_t size, size_t new_size))[N] { + ptr = reinterpret_cast(std::realloc(ptr, new_size * sizeof(scalar_t[N]))); + + if (ptr == nullptr) { + throw std::bad_alloc(); + } + + // initialize with a bit pattern that maps to NaN for double + std::memset(ptr + size, 0b11111111, (new_size - size) * sizeof(scalar_t[N])); + + return ptr; +} + +template +static scalar_t* alloc(scalar_t* ptr, size_t size, size_t new_size) { + ptr = reinterpret_cast(std::realloc(ptr, new_size * sizeof(scalar_t))); + + if (ptr == nullptr) { + throw std::bad_alloc(); + } + + // initialize with a bit pattern that maps to NaN for double + std::memset(ptr + size, 0b11111111, (new_size - size) * sizeof(scalar_t)); + + return ptr; +} + +void GrowableNeighborsList::grow() { + auto new_size = neighbors.length * 2; + if (new_size == 0) { + new_size = 1; + } + + auto new_pairs = alloc(neighbors.pairs, neighbors.length, new_size); + + int32_t (*new_shifts)[3] = nullptr; + if (options.return_shifts) { + new_shifts = alloc(neighbors.shifts, neighbors.length, new_size); + } + + double *new_distances = nullptr; + if (options.return_distances) { + new_distances = alloc(neighbors.distances, neighbors.length, new_size); + } + + double (*new_vectors)[3] = nullptr; + if (options.return_vectors) { + new_vectors = alloc(neighbors.vectors, neighbors.length, new_size); + } + + this->neighbors.pairs = new_pairs; + this->neighbors.shifts = new_shifts; + this->neighbors.distances = new_distances; + this->neighbors.vectors = new_vectors; + + this->capacity = new_size; +} + +void GrowableNeighborsList::reset() { + // set all allocated data to zero + auto size = this->neighbors.length; + std::memset(this->neighbors.pairs, 0, size * sizeof(size_t[2])); + + if (this->neighbors.shifts != nullptr) { + std::memset(this->neighbors.shifts, 0, size * sizeof(int32_t[3])); + } + + if (this->neighbors.distances != nullptr) { + std::memset(this->neighbors.distances, 0, size * sizeof(double)); + } + + if (this->neighbors.vectors != nullptr) { + std::memset(this->neighbors.vectors, 0, size * sizeof(double[3])); + } + + // reset length (but keep the capacity where it's at) + this->neighbors.length = 0; + + // allocate/deallocate pointers as required + auto shifts = this->neighbors.shifts; + if (this->options.return_shifts && shifts == nullptr) { + shifts = alloc(shifts, 0, capacity); + } else if (!this->options.return_shifts && shifts != nullptr) { + std::free(shifts); + shifts = nullptr; + } + + auto distances = this->neighbors.distances; + if (this->options.return_distances && distances == nullptr) { + distances = alloc(distances, 0, capacity); + } else if (!this->options.return_distances && distances != nullptr) { + std::free(distances); + distances = nullptr; + } + + auto vectors = this->neighbors.vectors; + if (this->options.return_vectors && vectors == nullptr) { + vectors = alloc(vectors, 0, capacity); + } else if (!this->options.return_vectors && vectors != nullptr) { + std::free(vectors); + vectors = nullptr; + } + + this->neighbors.shifts = shifts; + this->neighbors.distances = distances; + this->neighbors.vectors = vectors; +} + + +void vesin::cpu::free_neighbors(VesinNeighborList& neighbors) { + assert(neighbors.device == VesinCPU); + + std::free(neighbors.pairs); + std::free(neighbors.shifts); + std::free(neighbors.vectors); + std::free(neighbors.distances); +} +#include +#include + + + +thread_local std::string LAST_ERROR; + +extern "C" int vesin_neighbors( + const double (*points)[3], + size_t n_points, + const double box[3][3], + bool periodic, + VesinDevice device, + VesinOptions options, + VesinNeighborList* neighbors, + const char** error_message +) { + if (error_message == nullptr) { + return EXIT_FAILURE; + } + + if (points == nullptr) { + *error_message = "`points` can not be a NULL pointer"; + return EXIT_FAILURE; + } + + if (box == nullptr) { + *error_message = "`cell` can not be a NULL pointer"; + return EXIT_FAILURE; + } + + if (neighbors == nullptr) { + *error_message = "`neighbors` can not be a NULL pointer"; + return EXIT_FAILURE; + } + + if (neighbors->device != VesinUnknownDevice && neighbors->device != device) { + *error_message = "`neighbors` device and data `device` do not match, free the neighbors first"; + return EXIT_FAILURE; + } + + if (device == VesinUnknownDevice) { + *error_message = "got an unknown device to use when running simulation"; + return EXIT_FAILURE; + } + + if (neighbors->device == VesinUnknownDevice) { + // initialize the device + neighbors->device = device; + } else if (neighbors->device != device) { + *error_message = "`neighbors.device` and `device` do not match, free the neighbors first"; + return EXIT_FAILURE; + } + + try { + if (device == VesinCPU) { + auto matrix = vesin::Matrix{{{ + {{box[0][0], box[0][1], box[0][2]}}, + {{box[1][0], box[1][1], box[1][2]}}, + {{box[2][0], box[2][1], box[2][2]}}, + }}}; + + vesin::cpu::neighbors( + reinterpret_cast(points), + n_points, + vesin::BoundingBox(matrix, periodic), + options, + *neighbors + ); + } else { + throw std::runtime_error("unknown device " + std::to_string(device)); + } + } catch (const std::bad_alloc&) { + LAST_ERROR = "failed to allocate memory"; + *error_message = LAST_ERROR.c_str(); + return EXIT_FAILURE; + } catch (const std::exception& e) { + LAST_ERROR = e.what(); + *error_message = LAST_ERROR.c_str(); + return EXIT_FAILURE; + } catch (...) { + *error_message = "fatal error: unknown type thrown as exception"; + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; +} + + +extern "C" void vesin_free(VesinNeighborList* neighbors) { + if (neighbors == nullptr) { + return; + } + + if (neighbors->device == VesinUnknownDevice) { + // nothing to do + } else if (neighbors->device == VesinCPU) { + vesin::cpu::free_neighbors(*neighbors); + } + + std::memset(neighbors, 0, sizeof(VesinNeighborList)); +} diff --git a/src/metatensor/vesin.h b/src/metatensor/vesin.h new file mode 100644 index 0000000000..e1456693ac --- /dev/null +++ b/src/metatensor/vesin.h @@ -0,0 +1,134 @@ +#ifndef VESIN_H +#define VESIN_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/// Options for a neighbors list calculation +typedef struct VesinOptions { + /// Spherical cutoff, only pairs below this cutoff will be included + double cutoff; + /// Should the returned neighbors list be a full list (include both `i -> j` + /// and `j -> i` pairs) or a half list (include only `i -> j`). + bool full; + // TODO: sort option? + + /// Should the returned `VesinNeighborsList` contain `shifts`? + bool return_shifts; + /// Should the returned `VesinNeighborsList` contain `distances`? + bool return_distances; + /// Should the returned `VesinNeighborsList` contain `vector`? + bool return_vectors; +} VesinOptions; + +/// Device on which the data can be +enum VesinDevice { + /// Unknown device, used for default initialization and to indicate no + /// allocated data. + VesinUnknownDevice = 0, + /// CPU device + VesinCPU = 1, +}; + + +/// The actual neighbors list +/// +/// This is organized as a list of pairs, where each pair can contain the +/// following data: +/// +/// - indices of the points in the pair; +/// - distance between points in the pair, accounting for periodic boundary +/// conditions; +/// - vector between points in the pair, accounting for periodic boundary +/// conditions; +/// - periodic shift that created the pair. This is only relevant when using +/// periodic boundary conditions, and contains the number of bounding box we +/// need to cross to create the pair. If the positions of the points are `r_i` +/// and `r_j`, the bounding box is described by a matrix of three vectors `H`, +/// and the periodic shift is `S`, the distance vector for a given pair will +/// be given by `r_ij = r_j - r_i + S @ H`. +/// +/// Under periodic boundary conditions, two atoms can be part of multiple pairs, +/// each pair having a different periodic shift. +typedef struct VesinNeighborsList { +#ifdef __cplusplus + VesinNeighborsList(): + length(0), + device(VesinUnknownDevice), + pairs(nullptr), + shifts(nullptr), + distances(nullptr), + vectors(nullptr) + {} +#endif + + /// Number of pairs in this neighbors list + size_t length; + /// Device used for the data allocations + VesinDevice device; + /// Array of pairs (storing the indices of the first and second point in the + /// pair), containing `length` elements. + size_t (*pairs)[2]; + /// Array of box shifts, one for each `pair`. This is only set if + /// `options.return_pairs` was `true` during the calculation. + int32_t (*shifts)[3]; + /// Array of pair distance (i.e. distance between the two points), one for + /// each pair. This is only set if `options.return_distances` was `true` + /// during the calculation. + double *distances; + /// Array of pair vector (i.e. vector between the two points), one for + /// each pair. This is only set if `options.return_vector` was `true` + /// during the calculation. + double (*vectors)[3]; + + // TODO: custom memory allocators? +} VesinNeighborList; + +/// Free all allocated memory inside a `VesinNeighborsList`, according the it's +/// `device`. +void vesin_free(VesinNeighborList* neighbors); + +/// Compute a neighbors list. +/// +/// The data is returned in a `VesinNeighborsList`. For an initial call, the +/// `VesinNeighborsList` should be zero-initialized (or default-initalized in +/// C++). The `VesinNeighborsList` can be re-used across calls to this functions +/// to re-use memory allocations, and once it is no longer needed, users should +/// call `vesin_free` to release the corresponding memory. +/// +/// @param points positions of all points in the system; +/// @param n_points number of elements in the `points` array +/// @param box bounding box for the system. If the system is non-periodic, +/// this is ignored. This should contain the three vectors of the bounding +/// box, one vector per row of the matrix. +/// @param periodic is the system using periodic boundary conditions? +/// @param device device where the `points` and `box` data is allocated. +/// @param options options for the calculation +/// @param neighbors non-NULL pointer to `VesinNeighborsList` that will be used +/// to store the computed list of neighbors. +/// @param error_message Pointer to a `char*` that wil be set to the error +/// message if this function fails. This does not need to be freed when no +/// longer needed. +int vesin_neighbors( + const double (*points)[3], + size_t n_points, + const double box[3][3], + bool periodic, + VesinDevice device, + VesinOptions options, + VesinNeighborList* neighbors, + const char** error_message +); + + +#ifdef __cplusplus + +} // extern "C" + +#endif + +#endif From 2b1c3a306dd6b0a19ab417c20d1575b7c2efccb8 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Thu, 11 Apr 2024 11:00:40 +0200 Subject: [PATCH 04/32] Debug extension loading --- src/metatensor/metatensor.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index f705d2394e..47729e7489 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -100,15 +100,21 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): this->parse("EXTENSIONS_DIRECTORY", extensions_directory); // TEMPORARY BAD CODE, TO BE REMOVED - dlopen( + auto rascaline = dlopen( (extensions_directory + "/rascaline/lib/librascaline.dylib").c_str(), RTLD_LOCAL | RTLD_NOW ); + if (rascaline == nullptr) { + std::cerr << "failed to load rascaline: " << dlerror() << std::endl; + } - dlopen( + auto rascaline_torch = dlopen( (extensions_directory + "/rascaline/torch/lib/librascaline_torch.dylib").c_str(), RTLD_LOCAL | RTLD_NOW ); + if (rascaline_torch == nullptr) { + std::cerr << "failed to load rascaline_torch: " << dlerror() << std::endl; + } // END OF TEMPORARY BAD CODE, TO BE REMOVED // load the model From 2f8b61437d9db265a2cbf825a81b21f6e0f094bd Mon Sep 17 00:00:00 2001 From: Luthaf Date: Tue, 16 Apr 2024 11:13:03 +0200 Subject: [PATCH 05/32] Determine the shape of metatensor model output early --- regtest/metatensor/rt-soap/config | 1 - regtest/metatensor/rt-soap/plumed.dat | 6 +- regtest/metatensor/rt-soap/soap_cv.py | 14 +- src/metatensor/README.md | 8 +- src/metatensor/metatensor.cpp | 262 +++++++++++++++----------- 5 files changed, 165 insertions(+), 126 deletions(-) diff --git a/regtest/metatensor/rt-soap/config b/regtest/metatensor/rt-soap/config index 307851a20e..44fa319b41 100644 --- a/regtest/metatensor/rt-soap/config +++ b/regtest/metatensor/rt-soap/config @@ -1,5 +1,4 @@ plumed_modules=metatensor plumed_needs=metatensor type=driver -# this is to test a different name arg="--plumed plumed.dat --ixyz crystal_structure.xyz --dump-forces forces --dump-forces-fmt %8.4f --debug-forces forces.num" diff --git a/regtest/metatensor/rt-soap/plumed.dat b/regtest/metatensor/rt-soap/plumed.dat index 8237e14c41..b161f877b5 100644 --- a/regtest/metatensor/rt-soap/plumed.dat +++ b/regtest/metatensor/rt-soap/plumed.dat @@ -1,7 +1,11 @@ soap: METATENSOR ... MODEL=soap_cv.pt EXTENSIONS_DIRECTORY=../extensions - SPECIES=1-40 + SPECIES1=1-8 + SPECIES2=9-32 + SPECIES3=33-88 + SPECIES4=89-176 + SPECIES_TO_TYPES=7,8,6,1 ... diff --git a/regtest/metatensor/rt-soap/soap_cv.py b/regtest/metatensor/rt-soap/soap_cv.py index 9b22113501..7ba1206d70 100644 --- a/regtest/metatensor/rt-soap/soap_cv.py +++ b/regtest/metatensor/rt-soap/soap_cv.py @@ -41,10 +41,10 @@ def forward( selected_atoms: Optional[Labels], ) -> Dict[str, TensorMap]: - if "collective_variable" not in outputs: + if "plumed::cv" not in outputs: return {} - output = outputs["collective_variable"] + output = outputs["plumed::cv"] soap = self.calculator(systems, selected_samples=selected_atoms) soap = soap.keys_to_samples("center_type") @@ -64,16 +64,16 @@ def forward( ) cv = TensorMap(keys=Labels("_", torch.tensor([[0]])), blocks=[block]) - return {"collective_variable": cv} + return {"plumed::cv": cv} cv = SOAP_CV(species=[1, 6, 7, 8]) cv.eval() -capabilites = ModelCapabilities( +capabilities = ModelCapabilities( outputs={ - "collective_variable": ModelOutput( + "plumed::cv": ModelOutput( quantity="", unit="", per_atom=True, @@ -84,7 +84,7 @@ def forward( supported_devices=["cpu", "cuda"], length_unit="nm", atomic_types=[6, 1, 7, 8], - # dtype=TODO + dtype="float64", ) metadata = ModelMetadata( @@ -101,5 +101,5 @@ def forward( ) -model = MetatensorAtomisticModel(cv, metadata, capabilites) +model = MetatensorAtomisticModel(cv, metadata, capabilities) model.export("soap_cv.pt", collect_extensions="extensions") diff --git a/src/metatensor/README.md b/src/metatensor/README.md index 28c72d71ef..4459644d2f 100644 --- a/src/metatensor/README.md +++ b/src/metatensor/README.md @@ -15,16 +15,16 @@ TORCH_CMAKE_PREFIX=$(python -c "import torch; print(torch.utils.cmake_prefix_pat TORCH_PREFIX=$(cd "$TORCH_CMAKE_PREFIX/../.." && pwd) TORCH_INCLUDES="-I$TORCH_PREFIX/include -I$TORCH_PREFIX/include/torch/csrc/api/include" - -# patch a bug from torch's MKL detection -cd -./src/metatensor/patch-torch.sh "$TORCH_PREFIX" ``` 2. a) build and install metatensor-torch from source. You'll need a rust compiler on your system, the easiest way is by using https://rustup.rs/ ```bash +# patch a bug from torch's MKL detection +cd +./src/metatensor/patch-torch.sh "$TORCH_PREFIX" + cd # define a location where metatensor should be installed diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index 47729e7489..5712a9e6a1 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -43,10 +43,6 @@ class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { #include "vesin.h" -// TEMPORARY HACK -#include -// TEMPORARY HACK - namespace PLMD { namespace metatensor { // We will cast Vector/Tensor to pointers to arrays and doubles, so let's make @@ -69,8 +65,8 @@ class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { unsigned getNumberOfDerivatives() override; private: + // fill this->system_ according to the current PLUMED data void createSystem(); - // compute a neighbor list following metatensor format, using data from PLUMED metatensor_torch::TorchTensorBlock computeNeighbors( metatensor_torch::NeighborsListOptions request, @@ -78,8 +74,15 @@ class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { const PLMD::Tensor& cell ); + // execute the model for the given system + torch::Tensor executeModel(metatensor_torch::System system); + torch::jit::Module model_; + // neighbor lists requests made by the model + metatensor_torch::ModelCapabilities capabilities_; + std::vector nl_requests_; + torch::Tensor atomic_types_; // store the strain to be able to compute the virial with autograd torch::Tensor strain_; @@ -87,7 +90,11 @@ class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { metatensor_torch::System system_; metatensor_torch::ModelEvaluationOptions evaluations_options_; bool check_consistency_ = true; + metatensor_torch::TorchTensorMap output_; + // shape of the output of this model + unsigned n_samples_; + unsigned n_properties_; }; @@ -96,51 +103,54 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): ActionAtomistic(options), ActionWithValue(options) { - std::string extensions_directory; - this->parse("EXTENSIONS_DIRECTORY", extensions_directory); - - // TEMPORARY BAD CODE, TO BE REMOVED - auto rascaline = dlopen( - (extensions_directory + "/rascaline/lib/librascaline.dylib").c_str(), - RTLD_LOCAL | RTLD_NOW - ); - if (rascaline == nullptr) { - std::cerr << "failed to load rascaline: " << dlerror() << std::endl; + if (metatensor_torch::version().find("0.4.") != 0) { + error( + "this code requires version 0.4.x of metatensor-torch, got version " + + metatensor_torch::version() + ); } - auto rascaline_torch = dlopen( - (extensions_directory + "/rascaline/torch/lib/librascaline_torch.dylib").c_str(), - RTLD_LOCAL | RTLD_NOW - ); - if (rascaline_torch == nullptr) { - std::cerr << "failed to load rascaline_torch: " << dlerror() << std::endl; + // first, load the model + std::string extensions_directory_str; + this->parse("EXTENSIONS_DIRECTORY", extensions_directory_str); + + torch::optional extensions_directory = torch::nullopt; + if (!extensions_directory_str.empty()) { + extensions_directory = std::move(extensions_directory_str); } - // END OF TEMPORARY BAD CODE, TO BE REMOVED - // load the model std::string model_path; this->parse("MODEL", model_path); try { - this->model_ = metatensor_torch::load_atomistic_model(model_path); + this->model_ = metatensor_torch::load_atomistic_model(model_path, extensions_directory); } catch (const std::exception& e) { error("failed to load model at '" + model_path + "': " + e.what()); } + // extract information from the model + this->capabilities_ = this->model_.run_method("capabilities").toCustomClass(); + auto requests_ivalue = this->model_.run_method("requested_neighbors_lists"); + for (auto request_ivalue: requests_ivalue.toList()) { + auto request = request_ivalue.get().toCustomClass(); + this->nl_requests_.push_back(request); + } // parse the atomic types from the input file std::vector atomic_types; - std::vector species_to_metatensor_types; - parseVector("SPECIES_TO_METATENSOR_TYPES", species_to_metatensor_types); - bool has_custom_types = !species_to_metatensor_types.empty(); + std::vector species_to_types; + parseVector("SPECIES_TO_TYPES", species_to_types); + bool has_custom_types = !species_to_types.empty(); std::vector all_atoms; parseAtomList("SPECIES", all_atoms); - auto n_species = 0; + size_t n_species = 0; if (all_atoms.empty()) { std::vector t; - for (int i=1;;i++) { + int i = 0; + while (true) { + i += 1; parseAtomList("SPECIES", i, t); if (t.empty()) { break; @@ -148,21 +158,21 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): int32_t type = i; if (has_custom_types) { - if (species_to_metatensor_types.size() < i) { + if (species_to_types.size() < static_cast(i)) { error( - "SPECIES_TO_METATENSOR_TYPES is too small, " - "it should have one entry for each species (we have at least " - + std::to_string(i) + " species and " + - std::to_string(species_to_metatensor_types.size()) + - "entries in SPECIES_TO_METATENSOR_TYPES)" + "SPECIES_TO_TYPES is too small, it should have one entry " + "for each species (we have at least " + std::to_string(i) + + " species and " + std::to_string(species_to_types.size()) + + "entries in SPECIES_TO_TYPES)" ); } - type = species_to_metatensor_types[i - 1]; + type = species_to_types[static_cast(i - 1)]; } - log.printf(" Species %d includes atoms : ", i); + log.printf(" atoms with type %d are: ", type); for(unsigned j=0; jwarning( - "SPECIES_TO_METATENSOR_TYPES contains more entries (" + - std::to_string(species_to_metatensor_types.size()) + + "SPECIES_TO_TYPES contains more entries (" + + std::to_string(species_to_types.size()) + ") than there where species (" + std::to_string(n_species) + ")" ); } @@ -196,12 +206,6 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): // TODO: selected_atoms // evaluations_options_->set_selected_atoms() - // setup the output - // TODO: define the size/type of output a bit better - this->addValue({1, 1}); - this->setNotPeriodic(); - this->getPntrToComponent(0)->buildDataStore(); - // create evaluation options for the model. These won't change during the // simulation, so we initialize them once here. evaluations_options_ = torch::make_intrusive(); @@ -213,7 +217,55 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): // we are using torch autograd system to compute gradients, so we don't need // any explicit gradients. output->explicit_gradients = {}; - evaluations_options_->outputs.insert("collective_variable", output); + evaluations_options_->outputs.insert("plumed::cv", output); + + + // setup storage for the computed CV: we need to run the model once to know + // the shape of the output, so we use a dummy system with one since atom for + // this + auto tensor_options = torch::TensorOptions().dtype(torch::kFloat64).device(torch::kCPU); + auto dummy_system = torch::make_intrusive( + /*types = */ this->atomic_types_.index({torch::indexing::Slice(0, 1)}), + /*positions = */ torch::zeros({1, 3}, tensor_options), + /*cell = */ torch::zeros({3, 3}, tensor_options) + ); + for (auto request: this->nl_requests_) { + auto neighbors = this->computeNeighbors(request, {PLMD::Vector(0, 0, 0)}, PLMD::Tensor(0, 0, 0, 0, 0, 0, 0, 0, 0)); + metatensor_torch::register_autograd_neighbors(dummy_system, neighbors, this->check_consistency_); + dummy_system->add_neighbors_list(request, neighbors); + } + + if (output->per_atom) { + this->n_samples_ = static_cast(this->atomic_types_.size(0)); + } else { + this->n_samples_ = 1; + } + + this->n_properties_ = static_cast(this->executeModel(dummy_system).size(1)); + + if (n_samples_ == 1 && n_properties_ == 1) { + log.printf(" the output of this model is a scalar\n"); + + this->addValue({this->n_samples_, this->n_properties_}); + } else if (n_samples_ == 1) { + log.printf(" the output of this model is 1x%d vector\n", n_properties_); + + this->addValue({this->n_properties_}); + this->getPntrToComponent(0)->buildDataStore(); + } else if (n_properties_ == 1) { + log.printf(" the output of this model is %dx1 vector\n", n_samples_); + + this->addValue({this->n_samples_}); + this->getPntrToComponent(0)->buildDataStore(); + } else { + log.printf(" the output of this model is a %dx%d matrix\n", n_samples_, n_properties_); + + this->addValue({this->n_samples_, this->n_properties_}); + this->getPntrToComponent(0)->buildDataStore(); + this->getPntrToComponent(0)->reshapeMatrixStore(n_properties_); + } + + this->setNotPeriodic(); } unsigned MetatensorPlumedAction::getNumberOfDerivatives() { @@ -264,7 +316,6 @@ void MetatensorPlumedAction::createSystem() { torch_cell = torch_cell.matmul(this->strain_); } - // TODO: move data to another dtype/device as requested by the model or user this->system_ = torch::make_intrusive( this->atomic_types_, @@ -274,10 +325,7 @@ void MetatensorPlumedAction::createSystem() { // compute the neighbors list requested by the model, and register them with // the system - auto nl_requests = this->model_.run_method("requested_neighbors_lists"); - for (auto request_ivalue: nl_requests.toList()) { - auto request = request_ivalue.get().toCustomClass(); - + for (auto request: this->nl_requests_) { auto neighbors = this->computeNeighbors(request, positions, cell); metatensor_torch::register_autograd_neighbors(this->system_, neighbors, this->check_consistency_); this->system_->add_neighbors_list(request, neighbors); @@ -301,7 +349,7 @@ metatensor_torch::TorchTensorBlock MetatensorPlumedAction::computeNeighbors( auto cutoff = request->engine_cutoff(this->getUnits().getLengthString()); - auto periodic = ( + auto non_periodic = ( cell(0, 0) == 0.0 && cell(0, 1) == 0.0 && cell(0, 2) == 0.0 && cell(1, 0) == 0.0 && cell(1, 1) == 0.0 && cell(1, 2) == 0.0 && cell(2, 0) == 0.0 && cell(2, 2) == 0.0 && cell(2, 2) == 0.0 @@ -324,7 +372,7 @@ metatensor_torch::TorchTensorBlock MetatensorPlumedAction::computeNeighbors( reinterpret_cast(positions.data()), positions.size(), reinterpret_cast(&cell(0, 0)), - periodic, + !non_periodic, VesinCPU, options, vesin_neighbor_list, @@ -334,7 +382,7 @@ metatensor_torch::TorchTensorBlock MetatensorPlumedAction::computeNeighbors( if (status != EXIT_SUCCESS) { this->error( "failed to compute neighbor list (cutoff=" + std::to_string(cutoff) + - "full=" + (request->full_list() ? "true" : "false") + "): " + error_message + ", full=" + (request->full_list() ? "true" : "false") + "): " + error_message ); } @@ -375,82 +423,72 @@ metatensor_torch::TorchTensorBlock MetatensorPlumedAction::computeNeighbors( return neighbors; } - -void MetatensorPlumedAction::calculate() { - this->createSystem(); - +torch::Tensor MetatensorPlumedAction::executeModel(metatensor_torch::System system) { try { auto ivalue_output = this->model_.forward({ - std::vector{this->system_}, + std::vector{system}, evaluations_options_, this->check_consistency_, }); auto dict_output = ivalue_output.toGenericDict(); - auto cv = dict_output.at("collective_variable"); + auto cv = dict_output.at("plumed::cv"); this->output_ = cv.toCustomClass(); } catch (const std::exception& e) { error("failed to evaluate the model: " + std::string(e.what())); } - // send the output back to plumed plumed_massert(this->output_->keys()->count() == 1, "output should have a single block"); auto block = metatensor_torch::TensorMapHolder::block_by_id(this->output_, 0); plumed_massert(block->components().empty(), "components are not yet supported in the output"); - auto torch_values = block->values().to(torch::kCPU).to(torch::kFloat64); - auto n_samples = torch_values.size(0); - auto n_properties = torch_values.size(1); + + return block->values().to(torch::kCPU).to(torch::kFloat64); +} + + +void MetatensorPlumedAction::calculate() { + this->createSystem(); + + auto torch_values = executeModel(this->system_); + + if (static_cast(torch_values.size(0)) != this->n_samples_) { + error( + "expected the model to return a TensorBlock with " + + std::to_string(this->n_samples_) + " samples, got " + + std::to_string(torch_values.size(0)) + " instead" + ); + } else if (static_cast(torch_values.size(1)) != this->n_properties_) { + error( + "expected the model to return a TensorBlock with " + + std::to_string(this->n_properties_) + " properties, got " + + std::to_string(torch_values.size(1)) + " instead" + ); + } Value* value = this->getPntrToComponent(0); - const auto& value_shape = value->getShape(); // reshape the plumed `Value` to hold the data returned by the model - if (n_samples == 1) { - if (n_properties == 1) { - // the CV is a single scalar - if (value->getRank() != 0) { - log.printf(" output of metatensor model is a scalar\n"); - value->setShape({}); - } - + if (n_samples_ == 1) { + if (n_properties_ == 1) { value->set(torch_values.item()); } else { // we have multiple CV describing a single thing (atom or full system) - if (value->getRank() != 1 || value_shape[0] != n_properties) { - log.printf(" output of metatensor model is a 1x%d vector\n", n_properties); - value->setShape({static_cast(n_properties)}); - } - - for (unsigned i=0; iset(i, torch_values[0][i].item()); } } } else { - if (n_properties == 1) { + if (n_properties_ == 1) { // we have a single CV describing multiple things (i.e. atoms) - if (value->getRank() != 1 || value_shape[0] != n_samples) { - log.printf(" output of metatensor model is a %dx1 vector\n", n_samples); - value->setShape({static_cast(n_samples)}); - } - - // TODO: check sample order? - for (unsigned i=0; iset(i, torch_values[i][0].item()); } } else { // the CV is a matrix - if (value->getRank() != 2 || value_shape[0] != n_samples || value_shape[1] != n_properties) { - log.printf(" output of metatensor model is a %dx%d matrix\n", n_samples, n_properties); - value->setShape({ - static_cast(n_samples), - static_cast(n_properties), - }); - value->reshapeMatrixStore(n_properties); - } - - // TODO: check sample order? - for (unsigned i=0; iset(i * n_properties + j, torch_values[i][j].item()); + for (unsigned i=0; iset(i * n_properties_ + j, torch_values[i][j].item()); } } } @@ -466,29 +504,27 @@ void MetatensorPlumedAction::apply() { auto block = metatensor_torch::TensorMapHolder::block_by_id(this->output_, 0); auto torch_values = block->values().to(torch::kCPU).to(torch::kFloat64); - auto n_samples = torch_values.size(0); - auto n_properties = torch_values.size(1); auto output_grad = torch::zeros_like(torch_values); - if (n_samples == 1) { - if (n_properties == 1) { + if (n_samples_ == 1) { + if (n_properties_ == 1) { output_grad[0][0] = value->getForce(); } else { - for (unsigned i=0; igetForce(i); } } } else { - if (n_properties == 1) { + if (n_properties_ == 1) { // TODO: check sample order? - for (unsigned i=0; igetForce(i); } } else { // TODO: check sample order? - for (unsigned i=0; igetForce(i * n_properties + j); + for (unsigned i=0; igetForce(i * n_properties_ + j); } } } @@ -550,7 +586,7 @@ namespace PLMD { namespace metatensor { keys.add("numbered", "SPECIES", "the atoms in each PLUMED species"); keys.reset_style("SPECIES", "atoms"); - keys.add("optional", "SPECIES_TO_METATENSOR_TYPES", "mapping from PLUMED SPECIES to metatensor's atomic types"); + keys.add("optional", "SPECIES_TO_TYPES", "mapping from PLUMED SPECIES to metatensor's atomic types"); } PLUMED_REGISTER_ACTION(MetatensorPlumedAction, "METATENSOR") From 3fe22465c583ab7f80c36273da131463710b5bac Mon Sep 17 00:00:00 2001 From: Luthaf Date: Tue, 16 Apr 2024 15:31:14 +0200 Subject: [PATCH 06/32] Check the capabilties to define evaluation options --- src/metatensor/metatensor.cpp | 37 +++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index 5712a9e6a1..7f750b4c6a 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -104,7 +104,7 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): ActionWithValue(options) { if (metatensor_torch::version().find("0.4.") != 0) { - error( + this->error( "this code requires version 0.4.x of metatensor-torch, got version " + metatensor_torch::version() ); @@ -201,24 +201,37 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): this->atomic_types_ = torch::tensor(std::move(atomic_types)); // Request the atoms and check we have read in everything - requestAtoms(all_atoms); - - // TODO: selected_atoms - // evaluations_options_->set_selected_atoms() + this->requestAtoms(all_atoms); // create evaluation options for the model. These won't change during the // simulation, so we initialize them once here. evaluations_options_ = torch::make_intrusive(); evaluations_options_->set_length_unit(getUnits().getLengthString()); + if (!this->capabilities_->outputs().contains("plumed::cv")) { + auto existing_outputs = std::vector(); + for (const auto& it: this->capabilities_->outputs()) { + existing_outputs.push_back(it.key()); + } + + this->error( + "expected 'plumed::cv' in the capabilities of the model, could not find it. " + "the following outputs exist: " + torch::str(existing_outputs) + ); + } + auto output = torch::make_intrusive(); - // TODO: should this be configurable? - output->per_atom = true; - // we are using torch autograd system to compute gradients, so we don't need - // any explicit gradients. + // this output has no quantity or unit to set + + output->per_atom = this->capabilities_->outputs().at("plumed::cv")->per_atom; + // we are using torch autograd system to compute gradients, + // so we don't need any explicit gradients. output->explicit_gradients = {}; evaluations_options_->outputs.insert("plumed::cv", output); + // TODO: selected_atoms + // evaluations_options_->set_selected_atoms() + // setup storage for the computed CV: we need to run the model once to know // the shape of the output, so we use a dummy system with one since atom for @@ -435,7 +448,7 @@ torch::Tensor MetatensorPlumedAction::executeModel(metatensor_torch::System syst auto cv = dict_output.at("plumed::cv"); this->output_ = cv.toCustomClass(); } catch (const std::exception& e) { - error("failed to evaluate the model: " + std::string(e.what())); + this->error("failed to evaluate the model: " + std::string(e.what())); } plumed_massert(this->output_->keys()->count() == 1, "output should have a single block"); @@ -452,13 +465,13 @@ void MetatensorPlumedAction::calculate() { auto torch_values = executeModel(this->system_); if (static_cast(torch_values.size(0)) != this->n_samples_) { - error( + this->error( "expected the model to return a TensorBlock with " + std::to_string(this->n_samples_) + " samples, got " + std::to_string(torch_values.size(0)) + " instead" ); } else if (static_cast(torch_values.size(1)) != this->n_properties_) { - error( + this->error( "expected the model to return a TensorBlock with " + std::to_string(this->n_properties_) + " properties, got " + std::to_string(torch_values.size(1)) + " instead" From af8db598534612dfee25be602ae44a81d36d7a2c Mon Sep 17 00:00:00 2001 From: Luthaf Date: Tue, 16 Apr 2024 17:50:29 +0200 Subject: [PATCH 07/32] Run the model on other dtype/device --- .../metatensor/rt-soap/crystal_structure.xyz | 256 ++++++------------ regtest/metatensor/rt-soap/plumed.dat | 10 +- regtest/metatensor/rt-soap/soap_cv.py | 15 +- src/metatensor/metatensor.cpp | 157 +++++++++-- 4 files changed, 222 insertions(+), 216 deletions(-) diff --git a/regtest/metatensor/rt-soap/crystal_structure.xyz b/regtest/metatensor/rt-soap/crystal_structure.xyz index 236e93d355..8084820a41 100644 --- a/regtest/metatensor/rt-soap/crystal_structure.xyz +++ b/regtest/metatensor/rt-soap/crystal_structure.xyz @@ -1,178 +1,78 @@ -176 -10.8151 11.1671 12.6671 -N 1.28413 0.0356836 12.195 -N 4.15648 11.1648 5.88207 -N 6.66501 5.56845 0.433575 -N 9.55986 5.61216 6.79708 -N 3.19304 0.415601 0.79143 -N 2.20149 10.7488 7.12262 -N 8.66181 5.16664 11.8319 -N 7.55431 5.98008 5.60745 -O 0.588269 10.7008 10.069 -O 4.8823 0.501289 3.74831 -O 5.96103 6.07786 2.60388 -O 10.243 5.10818 8.93897 -O 9.14171 8.47003 10.3675 -O 7.07259 2.7051 3.99376 -O 3.70069 8.25989 2.31089 -O 1.67804 2.88647 8.67235 -O 10.6638 1.07613 7.81409 -O 5.58016 10.0738 1.4989 -O 5.26318 4.50881 4.91221 -O 0.188342 6.66055 11.1768 -O 2.59101 9.42059 0.233576 -O 2.79327 1.7319 6.52566 -O 8.0305 7.282 12.4527 -O 8.2152 3.85759 6.13971 -O 3.82264 2.485 1.51498 -O 1.64119 8.66909 7.85617 -O 9.20944 3.10331 11.2096 -O 7.03065 7.99741 4.82086 -O 10.1687 1.63869 1.57326 -O 6.06204 9.48052 7.85816 -O 4.79055 3.89767 11.091 -O 0.625828 7.29331 4.78201 -C 2.95238 1.72613 1.06281 -C 2.39424 9.44611 7.32799 -C 8.34889 3.87138 11.6213 -C 7.84063 7.30003 5.3126 -C 2.36095 10.6306 0.183825 -C 3.05248 0.576928 6.49156 -C 7.74299 6.09163 12.4796 -C 8.47531 5.07354 6.11657 -C 1.11456 1.43798 12.1146 -C 4.34028 9.73065 5.75877 -C 6.56198 4.11671 0.624847 -C 9.70287 7.04878 6.88873 -C 1.52986 2.17765 0.678822 -C 3.85612 9.03075 7.04374 -C 7.00303 3.4499 11.9504 -C 9.23522 7.75214 5.61205 -C 0.398007 10.3598 11.4259 -C 5.00925 0.855939 5.14878 -C 5.80886 6.44152 1.24675 -C 10.4388 4.72998 7.54811 -C 9.68665 10.4586 11.7387 -C 6.44378 0.752554 5.38023 -C 4.30831 6.3222 0.894521 -C 1.08084 4.85311 7.26565 -C 9.13597 9.89693 10.3582 -C 7.10879 1.28477 4.08154 -C 3.70376 6.83428 2.27981 -C 1.70103 4.35143 8.59228 -C 10.0922 10.4258 9.38103 -C 6.11343 0.779889 3.03707 -C 4.72635 6.30337 3.28925 -C 0.706842 4.86811 9.62774 -C 9.63945 0.573215 8.71565 -C 6.58754 10.6145 2.36632 -C 4.28809 4.99295 3.94499 -C 1.17869 6.1342 10.2792 -C 1.46661 3.64735 0.563839 -C 3.91337 7.45062 6.83304 -C 6.89236 1.9212 12.138 -C 9.31088 9.26262 5.79701 -C 0.49689 1.86112 1.86459 -C 4.90182 9.32548 8.20692 -C 5.9603 3.7177 10.8188 -C 10.2874 7.39666 4.47252 -C 1.05177 1.68814 3.25477 -C 4.38145 9.48367 9.61965 -C 6.45079 3.90566 9.38004 -C 9.75263 7.25408 3.08129 -C 0.991026 0.195369 3.56821 -C 4.32584 10.96 9.93137 -C 6.46726 5.35922 9.10466 -C 9.80269 5.76208 2.72201 -C 0.128048 2.46113 4.27152 -C 5.29095 8.70348 10.617 -C 5.55851 3.11593 8.44484 -C 10.6702 8.04546 2.03703 -H 4.10239 11.1459 1.09329 -H 1.30213 0.0342548 7.42189 -H 9.53281 5.60692 11.5551 -H 6.66589 5.53935 5.23088 -H 8.64718 8.09618 11.1453 -H 7.60533 3.01489 4.78942 -H 3.23645 8.63677 1.61018 -H 2.20095 2.55921 7.88601 -H 0.379193 1.73168 8.24643 -H 5.04373 9.3881 1.93904 -H 5.78935 3.80089 4.40439 -H 10.4567 7.37919 10.7535 -H 0.104051 1.73809 11.8608 -H 5.30499 9.43917 5.54202 -H 5.53299 3.87341 0.812386 -H 10.6884 7.36664 7.10621 -H 1.78896 1.81187 11.2638 -H 3.68439 9.3429 4.9022 -H 7.12753 3.75643 1.45471 -H 9.08085 7.38722 7.78966 -H 0.697568 9.29512 11.6168 -H 4.66031 1.90419 5.29401 -H 6.09731 7.44726 1.04688 -H 10.0692 3.7367 7.3867 -H 9.38022 9.89395 12.6339 -H 6.79461 1.33138 6.26903 -H 3.96278 6.9026 0.0896576 -H 1.42227 4.31828 6.41678 -H 9.44192 0.322678 11.8104 -H 6.81651 10.8324 5.48627 -H 3.96238 5.27012 0.847479 -H 1.43779 5.92571 7.14938 -H 8.11352 10.2845 10.2269 -H 8.10148 0.852127 3.86806 -H 2.70619 6.46082 2.46064 -H 2.7613 4.72198 8.75886 -H 10.3267 9.63132 8.60634 -H 5.9242 1.48199 2.2331 -H 4.8782 7.07518 4.06084 -H 0.525666 4.08661 10.4007 -H 8.76306 0.369849 8.15227 -H 7.48526 10.8057 1.82079 -H 3.3422 5.20994 4.52094 -H 2.07818 5.96684 10.8643 -H 9.41381 1.29284 9.49431 -H 6.77874 9.85185 3.13693 -H 4.03685 4.26764 3.12524 -H 1.38637 6.94525 9.50275 -H 2.1846 3.98948 12.4268 -H 3.1876 7.08306 6.13166 -H 7.60275 1.57516 0.261558 -H 8.61406 9.57521 6.56965 -H 0.494526 4.01383 0.245591 -H 4.94626 7.18663 6.57171 -H 5.86353 1.59166 12.4312 -H 10.3224 9.5727 6.09657 -H 1.77827 4.23366 1.4863 -H 3.69279 6.9806 7.78454 -H 7.17693 1.38145 11.1517 -H 9.05764 9.78475 4.85955 -H 2.05845 2.03468 3.34088 -H 3.31336 9.105 9.65719 -H 7.44442 3.52356 9.32561 -H 8.75636 7.64728 3.02387 -H 1.7089 10.8043 2.93884 -H 3.66568 0.380257 9.29099 -H 7.17053 5.95779 9.6717 -H 9.10914 5.19244 3.33095 -H 1.35776 0.0583836 4.6365 -H 4.09743 0.00380453 10.9624 -H 6.77825 5.49627 8.02518 -H 9.44701 5.64256 1.66552 -H 0.0490674 10.9316 3.47795 -H 5.36527 0.220938 9.78787 -H 5.44707 5.78211 9.23447 -H 10.7855 5.34902 2.8569 -H 0.46903 2.26044 5.28333 -H 4.9299 8.92286 11.6417 -H 5.88028 3.32144 7.4085 -H 10.3598 7.85218 1.02466 -H 0.215689 3.5216 4.08985 -H 5.25018 7.63447 10.4261 -H 5.58329 2.03707 8.55595 -H 10.6224 9.11714 2.23242 -H 9.89429 2.11629 4.1664 -H 6.30059 9.05835 10.5129 -H 4.49554 3.4428 8.48274 -H 0.872511 7.66384 2.14979 +76 +9.29282 8.82648 8.80317 +C -0.00674798 1.62841 5.1374 +C -0.234997 2.66289 6.02956 +C -0.645067 3.94896 1.67162 +C -0.686759 6.81038 6.83509 +C -1.21518 1.44361 4.30407 +C -1.64474 3.17369 5.81622 +C -2.51526 5.37019 6.12042 +C -2.59982 3.16974 7.09021 +C -3.04198 6.41918 5.19058 +C -3.07058 -0.447098 7.5688 +C -3.33529 1.81888 7.17616 +C -3.52606 4.37762 6.77056 +C -4.26818 4.86202 7.96407 +C 1.15528 4.96346 3.67396 +C 1.46515 3.94504 2.79141 +C 1.8355 -0.229246 1.89091 +C 1.84526 2.65735 7.07491 +C 2.3535 5.10858 4.48679 +C 2.83322 3.38203 3.004 +C 3.66083 1.24405 2.65283 +C 3.81093 3.40544 1.76377 +C 4.22474 0.188689 3.59337 +C 4.29399 7.00701 1.25775 +C 4.52552 4.72654 1.62947 +C 4.63227 2.20046 2.00559 +C 5.4412 1.75131 0.827934 +H -0.597154 5.01805 1.48822 +H -1.09178 3.36331 0.862686 +H -1.25464 3.78279 2.676 +H -1.27458 7.74831 2.42989 +H -2.02781 3.32334 7.96672 +H -2.07989 8.33492 0.952737 +H -2.23197 -1.1727 7.84 +H -2.32895 7.01916 4.76419 +H -3.46144 -0.773536 6.59683 +H -3.61517 5.1856 8.74908 +H -3.622 5.87365 4.43455 +H -3.78336 7.06884 5.71404 +H -3.8561 -0.507043 8.39732 +H -4.23715 4.12125 5.94111 +H -4.88784 5.74215 7.71773 +H -4.95914 4.053 8.36145 +H 0.061143 6.26169 6.23598 +H 0.223955 5.48529 3.82962 +H 0.934864 1.09568 4.99619 +H 1.12813 0.32584 2.53852 +H 1.76654 1.56839 7.34513 +H 2.24591 3.20688 7.94958 +H 2.4153 2.76976 6.13735 +H 2.42478 -1.13676 6.38955 +H 3.17168 3.23498 0.851446 +H 3.24428 -1.74337 7.85678 +H 3.40391 -0.402137 4.06113 +H 3.40727 7.69773 0.912087 +H 4.63741 7.37035 2.22775 +H 4.77799 1.3854 0.00264514 +H 4.81423 0.703684 4.40367 +H 4.95021 -0.447272 3.08942 +H 5.04072 7.01358 0.449909 +H 5.37118 2.45599 2.87965 +H 6.09722 0.829165 1.09862 +H 6.17357 2.52147 0.48128 +O -1.40912 0.683441 3.39886 +O -1.63781 4.54532 5.38982 +O -1.77114 5.89669 7.23639 +O -2.14901 2.33897 4.74752 +O -2.52094 0.809112 7.4815 +O -4.57576 1.73881 7.09528 +O 0.441217 3.16788 6.97222 +O 0.730293 3.42562 1.79561 +O 2.60189 5.89386 5.38898 +O 2.7961 2.04711 3.4473 +O 2.96333 0.623505 1.5615 +O 3.37537 4.19401 4.06299 +O 3.6605 5.69469 1.30667 +O 5.72352 4.85085 1.72059 diff --git a/regtest/metatensor/rt-soap/plumed.dat b/regtest/metatensor/rt-soap/plumed.dat index b161f877b5..34851b2c0c 100644 --- a/regtest/metatensor/rt-soap/plumed.dat +++ b/regtest/metatensor/rt-soap/plumed.dat @@ -1,11 +1,11 @@ soap: METATENSOR ... MODEL=soap_cv.pt EXTENSIONS_DIRECTORY=../extensions - SPECIES1=1-8 - SPECIES2=9-32 - SPECIES3=33-88 - SPECIES4=89-176 - SPECIES_TO_TYPES=7,8,6,1 + + SPECIES1=1-26 + SPECIES2=27-62 + SPECIES3=63-76 + SPECIES_TO_TYPES=6,1,8 ... diff --git a/regtest/metatensor/rt-soap/soap_cv.py b/regtest/metatensor/rt-soap/soap_cv.py index 7ba1206d70..2db5007f87 100644 --- a/regtest/metatensor/rt-soap/soap_cv.py +++ b/regtest/metatensor/rt-soap/soap_cv.py @@ -32,7 +32,7 @@ def __init__(self, species): atomic_gaussian_width=0.3, ) - self.pca_projection = torch.rand(2520, 3, dtype=torch.float64) + self.register_buffer("pca_projection", torch.rand(2520, 3, dtype=torch.float64)) def forward( self, @@ -46,6 +46,10 @@ def forward( output = outputs["plumed::cv"] + device = torch.device("cpu") + if len(systems) > 0: + device = systems[0].positions.device + soap = self.calculator(systems, selected_samples=selected_atoms) soap = soap.keys_to_samples("center_type") soap = soap.keys_to_properties(self.neighbor_type_pairs) @@ -60,9 +64,12 @@ def forward( values=projected, samples=soap_block.samples, components=[], - properties=Labels("soap_pca", torch.tensor([[0], [1], [2]])), + properties=Labels("soap_pca", torch.tensor([[0], [1], [2]], device=device)), + ) + cv = TensorMap( + keys=Labels("_", torch.tensor([[0]], device=device)), + blocks=[block], ) - cv = TensorMap(keys=Labels("_", torch.tensor([[0]])), blocks=[block]) return {"plumed::cv": cv} @@ -81,7 +88,7 @@ def forward( ) }, interaction_range=4.0, - supported_devices=["cpu", "cuda"], + supported_devices=["cpu", "mps", "cuda"], length_unit="nm", atomic_types=[6, 1, 7, 8], dtype="float64", diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index 7f750b4c6a..5e3c7aa1ee 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -35,7 +35,11 @@ class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { #include #include -#include "torch/csrc/autograd/autograd.h" +#include +#include +#if TORCH_VERSION_MAJOR >= 2 +#include +#endif #include #include @@ -83,13 +87,17 @@ class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { metatensor_torch::ModelCapabilities capabilities_; std::vector nl_requests_; + // dtype/device to use to execute the model + torch::ScalarType dtype_; + torch::Device device_; + torch::Tensor atomic_types_; // store the strain to be able to compute the virial with autograd torch::Tensor strain_; metatensor_torch::System system_; metatensor_torch::ModelEvaluationOptions evaluations_options_; - bool check_consistency_ = true; + bool check_consistency_; metatensor_torch::TorchTensorMap output_; // shape of the output of this model @@ -101,7 +109,8 @@ class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): Action(options), ActionAtomistic(options), - ActionWithValue(options) + ActionWithValue(options), + device_(torch::kCPU) { if (metatensor_torch::version().find("0.4.") != 0) { this->error( @@ -139,11 +148,11 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): // parse the atomic types from the input file std::vector atomic_types; std::vector species_to_types; - parseVector("SPECIES_TO_TYPES", species_to_types); + this->parseVector("SPECIES_TO_TYPES", species_to_types); bool has_custom_types = !species_to_types.empty(); std::vector all_atoms; - parseAtomList("SPECIES", all_atoms); + this->parseAtomList("SPECIES", all_atoms); size_t n_species = 0; if (all_atoms.empty()) { @@ -151,7 +160,7 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): int i = 0; while (true) { i += 1; - parseAtomList("SPECIES", i, t); + this->parseAtomList("SPECIES", i, t); if (t.empty()) { break; } @@ -203,6 +212,8 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): // Request the atoms and check we have read in everything this->requestAtoms(all_atoms); + this->parseFlag("CHECK_CONSISTENCY", this->check_consistency_); + // create evaluation options for the model. These won't change during the // simulation, so we initialize them once here. evaluations_options_ = torch::make_intrusive(); @@ -233,10 +244,94 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): // evaluations_options_->set_selected_atoms() + // Determine which device we should use based on user input, what the model + // supports and what's available + auto available_devices = std::vector(); + for (const auto& device: this->capabilities_->supported_devices) { + if (device == "cpu") { + available_devices.push_back(torch::kCPU); + } else if (device == "cuda") { + if (torch::cuda::is_available()) { + available_devices.push_back(torch::Device("cuda")); + } + } else if (device == "mps") { + #if TORCH_VERSION_MAJOR >= 2 + if (torch::mps::is_available()) { + available_devices.push_back(torch::Device("mps")); + } + #endif + } else { + this->warning( + "the model declared support for unknown device '" + device + + "', it will be ignored" + ); + } + } + + if (available_devices.empty()) { + this->error( + "failed to find a valid device for the model at '" + model_path + "': " + "the model supports " + torch::str(this->capabilities_->supported_devices) + + ", none of these where available" + ); + } + + std::string requested_device; + this->parse("DEVICE", requested_device); + if (requested_device.empty()) { + // no user request, pick the device the model prefers + this->device_ = available_devices[0]; + } else { + bool found_requested_device = false; + for (const auto& device: available_devices) { + if (device.is_cpu() && requested_device == "cpu") { + this->device_ = device; + found_requested_device = true; + break; + } else if (device.is_cuda() && requested_device == "cuda") { + this->device_ = device; + found_requested_device = true; + break; + } else if (device.is_mps() && requested_device == "mps") { + this->device_ = device; + found_requested_device = true; + break; + } + } + + if (!found_requested_device) { + this->error( + "failed to find requested device (" + requested_device + "): it is either " + "not supported by this model or not available on this machine" + ); + } + } + + this->model_.to(this->device_); + this->atomic_types_ = this->atomic_types_.to(this->device_); + + log.printf( + " running model on %s device with %s data\n", + this->device_.str().c_str(), + this->capabilities_->dtype().c_str() + ); + + if (this->capabilities_->dtype() == "float64") { + this->dtype_ = torch::kFloat64; + } else if (this->capabilities_->dtype() == "float32") { + this->dtype_ = torch::kFloat32; + } else { + this->error( + "the model requested an unsupported dtype '" + this->capabilities_->dtype() + "'" + ); + } + + auto tensor_options = torch::TensorOptions().dtype(this->dtype_).device(this->device_); + this->strain_ = torch::eye(3, tensor_options.requires_grad(true)); + // setup storage for the computed CV: we need to run the model once to know // the shape of the output, so we use a dummy system with one since atom for // this - auto tensor_options = torch::TensorOptions().dtype(torch::kFloat64).device(torch::kCPU); auto dummy_system = torch::make_intrusive( /*types = */ this->atomic_types_.index({torch::indexing::Slice(0, 1)}), /*positions = */ torch::zeros({1, 3}, tensor_options), @@ -290,8 +385,8 @@ unsigned MetatensorPlumedAction::getNumberOfDerivatives() { void MetatensorPlumedAction::createSystem() { const auto& cell = this->getPbc().getBox(); - auto tensor_options = torch::TensorOptions().dtype(torch::kFloat64).device(torch::kCPU); - auto torch_cell = torch::zeros({3, 3}, tensor_options); + auto cpu_f64_tensor = torch::TensorOptions().dtype(torch::kFloat64).device(torch::kCPU); + auto torch_cell = torch::zeros({3, 3}, cpu_f64_tensor); // TODO: check if cell is stored in row or column major order // TODO: check if cell is zero for non-periodic systems @@ -312,15 +407,16 @@ void MetatensorPlumedAction::createSystem() { auto torch_positions = torch::from_blob( const_cast(positions.data()), {static_cast(positions.size()), 3}, - tensor_options + cpu_f64_tensor ); + torch_positions = torch_positions.to(this->dtype_).to(this->device_); + torch_cell = torch_cell.to(this->dtype_).to(this->device_); + // setup torch's automatic gradient tracking if (!this->doNotCalculateDerivatives()) { torch_positions.requires_grad_(true); - this->strain_ = torch::eye(3, tensor_options.requires_grad(true)); - // pretend to scale positions/cell by the strain so that it enters the // computational graph. torch_positions = torch_positions.matmul(this->strain_); @@ -329,7 +425,6 @@ void MetatensorPlumedAction::createSystem() { torch_cell = torch_cell.matmul(this->strain_); } - // TODO: move data to another dtype/device as requested by the model or user this->system_ = torch::make_intrusive( this->atomic_types_, torch_positions, @@ -351,7 +446,7 @@ metatensor_torch::TorchTensorBlock MetatensorPlumedAction::computeNeighbors( const std::vector& positions, const PLMD::Tensor& cell ) { - auto labels_options = torch::TensorOptions().dtype(torch::kInt32).device(torch::kCPU); + auto labels_options = torch::TensorOptions().dtype(torch::kInt32).device(this->device_); auto neighbor_component = torch::make_intrusive( "xyz", torch::tensor({0, 1, 2}, labels_options).reshape({3, 1}) @@ -412,7 +507,7 @@ metatensor_torch::TorchTensorBlock MetatensorPlumedAction::computeNeighbors( torch::TensorOptions().dtype(torch::kFloat64).device(torch::kCPU) ); - auto pair_samples_values = torch::zeros({n_pairs, 5}, labels_options); + auto pair_samples_values = torch::zeros({n_pairs, 5}, labels_options.device(torch::kCPU)); for (unsigned i=0; i(vesin_neighbor_list->pairs[i][0]); pair_samples_values[i][1] = static_cast(vesin_neighbor_list->pairs[i][1]); @@ -423,11 +518,11 @@ metatensor_torch::TorchTensorBlock MetatensorPlumedAction::computeNeighbors( auto neighbor_samples = torch::make_intrusive( std::vector{"first_atom", "second_atom", "cell_shift_a", "cell_shift_b", "cell_shift_c"}, - pair_samples_values + pair_samples_values.to(this->device_) ); auto neighbors = torch::make_intrusive( - pair_vectors, + pair_vectors.to(this->dtype_).to(this->device_), neighbor_samples, std::vector{neighbor_component}, neighbor_properties @@ -543,19 +638,21 @@ void MetatensorPlumedAction::apply() { } } - auto input_grad = torch::autograd::grad( - {torch_values}, - {this->system_->positions(), this->strain_}, - {output_grad} - ); - plumed_assert(input_grad[0].is_cpu()); - plumed_assert(input_grad[0].is_contiguous()); + this->system_->positions().mutable_grad() = torch::Tensor(); + this->strain_.mutable_grad() = torch::Tensor(); - plumed_assert(input_grad[1].is_cpu()); - plumed_assert(input_grad[1].is_contiguous()); + torch_values.backward(output_grad); + auto positions_grad = this->system_->positions().grad(); + auto strain_grad = this->strain_.grad(); - auto positions_grad = input_grad[0]; - auto strain_grad = input_grad[1]; + positions_grad = positions_grad.to(torch::kCPU).to(torch::kFloat64); + strain_grad = strain_grad.to(torch::kCPU).to(torch::kFloat64); + + plumed_assert(positions_grad.sizes().size() == 2); + plumed_assert(positions_grad.is_contiguous()); + + plumed_assert(strain_grad.sizes().size() == 2); + plumed_assert(strain_grad.is_contiguous()); auto derivatives = std::vector( positions_grad.data_ptr(), @@ -575,7 +672,6 @@ void MetatensorPlumedAction::apply() { derivatives.push_back(strain_grad[2][1].item()); derivatives.push_back(strain_grad[2][2].item()); - unsigned index = 0; this->setForcesOnAtoms(derivatives, index); } @@ -595,6 +691,9 @@ namespace PLMD { namespace metatensor { keys.add("compulsory", "MODEL", "path to the exported metatensor model"); keys.add("optional", "EXTENSIONS_DIRECTORY", "path to the directory containing TorchScript extensions to load"); + keys.add("optional", "DEVICE", "Torch device to use for the calculation"); + + keys.addFlag("CHECK_CONSISTENCY", false, "whether to check for internal consistency of the model"); keys.add("numbered", "SPECIES", "the atoms in each PLUMED species"); keys.reset_style("SPECIES", "atoms"); From 2a1e5df3d47bc792e12748f34151119205b161b4 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Tue, 16 Apr 2024 18:09:11 +0200 Subject: [PATCH 08/32] Handle out of order samples --- src/metatensor/metatensor.cpp | 43 ++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index 5e3c7aa1ee..cc33db7160 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -79,7 +79,7 @@ class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { ); // execute the model for the given system - torch::Tensor executeModel(metatensor_torch::System system); + metatensor_torch::TorchTensorBlock executeModel(metatensor_torch::System system); torch::jit::Module model_; @@ -349,7 +349,9 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): this->n_samples_ = 1; } - this->n_properties_ = static_cast(this->executeModel(dummy_system).size(1)); + this->n_properties_ = static_cast( + this->executeModel(dummy_system)->properties()->count() + ); if (n_samples_ == 1 && n_properties_ == 1) { log.printf(" the output of this model is a scalar\n"); @@ -531,7 +533,7 @@ metatensor_torch::TorchTensorBlock MetatensorPlumedAction::computeNeighbors( return neighbors; } -torch::Tensor MetatensorPlumedAction::executeModel(metatensor_torch::System system) { +metatensor_torch::TorchTensorBlock MetatensorPlumedAction::executeModel(metatensor_torch::System system) { try { auto ivalue_output = this->model_.forward({ std::vector{system}, @@ -550,14 +552,15 @@ torch::Tensor MetatensorPlumedAction::executeModel(metatensor_torch::System syst auto block = metatensor_torch::TensorMapHolder::block_by_id(this->output_, 0); plumed_massert(block->components().empty(), "components are not yet supported in the output"); - return block->values().to(torch::kCPU).to(torch::kFloat64); + return block; } void MetatensorPlumedAction::calculate() { this->createSystem(); - auto torch_values = executeModel(this->system_); + auto block = this->executeModel(this->system_); + auto torch_values = block->values().to(torch::kCPU).to(torch::kFloat64); if (static_cast(torch_values.size(0)) != this->n_samples_) { this->error( @@ -585,18 +588,25 @@ void MetatensorPlumedAction::calculate() { } } } else { + auto samples = block->samples()->as_metatensor(); + plumed_assert(samples.names().size() == 2); + plumed_assert(samples.names()[0] == std::string("system")); + plumed_assert(samples.names()[1] == std::string("atom")); + + auto& samples_values = samples.values(); + if (n_properties_ == 1) { // we have a single CV describing multiple things (i.e. atoms) for (unsigned i=0; iset(i, torch_values[i][0].item()); + auto atom_i = static_cast(samples_values(i, 1)); + value->set(atom_i, torch_values[i][0].item()); } } else { // the CV is a matrix for (unsigned i=0; i(samples_values(i, 1)); for (unsigned j=0; jset(i * n_properties_ + j, torch_values[i][j].item()); + value->set(atom_i * n_properties_ + j, torch_values[i][j].item()); } } } @@ -623,16 +633,23 @@ void MetatensorPlumedAction::apply() { } } } else { + auto samples = block->samples()->as_metatensor(); + plumed_assert(samples.names().size() == 2); + plumed_assert(samples.names()[0] == std::string("system")); + plumed_assert(samples.names()[1] == std::string("atom")); + + auto& samples_values = samples.values(); + if (n_properties_ == 1) { - // TODO: check sample order? for (unsigned i=0; igetForce(i); + auto atom_i = static_cast(samples_values(i, 1)); + output_grad[i][0] = value->getForce(atom_i); } } else { - // TODO: check sample order? for (unsigned i=0; i(samples_values(i, 1)); for (unsigned j=0; jgetForce(i * n_properties_ + j); + output_grad[i][j] = value->getForce(atom_i * n_properties_ + j); } } } From 4e252ffd48fccb12d55e11a0a40c23df1f5d9517 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Wed, 17 Apr 2024 12:27:12 +0200 Subject: [PATCH 09/32] Print model metadata & citations --- regtest/metatensor/rt-soap/soap_cv.py | 6 ++++-- src/metatensor/metatensor.cpp | 13 +++++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/regtest/metatensor/rt-soap/soap_cv.py b/regtest/metatensor/rt-soap/soap_cv.py index 2db5007f87..5ec28ae244 100644 --- a/regtest/metatensor/rt-soap/soap_cv.py +++ b/regtest/metatensor/rt-soap/soap_cv.py @@ -60,9 +60,11 @@ def forward( soap_block = soap.block() projected = soap_block.values @ self.pca_projection + samples = soap_block.samples.remove("center_type") + block = TensorBlock( values=projected, - samples=soap_block.samples, + samples=samples, components=[], properties=Labels("soap_pca", torch.tensor([[0], [1], [2]], device=device)), ) @@ -99,7 +101,7 @@ def forward( description=""" A simple collective variable for testing purposes """, - authors=["..."], + authors=["Some Author"], references={ "implementation": ["ref to SOAP code"], "architecture": ["ref to SOAP"], diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index cc33db7160..bc149e603e 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -134,10 +134,11 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): try { this->model_ = metatensor_torch::load_atomistic_model(model_path, extensions_directory); } catch (const std::exception& e) { - error("failed to load model at '" + model_path + "': " + e.what()); + this->error("failed to load model at '" + model_path + "': " + e.what()); } // extract information from the model + auto metadata = this->model_.run_method("metadata").toCustomClass(); this->capabilities_ = this->model_.run_method("capabilities").toCustomClass(); auto requests_ivalue = this->model_.run_method("requested_neighbors_lists"); for (auto request_ivalue: requests_ivalue.toList()) { @@ -145,6 +146,14 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): this->nl_requests_.push_back(request); } + log.printf("\n%s\n", metadata->print().c_str()); + // add the model references to PLUMED citation handling mechanism + for (const auto& it: metadata->references) { + for (const auto& ref: it.value()) { + this->cite(ref); + } + } + // parse the atomic types from the input file std::vector atomic_types; std::vector species_to_types; @@ -168,7 +177,7 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): int32_t type = i; if (has_custom_types) { if (species_to_types.size() < static_cast(i)) { - error( + this->error( "SPECIES_TO_TYPES is too small, it should have one entry " "for each species (we have at least " + std::to_string(i) + " species and " + std::to_string(species_to_types.size()) + From 9ee2cae37152c16af691e0aca0a60a27a6f8610a Mon Sep 17 00:00:00 2001 From: Luthaf Date: Mon, 22 Apr 2024 15:01:26 +0200 Subject: [PATCH 10/32] Fix sign for virials --- src/metatensor/metatensor.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index bc149e603e..a36f35f6fa 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -686,17 +686,17 @@ void MetatensorPlumedAction::apply() { ); // add virials to the derivatives - derivatives.push_back(strain_grad[0][0].item()); - derivatives.push_back(strain_grad[0][1].item()); - derivatives.push_back(strain_grad[0][2].item()); + derivatives.push_back(-strain_grad[0][0].item()); + derivatives.push_back(-strain_grad[0][1].item()); + derivatives.push_back(-strain_grad[0][2].item()); - derivatives.push_back(strain_grad[1][0].item()); - derivatives.push_back(strain_grad[1][1].item()); - derivatives.push_back(strain_grad[1][2].item()); + derivatives.push_back(-strain_grad[1][0].item()); + derivatives.push_back(-strain_grad[1][1].item()); + derivatives.push_back(-strain_grad[1][2].item()); - derivatives.push_back(strain_grad[2][0].item()); - derivatives.push_back(strain_grad[2][1].item()); - derivatives.push_back(strain_grad[2][2].item()); + derivatives.push_back(-strain_grad[2][0].item()); + derivatives.push_back(-strain_grad[2][1].item()); + derivatives.push_back(-strain_grad[2][2].item()); unsigned index = 0; this->setForcesOnAtoms(derivatives, index); From 24a648687a3da3d1809e4cfe438fbf06949600b0 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Mon, 22 Apr 2024 18:45:15 +0200 Subject: [PATCH 11/32] Start working on the documentation --- src/metatensor/README.md | 78 +---------------- src/metatensor/metatensor.cpp | 52 +++++++++++ user-doc/METATENSORMOD.md | 157 ++++++++++++++++++++++++++++++++++ 3 files changed, 211 insertions(+), 76 deletions(-) create mode 100644 user-doc/METATENSORMOD.md diff --git a/src/metatensor/README.md b/src/metatensor/README.md index 4459644d2f..6672f16250 100644 --- a/src/metatensor/README.md +++ b/src/metatensor/README.md @@ -3,82 +3,8 @@ ## Building the code -1. You'll need to fist install libtorch, either by installing PyTorch itself - with Python, or by downloading the prebuilt C++ library from - https://pytorch.org/get-started/locally/. - -```bash -# point this to the path where you extracted the C++ libtorch -TORCH_PREFIX=../../.. -# if you used Python to install torch, you can do this: -TORCH_CMAKE_PREFIX=$(python -c "import torch; print(torch.utils.cmake_prefix_path)") -TORCH_PREFIX=$(cd "$TORCH_CMAKE_PREFIX/../.." && pwd) - -TORCH_INCLUDES="-I$TORCH_PREFIX/include -I$TORCH_PREFIX/include/torch/csrc/api/include" -``` - -2. a) build and install metatensor-torch from source. You'll need a rust - compiler on your system, the easiest way is by using https://rustup.rs/ - -```bash -# patch a bug from torch's MKL detection -cd -./src/metatensor/patch-torch.sh "$TORCH_PREFIX" - -cd - -# define a location where metatensor should be installed -METATENSOR_PREFIX=<...> - -METATENSOR_TORCH_PREFIX="$METATENSOR_PREFIX" - -git clone https://github.com/lab-cosmo/metatensor --branch=metatensor-torch-v0.4.0 -cd metatensor - -mkdir build && cd build -cmake -DBUILD_SHARED_LIBS=ON \ - -DCMAKE_INSTALL_PREFIX="$METATENSOR_PREFIX" \ - -DCMAKE_PREFIX_PATH="$TORCH_PREFIX" \ - -DBUILD_METATENSOR_TORCH=ON \ - -DMETATENSOR_INSTALL_BOTH_STATIC_SHARED=OFF \ - .. - -cmake --build . --target install --parallel -``` - -2. b) alternatively, use metatensor-torch from Python (`pip install metatensor[torch]`) - -```bash -METATENSOR_CMAKE_PREFIX=$(python -c "import metatensor; print(metatensor.utils.cmake_prefix_path)") -METATENSOR_PREFIX=$(cd "$METATENSOR_CMAKE_PREFIX/../.." && pwd) - -METATENSOR_TORCH_CMAKE_PREFIX=$(python -c "import metatensor.torch; print(metatensor.torch.utils.cmake_prefix_path)") -METATENSOR_TORCH_PREFIX=$(cd "$METATENSOR_TORCH_CMAKE_PREFIX/../.." && pwd) -``` - -3. build Plumed itself - -```bash -cd - -# set the rpath to make sure plumed executable will be able to find the right libraries -RPATH="-Wl,-rpath,$TORCH_PREFIX/lib -Wl,-rpath,$METATENSOR_PREFIX/lib -Wl,-rpath,$METATENSOR_TORCH_PREFIX/lib" - -# configure PLUMED with metatensor -./configure --enable-libtorch --enable-metatensor --enable-modules=+metatensor \ - LDFLAGS="-L$TORCH_PREFIX/lib -L$METATENSOR_PREFIX/lib -L$METATENSOR_TORCH_PREFIX/lib $RPATH" \ - CPPFLAGS="$TORCH_INCLUDES -I$METATENSOR_PREFIX/include -I$METATENSOR_TORCH_PREFIX/include" - -# If you are on Linux and use a pip-installed version of libtorch, or the -# pre-cxx11-ABI build of libtorch, you'll need to add "-D_GLIBCXX_USE_CXX11_ABI=0" -# to the compilation flags: -./configure --enable-libtorch --enable-metatensor --enable-modules=+metatensor \ - LDFLAGS="-L$TORCH_PREFIX/lib -L$METATENSOR_PREFIX/lib -L$METATENSOR_TORCH_PREFIX/lib $RPATH" \ - CPPFLAGS="$TORCH_INCLUDES -I$METATENSOR_PREFIX/include -I$METATENSOR_TORCH_PREFIX/include" \ - CXXFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" - -make -j && make install -``` +See [the main documentation](../../user-doc/METATENSORMOD.md) for more +information on how to compile and use this module. diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index a36f35f6fa..981cbfcbd7 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -12,6 +12,58 @@ #include "core/ActionRegister.h" #include "core/PlumedMain.h" +//+PLUMEDOC METATENSORMOD_COLVAR METATENSOR +/* +Use arbitrary machine learning models as collective variables. + +Note that this action requires the metatensor-torch library. Check the +instructions in the \ref METATENSORMOD page to enable this module. + +This action enables the use of fully custom machine learning models — based on +the [metatensor atomistic models][mts_models] interface — as collective +variables in PLUMED. Such machine learning model are typically written and +customized using Python code, and then exported to run within PLUMED as +[TorchScript], which is a subset of Python that can be executed by the C++ torch +library. + +Metatensor offers a way to define such models and pass data from PLUMED (or any +other simulation engine) to the model and back. For more information on how to +define such model, have a look at the [corresponding tutorials][mts_tutorials], +or at the code in `regtest/metatensor/`. Each of the Python scripts in this +directory defines a custom machine learning CV that can be used with PLUMED. + +\par Examples + +TODO + +\par Collective variables and metatensor models + +Collective variables are not yet part of the [known outputs][mts_outputs] for +metatensor models. Until the output format is standardized, this action expects +the following: + +- the output name should be `"plumed::cv"`; +- the output should contain a single [block][mts_block]; +- the output samples should be named `["system", "atom"]` for per-atom outputs; + or `["system"]` for global outputs. The `"system"` index should always be 0, + and the `"atom"` index should be the index of the atom (between 0 and the + total number of atoms); +- the output should not have any components; +- the output can have arbitrary properties; +- the output should not have any explicit gradients, all gradient calculations + are done using autograd. + +*/ /* + +[TorchScript]: https://pytorch.org/docs/stable/jit.html +[mts_models]: https://lab-cosmo.github.io/metatensor/latest/atomistic/index.html +[mts_tutorials]: https://lab-cosmo.github.io/metatensor/latest/examples/atomistic/index.html +[mts_outputs]: https://lab-cosmo.github.io/metatensor/latest/atomistic/outputs.html +[mts_block]: https://lab-cosmo.github.io/metatensor/latest/torch/reference/block.html + +*/ +//+ENDPLUMEDOC + #if !defined(__PLUMED_HAS_LIBTORCH) || !defined(__PLUMED_HAS_METATENSOR) diff --git a/user-doc/METATENSORMOD.md b/user-doc/METATENSORMOD.md new file mode 100644 index 0000000000..2df18f5d0d --- /dev/null +++ b/user-doc/METATENSORMOD.md @@ -0,0 +1,157 @@ +\page METATENSORMOD Metatensor + + + +# Overview + +This module implements the interface between PLUMED and [metatensor], allowing +to use arbitrary machine learning models as collective variables. These machine +learning models are defined using custom Python code — following the [metatensor +atomistic models][mts_models] interface — and then exported to [TorchScript]. +The exported model is then loaded inside PLUMED and executed during the +simulation. + + +# Installation + +This module requires two main dependencies: the C++ torch library (i.e. +`libtorch`); and the C++ metatensor_torch library. There are multiple ways of +installing both libraries, which are discussed below. + +## Installing the libraries through Python's package manager (`pip`) + +The easiest way to get all dependencies on your system is to download the +pre-built Python wheels with `pip`. This is the same set of wheels you will need +to define custom models. + +```bash +pip install "metatensor-torch ==0.4.0" # change this version to get newer releases + +# optional: get the other metatensor tools to define models (these are only usable from Python). +pip install metatensor-operations metatensor-learn + +# export the location to all the libraries: +TORCH_CMAKE_PREFIX=$(python -c "import torch; print(torch.utils.cmake_prefix_path)") +TORCH_PREFIX=$(cd "$TORCH_CMAKE_PREFIX/../.." && pwd) + +METATENSOR_CMAKE_PREFIX=$(python -c "import metatensor; print(metatensor.utils.cmake_prefix_path)") +METATENSOR_PREFIX=$(cd "$METATENSOR_CMAKE_PREFIX/../.." && pwd) + +METATENSOR_TORCH_CMAKE_PREFIX=$(python -c "import metatensor.torch; print(metatensor.torch.utils.cmake_prefix_path)") +METATENSOR_TORCH_PREFIX=$(cd "$METATENSOR_TORCH_CMAKE_PREFIX/../.." && pwd) + +# The torch library installed by pip uses a pre-cxx11 ABI +TORCH_CPPFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" +``` + +That's it, you can now jump to [the last part](#building-plumed-with-metatensor) +of the installation instructions. + +## Using pre-built libraries + +If you only want to use existing models, you can download pre-built versions of +the libraries and build PLUMED against these. First, you'll need to download +libtorch (see also \ref installation-libtorch for other instructions on +installing a pre-built libtorch): + +```bash +# Download torch 2.2.2 for x86_64 (Intel) Linux. +# +# Variations of this link for other operating systems (macOS, Windows), CPU +# architecture (Apple Silicon, arm64), CUDA versions, and newer versions of +# libtorch can be found at https://pytorch.org/get-started/locally/ + +wget https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-2.2.2%2Bcpu.zip +unzip libtorch-cxx11-abi-shared-with-deps-2.2.2+cpu.zip + +# alternatively if you have a CUDA-enabled GPU, you can use the corresponding +# pre-built library (here for CUDA 12.1): +wget https://download.pytorch.org/libtorch/cu121/libtorch-cxx11-abi-shared-with-deps-2.2.2%2Bcu121.zip +unzip libtorch-cxx11-abi-shared-with-deps-2.2.2+cu121.zip + +# Make the location of libtorch visible +TORCH_PREFIX=$(pwd)/libtorch + +# if you are using a library with pre-cxx11 ABI, you need an extra flag: +TORCH_CPPFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" +``` + +Once you acquire libtorch, it is time to build metatensor and metatensor_torch +from sources. There is currently no standalone pre-built library for these +(although you can use the pre-built version that comes with `pip`). For this, +you'll need a rust compiler on your system, which you can get with +[rustup](https://rustup.rs/) or any other method at your convenience. + +```bash +# patch a bug from torch's MKL detection in CMake +cd +./src/metatensor/patch-torch.sh "$TORCH_PREFIX" + +cd + +# define a location where metatensor should be installed +METATENSOR_PREFIX=<...> + +METATENSOR_TORCH_PREFIX="$METATENSOR_PREFIX" + +git clone https://github.com/lab-cosmo/metatensor +# or a more recent release of metatensor-torch +git checkout metatensor-torch-v0.4.0 +cd metatensor + +mkdir build && cd build +cmake -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_INSTALL_PREFIX="$METATENSOR_PREFIX" \ + -DCMAKE_PREFIX_PATH="$TORCH_PREFIX" \ + -DBUILD_METATENSOR_TORCH=ON \ + -DMETATENSOR_INSTALL_BOTH_STATIC_SHARED=OFF \ + .. + +cmake --build . --target install --parallel +``` + +## Building plumed with metatensor + +Once you installed all dependencies with one of the methods above, you can now +configure PLUMED: + +```bash +# set include search path for the compilers +TORCH_INCLUDES="-I$TORCH_PREFIX/include -I$TORCH_PREFIX/include/torch/csrc/api/include" +CPPFLAGS="$TORCH_INCLUDES $TORCH_CPPFLAGS -I$METATENSOR_PREFIX/include -I$METATENSOR_TORCH_PREFIX/include $CPPFLAGS" + +# set library search path for the linker +LDFLAGS="-L$TORCH_PREFIX/lib -L$METATENSOR_PREFIX/lib -L$METATENSOR_TORCH_PREFIX/lib $LDFLAGS" + +# set the rpath to make sure plumed executable will be able to find the right libraries +LDFLAGS="$LDFLAGS -Wl,-rpath,$TORCH_PREFIX/lib" +LDFLAGS="$LDFLAGS -Wl,-rpath,$METATENSOR_PREFIX/lib -Wl,-rpath,$METATENSOR_TORCH_PREFIX/lib" + +# configure PLUMED +./configure --enable-libtorch --enable-metatensor --enable-modules=+metatensor \ + LDFLAGS="$LDFLAGS" CPPFLAGS="$CPPFLAGS" +``` + +Pay close attention to the output, it should contain **both** a line about +`checking libtorch` and a line about `checking metatensor`, both ending with +`...yes`. If this is not the case, you'll get a warning about `cannot enable +__PLUMED_HAS_LIBTORCH` or `cannot enable __PLUMED_HAS_METATENSOR`. If you get +any of these warnings, you should check `config.log` to know more about what's +going on and why these libraries can't be found. + +# Module Contents + +This module defines the following actions: + +@METATENSORMOD_COLVAR@ + + + + +[TorchScript]: https://pytorch.org/docs/stable/jit.html +[metatensor]: https://lab-cosmo.github.io/metatensor/latest/index.html +[mts_models]: https://lab-cosmo.github.io/metatensor/latest/atomistic/index.html From 397be72605b4a9311dd02009bb5410cefeb59a35 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Mon, 22 Apr 2024 18:47:12 +0200 Subject: [PATCH 12/32] Fix build when libraries can not be found --- src/metatensor/metatensor.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index 981cbfcbd7..7534b1b83b 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -71,13 +71,21 @@ namespace PLMD { namespace metatensor { class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { public: static void registerKeywords(Keywords& keys); - explicit MetatensorPlumedAction(const ActionOptions&) { + explicit MetatensorPlumedAction(const ActionOptions& options): + Action(options), + ActionAtomistic(options), + ActionWithValue(options) + { throw std::runtime_error( "Can not use metatensor action without the corresponding libraries. \n" "Make sure to configure with `--enable-metatensor --enable-libtorch` " "and that the corresponding libraries are found" ); } + + void calculate() override {} + void apply() override {} + unsigned getNumberOfDerivatives() override {return 0;} }; }} // namespace PLMD::metatensor From 206194a931873e013813fb8be37c2776491721dc Mon Sep 17 00:00:00 2001 From: Luthaf Date: Tue, 23 Apr 2024 11:13:47 +0200 Subject: [PATCH 13/32] codecheck does not like dash in file names --- src/metatensor/{vesin-single-build.cpp => vesin_single_build.cpp} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/metatensor/{vesin-single-build.cpp => vesin_single_build.cpp} (100%) diff --git a/src/metatensor/vesin-single-build.cpp b/src/metatensor/vesin_single_build.cpp similarity index 100% rename from src/metatensor/vesin-single-build.cpp rename to src/metatensor/vesin_single_build.cpp From 676272fb37034be13e06e4219e0f6ae537291324 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Tue, 23 Apr 2024 11:33:15 +0200 Subject: [PATCH 14/32] Disable astyle for metatensor code It has an extremely hard time handling C++17 code, including using lambda inside function calls (in torch::from_blob) and using initialization lists constructors --- src/metatensor/metatensor.cpp | 2 +- src/metatensor/vesin.h | 1 + src/metatensor/vesin_single_build.cpp | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index 7534b1b83b..c0023b4925 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -64,7 +64,7 @@ the following: */ //+ENDPLUMEDOC - +/*INDENT-OFF*/ #if !defined(__PLUMED_HAS_LIBTORCH) || !defined(__PLUMED_HAS_METATENSOR) namespace PLMD { namespace metatensor { diff --git a/src/metatensor/vesin.h b/src/metatensor/vesin.h index e1456693ac..336d332005 100644 --- a/src/metatensor/vesin.h +++ b/src/metatensor/vesin.h @@ -1,3 +1,4 @@ +/*INDENT-OFF*/ #ifndef VESIN_H #define VESIN_H diff --git a/src/metatensor/vesin_single_build.cpp b/src/metatensor/vesin_single_build.cpp index 3821b30e98..ae9c7a0981 100644 --- a/src/metatensor/vesin_single_build.cpp +++ b/src/metatensor/vesin_single_build.cpp @@ -1,3 +1,4 @@ +/*INDENT-OFF*/ #include #include #include From 11628f4bb5c13a8644045882625e3cf7677e805e Mon Sep 17 00:00:00 2001 From: Gareth Aneurin Tribello Date: Wed, 24 Apr 2024 17:13:57 +0100 Subject: [PATCH 15/32] Added example in metatensor showing usage --- src/metatensor/metatensor.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index c0023b4925..732c377320 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -34,7 +34,26 @@ directory defines a custom machine learning CV that can be used with PLUMED. \par Examples -TODO +The following input shows how you can call metatensor and evaluate the model +that is described in the file soap_cv.pt from PLUMED. To evaluate this model +plumed is required to use code that is included in the directory extensions +which has been specified using the `EXTENSIONS_DIRECTORY` flag. Numbered +`SPECIES` labels are used to indicate the list of indices that belong to each +atomic species in the model. The `SPECIES_TO_TYPE` keyword then provides +information on the atom type for each species. The first number here is the +atomic number of the atoms that have been specified using the `SPECIES1` flag, +the second number is the atomic number of the atoms that have been specified +using the `SPECIES2` flag and so on. + +\plumedfile soap: METATENSOR ... MODEL=soap_cv.pt +EXTENSIONS_DIRECTORY=extensions + + SPECIES1=1-26 + SPECIES2=27-62 + SPECIES3=63-76 + SPECIES_TO_TYPES=6,1,8 +... +\endplumedfile \par Collective variables and metatensor models From 4f1e7c2a0c6a30d5a7a4b798a8e3ba7d919e3583 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Thu, 25 Apr 2024 14:52:54 +0200 Subject: [PATCH 16/32] Check model consistency by default --- src/metatensor/metatensor.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index 732c377320..a35d02e558 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -300,7 +300,12 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): // Request the atoms and check we have read in everything this->requestAtoms(all_atoms); - this->parseFlag("CHECK_CONSISTENCY", this->check_consistency_); + bool no_consistency_check = false; + this->parseFlag("NO_CONSISTENCY_CHECK", no_consistency_check); + this->check_consistency_ = !no_consistency_check; + if (this->check_consistency_) { + log.printf(" checking for internal consistency of the model\n"); + } // create evaluation options for the model. These won't change during the // simulation, so we initialize them once here. @@ -798,7 +803,8 @@ namespace PLMD { namespace metatensor { keys.add("optional", "EXTENSIONS_DIRECTORY", "path to the directory containing TorchScript extensions to load"); keys.add("optional", "DEVICE", "Torch device to use for the calculation"); - keys.addFlag("CHECK_CONSISTENCY", false, "whether to check for internal consistency of the model"); + // TODO: change the default? + keys.addFlag("NO_CONSISTENCY_CHECK", false, "Should we disable internal consistency of the model"); keys.add("numbered", "SPECIES", "the atoms in each PLUMED species"); keys.reset_style("SPECIES", "atoms"); From 8089cf5a73bd2dbaa89af6a95272bff652dd2c3b Mon Sep 17 00:00:00 2001 From: Luthaf Date: Wed, 1 May 2024 11:59:36 +0200 Subject: [PATCH 17/32] Add perovskite regression test --- regtest/metatensor/rt-perovskite/BaTiO3-CV.py | 101 + .../metatensor/rt-perovskite/COLVAR.reference | 3 + regtest/metatensor/rt-perovskite/Makefile | 1 + regtest/metatensor/rt-perovskite/config | 10 + .../metatensor/rt-perovskite/forces.reference | 2164 +++++++++++++++++ regtest/metatensor/rt-perovskite/frames.xyz | 2164 +++++++++++++++++ regtest/metatensor/rt-perovskite/plumed.dat | 13 + src/metatensor/metatensor.cpp | 24 +- user-doc/METATENSORMOD.md | 4 + 9 files changed, 4482 insertions(+), 2 deletions(-) create mode 100644 regtest/metatensor/rt-perovskite/BaTiO3-CV.py create mode 100644 regtest/metatensor/rt-perovskite/COLVAR.reference create mode 100644 regtest/metatensor/rt-perovskite/Makefile create mode 100644 regtest/metatensor/rt-perovskite/config create mode 100644 regtest/metatensor/rt-perovskite/forces.reference create mode 100644 regtest/metatensor/rt-perovskite/frames.xyz create mode 100644 regtest/metatensor/rt-perovskite/plumed.dat diff --git a/regtest/metatensor/rt-perovskite/BaTiO3-CV.py b/regtest/metatensor/rt-perovskite/BaTiO3-CV.py new file mode 100644 index 0000000000..076e4b9558 --- /dev/null +++ b/regtest/metatensor/rt-perovskite/BaTiO3-CV.py @@ -0,0 +1,101 @@ +from typing import Dict, List, Optional + +import torch +from metatensor.torch import Labels, TensorBlock, TensorMap +from metatensor.torch.atomistic import ( + MetatensorAtomisticModel, + ModelCapabilities, + ModelMetadata, + ModelOutput, + System, +) +from rascaline.torch import SphericalExpansion + + +class BaTiO3_CV(torch.nn.Module): + def __init__(self): + super().__init__() + + # only compute the representation for λ=1, Ti centers and O neighbors + self.selected_keys = Labels( + ["o3_lambda", "o3_sigma", "center_type", "neighbor_type"], + values=torch.tensor([[1, 1, 56, 8]]), + ) + self.neighbors = Labels( + ["neighbor_type"], + values=torch.tensor([[8], [22], [56]]), + ) + + self.calculator = SphericalExpansion( + cutoff=3.0, + max_angular=1, + max_radial=1, + radial_basis={"Gto": {}}, + cutoff_function={"ShiftedCosine": {"width": 0.5}}, + center_atom_weight=1.0, + atomic_gaussian_width=0.5, + ) + + def forward( + self, + systems: List[System], + outputs: Dict[str, ModelOutput], + selected_atoms: Optional[Labels], + ) -> Dict[str, TensorMap]: + + if "plumed::cv" not in outputs: + return {} + + spherical_expansion = self.calculator( + systems, + selected_keys=self.selected_keys, + selected_samples=selected_atoms, + ) + + if len(systems[0]) == 0: + # PLUMED is trying to determine the size of the output + CV = torch.zeros((1, 1), dtype=torch.float64) + else: + CV = 100 * spherical_expansion.block().values.mean(dim=0).norm() + + block = TensorBlock( + values=CV.reshape(1, 1), + samples=Labels("system", torch.tensor([[0]])), + components=[], + properties=Labels("cv", torch.tensor([[0]])), + ) + cv = TensorMap( + keys=Labels("_", torch.tensor([[0]])), + blocks=[block], + ) + + return {"plumed::cv": cv} + + +cv = BaTiO3_CV() +cv.eval() + + +capabilities = ModelCapabilities( + outputs={"plumed::cv": ModelOutput(per_atom=False)}, + interaction_range=3.0, + supported_devices=["cpu"], + length_unit="A", + atomic_types=[56, 22, 8], + dtype="float64", +) + +metadata = ModelMetadata( + name="Polarisation-inspired CV in BaTiO3", + description=""" +This is an alternative implementation of the CV used in https://arxiv.org/abs/2310.12579 +to study phase transition in BaTiO3. +""", + references={ + "model": ["https://arxiv.org/abs/2310.12579"], + }, +) + + +model = MetatensorAtomisticModel(cv, metadata, capabilities) +model.export("BaTiO3_CV.pt", collect_extensions="extensions") diff --git a/regtest/metatensor/rt-perovskite/COLVAR.reference b/regtest/metatensor/rt-perovskite/COLVAR.reference new file mode 100644 index 0000000000..19244daca1 --- /dev/null +++ b/regtest/metatensor/rt-perovskite/COLVAR.reference @@ -0,0 +1,3 @@ +#! FIELDS time Pmod + 0.000000 0.000308 + 1.000000 5.811288 diff --git a/regtest/metatensor/rt-perovskite/Makefile b/regtest/metatensor/rt-perovskite/Makefile new file mode 100644 index 0000000000..3703b27cea --- /dev/null +++ b/regtest/metatensor/rt-perovskite/Makefile @@ -0,0 +1 @@ +include ../../scripts/test.make diff --git a/regtest/metatensor/rt-perovskite/config b/regtest/metatensor/rt-perovskite/config new file mode 100644 index 0000000000..027cab2d99 --- /dev/null +++ b/regtest/metatensor/rt-perovskite/config @@ -0,0 +1,10 @@ +plumed_modules=metatensor +plumed_needs=metatensor +type=driver + +arg="--plumed plumed.dat --ixyz frames.xyz --length-units A --dump-forces forces --dump-full-virial" + +function plumed_regtest_before(){ + python BaTiO3-CV.py + echo Generated model using generate-cv.py +} diff --git a/regtest/metatensor/rt-perovskite/forces.reference b/regtest/metatensor/rt-perovskite/forces.reference new file mode 100644 index 0000000000..cd34ad6ebb --- /dev/null +++ b/regtest/metatensor/rt-perovskite/forces.reference @@ -0,0 +1,2164 @@ +1080 +0.000372 0.000103 0.000103 0.000103 0.000372 0.000103 0.000103 0.000103 0.000372 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X -0.110017 -0.110017 -0.110017 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 0.064510 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064512 0.064512 -0.019005 +X 0.064511 0.064511 -0.019006 +X 0.064511 0.064511 -0.019006 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064510 -0.019006 0.064510 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064512 -0.019005 0.064512 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X 0.064511 -0.019006 0.064511 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064510 0.064510 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019005 0.064512 0.064512 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +X -0.019006 0.064511 0.064511 +1080 +-6.194196 0.006156 1.158849 0.006156 -4.893458 -0.012612 1.158849 -0.012612 -4.853024 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.000000 0.000000 0.000000 +X 0.180634 0.003007 -0.046302 +X 0.156569 0.011927 -0.047068 +X 0.180085 0.007828 -0.042453 +X 0.173257 0.006141 -0.041371 +X 0.179709 0.000138 -0.048706 +X 0.180464 0.000443 -0.039403 +X 0.183772 0.002743 -0.049299 +X 0.140379 0.011994 -0.047539 +X 0.184572 0.000228 -0.045978 +X 0.187545 0.000247 -0.043851 +X 0.178471 0.008742 -0.040148 +X 0.187124 0.004884 -0.051277 +X 0.125679 0.008958 -0.050092 +X 0.186137 -0.003083 -0.050710 +X 0.179861 0.007179 -0.047383 +X 0.180698 0.002307 -0.041280 +X 0.058032 -0.007831 -0.048738 +X 0.127870 0.006048 -0.046870 +X 0.182233 -0.000667 -0.045770 +X 0.179872 0.011011 -0.040409 +X 0.179334 0.002614 -0.046585 +X 0.186029 0.003617 -0.047332 +X 0.181147 0.001675 -0.045362 +X 0.185328 0.008785 -0.043322 +X 0.179308 -0.000798 -0.045897 +X 0.087011 0.008758 -0.043412 +X 0.181561 0.000904 -0.047486 +X 0.177623 0.005519 -0.035770 +X 0.179621 0.002412 -0.044527 +X 0.182100 -0.001488 -0.043509 +X 0.180799 0.008110 -0.048709 +X 0.178805 0.003162 -0.052109 +X 0.178099 0.009402 -0.041401 +X 0.177925 0.001887 -0.044484 +X 0.181340 0.002687 -0.041402 +X 0.181557 0.011372 -0.043027 +X 0.187294 0.009208 -0.051249 +X 0.177001 -0.001952 -0.046674 +X 0.096059 0.001363 -0.038222 +X 0.155547 0.005782 -0.044762 +X 0.075634 0.000125 -0.039205 +X 0.183425 0.002104 -0.055875 +X 0.181013 0.004891 -0.043396 +X 0.182614 0.003724 -0.045591 +X 0.179196 0.000866 -0.044877 +X 0.179827 0.003553 -0.041508 +X 0.187656 0.005301 -0.049799 +X 0.178363 0.010226 -0.047527 +X 0.182754 0.003307 -0.043705 +X 0.184058 0.010089 -0.044881 +X 0.033532 0.011170 -0.053928 +X 0.166662 0.004680 -0.047540 +X 0.180662 0.011742 -0.052138 +X 0.180634 0.012656 -0.045929 +X 0.180010 0.006789 -0.048398 +X 0.078535 0.005986 -0.032715 +X 0.179061 0.002910 -0.042823 +X 0.180998 0.006469 -0.043719 +X 0.182451 0.003748 -0.043052 +X 0.180025 0.005148 -0.049614 +X 0.181890 -0.000212 -0.044650 +X 0.182176 0.010602 -0.045972 +X 0.181935 0.002815 -0.047773 +X 0.181533 0.001685 -0.044463 +X 0.179641 0.014992 -0.042625 +X 0.179752 0.003539 -0.044824 +X 0.182535 0.002298 -0.051488 +X 0.183141 -0.001938 -0.049240 +X 0.178528 -0.005321 -0.042430 +X 0.177106 0.005914 -0.042102 +X 0.181274 0.005796 -0.044809 +X 0.181634 0.003965 -0.043900 +X 0.180013 0.004080 -0.037811 +X 0.177927 0.006584 -0.044092 +X 0.181381 -0.001619 -0.046171 +X 0.183953 0.000141 -0.051991 +X 0.179624 0.008310 -0.040663 +X 0.181965 0.006813 -0.045209 +X 0.175569 -0.002079 -0.042904 +X 0.179218 0.002348 -0.049089 +X 0.183574 0.006242 -0.039270 +X 0.188064 0.003072 -0.044074 +X 0.184517 0.002624 -0.052108 +X 0.181353 -0.002467 -0.043108 +X 0.181229 0.007055 -0.047931 +X 0.181452 0.006255 -0.043622 +X 0.179812 0.000605 -0.040768 +X 0.182020 0.000895 -0.043553 +X 0.183322 0.004595 -0.045242 +X 0.184183 0.004502 -0.048180 +X 0.179153 0.001875 -0.049402 +X 0.179093 -0.001909 -0.049577 +X 0.181286 0.005393 -0.042045 +X 0.184283 -0.002067 -0.045445 +X 0.179412 -0.000824 -0.051349 +X 0.173717 -0.005648 -0.040435 +X 0.180271 0.010598 -0.048108 +X 0.180318 0.006195 -0.040005 +X 0.177958 -0.003418 -0.042708 +X 0.169168 0.005916 -0.049016 +X 0.180146 0.007923 -0.039167 +X 0.178326 0.006208 -0.048541 +X 0.180276 0.012014 -0.038720 +X 0.181208 -0.001375 -0.048466 +X 0.174056 0.004441 -0.036808 +X 0.177621 0.002774 -0.038473 +X 0.182169 0.004773 -0.044105 +X 0.171554 0.002952 -0.033908 +X 0.186189 0.005650 -0.044704 +X 0.183661 0.002647 -0.047947 +X 0.179625 0.004081 -0.047288 +X 0.177963 0.007832 -0.038254 +X 0.183673 0.001538 -0.045242 +X 0.091792 0.004152 -0.039606 +X 0.183878 0.010285 -0.050301 +X 0.180042 0.004134 -0.037989 +X 0.181794 0.000030 -0.040570 +X 0.092958 0.004886 -0.047274 +X 0.177687 0.003403 -0.043453 +X 0.182194 0.003349 -0.036671 +X 0.180218 0.000083 -0.048828 +X 0.180289 0.003631 -0.047692 +X 0.179084 0.005119 -0.039257 +X 0.180961 -0.001511 -0.046873 +X 0.180045 0.007252 -0.046222 +X -0.067851 -0.000571 -0.039472 +X 0.183443 0.002515 -0.049604 +X 0.181556 -0.000875 -0.042750 +X 0.181291 0.001451 -0.049777 +X 0.180043 0.008932 -0.043486 +X 0.183075 0.003072 -0.044764 +X 0.048913 0.015877 -0.042928 +X 0.175455 -0.001674 -0.043499 +X 0.173985 -0.002377 -0.043703 +X 0.180407 0.005346 -0.043705 +X 0.180897 -0.001123 -0.047866 +X 0.177799 0.002323 -0.049670 +X 0.180398 0.003135 -0.044072 +X 0.047500 -0.002108 -0.040712 +X 0.183731 0.016967 -0.040361 +X 0.179301 -0.003952 -0.042064 +X 0.185230 0.004555 -0.049029 +X 0.184722 -0.004774 -0.041448 +X 0.179456 0.005037 -0.042691 +X 0.125140 0.011579 -0.037268 +X 0.178355 0.006789 -0.043982 +X 0.178612 0.006702 -0.045697 +X 0.183454 -0.001872 -0.044927 +X 0.184257 0.007531 -0.051204 +X 0.181000 0.006672 -0.047204 +X 0.184473 0.003152 -0.051204 +X 0.176099 0.004675 -0.043296 +X 0.181655 0.007024 -0.040946 +X 0.185187 0.000798 -0.047334 +X 0.180108 0.007056 -0.044998 +X 0.181755 0.006327 -0.040048 +X -0.000486 0.000691 -0.039634 +X 0.078525 0.005914 -0.050218 +X 0.184614 0.008065 -0.049254 +X 0.179112 0.000868 -0.037769 +X 0.179599 0.003065 -0.044002 +X 0.174914 0.005112 -0.041332 +X 0.181769 0.005550 -0.041205 +X 0.177358 0.006578 -0.042975 +X 0.180245 0.002357 -0.040120 +X 0.181173 0.012752 -0.042463 +X 0.176582 -0.002178 -0.042060 +X 0.177883 0.002493 -0.044232 +X 0.177728 0.003581 -0.046376 +X 0.112609 0.001312 -0.037797 +X 0.180702 0.003759 -0.050940 +X 0.182365 -0.000160 -0.041052 +X 0.179768 0.013031 -0.045881 +X 0.179706 0.007690 -0.041960 +X 0.185134 0.006163 -0.052551 +X 0.184816 -0.000331 -0.045758 +X 0.177289 0.005026 -0.042899 +X 0.175628 0.007052 -0.049821 +X 0.183042 0.009050 -0.043572 +X 0.117629 0.004987 -0.042863 +X 0.181956 0.005507 -0.046980 +X 0.181306 -0.000926 -0.049539 +X 0.173747 0.007724 -0.041394 +X 0.180300 0.007226 -0.046497 +X 0.180707 0.003655 -0.038170 +X 0.180978 0.004658 -0.046351 +X 0.180723 -0.000257 -0.039133 +X 0.181701 0.004606 -0.046814 +X 0.179214 0.000166 -0.044293 +X 0.177028 0.001878 -0.040867 +X 0.181200 0.004102 -0.046119 +X -0.003028 -0.010715 -0.025222 +X 0.177137 0.000182 -0.040184 +X 0.177333 -0.000765 -0.037522 +X 0.184395 0.006394 -0.049396 +X 0.178568 0.003426 -0.038435 +X 0.181438 0.010149 -0.041115 +X 0.178963 0.003680 -0.045995 +X 0.175237 0.002351 -0.043191 +X -0.084985 0.010099 -0.024786 +X 0.181250 0.002764 -0.046655 +X 0.183304 0.003544 -0.052504 +X 0.178044 0.010123 -0.039038 +X 0.177955 0.005697 -0.043833 +X 0.045694 0.024815 -0.035114 +X 0.178159 0.000407 -0.039115 +X 0.085838 0.005934 -0.044147 +X 0.175390 0.007189 -0.039254 +X 0.183347 0.004144 -0.044339 +X 0.021049 0.005787 -0.047967 +X 0.182988 0.001214 -0.044530 +X 0.173261 0.004958 -0.042986 +X -0.005295 -0.011526 -0.030852 +X 0.180960 0.001061 -0.046607 +X 0.183975 0.000708 -0.051096 +X 0.178550 0.004279 -0.044055 +X -0.108056 -0.001753 -0.006233 +X -0.106187 -0.002682 -0.006420 +X -0.107907 -0.002114 -0.007621 +X -0.107652 -0.002221 -0.005837 +X -0.105762 -0.001315 -0.007096 +X -0.103872 -0.002102 -0.006950 +X -0.113621 -0.002724 0.001760 +X -0.103052 -0.001696 -0.020310 +X -0.104094 -0.002996 -0.001715 +X -0.110579 -0.001879 -0.000591 +X -0.105212 -0.001519 -0.017720 +X -0.104821 -0.001751 -0.004264 +X -0.104602 -0.002874 -0.004822 +X -0.106599 -0.002302 -0.002353 +X -0.104003 -0.003146 -0.007026 +X -0.105336 -0.002487 -0.005050 +X -0.107064 0.000527 -0.012132 +X -0.103394 -0.002405 -0.004678 +X -0.108143 -0.002323 -0.004561 +X -0.106239 -0.002762 -0.006331 +X -0.110223 -0.003679 0.000987 +X -0.104479 -0.000371 -0.015599 +X -0.106450 -0.000343 -0.009999 +X -0.108058 -0.002363 -0.006467 +X -0.111581 -0.000156 -0.005713 +X -0.102286 -0.002491 -0.013512 +X -0.107840 -0.003880 -0.003689 +X -0.102643 0.000163 -0.011918 +X -0.108443 -0.000896 -0.005399 +X -0.102115 -0.002479 -0.008193 +X -0.108561 -0.001120 -0.003242 +X -0.103288 -0.000330 -0.005329 +X -0.102339 -0.001307 -0.004941 +X -0.103250 -0.001322 -0.010393 +X -0.106603 -0.001842 -0.007491 +X -0.108531 -0.002438 -0.007906 +X -0.102326 -0.000267 -0.004422 +X -0.105901 -0.002747 -0.005216 +X -0.108765 -0.003677 -0.009690 +X -0.109875 -0.002255 -0.010061 +X -0.102984 -0.001981 -0.010584 +X -0.106211 -0.001411 -0.000631 +X -0.111129 -0.001533 0.005057 +X -0.107778 -0.003569 -0.014968 +X -0.107355 -0.003260 -0.004667 +X -0.110482 -0.001242 -0.000330 +X -0.105660 -0.002795 -0.018223 +X -0.105547 -0.002071 -0.009645 +X -0.107106 -0.002254 -0.008466 +X -0.104477 -0.002457 -0.008239 +X -0.111618 -0.003672 -0.010771 +X -0.103707 -0.002070 -0.008899 +X -0.107075 -0.001632 -0.000784 +X -0.109109 -0.001430 -0.003862 +X -0.108222 -0.000992 -0.007963 +X -0.098744 -0.002585 -0.007587 +X -0.109210 -0.002248 0.006955 +X -0.104156 -0.001490 -0.023150 +X -0.108678 -0.001711 -0.002563 +X -0.106401 -0.001538 -0.006135 +X -0.107809 -0.001480 -0.003690 +X -0.106375 -0.002334 -0.005042 +X -0.108207 -0.003360 -0.007868 +X -0.106050 -0.002418 -0.007331 +X -0.105470 -0.002527 -0.008218 +X -0.106700 -0.001950 -0.005750 +X -0.108134 -0.002114 -0.006338 +X -0.103657 -0.001477 -0.010604 +X -0.104738 -0.003035 -0.003370 +X -0.106806 -0.001581 -0.011662 +X -0.109646 -0.001502 -0.008604 +X -0.106177 -0.001096 -0.005625 +X -0.106285 -0.000800 -0.008734 +X -0.102398 -0.001693 -0.010782 +X -0.109001 -0.002755 -0.001627 +X -0.106328 -0.002492 -0.011386 +X -0.106572 -0.002824 -0.008805 +X -0.108987 -0.003908 -0.009357 +X -0.109875 -0.001805 0.003383 +X -0.102521 -0.002659 -0.021727 +X -0.105031 -0.002328 -0.004803 +X -0.114299 -0.002687 -0.003674 +X -0.106198 -0.000962 -0.013396 +X -0.102802 -0.003030 -0.004654 +X -0.109503 -0.001622 -0.008674 +X -0.104653 -0.001293 -0.003689 +X -0.107021 -0.003580 -0.005544 +X -0.106085 -0.002789 -0.008767 +X -0.108432 -0.001030 -0.005057 +X -0.107076 -0.002835 -0.005438 +X -0.104248 -0.002203 -0.008318 +X -0.107606 -0.002217 -0.002335 +X -0.113926 -0.001775 0.001913 +X -0.100515 -0.003195 -0.021019 +X -0.107719 -0.001675 -0.006174 +X -0.102531 -0.002448 -0.004204 +X -0.106675 -0.001803 -0.004247 +X -0.105673 -0.002138 -0.006216 +X -0.105188 -0.002638 -0.008905 +X -0.105432 -0.002822 -0.007486 +X -0.109321 -0.003535 -0.003074 +X -0.104344 -0.002863 -0.006350 +X -0.106044 -0.003666 -0.009083 +X -0.102634 -0.000711 -0.008675 +X -0.104733 -0.006170 -0.009383 +X -0.106130 -0.002129 -0.007087 +X -0.112029 -0.002312 -0.006029 +X -0.107088 -0.002366 -0.010096 +X -0.108950 -0.002706 -0.001718 +X -0.109657 -0.001663 -0.007116 +X -0.105036 -0.003271 -0.005908 +X -0.107430 -0.002909 -0.006074 +X -0.106188 -0.002693 -0.004392 +X -0.106740 -0.002489 -0.011768 +X -0.110344 -0.001965 0.001869 +X -0.101946 -0.002773 -0.017628 +X -0.107530 -0.003834 -0.007323 +X -0.108666 -0.002205 0.002103 +X -0.103747 -0.001632 -0.017687 +X -0.109250 -0.002959 -0.009423 +X -0.109851 -0.002717 -0.001535 +X -0.106520 -0.003190 -0.005505 +X -0.103938 -0.002090 -0.007839 +X -0.104920 -0.001647 -0.009272 +X -0.105690 -0.002938 -0.009764 +X -0.101077 -0.002933 -0.011909 +X -0.103372 -0.002181 -0.005158 +X -0.104955 -0.002401 -0.008553 +X -0.109382 -0.003006 0.003351 +X -0.101639 -0.001230 -0.016570 +X -0.108963 -0.004292 -0.008381 +X -0.105109 -0.005025 -0.015168 +X -0.099465 -0.000719 -0.013836 +X -0.108040 -0.004460 -0.003731 +X -0.103921 -0.002137 -0.013059 +X -0.107249 -0.001415 -0.006373 +X -0.105046 -0.003435 -0.007820 +X -0.106291 -0.003938 -0.008961 +X -0.105236 -0.002626 -0.010377 +X -0.105466 -0.003321 0.000088 +X -0.109516 -0.001877 -0.009357 +X -0.108155 -0.002711 -0.007513 +X -0.103218 -0.004717 -0.008972 +X -0.105538 -0.002953 -0.010175 +X -0.108398 -0.003249 -0.010943 +X -0.112169 -0.001216 -0.005516 +X -0.105616 -0.003838 -0.007828 +X -0.102108 -0.001945 -0.006875 +X -0.106788 -0.000506 -0.007919 +X -0.107216 -0.002677 -0.004786 +X -0.110183 -0.001995 0.000162 +X -0.108542 -0.002109 -0.019108 +X -0.104667 -0.003714 -0.005027 +X -0.107541 -0.001959 0.002499 +X -0.102232 -0.001363 -0.019188 +X -0.104391 -0.001492 -0.007432 +X -0.095968 -0.004173 -0.015480 +X -0.108008 -0.001863 -0.005533 +X -0.104607 -0.003242 -0.007063 +X -0.105953 -0.002393 -0.003283 +X -0.109392 -0.001740 -0.011651 +X -0.105830 -0.002179 -0.005539 +X -0.103543 -0.002557 -0.011207 +X -0.105507 -0.001103 -0.008430 +X -0.103196 -0.002614 -0.001017 +X -0.107270 -0.000639 -0.018620 +X -0.106592 -0.001243 -0.004636 +X -0.107556 -0.002916 -0.008932 +X -0.106108 -0.002487 -0.008310 +X -0.105350 -0.001838 -0.009673 +X -0.108542 -0.002569 -0.003734 +X -0.105159 -0.000842 -0.007039 +X -0.112344 -0.002321 -0.006234 +X -0.106026 -0.001340 -0.007904 +X -0.112689 -0.001878 -0.002716 +X -0.106689 -0.000516 -0.010877 +X -0.101558 -0.002096 -0.010615 +X -0.105079 -0.002289 -0.009156 +X -0.106772 -0.001147 0.000693 +X -0.105790 -0.002784 -0.013845 +X -0.104574 -0.002988 -0.005458 +X -0.105500 -0.000576 -0.007379 +X -0.102786 -0.004198 -0.006064 +X -0.106598 -0.001638 -0.005792 +X -0.106063 -0.002734 -0.006514 +X -0.112277 -0.002417 -0.008649 +X -0.113767 -0.002679 0.006799 +X -0.104500 -0.002048 -0.016251 +X -0.108924 -0.002111 -0.008483 +X -0.108504 -0.001655 0.003663 +X -0.102280 -0.002679 -0.019414 +X -0.103748 -0.002512 -0.009089 +X -0.107506 -0.003967 -0.005693 +X -0.107301 -0.000885 -0.005626 +X -0.106011 -0.001744 -0.007431 +X -0.103356 -0.001204 -0.009916 +X -0.109768 -0.000524 -0.004972 +X -0.106357 -0.002946 -0.006987 +X -0.103005 -0.002835 -0.005888 +X -0.102428 -0.003570 -0.010372 +X -0.111123 -0.002344 0.008222 +X -0.108185 -0.001194 -0.016120 +X -0.102874 -0.000097 -0.008797 +X -0.107557 -0.001913 -0.006425 +X -0.104563 -0.003439 -0.008361 +X -0.106133 -0.000920 -0.005117 +X -0.107765 -0.001953 -0.010403 +X -0.106276 -0.002800 -0.005261 +X -0.106005 -0.001035 -0.010871 +X -0.107707 -0.002125 -0.007910 +X -0.108100 -0.003034 -0.004181 +X -0.109480 -0.000091 -0.010363 +X -0.105893 -0.003251 -0.009025 +X -0.104246 -0.001954 -0.005253 +X -0.108057 -0.001483 -0.002897 +X -0.104583 -0.002415 -0.005528 +X -0.110743 -0.001556 0.027066 +X -0.100735 -0.006788 0.024559 +X -0.105836 -0.004530 0.025914 +X -0.101932 0.000867 0.023768 +X -0.105480 0.001576 0.026044 +X -0.108414 0.002043 0.026390 +X -0.101974 0.011711 0.025388 +X -0.107276 -0.000090 0.025454 +X -0.104877 0.006500 0.025607 +X -0.105829 0.013130 0.026061 +X -0.101418 0.002127 0.025522 +X -0.105510 0.001739 0.025351 +X -0.106314 -0.011931 0.026298 +X -0.107521 0.005316 0.026737 +X -0.107086 -0.002117 0.025010 +X -0.106666 -0.008740 0.026395 +X -0.114274 -0.004927 0.027857 +X -0.111020 -0.004491 0.026917 +X -0.110233 0.002165 0.026662 +X -0.107368 -0.003212 0.026661 +X -0.106299 0.009056 0.026105 +X -0.111233 0.001395 0.027156 +X -0.107921 0.001325 0.026302 +X -0.105436 -0.000290 0.024486 +X -0.107935 0.002675 0.027224 +X -0.106040 -0.002759 0.025481 +X -0.109221 -0.006228 0.026819 +X -0.109973 -0.002184 0.026540 +X -0.106404 0.000973 0.025685 +X -0.105353 0.003994 0.025700 +X -0.102924 -0.004615 0.025001 +X -0.108131 0.003769 0.026777 +X -0.109481 -0.000188 0.026522 +X -0.107463 -0.002888 0.026346 +X -0.105209 -0.005028 0.025527 +X -0.105773 -0.004442 0.025979 +X -0.107879 0.000073 0.026235 +X -0.104446 0.003694 0.025746 +X -0.108239 -0.000374 0.026643 +X -0.108291 0.001204 0.025998 +X -0.105155 -0.002761 0.026080 +X -0.107723 0.001811 0.026419 +X -0.110383 0.007439 0.026928 +X -0.107124 0.000402 0.025685 +X -0.106515 0.004154 0.026569 +X -0.109210 0.013016 0.027796 +X -0.105503 0.004814 0.025597 +X -0.104422 -0.005309 0.024645 +X -0.107256 -0.008463 0.026173 +X -0.106436 -0.003926 0.025382 +X -0.105082 -0.003231 0.025735 +X -0.104045 -0.014130 0.025792 +X -0.104641 -0.000487 0.026235 +X -0.106173 0.005116 0.025589 +X -0.107225 -0.002519 0.025440 +X -0.106761 -0.004338 0.026258 +X -0.106695 0.014707 0.027226 +X -0.106002 0.002662 0.025767 +X -0.107323 0.001358 0.025714 +X -0.106486 -0.001673 0.025972 +X -0.108015 0.000567 0.026274 +X -0.100751 0.006693 0.023125 +X -0.107480 -0.011472 0.026811 +X -0.107217 0.003127 0.026357 +X -0.099417 -0.003599 0.023380 +X -0.105297 -0.003756 0.025216 +X -0.105623 0.000869 0.025395 +X -0.106786 -0.001932 0.026421 +X -0.106846 0.003551 0.026262 +X -0.103996 0.001637 0.025088 +X -0.106656 0.002248 0.026591 +X -0.108691 0.003170 0.026488 +X -0.111250 0.002080 0.027890 +X -0.104768 0.000338 0.026804 +X -0.108988 0.009498 0.027027 +X -0.107624 0.006251 0.026690 +X -0.107692 0.002625 0.027926 +X -0.101344 0.001348 0.026561 +X -0.104317 0.011002 0.025789 +X -0.106086 -0.002542 0.026092 +X -0.108969 -0.005829 0.026984 +X -0.107959 0.002415 0.026408 +X -0.108206 -0.001995 0.027579 +X -0.110279 -0.000026 0.027473 +X -0.106035 -0.012785 0.026652 +X -0.108417 0.001857 0.026081 +X -0.106200 0.001993 0.026019 +X -0.107552 -0.004548 0.026298 +X -0.105976 0.001274 0.025950 +X -0.106693 0.001712 0.025848 +X -0.106527 -0.000237 0.025767 +X -0.102534 0.002607 0.024755 +X -0.109277 0.012288 0.025809 +X -0.108436 0.001154 0.026274 +X -0.106811 -0.000953 0.025890 +X -0.105360 0.000238 0.024152 +X -0.104103 0.003702 0.024415 +X -0.104427 -0.002380 0.026043 +X -0.104974 -0.014523 0.025745 +X -0.104666 0.000449 0.024501 +X -0.104389 -0.000031 0.024652 +X -0.105409 0.002071 0.025877 +X -0.106345 -0.000068 0.026640 +X -0.108119 0.000000 0.026187 +X -0.099461 0.004876 0.023862 +X -0.106517 0.003813 0.026581 +X -0.105217 0.001988 0.025589 +X -0.107802 0.002171 0.026662 +X -0.107693 0.004748 0.026703 +X -0.108647 -0.001386 0.026017 +X -0.100622 0.002583 0.024714 +X -0.105641 -0.000824 0.025842 +X -0.110577 0.001461 0.026945 +X -0.110369 -0.001662 0.026449 +X -0.106834 0.011657 0.025762 +X -0.106043 0.003244 0.025327 +X -0.107619 0.002717 0.026991 +X -0.105714 0.011569 0.025653 +X -0.109447 0.002290 0.027068 +X -0.105560 0.009330 0.025366 +X -0.108887 -0.011148 0.026644 +X -0.107479 0.002848 0.027114 +X -0.106364 0.001663 0.027215 +X -0.111076 -0.011566 0.026947 +X -0.105072 -0.001688 0.026238 +X -0.107532 -0.008166 0.026253 +X -0.106520 0.002001 0.026478 +X -0.106433 0.000402 0.026379 +X -0.105689 0.010409 0.025777 +X -0.105201 0.002696 0.025398 +X -0.107494 0.006790 0.026652 +X -0.107258 0.006058 0.026134 +X -0.108539 -0.000425 0.026613 +X -0.105878 0.004132 0.026157 +X -0.107094 -0.011327 0.027079 +X -0.105165 -0.000612 0.027000 +X -0.105843 0.001165 0.026758 +X -0.103684 0.008970 0.026641 +X -0.103452 0.000300 0.025700 +X -0.109782 0.001730 0.027732 +X -0.111433 0.003433 0.027642 +X -0.107652 0.002516 0.027768 +X -0.105847 -0.000004 0.026595 +X -0.106706 -0.002466 0.027111 +X -0.106088 -0.003140 0.027479 +X -0.107139 0.001184 0.026636 +X -0.100833 0.003354 0.024891 +X -0.104231 0.005053 0.025232 +X -0.110579 -0.003591 0.025825 +X -0.109659 0.003823 0.026386 +X -0.109515 0.011149 0.026787 +X -0.101534 -0.005740 0.024858 +X -0.107392 0.002168 0.026828 +X -0.107508 0.011955 0.026181 +X -0.103128 -0.001111 0.025771 +X -0.107790 0.000177 0.026299 +X -0.102629 -0.013332 0.025494 +X -0.102778 -0.003178 0.027586 +X -0.111567 -0.003218 0.027736 +X -0.113499 -0.008941 0.027848 +X -0.111802 0.000260 0.028109 +X -0.106510 0.001816 0.025548 +X -0.106570 0.009019 0.026373 +X -0.105701 0.006341 0.027109 +X -0.103512 0.010964 0.025922 +X -0.107326 -0.003771 0.026404 +X -0.106754 0.000820 0.026016 +X -0.104483 -0.000365 0.028155 +X -0.107740 -0.001043 0.026609 +X -0.103375 -0.006206 0.026188 +X -0.105064 -0.008964 0.026298 +X -0.104789 0.000803 0.025919 +X -0.102438 -0.000237 0.025448 +X -0.107037 -0.000780 0.026590 +X -0.104924 0.000903 0.025735 +X -0.111322 0.002241 0.027334 +X -0.107880 -0.001933 0.027025 +X -0.102621 -0.006533 0.025564 +X -0.108152 0.000033 0.026809 +X -0.104032 -0.005362 0.025607 +X -0.109381 -0.000238 0.026140 +X -0.105325 0.000011 0.025111 +X -0.102471 0.005672 0.024720 +X -0.107847 0.005737 0.025688 +X -0.106314 -0.000622 0.026179 +X -0.106156 0.000619 0.025426 +X -0.106737 0.009752 0.026564 +X -0.103066 0.000481 0.025063 +X -0.107126 0.002972 0.025826 +X -0.107710 0.012472 0.026606 +X -0.107009 -0.000381 0.024494 +X -0.106758 -0.002471 0.026787 +X -0.105513 -0.008895 0.026201 +X -0.109666 0.000655 0.026993 +X -0.106513 0.000965 0.026210 +X -0.105190 -0.012458 0.025743 +X -0.111017 0.000712 0.026551 +X -0.107444 0.003692 0.025130 +X -0.105266 -0.000649 0.023950 +X -0.101857 -0.008014 0.025145 +X -0.105516 0.007355 0.025949 +X -0.103378 0.001691 0.025877 +X -0.102948 -0.004138 0.024245 +X -0.108205 -0.001548 0.026308 +X -0.108057 0.001404 0.026615 +X -0.108830 0.006550 0.026445 +X -0.109563 -0.011447 0.027112 +X -0.106107 -0.002281 0.026635 +X -0.108541 -0.001153 0.026189 +X -0.103275 -0.002455 0.026256 +X -0.104570 0.006145 0.025833 +X -0.108066 -0.002440 0.026364 +X -0.103974 -0.001466 0.025916 +X -0.102471 -0.002880 0.025051 +X -0.106103 0.002873 0.025947 +X -0.103613 0.000233 0.025193 +X 0.032457 -0.007420 0.027475 +X 0.029227 0.000283 0.028404 +X 0.032491 -0.000942 0.026301 +X 0.031554 0.000838 0.026516 +X 0.032851 -0.004764 0.022889 +X 0.032785 -0.004395 0.027710 +X 0.033743 -0.001196 0.023372 +X 0.031465 -0.003711 0.026181 +X 0.033457 0.002107 0.027790 +X 0.032493 0.003746 0.024193 +X 0.034509 -0.000128 0.022817 +X 0.213402 0.004035 0.012576 +X 0.030936 -0.002970 0.025906 +X 0.034570 -0.001553 0.025019 +X 0.032392 0.002945 0.026893 +X 0.032226 0.003924 0.025639 +X 0.031360 -0.001176 0.025278 +X 0.031358 -0.004794 0.024925 +X 0.033015 -0.006956 0.024800 +X 0.292525 -0.002673 0.010747 +X 0.031844 0.000078 0.024042 +X 0.031932 -0.001776 0.028928 +X 0.032049 -0.006366 0.027963 +X 0.032918 -0.002768 0.026780 +X 0.170072 -0.023620 0.010669 +X 0.032996 -0.002511 0.025283 +X 0.127436 0.006937 0.022309 +X 0.031607 -0.004600 0.023733 +X 0.036445 -0.004216 0.021338 +X 0.187784 -0.000170 0.029095 +X 0.034353 -0.006733 0.021298 +X 0.041947 -0.002628 0.025365 +X 0.214874 0.006424 0.013765 +X 0.032569 -0.006438 0.028073 +X 0.031182 -0.004410 0.028493 +X 0.032383 -0.003541 0.023362 +X 0.032239 -0.001805 0.026412 +X 0.056298 -0.001311 0.027998 +X 0.033074 0.001369 0.024912 +X 0.032286 -0.001468 0.022338 +X 0.030211 0.001025 0.024973 +X 0.032940 -0.003520 0.026170 +X 0.031719 -0.007354 0.027948 +X 0.073844 -0.002731 0.025664 +X 0.032110 -0.000712 0.027783 +X 0.032349 -0.005248 0.025635 +X 0.031238 -0.002755 0.028523 +X 0.029613 -0.003331 0.027255 +X 0.084369 -0.009156 0.027896 +X 0.029538 -0.003588 0.031198 +X 0.031331 -0.000308 0.023846 +X 0.030545 -0.004770 0.026064 +X 0.155248 0.004992 0.030004 +X 0.084977 -0.002213 0.025343 +X 0.029767 -0.004514 0.024009 +X 0.028641 -0.001865 0.030876 +X 0.032639 -0.005185 0.028060 +X 0.030625 -0.001631 0.027254 +X 0.032651 -0.001116 0.024594 +X 0.032472 -0.002228 0.028217 +X 0.031112 -0.000569 0.030697 +X 0.122552 -0.002271 0.027793 +X 0.031011 -0.001471 0.028633 +X 0.031956 0.000266 0.027587 +X 0.028738 0.001904 0.029648 +X 0.031415 -0.002631 0.026952 +X 0.032914 -0.003641 0.025357 +X 0.031052 0.000264 0.025926 +X 0.032209 0.003768 0.027294 +X 0.032624 0.001958 0.023734 +X 0.031287 -0.001703 0.021880 +X 0.033857 -0.004471 0.023675 +X 0.033323 -0.001660 0.019615 +X 0.032857 -0.005228 0.022613 +X 0.118975 -0.004573 0.021941 +X 0.057517 -0.001665 0.028454 +X 0.139656 -0.002988 0.020756 +X 0.033630 0.003732 0.020176 +X 0.034921 0.002225 0.023269 +X 0.028794 -0.001273 0.029237 +X 0.032015 -0.004151 0.026898 +X 0.031792 0.001456 0.021905 +X 0.033266 -0.004494 0.022856 +X 0.033677 0.001958 0.024137 +X 0.031358 -0.000426 0.026257 +X 0.032371 -0.004462 0.025075 +X 0.182635 -0.008777 0.031945 +X 0.048524 0.001259 0.028079 +X 0.032769 -0.000858 0.026718 +X 0.032170 0.003710 0.029513 +X 0.030227 0.000766 0.030760 +X 0.133677 -0.001434 0.015277 +X 0.033764 -0.006446 0.017281 +X 0.033128 -0.000512 0.023656 +X 0.033013 -0.000524 0.024085 +X 0.032030 0.003098 0.024366 +X 0.032921 0.001213 0.026250 +X 0.032194 -0.000688 0.025438 +X 0.031728 -0.004290 0.026305 +X 0.031567 -0.000468 0.027998 +X 0.034085 -0.002941 0.021982 +X 0.034686 -0.000154 0.024213 +X 0.032758 -0.000268 0.021602 +X 0.032564 -0.004043 0.026291 +X 0.030636 0.000133 0.023915 +X 0.032674 -0.002221 0.022973 +X 0.033801 -0.002214 0.020680 +X 0.034181 0.000034 0.018923 +X 0.032193 0.001998 0.030802 +X 0.032901 -0.001079 0.027344 +X 0.029869 0.000087 0.032289 +X 0.031792 -0.001523 0.029169 +X 0.030358 0.002784 0.033174 +X 0.028257 -0.003504 0.033426 +X 0.033226 0.001551 0.019771 +X 0.034803 -0.000378 0.021639 +X 0.032121 0.002100 0.021101 +X 0.128052 0.001733 0.025419 +X 0.033876 0.001416 0.024992 +X 0.034033 0.000341 0.020812 +X 0.031948 0.001057 0.023109 +X 0.032685 0.002651 0.021740 +X 0.034494 -0.000463 0.021734 +X 0.033446 -0.004711 0.023607 +X 0.031248 0.002802 0.024805 +X 0.029365 0.000953 0.023730 +X 0.033628 0.000284 0.023215 +X 0.031247 0.002039 0.021433 +X 0.033108 0.004835 0.023722 +X 0.034205 -0.002972 0.024419 +X 0.034918 0.001834 0.023509 +X 0.031533 0.000072 0.023178 +X 0.031384 -0.001994 0.022151 +X 0.034498 0.005659 0.019806 +X 0.034036 0.002202 0.021180 +X 0.045497 -0.001035 0.018910 +X 0.034844 0.003417 0.026406 +X 0.034751 0.002781 0.020431 +X 0.030136 0.001604 0.030064 +X 0.033947 0.000172 0.022865 +X 0.033179 -0.005210 0.023140 +X 0.035700 -0.002756 0.022328 +X 0.031401 0.005253 0.028788 +X 0.030902 0.003214 0.030552 +X 0.032685 -0.003730 0.024106 +X 0.032929 -0.009414 0.020386 +X 0.033628 -0.004928 0.018342 +X 0.031313 -0.001639 0.026040 +X 0.031396 -0.010582 0.025098 +X 0.122929 -0.009365 0.023739 +X 0.031589 -0.008983 0.027587 +X 0.032974 -0.006223 0.020985 +X 0.033072 -0.003594 0.023229 +X 0.032055 -0.005472 0.024164 +X 0.032636 -0.004374 0.024054 +X 0.031424 -0.007178 0.028120 +X 0.031437 -0.003600 0.028722 +X 0.029445 -0.006395 0.025567 +X 0.031141 -0.006927 0.026950 +X 0.032944 -0.004868 0.022883 +X 0.033864 -0.008923 0.021206 +X 0.280659 -0.008960 0.018824 +X 0.033773 -0.003810 0.021922 +X 0.033354 -0.008608 0.025108 +X 0.028229 -0.006558 0.034681 +X 0.030702 -0.007945 0.026469 +X 0.032541 -0.008019 0.025747 +X 0.163295 -0.020518 0.024885 +X 0.032245 -0.004592 0.030344 +X 0.027612 -0.007756 0.034915 +X 0.032044 -0.003766 0.030683 +X 0.030800 -0.004894 0.032431 +X 0.031317 -0.007720 0.026533 +X 0.030354 -0.008917 0.029571 +X 0.164183 -0.008242 0.016798 +X 0.031878 -0.008974 0.021809 +X 0.030478 -0.003468 0.028344 +X 0.029648 -0.002398 0.030710 +X 0.030518 -0.010193 0.027396 +X 0.031946 -0.005005 0.026882 +X 0.089467 -0.000781 0.024009 +X 0.030981 -0.001300 0.031387 +X 0.032604 -0.003689 0.029175 +X 0.032974 -0.006884 0.026952 +X 0.032048 0.000521 0.027064 +X 0.033181 -0.000554 0.020468 +X 0.033145 0.000543 0.025936 +X 0.033626 -0.000499 0.031429 +X 0.031351 -0.003479 0.029656 +X 0.033016 -0.005878 0.028352 +X 0.032752 -0.003323 0.029763 +X 0.030727 -0.000103 0.029857 +X 0.206980 0.003968 0.023404 +X 0.133385 0.000884 0.030576 +X 0.034413 -0.000419 0.027520 +X 0.031381 -0.001221 0.029075 +X 0.032901 -0.004949 0.028609 +X 0.031798 -0.003397 0.030465 +X 0.031692 0.001235 0.031681 +X 0.028862 0.000877 0.033186 +X 0.033810 -0.002695 0.024323 +X 0.032836 0.001293 0.025914 +X 0.031550 -0.002606 0.026663 +X 0.029625 -0.005317 0.029549 +X 0.033312 -0.000394 0.025847 +X 0.097312 -0.002024 0.018941 +X 0.033013 -0.007087 0.023062 +X 0.034195 -0.001931 0.022228 +X 0.030586 -0.005027 0.027132 +X 0.031676 -0.002333 0.025631 +X 0.031998 0.001306 0.031657 +X 0.031562 -0.003237 0.029793 +X 0.032404 -0.000767 0.027084 +X 0.033114 -0.000225 0.025904 +X 0.032971 -0.002976 0.025928 +X 0.099550 -0.005252 0.028926 diff --git a/regtest/metatensor/rt-perovskite/frames.xyz b/regtest/metatensor/rt-perovskite/frames.xyz new file mode 100644 index 0000000000..81086ca340 --- /dev/null +++ b/regtest/metatensor/rt-perovskite/frames.xyz @@ -0,0 +1,2164 @@ +1080 +23.985 0.0 0.0 0.0 23.985 0.0 0.0 0.0 23.985 +Ba 0.00000000 0.00000000 0.00000000 +Ba 0.00000000 0.00000000 3.99750000 +Ba 0.00000000 0.00000000 7.99500000 +Ba 0.00000000 0.00000000 11.99250000 +Ba 0.00000000 0.00000000 15.99000000 +Ba 0.00000000 0.00000000 19.98750000 +Ba 0.00000000 3.99750000 0.00000000 +Ba 0.00000000 3.99750000 3.99750000 +Ba 0.00000000 3.99750000 7.99500000 +Ba 0.00000000 3.99750000 11.99250000 +Ba 0.00000000 3.99750000 15.99000000 +Ba 0.00000000 3.99750000 19.98750000 +Ba 0.00000000 7.99500000 0.00000000 +Ba 0.00000000 7.99500000 3.99750000 +Ba 0.00000000 7.99500000 7.99500000 +Ba 0.00000000 7.99500000 11.99250000 +Ba 0.00000000 7.99500000 15.99000000 +Ba 0.00000000 7.99500000 19.98750000 +Ba 0.00000000 11.99250000 0.00000000 +Ba 0.00000000 11.99250000 3.99750000 +Ba 0.00000000 11.99250000 7.99500000 +Ba 0.00000000 11.99250000 11.99250000 +Ba 0.00000000 11.99250000 15.99000000 +Ba 0.00000000 11.99250000 19.98750000 +Ba 0.00000000 15.99000000 0.00000000 +Ba 0.00000000 15.99000000 3.99750000 +Ba 0.00000000 15.99000000 7.99500000 +Ba 0.00000000 15.99000000 11.99250000 +Ba 0.00000000 15.99000000 15.99000000 +Ba 0.00000000 15.99000000 19.98750000 +Ba 0.00000000 19.98750000 0.00000000 +Ba 0.00000000 19.98750000 3.99750000 +Ba 0.00000000 19.98750000 7.99500000 +Ba 0.00000000 19.98750000 11.99250000 +Ba 0.00000000 19.98750000 15.99000000 +Ba 0.00000000 19.98750000 19.98750000 +Ba 3.99750000 0.00000000 0.00000000 +Ba 3.99750000 0.00000000 3.99750000 +Ba 3.99750000 0.00000000 7.99500000 +Ba 3.99750000 0.00000000 11.99250000 +Ba 3.99750000 0.00000000 15.99000000 +Ba 3.99750000 0.00000000 19.98750000 +Ba 3.99750000 3.99750000 0.00000000 +Ba 3.99750000 3.99750000 3.99750000 +Ba 3.99750000 3.99750000 7.99500000 +Ba 3.99750000 3.99750000 11.99250000 +Ba 3.99750000 3.99750000 15.99000000 +Ba 3.99750000 3.99750000 19.98750000 +Ba 3.99750000 7.99500000 0.00000000 +Ba 3.99750000 7.99500000 3.99750000 +Ba 3.99750000 7.99500000 7.99500000 +Ba 3.99750000 7.99500000 11.99250000 +Ba 3.99750000 7.99500000 15.99000000 +Ba 3.99750000 7.99500000 19.98750000 +Ba 3.99750000 11.99250000 0.00000000 +Ba 3.99750000 11.99250000 3.99750000 +Ba 3.99750000 11.99250000 7.99500000 +Ba 3.99750000 11.99250000 11.99250000 +Ba 3.99750000 11.99250000 15.99000000 +Ba 3.99750000 11.99250000 19.98750000 +Ba 3.99750000 15.99000000 0.00000000 +Ba 3.99750000 15.99000000 3.99750000 +Ba 3.99750000 15.99000000 7.99500000 +Ba 3.99750000 15.99000000 11.99250000 +Ba 3.99750000 15.99000000 15.99000000 +Ba 3.99750000 15.99000000 19.98750000 +Ba 3.99750000 19.98750000 0.00000000 +Ba 3.99750000 19.98750000 3.99750000 +Ba 3.99750000 19.98750000 7.99500000 +Ba 3.99750000 19.98750000 11.99250000 +Ba 3.99750000 19.98750000 15.99000000 +Ba 3.99750000 19.98750000 19.98750000 +Ba 7.99500000 0.00000000 0.00000000 +Ba 7.99500000 0.00000000 3.99750000 +Ba 7.99500000 0.00000000 7.99500000 +Ba 7.99500000 0.00000000 11.99250000 +Ba 7.99500000 0.00000000 15.99000000 +Ba 7.99500000 0.00000000 19.98750000 +Ba 7.99500000 3.99750000 0.00000000 +Ba 7.99500000 3.99750000 3.99750000 +Ba 7.99500000 3.99750000 7.99500000 +Ba 7.99500000 3.99750000 11.99250000 +Ba 7.99500000 3.99750000 15.99000000 +Ba 7.99500000 3.99750000 19.98750000 +Ba 7.99500000 7.99500000 0.00000000 +Ba 7.99500000 7.99500000 3.99750000 +Ba 7.99500000 7.99500000 7.99500000 +Ba 7.99500000 7.99500000 11.99250000 +Ba 7.99500000 7.99500000 15.99000000 +Ba 7.99500000 7.99500000 19.98750000 +Ba 7.99500000 11.99250000 0.00000000 +Ba 7.99500000 11.99250000 3.99750000 +Ba 7.99500000 11.99250000 7.99500000 +Ba 7.99500000 11.99250000 11.99250000 +Ba 7.99500000 11.99250000 15.99000000 +Ba 7.99500000 11.99250000 19.98750000 +Ba 7.99500000 15.99000000 0.00000000 +Ba 7.99500000 15.99000000 3.99750000 +Ba 7.99500000 15.99000000 7.99500000 +Ba 7.99500000 15.99000000 11.99250000 +Ba 7.99500000 15.99000000 15.99000000 +Ba 7.99500000 15.99000000 19.98750000 +Ba 7.99500000 19.98750000 0.00000000 +Ba 7.99500000 19.98750000 3.99750000 +Ba 7.99500000 19.98750000 7.99500000 +Ba 7.99500000 19.98750000 11.99250000 +Ba 7.99500000 19.98750000 15.99000000 +Ba 7.99500000 19.98750000 19.98750000 +Ba 11.99250000 0.00000000 0.00000000 +Ba 11.99250000 0.00000000 3.99750000 +Ba 11.99250000 0.00000000 7.99500000 +Ba 11.99250000 0.00000000 11.99250000 +Ba 11.99250000 0.00000000 15.99000000 +Ba 11.99250000 0.00000000 19.98750000 +Ba 11.99250000 3.99750000 0.00000000 +Ba 11.99250000 3.99750000 3.99750000 +Ba 11.99250000 3.99750000 7.99500000 +Ba 11.99250000 3.99750000 11.99250000 +Ba 11.99250000 3.99750000 15.99000000 +Ba 11.99250000 3.99750000 19.98750000 +Ba 11.99250000 7.99500000 0.00000000 +Ba 11.99250000 7.99500000 3.99750000 +Ba 11.99250000 7.99500000 7.99500000 +Ba 11.99250000 7.99500000 11.99250000 +Ba 11.99250000 7.99500000 15.99000000 +Ba 11.99250000 7.99500000 19.98750000 +Ba 11.99250000 11.99250000 0.00000000 +Ba 11.99250000 11.99250000 3.99750000 +Ba 11.99250000 11.99250000 7.99500000 +Ba 11.99250000 11.99250000 11.99250000 +Ba 11.99250000 11.99250000 15.99000000 +Ba 11.99250000 11.99250000 19.98750000 +Ba 11.99250000 15.99000000 0.00000000 +Ba 11.99250000 15.99000000 3.99750000 +Ba 11.99250000 15.99000000 7.99500000 +Ba 11.99250000 15.99000000 11.99250000 +Ba 11.99250000 15.99000000 15.99000000 +Ba 11.99250000 15.99000000 19.98750000 +Ba 11.99250000 19.98750000 0.00000000 +Ba 11.99250000 19.98750000 3.99750000 +Ba 11.99250000 19.98750000 7.99500000 +Ba 11.99250000 19.98750000 11.99250000 +Ba 11.99250000 19.98750000 15.99000000 +Ba 11.99250000 19.98750000 19.98750000 +Ba 15.99000000 0.00000000 0.00000000 +Ba 15.99000000 0.00000000 3.99750000 +Ba 15.99000000 0.00000000 7.99500000 +Ba 15.99000000 0.00000000 11.99250000 +Ba 15.99000000 0.00000000 15.99000000 +Ba 15.99000000 0.00000000 19.98750000 +Ba 15.99000000 3.99750000 0.00000000 +Ba 15.99000000 3.99750000 3.99750000 +Ba 15.99000000 3.99750000 7.99500000 +Ba 15.99000000 3.99750000 11.99250000 +Ba 15.99000000 3.99750000 15.99000000 +Ba 15.99000000 3.99750000 19.98750000 +Ba 15.99000000 7.99500000 0.00000000 +Ba 15.99000000 7.99500000 3.99750000 +Ba 15.99000000 7.99500000 7.99500000 +Ba 15.99000000 7.99500000 11.99250000 +Ba 15.99000000 7.99500000 15.99000000 +Ba 15.99000000 7.99500000 19.98750000 +Ba 15.99000000 11.99250000 0.00000000 +Ba 15.99000000 11.99250000 3.99750000 +Ba 15.99000000 11.99250000 7.99500000 +Ba 15.99000000 11.99250000 11.99250000 +Ba 15.99000000 11.99250000 15.99000000 +Ba 15.99000000 11.99250000 19.98750000 +Ba 15.99000000 15.99000000 0.00000000 +Ba 15.99000000 15.99000000 3.99750000 +Ba 15.99000000 15.99000000 7.99500000 +Ba 15.99000000 15.99000000 11.99250000 +Ba 15.99000000 15.99000000 15.99000000 +Ba 15.99000000 15.99000000 19.98750000 +Ba 15.99000000 19.98750000 0.00000000 +Ba 15.99000000 19.98750000 3.99750000 +Ba 15.99000000 19.98750000 7.99500000 +Ba 15.99000000 19.98750000 11.99250000 +Ba 15.99000000 19.98750000 15.99000000 +Ba 15.99000000 19.98750000 19.98750000 +Ba 19.98750000 0.00000000 0.00000000 +Ba 19.98750000 0.00000000 3.99750000 +Ba 19.98750000 0.00000000 7.99500000 +Ba 19.98750000 0.00000000 11.99250000 +Ba 19.98750000 0.00000000 15.99000000 +Ba 19.98750000 0.00000000 19.98750000 +Ba 19.98750000 3.99750000 0.00000000 +Ba 19.98750000 3.99750000 3.99750000 +Ba 19.98750000 3.99750000 7.99500000 +Ba 19.98750000 3.99750000 11.99250000 +Ba 19.98750000 3.99750000 15.99000000 +Ba 19.98750000 3.99750000 19.98750000 +Ba 19.98750000 7.99500000 0.00000000 +Ba 19.98750000 7.99500000 3.99750000 +Ba 19.98750000 7.99500000 7.99500000 +Ba 19.98750000 7.99500000 11.99250000 +Ba 19.98750000 7.99500000 15.99000000 +Ba 19.98750000 7.99500000 19.98750000 +Ba 19.98750000 11.99250000 0.00000000 +Ba 19.98750000 11.99250000 3.99750000 +Ba 19.98750000 11.99250000 7.99500000 +Ba 19.98750000 11.99250000 11.99250000 +Ba 19.98750000 11.99250000 15.99000000 +Ba 19.98750000 11.99250000 19.98750000 +Ba 19.98750000 15.99000000 0.00000000 +Ba 19.98750000 15.99000000 3.99750000 +Ba 19.98750000 15.99000000 7.99500000 +Ba 19.98750000 15.99000000 11.99250000 +Ba 19.98750000 15.99000000 15.99000000 +Ba 19.98750000 15.99000000 19.98750000 +Ba 19.98750000 19.98750000 0.00000000 +Ba 19.98750000 19.98750000 3.99750000 +Ba 19.98750000 19.98750000 7.99500000 +Ba 19.98750000 19.98750000 11.99250000 +Ba 19.98750000 19.98750000 15.99000000 +Ba 19.98750000 19.98750000 19.98750000 +Ti 1.99875000 1.99875000 1.99875000 +Ti 1.99875000 1.99875000 5.99625000 +Ti 1.99875000 1.99875000 9.99375000 +Ti 1.99875000 1.99875000 13.99120000 +Ti 1.99875000 1.99875000 17.98870000 +Ti 1.99875000 1.99875000 21.98620000 +Ti 1.99875000 5.99625000 1.99875000 +Ti 1.99875000 5.99625000 5.99625000 +Ti 1.99875000 5.99625000 9.99375000 +Ti 1.99875000 5.99625000 13.99120000 +Ti 1.99875000 5.99625000 17.98870000 +Ti 1.99875000 5.99625000 21.98620000 +Ti 1.99875000 9.99375000 1.99875000 +Ti 1.99875000 9.99375000 5.99625000 +Ti 1.99875000 9.99375000 9.99375000 +Ti 1.99875000 9.99375000 13.99120000 +Ti 1.99875000 9.99375000 17.98870000 +Ti 1.99875000 9.99375000 21.98620000 +Ti 1.99875000 13.99120000 1.99875000 +Ti 1.99875000 13.99120000 5.99625000 +Ti 1.99875000 13.99120000 9.99375000 +Ti 1.99875000 13.99120000 13.99120000 +Ti 1.99875000 13.99120000 17.98870000 +Ti 1.99875000 13.99120000 21.98620000 +Ti 1.99875000 17.98870000 1.99875000 +Ti 1.99875000 17.98870000 5.99625000 +Ti 1.99875000 17.98870000 9.99375000 +Ti 1.99875000 17.98870000 13.99120000 +Ti 1.99875000 17.98870000 17.98870000 +Ti 1.99875000 17.98870000 21.98620000 +Ti 1.99875000 21.98620000 1.99875000 +Ti 1.99875000 21.98620000 5.99625000 +Ti 1.99875000 21.98620000 9.99375000 +Ti 1.99875000 21.98620000 13.99120000 +Ti 1.99875000 21.98620000 17.98870000 +Ti 1.99875000 21.98620000 21.98620000 +Ti 5.99625000 1.99875000 1.99875000 +Ti 5.99625000 1.99875000 5.99625000 +Ti 5.99625000 1.99875000 9.99375000 +Ti 5.99625000 1.99875000 13.99120000 +Ti 5.99625000 1.99875000 17.98870000 +Ti 5.99625000 1.99875000 21.98620000 +Ti 5.99625000 5.99625000 1.99875000 +Ti 5.99625000 5.99625000 5.99625000 +Ti 5.99625000 5.99625000 9.99375000 +Ti 5.99625000 5.99625000 13.99120000 +Ti 5.99625000 5.99625000 17.98870000 +Ti 5.99625000 5.99625000 21.98620000 +Ti 5.99625000 9.99375000 1.99875000 +Ti 5.99625000 9.99375000 5.99625000 +Ti 5.99625000 9.99375000 9.99375000 +Ti 5.99625000 9.99375000 13.99120000 +Ti 5.99625000 9.99375000 17.98870000 +Ti 5.99625000 9.99375000 21.98620000 +Ti 5.99625000 13.99120000 1.99875000 +Ti 5.99625000 13.99120000 5.99625000 +Ti 5.99625000 13.99120000 9.99375000 +Ti 5.99625000 13.99120000 13.99120000 +Ti 5.99625000 13.99120000 17.98870000 +Ti 5.99625000 13.99120000 21.98620000 +Ti 5.99625000 17.98870000 1.99875000 +Ti 5.99625000 17.98870000 5.99625000 +Ti 5.99625000 17.98870000 9.99375000 +Ti 5.99625000 17.98870000 13.99120000 +Ti 5.99625000 17.98870000 17.98870000 +Ti 5.99625000 17.98870000 21.98620000 +Ti 5.99625000 21.98620000 1.99875000 +Ti 5.99625000 21.98620000 5.99625000 +Ti 5.99625000 21.98620000 9.99375000 +Ti 5.99625000 21.98620000 13.99120000 +Ti 5.99625000 21.98620000 17.98870000 +Ti 5.99625000 21.98620000 21.98620000 +Ti 9.99375000 1.99875000 1.99875000 +Ti 9.99375000 1.99875000 5.99625000 +Ti 9.99375000 1.99875000 9.99375000 +Ti 9.99375000 1.99875000 13.99120000 +Ti 9.99375000 1.99875000 17.98870000 +Ti 9.99375000 1.99875000 21.98620000 +Ti 9.99375000 5.99625000 1.99875000 +Ti 9.99375000 5.99625000 5.99625000 +Ti 9.99375000 5.99625000 9.99375000 +Ti 9.99375000 5.99625000 13.99120000 +Ti 9.99375000 5.99625000 17.98870000 +Ti 9.99375000 5.99625000 21.98620000 +Ti 9.99375000 9.99375000 1.99875000 +Ti 9.99375000 9.99375000 5.99625000 +Ti 9.99375000 9.99375000 9.99375000 +Ti 9.99375000 9.99375000 13.99120000 +Ti 9.99375000 9.99375000 17.98870000 +Ti 9.99375000 9.99375000 21.98620000 +Ti 9.99375000 13.99120000 1.99875000 +Ti 9.99375000 13.99120000 5.99625000 +Ti 9.99375000 13.99120000 9.99375000 +Ti 9.99375000 13.99120000 13.99120000 +Ti 9.99375000 13.99120000 17.98870000 +Ti 9.99375000 13.99120000 21.98620000 +Ti 9.99375000 17.98870000 1.99875000 +Ti 9.99375000 17.98870000 5.99625000 +Ti 9.99375000 17.98870000 9.99375000 +Ti 9.99375000 17.98870000 13.99120000 +Ti 9.99375000 17.98870000 17.98870000 +Ti 9.99375000 17.98870000 21.98620000 +Ti 9.99375000 21.98620000 1.99875000 +Ti 9.99375000 21.98620000 5.99625000 +Ti 9.99375000 21.98620000 9.99375000 +Ti 9.99375000 21.98620000 13.99120000 +Ti 9.99375000 21.98620000 17.98870000 +Ti 9.99375000 21.98620000 21.98620000 +Ti 13.99120000 1.99875000 1.99875000 +Ti 13.99120000 1.99875000 5.99625000 +Ti 13.99120000 1.99875000 9.99375000 +Ti 13.99120000 1.99875000 13.99120000 +Ti 13.99120000 1.99875000 17.98870000 +Ti 13.99120000 1.99875000 21.98620000 +Ti 13.99120000 5.99625000 1.99875000 +Ti 13.99120000 5.99625000 5.99625000 +Ti 13.99120000 5.99625000 9.99375000 +Ti 13.99120000 5.99625000 13.99120000 +Ti 13.99120000 5.99625000 17.98870000 +Ti 13.99120000 5.99625000 21.98620000 +Ti 13.99120000 9.99375000 1.99875000 +Ti 13.99120000 9.99375000 5.99625000 +Ti 13.99120000 9.99375000 9.99375000 +Ti 13.99120000 9.99375000 13.99120000 +Ti 13.99120000 9.99375000 17.98870000 +Ti 13.99120000 9.99375000 21.98620000 +Ti 13.99120000 13.99120000 1.99875000 +Ti 13.99120000 13.99120000 5.99625000 +Ti 13.99120000 13.99120000 9.99375000 +Ti 13.99120000 13.99120000 13.99120000 +Ti 13.99120000 13.99120000 17.98870000 +Ti 13.99120000 13.99120000 21.98620000 +Ti 13.99120000 17.98870000 1.99875000 +Ti 13.99120000 17.98870000 5.99625000 +Ti 13.99120000 17.98870000 9.99375000 +Ti 13.99120000 17.98870000 13.99120000 +Ti 13.99120000 17.98870000 17.98870000 +Ti 13.99120000 17.98870000 21.98620000 +Ti 13.99120000 21.98620000 1.99875000 +Ti 13.99120000 21.98620000 5.99625000 +Ti 13.99120000 21.98620000 9.99375000 +Ti 13.99120000 21.98620000 13.99120000 +Ti 13.99120000 21.98620000 17.98870000 +Ti 13.99120000 21.98620000 21.98620000 +Ti 17.98870000 1.99875000 1.99875000 +Ti 17.98870000 1.99875000 5.99625000 +Ti 17.98870000 1.99875000 9.99375000 +Ti 17.98870000 1.99875000 13.99120000 +Ti 17.98870000 1.99875000 17.98870000 +Ti 17.98870000 1.99875000 21.98620000 +Ti 17.98870000 5.99625000 1.99875000 +Ti 17.98870000 5.99625000 5.99625000 +Ti 17.98870000 5.99625000 9.99375000 +Ti 17.98870000 5.99625000 13.99120000 +Ti 17.98870000 5.99625000 17.98870000 +Ti 17.98870000 5.99625000 21.98620000 +Ti 17.98870000 9.99375000 1.99875000 +Ti 17.98870000 9.99375000 5.99625000 +Ti 17.98870000 9.99375000 9.99375000 +Ti 17.98870000 9.99375000 13.99120000 +Ti 17.98870000 9.99375000 17.98870000 +Ti 17.98870000 9.99375000 21.98620000 +Ti 17.98870000 13.99120000 1.99875000 +Ti 17.98870000 13.99120000 5.99625000 +Ti 17.98870000 13.99120000 9.99375000 +Ti 17.98870000 13.99120000 13.99120000 +Ti 17.98870000 13.99120000 17.98870000 +Ti 17.98870000 13.99120000 21.98620000 +Ti 17.98870000 17.98870000 1.99875000 +Ti 17.98870000 17.98870000 5.99625000 +Ti 17.98870000 17.98870000 9.99375000 +Ti 17.98870000 17.98870000 13.99120000 +Ti 17.98870000 17.98870000 17.98870000 +Ti 17.98870000 17.98870000 21.98620000 +Ti 17.98870000 21.98620000 1.99875000 +Ti 17.98870000 21.98620000 5.99625000 +Ti 17.98870000 21.98620000 9.99375000 +Ti 17.98870000 21.98620000 13.99120000 +Ti 17.98870000 21.98620000 17.98870000 +Ti 17.98870000 21.98620000 21.98620000 +Ti 21.98620000 1.99875000 1.99875000 +Ti 21.98620000 1.99875000 5.99625000 +Ti 21.98620000 1.99875000 9.99375000 +Ti 21.98620000 1.99875000 13.99120000 +Ti 21.98620000 1.99875000 17.98870000 +Ti 21.98620000 1.99875000 21.98620000 +Ti 21.98620000 5.99625000 1.99875000 +Ti 21.98620000 5.99625000 5.99625000 +Ti 21.98620000 5.99625000 9.99375000 +Ti 21.98620000 5.99625000 13.99120000 +Ti 21.98620000 5.99625000 17.98870000 +Ti 21.98620000 5.99625000 21.98620000 +Ti 21.98620000 9.99375000 1.99875000 +Ti 21.98620000 9.99375000 5.99625000 +Ti 21.98620000 9.99375000 9.99375000 +Ti 21.98620000 9.99375000 13.99120000 +Ti 21.98620000 9.99375000 17.98870000 +Ti 21.98620000 9.99375000 21.98620000 +Ti 21.98620000 13.99120000 1.99875000 +Ti 21.98620000 13.99120000 5.99625000 +Ti 21.98620000 13.99120000 9.99375000 +Ti 21.98620000 13.99120000 13.99120000 +Ti 21.98620000 13.99120000 17.98870000 +Ti 21.98620000 13.99120000 21.98620000 +Ti 21.98620000 17.98870000 1.99875000 +Ti 21.98620000 17.98870000 5.99625000 +Ti 21.98620000 17.98870000 9.99375000 +Ti 21.98620000 17.98870000 13.99120000 +Ti 21.98620000 17.98870000 17.98870000 +Ti 21.98620000 17.98870000 21.98620000 +Ti 21.98620000 21.98620000 1.99875000 +Ti 21.98620000 21.98620000 5.99625000 +Ti 21.98620000 21.98620000 9.99375000 +Ti 21.98620000 21.98620000 13.99120000 +Ti 21.98620000 21.98620000 17.98870000 +Ti 21.98620000 21.98620000 21.98620000 +O 1.99875000 1.99875000 0.00000000 +O 1.99875000 1.99875000 3.99750000 +O 1.99875000 1.99875000 7.99500000 +O 1.99875000 1.99875000 11.99250000 +O 1.99875000 1.99875000 15.99000000 +O 1.99875000 1.99875000 19.98750000 +O 1.99875000 5.99625000 0.00000000 +O 1.99875000 5.99625000 3.99750000 +O 1.99875000 5.99625000 7.99500000 +O 1.99875000 5.99625000 11.99250000 +O 1.99875000 5.99625000 15.99000000 +O 1.99875000 5.99625000 19.98750000 +O 1.99875000 9.99375000 0.00000000 +O 1.99875000 9.99375000 3.99750000 +O 1.99875000 9.99375000 7.99500000 +O 1.99875000 9.99375000 11.99250000 +O 1.99875000 9.99375000 15.99000000 +O 1.99875000 9.99375000 19.98750000 +O 1.99875000 13.99120000 0.00000000 +O 1.99875000 13.99120000 3.99750000 +O 1.99875000 13.99120000 7.99500000 +O 1.99875000 13.99120000 11.99250000 +O 1.99875000 13.99120000 15.99000000 +O 1.99875000 13.99120000 19.98750000 +O 1.99875000 17.98870000 0.00000000 +O 1.99875000 17.98870000 3.99750000 +O 1.99875000 17.98870000 7.99500000 +O 1.99875000 17.98870000 11.99250000 +O 1.99875000 17.98870000 15.99000000 +O 1.99875000 17.98870000 19.98750000 +O 1.99875000 21.98620000 0.00000000 +O 1.99875000 21.98620000 3.99750000 +O 1.99875000 21.98620000 7.99500000 +O 1.99875000 21.98620000 11.99250000 +O 1.99875000 21.98620000 15.99000000 +O 1.99875000 21.98620000 19.98750000 +O 5.99625000 1.99875000 0.00000000 +O 5.99625000 1.99875000 3.99750000 +O 5.99625000 1.99875000 7.99500000 +O 5.99625000 1.99875000 11.99250000 +O 5.99625000 1.99875000 15.99000000 +O 5.99625000 1.99875000 19.98750000 +O 5.99625000 5.99625000 0.00000000 +O 5.99625000 5.99625000 3.99750000 +O 5.99625000 5.99625000 7.99500000 +O 5.99625000 5.99625000 11.99250000 +O 5.99625000 5.99625000 15.99000000 +O 5.99625000 5.99625000 19.98750000 +O 5.99625000 9.99375000 0.00000000 +O 5.99625000 9.99375000 3.99750000 +O 5.99625000 9.99375000 7.99500000 +O 5.99625000 9.99375000 11.99250000 +O 5.99625000 9.99375000 15.99000000 +O 5.99625000 9.99375000 19.98750000 +O 5.99625000 13.99120000 0.00000000 +O 5.99625000 13.99120000 3.99750000 +O 5.99625000 13.99120000 7.99500000 +O 5.99625000 13.99120000 11.99250000 +O 5.99625000 13.99120000 15.99000000 +O 5.99625000 13.99120000 19.98750000 +O 5.99625000 17.98870000 0.00000000 +O 5.99625000 17.98870000 3.99750000 +O 5.99625000 17.98870000 7.99500000 +O 5.99625000 17.98870000 11.99250000 +O 5.99625000 17.98870000 15.99000000 +O 5.99625000 17.98870000 19.98750000 +O 5.99625000 21.98620000 0.00000000 +O 5.99625000 21.98620000 3.99750000 +O 5.99625000 21.98620000 7.99500000 +O 5.99625000 21.98620000 11.99250000 +O 5.99625000 21.98620000 15.99000000 +O 5.99625000 21.98620000 19.98750000 +O 9.99375000 1.99875000 0.00000000 +O 9.99375000 1.99875000 3.99750000 +O 9.99375000 1.99875000 7.99500000 +O 9.99375000 1.99875000 11.99250000 +O 9.99375000 1.99875000 15.99000000 +O 9.99375000 1.99875000 19.98750000 +O 9.99375000 5.99625000 0.00000000 +O 9.99375000 5.99625000 3.99750000 +O 9.99375000 5.99625000 7.99500000 +O 9.99375000 5.99625000 11.99250000 +O 9.99375000 5.99625000 15.99000000 +O 9.99375000 5.99625000 19.98750000 +O 9.99375000 9.99375000 0.00000000 +O 9.99375000 9.99375000 3.99750000 +O 9.99375000 9.99375000 7.99500000 +O 9.99375000 9.99375000 11.99250000 +O 9.99375000 9.99375000 15.99000000 +O 9.99375000 9.99375000 19.98750000 +O 9.99375000 13.99120000 0.00000000 +O 9.99375000 13.99120000 3.99750000 +O 9.99375000 13.99120000 7.99500000 +O 9.99375000 13.99120000 11.99250000 +O 9.99375000 13.99120000 15.99000000 +O 9.99375000 13.99120000 19.98750000 +O 9.99375000 17.98870000 0.00000000 +O 9.99375000 17.98870000 3.99750000 +O 9.99375000 17.98870000 7.99500000 +O 9.99375000 17.98870000 11.99250000 +O 9.99375000 17.98870000 15.99000000 +O 9.99375000 17.98870000 19.98750000 +O 9.99375000 21.98620000 0.00000000 +O 9.99375000 21.98620000 3.99750000 +O 9.99375000 21.98620000 7.99500000 +O 9.99375000 21.98620000 11.99250000 +O 9.99375000 21.98620000 15.99000000 +O 9.99375000 21.98620000 19.98750000 +O 13.99120000 1.99875000 0.00000000 +O 13.99120000 1.99875000 3.99750000 +O 13.99120000 1.99875000 7.99500000 +O 13.99120000 1.99875000 11.99250000 +O 13.99120000 1.99875000 15.99000000 +O 13.99120000 1.99875000 19.98750000 +O 13.99120000 5.99625000 0.00000000 +O 13.99120000 5.99625000 3.99750000 +O 13.99120000 5.99625000 7.99500000 +O 13.99120000 5.99625000 11.99250000 +O 13.99120000 5.99625000 15.99000000 +O 13.99120000 5.99625000 19.98750000 +O 13.99120000 9.99375000 0.00000000 +O 13.99120000 9.99375000 3.99750000 +O 13.99120000 9.99375000 7.99500000 +O 13.99120000 9.99375000 11.99250000 +O 13.99120000 9.99375000 15.99000000 +O 13.99120000 9.99375000 19.98750000 +O 13.99120000 13.99120000 0.00000000 +O 13.99120000 13.99120000 3.99750000 +O 13.99120000 13.99120000 7.99500000 +O 13.99120000 13.99120000 11.99250000 +O 13.99120000 13.99120000 15.99000000 +O 13.99120000 13.99120000 19.98750000 +O 13.99120000 17.98870000 0.00000000 +O 13.99120000 17.98870000 3.99750000 +O 13.99120000 17.98870000 7.99500000 +O 13.99120000 17.98870000 11.99250000 +O 13.99120000 17.98870000 15.99000000 +O 13.99120000 17.98870000 19.98750000 +O 13.99120000 21.98620000 0.00000000 +O 13.99120000 21.98620000 3.99750000 +O 13.99120000 21.98620000 7.99500000 +O 13.99120000 21.98620000 11.99250000 +O 13.99120000 21.98620000 15.99000000 +O 13.99120000 21.98620000 19.98750000 +O 17.98870000 1.99875000 0.00000000 +O 17.98870000 1.99875000 3.99750000 +O 17.98870000 1.99875000 7.99500000 +O 17.98870000 1.99875000 11.99250000 +O 17.98870000 1.99875000 15.99000000 +O 17.98870000 1.99875000 19.98750000 +O 17.98870000 5.99625000 0.00000000 +O 17.98870000 5.99625000 3.99750000 +O 17.98870000 5.99625000 7.99500000 +O 17.98870000 5.99625000 11.99250000 +O 17.98870000 5.99625000 15.99000000 +O 17.98870000 5.99625000 19.98750000 +O 17.98870000 9.99375000 0.00000000 +O 17.98870000 9.99375000 3.99750000 +O 17.98870000 9.99375000 7.99500000 +O 17.98870000 9.99375000 11.99250000 +O 17.98870000 9.99375000 15.99000000 +O 17.98870000 9.99375000 19.98750000 +O 17.98870000 13.99120000 0.00000000 +O 17.98870000 13.99120000 3.99750000 +O 17.98870000 13.99120000 7.99500000 +O 17.98870000 13.99120000 11.99250000 +O 17.98870000 13.99120000 15.99000000 +O 17.98870000 13.99120000 19.98750000 +O 17.98870000 17.98870000 0.00000000 +O 17.98870000 17.98870000 3.99750000 +O 17.98870000 17.98870000 7.99500000 +O 17.98870000 17.98870000 11.99250000 +O 17.98870000 17.98870000 15.99000000 +O 17.98870000 17.98870000 19.98750000 +O 17.98870000 21.98620000 0.00000000 +O 17.98870000 21.98620000 3.99750000 +O 17.98870000 21.98620000 7.99500000 +O 17.98870000 21.98620000 11.99250000 +O 17.98870000 21.98620000 15.99000000 +O 17.98870000 21.98620000 19.98750000 +O 21.98620000 1.99875000 0.00000000 +O 21.98620000 1.99875000 3.99750000 +O 21.98620000 1.99875000 7.99500000 +O 21.98620000 1.99875000 11.99250000 +O 21.98620000 1.99875000 15.99000000 +O 21.98620000 1.99875000 19.98750000 +O 21.98620000 5.99625000 0.00000000 +O 21.98620000 5.99625000 3.99750000 +O 21.98620000 5.99625000 7.99500000 +O 21.98620000 5.99625000 11.99250000 +O 21.98620000 5.99625000 15.99000000 +O 21.98620000 5.99625000 19.98750000 +O 21.98620000 9.99375000 0.00000000 +O 21.98620000 9.99375000 3.99750000 +O 21.98620000 9.99375000 7.99500000 +O 21.98620000 9.99375000 11.99250000 +O 21.98620000 9.99375000 15.99000000 +O 21.98620000 9.99375000 19.98750000 +O 21.98620000 13.99120000 0.00000000 +O 21.98620000 13.99120000 3.99750000 +O 21.98620000 13.99120000 7.99500000 +O 21.98620000 13.99120000 11.99250000 +O 21.98620000 13.99120000 15.99000000 +O 21.98620000 13.99120000 19.98750000 +O 21.98620000 17.98870000 0.00000000 +O 21.98620000 17.98870000 3.99750000 +O 21.98620000 17.98870000 7.99500000 +O 21.98620000 17.98870000 11.99250000 +O 21.98620000 17.98870000 15.99000000 +O 21.98620000 17.98870000 19.98750000 +O 21.98620000 21.98620000 0.00000000 +O 21.98620000 21.98620000 3.99750000 +O 21.98620000 21.98620000 7.99500000 +O 21.98620000 21.98620000 11.99250000 +O 21.98620000 21.98620000 15.99000000 +O 21.98620000 21.98620000 19.98750000 +O 1.99875000 0.00000000 1.99875000 +O 1.99875000 0.00000000 5.99625000 +O 1.99875000 0.00000000 9.99375000 +O 1.99875000 0.00000000 13.99120000 +O 1.99875000 0.00000000 17.98870000 +O 1.99875000 0.00000000 21.98620000 +O 1.99875000 3.99750000 1.99875000 +O 1.99875000 3.99750000 5.99625000 +O 1.99875000 3.99750000 9.99375000 +O 1.99875000 3.99750000 13.99120000 +O 1.99875000 3.99750000 17.98870000 +O 1.99875000 3.99750000 21.98620000 +O 1.99875000 7.99500000 1.99875000 +O 1.99875000 7.99500000 5.99625000 +O 1.99875000 7.99500000 9.99375000 +O 1.99875000 7.99500000 13.99120000 +O 1.99875000 7.99500000 17.98870000 +O 1.99875000 7.99500000 21.98620000 +O 1.99875000 11.99250000 1.99875000 +O 1.99875000 11.99250000 5.99625000 +O 1.99875000 11.99250000 9.99375000 +O 1.99875000 11.99250000 13.99120000 +O 1.99875000 11.99250000 17.98870000 +O 1.99875000 11.99250000 21.98620000 +O 1.99875000 15.99000000 1.99875000 +O 1.99875000 15.99000000 5.99625000 +O 1.99875000 15.99000000 9.99375000 +O 1.99875000 15.99000000 13.99120000 +O 1.99875000 15.99000000 17.98870000 +O 1.99875000 15.99000000 21.98620000 +O 1.99875000 19.98750000 1.99875000 +O 1.99875000 19.98750000 5.99625000 +O 1.99875000 19.98750000 9.99375000 +O 1.99875000 19.98750000 13.99120000 +O 1.99875000 19.98750000 17.98870000 +O 1.99875000 19.98750000 21.98620000 +O 5.99625000 0.00000000 1.99875000 +O 5.99625000 0.00000000 5.99625000 +O 5.99625000 0.00000000 9.99375000 +O 5.99625000 0.00000000 13.99120000 +O 5.99625000 0.00000000 17.98870000 +O 5.99625000 0.00000000 21.98620000 +O 5.99625000 3.99750000 1.99875000 +O 5.99625000 3.99750000 5.99625000 +O 5.99625000 3.99750000 9.99375000 +O 5.99625000 3.99750000 13.99120000 +O 5.99625000 3.99750000 17.98870000 +O 5.99625000 3.99750000 21.98620000 +O 5.99625000 7.99500000 1.99875000 +O 5.99625000 7.99500000 5.99625000 +O 5.99625000 7.99500000 9.99375000 +O 5.99625000 7.99500000 13.99120000 +O 5.99625000 7.99500000 17.98870000 +O 5.99625000 7.99500000 21.98620000 +O 5.99625000 11.99250000 1.99875000 +O 5.99625000 11.99250000 5.99625000 +O 5.99625000 11.99250000 9.99375000 +O 5.99625000 11.99250000 13.99120000 +O 5.99625000 11.99250000 17.98870000 +O 5.99625000 11.99250000 21.98620000 +O 5.99625000 15.99000000 1.99875000 +O 5.99625000 15.99000000 5.99625000 +O 5.99625000 15.99000000 9.99375000 +O 5.99625000 15.99000000 13.99120000 +O 5.99625000 15.99000000 17.98870000 +O 5.99625000 15.99000000 21.98620000 +O 5.99625000 19.98750000 1.99875000 +O 5.99625000 19.98750000 5.99625000 +O 5.99625000 19.98750000 9.99375000 +O 5.99625000 19.98750000 13.99120000 +O 5.99625000 19.98750000 17.98870000 +O 5.99625000 19.98750000 21.98620000 +O 9.99375000 0.00000000 1.99875000 +O 9.99375000 0.00000000 5.99625000 +O 9.99375000 0.00000000 9.99375000 +O 9.99375000 0.00000000 13.99120000 +O 9.99375000 0.00000000 17.98870000 +O 9.99375000 0.00000000 21.98620000 +O 9.99375000 3.99750000 1.99875000 +O 9.99375000 3.99750000 5.99625000 +O 9.99375000 3.99750000 9.99375000 +O 9.99375000 3.99750000 13.99120000 +O 9.99375000 3.99750000 17.98870000 +O 9.99375000 3.99750000 21.98620000 +O 9.99375000 7.99500000 1.99875000 +O 9.99375000 7.99500000 5.99625000 +O 9.99375000 7.99500000 9.99375000 +O 9.99375000 7.99500000 13.99120000 +O 9.99375000 7.99500000 17.98870000 +O 9.99375000 7.99500000 21.98620000 +O 9.99375000 11.99250000 1.99875000 +O 9.99375000 11.99250000 5.99625000 +O 9.99375000 11.99250000 9.99375000 +O 9.99375000 11.99250000 13.99120000 +O 9.99375000 11.99250000 17.98870000 +O 9.99375000 11.99250000 21.98620000 +O 9.99375000 15.99000000 1.99875000 +O 9.99375000 15.99000000 5.99625000 +O 9.99375000 15.99000000 9.99375000 +O 9.99375000 15.99000000 13.99120000 +O 9.99375000 15.99000000 17.98870000 +O 9.99375000 15.99000000 21.98620000 +O 9.99375000 19.98750000 1.99875000 +O 9.99375000 19.98750000 5.99625000 +O 9.99375000 19.98750000 9.99375000 +O 9.99375000 19.98750000 13.99120000 +O 9.99375000 19.98750000 17.98870000 +O 9.99375000 19.98750000 21.98620000 +O 13.99120000 0.00000000 1.99875000 +O 13.99120000 0.00000000 5.99625000 +O 13.99120000 0.00000000 9.99375000 +O 13.99120000 0.00000000 13.99120000 +O 13.99120000 0.00000000 17.98870000 +O 13.99120000 0.00000000 21.98620000 +O 13.99120000 3.99750000 1.99875000 +O 13.99120000 3.99750000 5.99625000 +O 13.99120000 3.99750000 9.99375000 +O 13.99120000 3.99750000 13.99120000 +O 13.99120000 3.99750000 17.98870000 +O 13.99120000 3.99750000 21.98620000 +O 13.99120000 7.99500000 1.99875000 +O 13.99120000 7.99500000 5.99625000 +O 13.99120000 7.99500000 9.99375000 +O 13.99120000 7.99500000 13.99120000 +O 13.99120000 7.99500000 17.98870000 +O 13.99120000 7.99500000 21.98620000 +O 13.99120000 11.99250000 1.99875000 +O 13.99120000 11.99250000 5.99625000 +O 13.99120000 11.99250000 9.99375000 +O 13.99120000 11.99250000 13.99120000 +O 13.99120000 11.99250000 17.98870000 +O 13.99120000 11.99250000 21.98620000 +O 13.99120000 15.99000000 1.99875000 +O 13.99120000 15.99000000 5.99625000 +O 13.99120000 15.99000000 9.99375000 +O 13.99120000 15.99000000 13.99120000 +O 13.99120000 15.99000000 17.98870000 +O 13.99120000 15.99000000 21.98620000 +O 13.99120000 19.98750000 1.99875000 +O 13.99120000 19.98750000 5.99625000 +O 13.99120000 19.98750000 9.99375000 +O 13.99120000 19.98750000 13.99120000 +O 13.99120000 19.98750000 17.98870000 +O 13.99120000 19.98750000 21.98620000 +O 17.98870000 0.00000000 1.99875000 +O 17.98870000 0.00000000 5.99625000 +O 17.98870000 0.00000000 9.99375000 +O 17.98870000 0.00000000 13.99120000 +O 17.98870000 0.00000000 17.98870000 +O 17.98870000 0.00000000 21.98620000 +O 17.98870000 3.99750000 1.99875000 +O 17.98870000 3.99750000 5.99625000 +O 17.98870000 3.99750000 9.99375000 +O 17.98870000 3.99750000 13.99120000 +O 17.98870000 3.99750000 17.98870000 +O 17.98870000 3.99750000 21.98620000 +O 17.98870000 7.99500000 1.99875000 +O 17.98870000 7.99500000 5.99625000 +O 17.98870000 7.99500000 9.99375000 +O 17.98870000 7.99500000 13.99120000 +O 17.98870000 7.99500000 17.98870000 +O 17.98870000 7.99500000 21.98620000 +O 17.98870000 11.99250000 1.99875000 +O 17.98870000 11.99250000 5.99625000 +O 17.98870000 11.99250000 9.99375000 +O 17.98870000 11.99250000 13.99120000 +O 17.98870000 11.99250000 17.98870000 +O 17.98870000 11.99250000 21.98620000 +O 17.98870000 15.99000000 1.99875000 +O 17.98870000 15.99000000 5.99625000 +O 17.98870000 15.99000000 9.99375000 +O 17.98870000 15.99000000 13.99120000 +O 17.98870000 15.99000000 17.98870000 +O 17.98870000 15.99000000 21.98620000 +O 17.98870000 19.98750000 1.99875000 +O 17.98870000 19.98750000 5.99625000 +O 17.98870000 19.98750000 9.99375000 +O 17.98870000 19.98750000 13.99120000 +O 17.98870000 19.98750000 17.98870000 +O 17.98870000 19.98750000 21.98620000 +O 21.98620000 0.00000000 1.99875000 +O 21.98620000 0.00000000 5.99625000 +O 21.98620000 0.00000000 9.99375000 +O 21.98620000 0.00000000 13.99120000 +O 21.98620000 0.00000000 17.98870000 +O 21.98620000 0.00000000 21.98620000 +O 21.98620000 3.99750000 1.99875000 +O 21.98620000 3.99750000 5.99625000 +O 21.98620000 3.99750000 9.99375000 +O 21.98620000 3.99750000 13.99120000 +O 21.98620000 3.99750000 17.98870000 +O 21.98620000 3.99750000 21.98620000 +O 21.98620000 7.99500000 1.99875000 +O 21.98620000 7.99500000 5.99625000 +O 21.98620000 7.99500000 9.99375000 +O 21.98620000 7.99500000 13.99120000 +O 21.98620000 7.99500000 17.98870000 +O 21.98620000 7.99500000 21.98620000 +O 21.98620000 11.99250000 1.99875000 +O 21.98620000 11.99250000 5.99625000 +O 21.98620000 11.99250000 9.99375000 +O 21.98620000 11.99250000 13.99120000 +O 21.98620000 11.99250000 17.98870000 +O 21.98620000 11.99250000 21.98620000 +O 21.98620000 15.99000000 1.99875000 +O 21.98620000 15.99000000 5.99625000 +O 21.98620000 15.99000000 9.99375000 +O 21.98620000 15.99000000 13.99120000 +O 21.98620000 15.99000000 17.98870000 +O 21.98620000 15.99000000 21.98620000 +O 21.98620000 19.98750000 1.99875000 +O 21.98620000 19.98750000 5.99625000 +O 21.98620000 19.98750000 9.99375000 +O 21.98620000 19.98750000 13.99120000 +O 21.98620000 19.98750000 17.98870000 +O 21.98620000 19.98750000 21.98620000 +O 0.00000000 1.99875000 1.99875000 +O 0.00000000 1.99875000 5.99625000 +O 0.00000000 1.99875000 9.99375000 +O 0.00000000 1.99875000 13.99120000 +O 0.00000000 1.99875000 17.98870000 +O 0.00000000 1.99875000 21.98620000 +O 0.00000000 5.99625000 1.99875000 +O 0.00000000 5.99625000 5.99625000 +O 0.00000000 5.99625000 9.99375000 +O 0.00000000 5.99625000 13.99120000 +O 0.00000000 5.99625000 17.98870000 +O 0.00000000 5.99625000 21.98620000 +O 0.00000000 9.99375000 1.99875000 +O 0.00000000 9.99375000 5.99625000 +O 0.00000000 9.99375000 9.99375000 +O 0.00000000 9.99375000 13.99120000 +O 0.00000000 9.99375000 17.98870000 +O 0.00000000 9.99375000 21.98620000 +O 0.00000000 13.99120000 1.99875000 +O 0.00000000 13.99120000 5.99625000 +O 0.00000000 13.99120000 9.99375000 +O 0.00000000 13.99120000 13.99120000 +O 0.00000000 13.99120000 17.98870000 +O 0.00000000 13.99120000 21.98620000 +O 0.00000000 17.98870000 1.99875000 +O 0.00000000 17.98870000 5.99625000 +O 0.00000000 17.98870000 9.99375000 +O 0.00000000 17.98870000 13.99120000 +O 0.00000000 17.98870000 17.98870000 +O 0.00000000 17.98870000 21.98620000 +O 0.00000000 21.98620000 1.99875000 +O 0.00000000 21.98620000 5.99625000 +O 0.00000000 21.98620000 9.99375000 +O 0.00000000 21.98620000 13.99120000 +O 0.00000000 21.98620000 17.98870000 +O 0.00000000 21.98620000 21.98620000 +O 3.99750000 1.99875000 1.99875000 +O 3.99750000 1.99875000 5.99625000 +O 3.99750000 1.99875000 9.99375000 +O 3.99750000 1.99875000 13.99120000 +O 3.99750000 1.99875000 17.98870000 +O 3.99750000 1.99875000 21.98620000 +O 3.99750000 5.99625000 1.99875000 +O 3.99750000 5.99625000 5.99625000 +O 3.99750000 5.99625000 9.99375000 +O 3.99750000 5.99625000 13.99120000 +O 3.99750000 5.99625000 17.98870000 +O 3.99750000 5.99625000 21.98620000 +O 3.99750000 9.99375000 1.99875000 +O 3.99750000 9.99375000 5.99625000 +O 3.99750000 9.99375000 9.99375000 +O 3.99750000 9.99375000 13.99120000 +O 3.99750000 9.99375000 17.98870000 +O 3.99750000 9.99375000 21.98620000 +O 3.99750000 13.99120000 1.99875000 +O 3.99750000 13.99120000 5.99625000 +O 3.99750000 13.99120000 9.99375000 +O 3.99750000 13.99120000 13.99120000 +O 3.99750000 13.99120000 17.98870000 +O 3.99750000 13.99120000 21.98620000 +O 3.99750000 17.98870000 1.99875000 +O 3.99750000 17.98870000 5.99625000 +O 3.99750000 17.98870000 9.99375000 +O 3.99750000 17.98870000 13.99120000 +O 3.99750000 17.98870000 17.98870000 +O 3.99750000 17.98870000 21.98620000 +O 3.99750000 21.98620000 1.99875000 +O 3.99750000 21.98620000 5.99625000 +O 3.99750000 21.98620000 9.99375000 +O 3.99750000 21.98620000 13.99120000 +O 3.99750000 21.98620000 17.98870000 +O 3.99750000 21.98620000 21.98620000 +O 7.99500000 1.99875000 1.99875000 +O 7.99500000 1.99875000 5.99625000 +O 7.99500000 1.99875000 9.99375000 +O 7.99500000 1.99875000 13.99120000 +O 7.99500000 1.99875000 17.98870000 +O 7.99500000 1.99875000 21.98620000 +O 7.99500000 5.99625000 1.99875000 +O 7.99500000 5.99625000 5.99625000 +O 7.99500000 5.99625000 9.99375000 +O 7.99500000 5.99625000 13.99120000 +O 7.99500000 5.99625000 17.98870000 +O 7.99500000 5.99625000 21.98620000 +O 7.99500000 9.99375000 1.99875000 +O 7.99500000 9.99375000 5.99625000 +O 7.99500000 9.99375000 9.99375000 +O 7.99500000 9.99375000 13.99120000 +O 7.99500000 9.99375000 17.98870000 +O 7.99500000 9.99375000 21.98620000 +O 7.99500000 13.99120000 1.99875000 +O 7.99500000 13.99120000 5.99625000 +O 7.99500000 13.99120000 9.99375000 +O 7.99500000 13.99120000 13.99120000 +O 7.99500000 13.99120000 17.98870000 +O 7.99500000 13.99120000 21.98620000 +O 7.99500000 17.98870000 1.99875000 +O 7.99500000 17.98870000 5.99625000 +O 7.99500000 17.98870000 9.99375000 +O 7.99500000 17.98870000 13.99120000 +O 7.99500000 17.98870000 17.98870000 +O 7.99500000 17.98870000 21.98620000 +O 7.99500000 21.98620000 1.99875000 +O 7.99500000 21.98620000 5.99625000 +O 7.99500000 21.98620000 9.99375000 +O 7.99500000 21.98620000 13.99120000 +O 7.99500000 21.98620000 17.98870000 +O 7.99500000 21.98620000 21.98620000 +O 11.99250000 1.99875000 1.99875000 +O 11.99250000 1.99875000 5.99625000 +O 11.99250000 1.99875000 9.99375000 +O 11.99250000 1.99875000 13.99120000 +O 11.99250000 1.99875000 17.98870000 +O 11.99250000 1.99875000 21.98620000 +O 11.99250000 5.99625000 1.99875000 +O 11.99250000 5.99625000 5.99625000 +O 11.99250000 5.99625000 9.99375000 +O 11.99250000 5.99625000 13.99120000 +O 11.99250000 5.99625000 17.98870000 +O 11.99250000 5.99625000 21.98620000 +O 11.99250000 9.99375000 1.99875000 +O 11.99250000 9.99375000 5.99625000 +O 11.99250000 9.99375000 9.99375000 +O 11.99250000 9.99375000 13.99120000 +O 11.99250000 9.99375000 17.98870000 +O 11.99250000 9.99375000 21.98620000 +O 11.99250000 13.99120000 1.99875000 +O 11.99250000 13.99120000 5.99625000 +O 11.99250000 13.99120000 9.99375000 +O 11.99250000 13.99120000 13.99120000 +O 11.99250000 13.99120000 17.98870000 +O 11.99250000 13.99120000 21.98620000 +O 11.99250000 17.98870000 1.99875000 +O 11.99250000 17.98870000 5.99625000 +O 11.99250000 17.98870000 9.99375000 +O 11.99250000 17.98870000 13.99120000 +O 11.99250000 17.98870000 17.98870000 +O 11.99250000 17.98870000 21.98620000 +O 11.99250000 21.98620000 1.99875000 +O 11.99250000 21.98620000 5.99625000 +O 11.99250000 21.98620000 9.99375000 +O 11.99250000 21.98620000 13.99120000 +O 11.99250000 21.98620000 17.98870000 +O 11.99250000 21.98620000 21.98620000 +O 15.99000000 1.99875000 1.99875000 +O 15.99000000 1.99875000 5.99625000 +O 15.99000000 1.99875000 9.99375000 +O 15.99000000 1.99875000 13.99120000 +O 15.99000000 1.99875000 17.98870000 +O 15.99000000 1.99875000 21.98620000 +O 15.99000000 5.99625000 1.99875000 +O 15.99000000 5.99625000 5.99625000 +O 15.99000000 5.99625000 9.99375000 +O 15.99000000 5.99625000 13.99120000 +O 15.99000000 5.99625000 17.98870000 +O 15.99000000 5.99625000 21.98620000 +O 15.99000000 9.99375000 1.99875000 +O 15.99000000 9.99375000 5.99625000 +O 15.99000000 9.99375000 9.99375000 +O 15.99000000 9.99375000 13.99120000 +O 15.99000000 9.99375000 17.98870000 +O 15.99000000 9.99375000 21.98620000 +O 15.99000000 13.99120000 1.99875000 +O 15.99000000 13.99120000 5.99625000 +O 15.99000000 13.99120000 9.99375000 +O 15.99000000 13.99120000 13.99120000 +O 15.99000000 13.99120000 17.98870000 +O 15.99000000 13.99120000 21.98620000 +O 15.99000000 17.98870000 1.99875000 +O 15.99000000 17.98870000 5.99625000 +O 15.99000000 17.98870000 9.99375000 +O 15.99000000 17.98870000 13.99120000 +O 15.99000000 17.98870000 17.98870000 +O 15.99000000 17.98870000 21.98620000 +O 15.99000000 21.98620000 1.99875000 +O 15.99000000 21.98620000 5.99625000 +O 15.99000000 21.98620000 9.99375000 +O 15.99000000 21.98620000 13.99120000 +O 15.99000000 21.98620000 17.98870000 +O 15.99000000 21.98620000 21.98620000 +O 19.98750000 1.99875000 1.99875000 +O 19.98750000 1.99875000 5.99625000 +O 19.98750000 1.99875000 9.99375000 +O 19.98750000 1.99875000 13.99120000 +O 19.98750000 1.99875000 17.98870000 +O 19.98750000 1.99875000 21.98620000 +O 19.98750000 5.99625000 1.99875000 +O 19.98750000 5.99625000 5.99625000 +O 19.98750000 5.99625000 9.99375000 +O 19.98750000 5.99625000 13.99120000 +O 19.98750000 5.99625000 17.98870000 +O 19.98750000 5.99625000 21.98620000 +O 19.98750000 9.99375000 1.99875000 +O 19.98750000 9.99375000 5.99625000 +O 19.98750000 9.99375000 9.99375000 +O 19.98750000 9.99375000 13.99120000 +O 19.98750000 9.99375000 17.98870000 +O 19.98750000 9.99375000 21.98620000 +O 19.98750000 13.99120000 1.99875000 +O 19.98750000 13.99120000 5.99625000 +O 19.98750000 13.99120000 9.99375000 +O 19.98750000 13.99120000 13.99120000 +O 19.98750000 13.99120000 17.98870000 +O 19.98750000 13.99120000 21.98620000 +O 19.98750000 17.98870000 1.99875000 +O 19.98750000 17.98870000 5.99625000 +O 19.98750000 17.98870000 9.99375000 +O 19.98750000 17.98870000 13.99120000 +O 19.98750000 17.98870000 17.98870000 +O 19.98750000 17.98870000 21.98620000 +O 19.98750000 21.98620000 1.99875000 +O 19.98750000 21.98620000 5.99625000 +O 19.98750000 21.98620000 9.99375000 +O 19.98750000 21.98620000 13.99120000 +O 19.98750000 21.98620000 17.98870000 +O 19.98750000 21.98620000 21.98620000 +1080 +25.11507 0.0 0.0 -0.005043078522169093 23.99892947012968 0.0 -0.05482460032288387 0.06433829446045435 24.020811272075417 +Ba -0.00381606 -0.03647920 0.06838540 +Ba 0.02642510 -0.02580880 4.04818000 +Ba -0.01751390 -0.05678240 7.90392000 +Ba -0.00491312 -0.06764750 11.98130000 +Ba -0.02844770 0.00706528 15.96940000 +Ba -0.14265300 0.09687840 20.14900000 +Ba 0.02882720 3.97704000 0.07769310 +Ba -0.05764520 4.01052000 4.04062000 +Ba 0.03597440 4.07019000 7.96829000 +Ba 0.00521899 4.10599000 11.97750000 +Ba -0.06805140 4.04566000 16.02450000 +Ba -0.04008030 4.05095000 19.99790000 +Ba -0.03770690 7.96782000 -0.07183250 +Ba 0.00708128 8.01987000 3.90283000 +Ba 0.09589330 8.09754000 8.12170000 +Ba -0.01285180 8.04873000 12.02200000 +Ba -0.03138950 8.07546000 15.96910000 +Ba -0.05859750 8.05412000 20.00310000 +Ba -0.03445630 12.09770000 -0.05867040 +Ba -0.06793650 12.06430000 4.09514000 +Ba -0.10777300 12.01340000 7.90747000 +Ba 0.01899680 12.14410000 12.03440000 +Ba -0.06128730 11.97730000 15.93970000 +Ba -0.07826670 12.01170000 19.92830000 +Ba 0.01234560 15.87490000 -0.03393900 +Ba 0.10089400 16.00810000 3.99101000 +Ba -0.04364040 16.08550000 8.01975000 +Ba -0.05872050 16.08520000 12.00480000 +Ba -0.00443129 15.91780000 15.92960000 +Ba -0.04868420 16.12210000 19.98620000 +Ba -0.08827340 19.94730000 0.08130310 +Ba 0.08964670 19.92190000 3.98086000 +Ba -0.09345580 20.05350000 7.98872000 +Ba -0.06121210 20.03230000 12.01280000 +Ba -0.18611000 19.87340000 16.04240000 +Ba 0.06899050 20.00210000 19.95160000 +Ba 4.17059000 0.05115520 -0.03816610 +Ba 4.28852000 0.01060090 4.00212000 +Ba 4.20865000 0.13372600 8.00288000 +Ba 4.16563000 0.02816380 12.09510000 +Ba 4.11748000 -0.01596690 15.97240000 +Ba 4.04165000 0.08981900 20.09740000 +Ba 4.18683000 3.93530000 0.07421850 +Ba 4.12407000 3.94817000 3.97523000 +Ba 4.17034000 4.04693000 7.98184000 +Ba 4.17191000 4.16966000 11.95820000 +Ba 4.07501000 4.06672000 16.04380000 +Ba 4.15393000 4.13016000 20.01090000 +Ba 4.11811000 8.00918000 -0.07297140 +Ba 4.22395000 7.90551000 4.02511000 +Ba 4.08847000 8.04850000 8.04831000 +Ba 4.23300000 8.03574000 12.11400000 +Ba 4.19605000 8.11593000 15.98820000 +Ba 4.15531000 7.96265000 19.99260000 +Ba 4.23591000 11.93680000 -0.06034350 +Ba 4.21083000 11.96210000 3.92652000 +Ba 4.11286000 12.09710000 8.07440000 +Ba 4.21049000 12.14220000 11.97900000 +Ba 4.12493000 11.94890000 16.05560000 +Ba 4.05626000 12.00270000 19.98840000 +Ba 4.17432000 15.96680000 -0.06059280 +Ba 4.29677000 15.88040000 4.00991000 +Ba 4.21207000 16.02180000 8.19218000 +Ba 4.12058000 16.06620000 12.01430000 +Ba 4.09945000 16.02190000 16.03470000 +Ba 4.11518000 15.97470000 20.09970000 +Ba 4.20828000 20.01210000 0.08606140 +Ba 4.14460000 20.08140000 3.94693000 +Ba 4.17875000 20.02820000 7.99900000 +Ba 4.09911000 20.08000000 11.93230000 +Ba 4.05169000 20.10400000 15.93570000 +Ba 4.19195000 20.09290000 20.03630000 +Ba 8.35983000 0.09652280 0.03118210 +Ba 8.38813000 -0.02526530 4.06500000 +Ba 8.38774000 0.03235410 8.05943000 +Ba 8.35937000 0.03932870 12.06190000 +Ba 8.24196000 0.05605940 15.95150000 +Ba 8.23007000 0.06989200 19.86690000 +Ba 8.43943000 4.00841000 0.02984090 +Ba 8.35341000 4.03743000 4.05521000 +Ba 8.34386000 4.07720000 8.07100000 +Ba 8.39164000 3.95744000 11.93780000 +Ba 8.41425000 3.88829000 15.93100000 +Ba 8.27448000 4.03558000 20.08600000 +Ba 8.33073000 8.00232000 0.04183660 +Ba 8.35084000 8.06172000 3.90761000 +Ba 8.38722000 8.10175000 8.12598000 +Ba 8.34589000 8.18990000 12.08380000 +Ba 8.39071000 7.96801000 16.00120000 +Ba 8.45601000 8.07187000 20.06200000 +Ba 8.35749000 11.96340000 -0.13396900 +Ba 8.19653000 12.03940000 4.02708000 +Ba 8.36170000 12.03100000 8.01328000 +Ba 8.35546000 12.01220000 11.97100000 +Ba 8.29724000 12.01610000 16.02920000 +Ba 8.33202000 11.95410000 19.88250000 +Ba 8.30836000 16.10580000 -0.06125180 +Ba 8.38011000 15.86570000 4.03896000 +Ba 8.38841000 15.93990000 8.03633000 +Ba 8.45475000 15.93750000 12.13830000 +Ba 8.28664000 16.03820000 16.02080000 +Ba 8.33307000 16.07040000 20.01060000 +Ba 8.32870000 20.00420000 0.01373540 +Ba 8.38385000 20.03100000 3.93204000 +Ba 8.43910000 20.01950000 7.96916000 +Ba 8.22004000 19.93300000 11.99920000 +Ba 8.21032000 19.92250000 15.96620000 +Ba 8.26599000 20.05940000 20.02390000 +Ba 12.50810000 0.00573562 -0.10112100 +Ba 12.43820000 0.06886510 4.10691000 +Ba 12.63220000 0.03423090 7.89434000 +Ba 12.52060000 0.01794160 11.96900000 +Ba 12.50170000 -0.01505830 16.00000000 +Ba 12.55150000 0.07905630 19.98670000 +Ba 12.56380000 3.95902000 0.08868370 +Ba 12.55280000 4.03911000 4.09595000 +Ba 12.54790000 4.12914000 8.03850000 +Ba 12.67550000 4.20581000 12.12110000 +Ba 12.53610000 4.15153000 15.99890000 +Ba 12.60290000 4.11032000 20.02510000 +Ba 12.52930000 8.05901000 0.07055700 +Ba 12.52340000 8.01483000 4.13592000 +Ba 12.48790000 8.01292000 8.07748000 +Ba 12.48680000 8.02658000 12.15700000 +Ba 12.48320000 8.08653000 16.00650000 +Ba 12.51690000 8.07956000 20.02910000 +Ba 12.54160000 12.11150000 -0.01321450 +Ba 12.48510000 11.94620000 4.03671000 +Ba 12.56410000 11.96890000 7.92402000 +Ba 12.59620000 11.96300000 11.88030000 +Ba 12.59640000 12.16310000 16.03910000 +Ba 12.46330000 12.10510000 19.91320000 +Ba 12.67140000 16.02410000 -0.10397200 +Ba 12.50950000 15.97020000 3.97590000 +Ba 12.64350000 16.16860000 8.02980000 +Ba 12.41820000 15.98980000 11.89730000 +Ba 12.44480000 16.00310000 15.93100000 +Ba 12.52160000 16.13480000 19.77190000 +Ba 12.62620000 20.01130000 -0.01445690 +Ba 12.45860000 20.05690000 3.94395000 +Ba 12.52420000 19.94860000 8.02287000 +Ba 12.39240000 20.06210000 11.98430000 +Ba 12.51710000 20.03470000 16.01970000 +Ba 12.50350000 20.08490000 19.93350000 +Ba 16.56040000 0.01037360 0.02800700 +Ba 16.70100000 0.03799460 3.98681000 +Ba 16.67650000 0.04301960 7.96185000 +Ba 16.66180000 -0.00289580 11.97540000 +Ba 16.67610000 0.10419700 15.99930000 +Ba 16.67790000 0.20556600 20.11800000 +Ba 16.65580000 3.94576000 -0.05609250 +Ba 16.69370000 4.07616000 3.94290000 +Ba 16.73300000 4.06901000 7.92107000 +Ba 16.85990000 3.97627000 11.92290000 +Ba 16.71500000 3.98251000 15.99350000 +Ba 16.78320000 4.11086000 20.12470000 +Ba 16.83190000 7.94147000 -0.05540830 +Ba 16.63600000 8.01238000 3.97505000 +Ba 16.66130000 8.04034000 8.00733000 +Ba 16.82020000 8.00566000 11.95420000 +Ba 16.64940000 8.05522000 16.00770000 +Ba 16.56360000 8.12375000 20.06990000 +Ba 16.73790000 12.05110000 0.01536350 +Ba 16.69220000 12.17130000 3.96682000 +Ba 16.74260000 11.96000000 8.12191000 +Ba 16.69340000 12.01690000 12.03980000 +Ba 16.64480000 11.85590000 16.08990000 +Ba 16.59080000 12.02360000 19.93400000 +Ba 16.62100000 15.98610000 -0.00586329 +Ba 16.74260000 16.03550000 4.02356000 +Ba 16.75270000 15.95840000 8.09888000 +Ba 16.70700000 15.98000000 12.09560000 +Ba 16.75940000 16.09910000 15.99310000 +Ba 16.68770000 16.06940000 19.97180000 +Ba 16.74390000 19.97740000 -0.01417630 +Ba 16.65480000 20.05310000 3.88790000 +Ba 16.75000000 20.03530000 8.06489000 +Ba 16.69590000 20.03530000 11.95780000 +Ba 16.74070000 20.02170000 16.11360000 +Ba 16.69150000 20.14470000 20.02130000 +Ba 20.95790000 -0.02656800 0.10388200 +Ba 21.02880000 0.04010300 4.02627000 +Ba 20.76240000 -0.13764700 8.00113000 +Ba 20.75580000 0.02030850 11.96590000 +Ba 20.81700000 -0.00478688 16.02120000 +Ba 20.91200000 -0.02975920 19.98620000 +Ba 20.97090000 3.96775000 0.05917190 +Ba 21.06970000 4.00314000 4.07056000 +Ba 20.84730000 4.09283000 7.88580000 +Ba 20.91710000 3.94505000 11.97990000 +Ba 20.87380000 4.10074000 16.00890000 +Ba 20.84610000 4.04248000 20.00510000 +Ba 20.83480000 7.93172000 0.09649040 +Ba 20.89480000 8.02409000 4.04254000 +Ba 20.93160000 7.95122000 8.06882000 +Ba 20.98920000 8.10133000 12.00690000 +Ba 20.91710000 7.98494000 16.05110000 +Ba 20.85680000 7.95493000 20.21540000 +Ba 20.81230000 11.91290000 0.02532200 +Ba 20.84390000 12.02460000 3.93620000 +Ba 20.88090000 11.98950000 8.03088000 +Ba 20.83830000 11.96610000 12.06580000 +Ba 20.85900000 11.97860000 15.96700000 +Ba 20.88990000 12.01580000 19.99060000 +Ba 20.94420000 16.00090000 -0.00660418 +Ba 20.82960000 16.06340000 4.17036000 +Ba 20.82840000 16.08960000 7.95611000 +Ba 20.83030000 16.07420000 12.06680000 +Ba 20.90090000 16.04700000 15.98210000 +Ba 20.81760000 15.99170000 20.03040000 +Ba 20.88100000 20.05510000 0.01731710 +Ba 20.87750000 19.89930000 3.95102000 +Ba 20.83610000 20.06310000 8.14940000 +Ba 20.83200000 20.03090000 12.03740000 +Ba 20.79310000 20.03450000 16.04830000 +Ba 20.96430000 19.99250000 20.03560000 +Ti 2.01265000 1.89565000 2.09092000 +Ti 1.95618000 2.04605000 6.09494000 +Ti 1.92087000 2.06093000 10.07780000 +Ti 1.92475000 2.08069000 14.07250000 +Ti 1.92935000 1.96147000 18.02090000 +Ti 1.93959000 2.00553000 22.07760000 +Ti 2.33087000 6.04462000 2.03831000 +Ti 1.95902000 6.00912000 6.04290000 +Ti 2.09111000 6.14026000 10.06660000 +Ti 2.28469000 6.09632000 14.04940000 +Ti 1.98388000 6.03632000 18.03550000 +Ti 2.03802000 6.03544000 22.15820000 +Ti 1.96026000 10.05130000 1.99926000 +Ti 2.09414000 10.00010000 6.02369000 +Ti 2.00882000 10.12750000 10.09840000 +Ti 2.00552000 10.12000000 14.07700000 +Ti 1.84010000 9.87067000 17.98180000 +Ti 1.89006000 9.94056000 22.03410000 +Ti 2.03531000 13.92460000 2.06454000 +Ti 2.01251000 13.94510000 6.07290000 +Ti 2.25163000 14.17630000 10.06270000 +Ti 2.02449000 14.03070000 14.08470000 +Ti 1.93150000 13.84420000 18.07780000 +Ti 1.90462000 13.97310000 22.03620000 +Ti 2.09787000 17.81770000 1.88837000 +Ti 1.93993000 17.95650000 5.97807000 +Ti 2.05346000 18.14760000 9.96204000 +Ti 1.92913000 17.96940000 13.97250000 +Ti 1.99073000 17.89010000 17.95290000 +Ti 2.00331000 18.03710000 22.05260000 +Ti 2.02903000 21.96170000 2.00312000 +Ti 2.07448000 21.94060000 6.05426000 +Ti 2.03809000 22.06560000 10.02150000 +Ti 1.91760000 21.97100000 14.13700000 +Ti 1.89895000 21.95470000 18.11980000 +Ti 1.86863000 22.05780000 22.04730000 +Ti 6.25495000 1.95724000 2.07933000 +Ti 6.26934000 2.07359000 6.17485000 +Ti 6.16889000 2.15294000 10.05260000 +Ti 6.06870000 2.08449000 13.91100000 +Ti 6.00432000 2.07777000 18.02620000 +Ti 6.19621000 2.01099000 22.08890000 +Ti 6.46066000 5.87242000 2.10786000 +Ti 6.23718000 5.99257000 6.06054000 +Ti 6.25969000 6.12433000 10.11900000 +Ti 6.46395000 5.99246000 14.10250000 +Ti 6.15951000 6.05349000 18.07540000 +Ti 6.06559000 6.04573000 22.15460000 +Ti 6.20881000 9.89274000 2.05927000 +Ti 6.18475000 9.99513000 6.14153000 +Ti 6.07784000 10.13870000 10.00390000 +Ti 6.00638000 10.04230000 14.03340000 +Ti 6.14946000 9.95379000 18.10700000 +Ti 6.19740000 9.92212000 22.05970000 +Ti 6.12296000 13.89220000 1.93099000 +Ti 6.07749000 13.97490000 6.15604000 +Ti 6.52381000 14.10940000 10.15220000 +Ti 6.06122000 14.06210000 14.08750000 +Ti 6.16584000 13.94870000 18.05640000 +Ti 6.15516000 13.96590000 22.07530000 +Ti 6.19265000 17.89910000 2.05953000 +Ti 6.21715000 17.97690000 6.06651000 +Ti 6.15072000 18.10840000 10.04790000 +Ti 6.09710000 18.03890000 14.01820000 +Ti 6.02911000 18.06520000 18.00920000 +Ti 6.04909000 18.04610000 22.06980000 +Ti 6.21637000 21.95740000 1.98730000 +Ti 6.13754000 21.99930000 6.02080000 +Ti 6.23043000 22.17890000 10.08230000 +Ti 6.09864000 22.12620000 14.06460000 +Ti 6.06520000 22.05550000 17.98100000 +Ti 6.12270000 21.99450000 22.00440000 +Ti 10.38780000 1.95498000 1.95747000 +Ti 10.34800000 1.99519000 6.05225000 +Ti 10.51560000 2.11102000 10.01790000 +Ti 10.41520000 2.07819000 14.02190000 +Ti 10.37920000 2.03689000 17.98270000 +Ti 10.32870000 2.18486000 21.92810000 +Ti 10.71930000 5.99826000 2.08863000 +Ti 10.29130000 6.03667000 6.08186000 +Ti 10.36860000 6.03774000 10.12320000 +Ti 10.45720000 6.09458000 13.97550000 +Ti 10.29960000 5.96981000 17.99000000 +Ti 10.34140000 6.10914000 22.10050000 +Ti 10.31500000 9.99786000 2.05011000 +Ti 10.36950000 9.97015000 6.09676000 +Ti 10.38470000 10.07730000 10.10190000 +Ti 10.33420000 10.13570000 14.13100000 +Ti 10.35360000 9.99844000 18.11290000 +Ti 10.36210000 10.09520000 22.16940000 +Ti 10.29120000 14.01150000 2.03970000 +Ti 10.42620000 14.04270000 6.06521000 +Ti 10.67220000 13.97930000 9.94441000 +Ti 10.28220000 14.04960000 14.00610000 +Ti 10.28740000 14.00650000 17.98040000 +Ti 10.27780000 14.10810000 21.99070000 +Ti 10.39350000 18.04930000 2.05698000 +Ti 10.35590000 17.97940000 6.03376000 +Ti 10.25280000 18.01660000 10.04280000 +Ti 10.22670000 18.07910000 14.05240000 +Ti 10.26680000 18.01630000 17.88620000 +Ti 10.29320000 18.11310000 22.02140000 +Ti 10.32800000 22.06760000 1.90044000 +Ti 10.34370000 21.96600000 6.06488000 +Ti 10.27510000 22.18150000 10.02030000 +Ti 10.27090000 22.07750000 14.02370000 +Ti 10.30670000 22.09690000 17.87940000 +Ti 10.27910000 22.07560000 21.86520000 +Ti 14.53430000 2.07060000 2.10191000 +Ti 14.55280000 2.05495000 6.09199000 +Ti 14.59040000 2.17922000 10.19390000 +Ti 14.53970000 2.10322000 14.13150000 +Ti 14.56080000 2.15370000 18.19140000 +Ti 14.36100000 2.12526000 22.13680000 +Ti 14.81430000 6.08669000 1.91993000 +Ti 14.54690000 6.09534000 5.98697000 +Ti 14.56170000 6.12140000 9.95310000 +Ti 14.83300000 6.14398000 13.99270000 +Ti 14.54510000 6.10304000 18.01910000 +Ti 14.51240000 6.12661000 21.97260000 +Ti 14.48240000 10.05130000 1.97863000 +Ti 14.54700000 10.06580000 5.96002000 +Ti 14.55660000 10.08780000 9.98778000 +Ti 14.52420000 10.02480000 14.03930000 +Ti 14.43480000 10.11060000 18.04180000 +Ti 14.27330000 10.14870000 22.06890000 +Ti 14.51920000 14.07080000 1.97513000 +Ti 14.50130000 14.10180000 5.92469000 +Ti 14.83240000 14.15750000 9.88898000 +Ti 14.57690000 14.05090000 14.02270000 +Ti 14.56810000 14.12670000 17.93640000 +Ti 14.36630000 14.20270000 21.90260000 +Ti 14.44040000 18.03280000 1.89012000 +Ti 14.56530000 18.20760000 5.84079000 +Ti 14.45250000 18.12870000 9.92300000 +Ti 14.50720000 18.06840000 13.87500000 +Ti 14.55700000 18.19130000 17.93770000 +Ti 14.54590000 18.21500000 21.89230000 +Ti 14.41650000 22.14330000 2.00919000 +Ti 14.60560000 22.07770000 6.03801000 +Ti 14.52810000 22.01060000 9.95791000 +Ti 14.55400000 22.02730000 13.94050000 +Ti 14.53180000 22.23370000 18.03190000 +Ti 14.43590000 22.20470000 22.02910000 +Ti 18.66130000 1.99382000 2.05389000 +Ti 18.70410000 1.86850000 5.90537000 +Ti 18.69280000 2.08317000 9.94458000 +Ti 18.69430000 2.09952000 14.07340000 +Ti 18.68560000 1.90307000 18.12060000 +Ti 18.72650000 1.99258000 22.17380000 +Ti 18.94530000 5.92426000 1.99552000 +Ti 18.61020000 5.96116000 5.84763000 +Ti 18.72610000 6.06408000 9.86772000 +Ti 18.98450000 6.07764000 13.93670000 +Ti 18.65640000 6.01081000 17.99570000 +Ti 18.68220000 6.01349000 22.03910000 +Ti 18.53850000 10.02480000 2.04943000 +Ti 18.58570000 9.93044000 5.95447000 +Ti 18.64520000 9.94169000 10.00580000 +Ti 18.74790000 9.91395000 14.00370000 +Ti 18.64220000 9.87815000 17.92780000 +Ti 18.70970000 10.01710000 21.94370000 +Ti 18.73190000 14.00270000 1.91664000 +Ti 18.75410000 13.91900000 5.91943000 +Ti 18.97830000 14.03400000 10.11400000 +Ti 18.65700000 13.89180000 14.01740000 +Ti 18.71370000 13.93800000 17.99660000 +Ti 18.70460000 13.97960000 21.89820000 +Ti 18.71740000 17.99760000 2.05385000 +Ti 18.62090000 17.99230000 6.09750000 +Ti 18.68810000 18.08640000 10.07040000 +Ti 18.70740000 17.99140000 14.12610000 +Ti 18.72370000 18.01070000 18.01880000 +Ti 18.70480000 17.99570000 22.02880000 +Ti 18.72970000 22.03770000 1.90179000 +Ti 18.65800000 21.86720000 5.90886000 +Ti 18.59120000 21.97630000 9.99422000 +Ti 18.54110000 22.01820000 14.06750000 +Ti 18.73820000 22.01040000 18.05510000 +Ti 18.55720000 22.12100000 22.03130000 +Ti 22.95230000 2.03339000 2.04842000 +Ti 22.93920000 1.90980000 6.09119000 +Ti 22.88100000 2.03913000 10.04250000 +Ti 22.92100000 1.96694000 14.09610000 +Ti 22.90120000 2.02639000 18.14640000 +Ti 22.84130000 2.07714000 22.00650000 +Ti 23.20620000 6.03598000 2.02308000 +Ti 22.96150000 6.02429000 6.05859000 +Ti 22.92540000 6.02281000 10.02010000 +Ti 23.24930000 5.94173000 14.06430000 +Ti 22.90340000 5.97183000 18.13360000 +Ti 22.79610000 6.02248000 22.14880000 +Ti 22.94440000 10.08780000 2.06222000 +Ti 22.97080000 9.97841000 6.04313000 +Ti 22.97920000 9.98792000 10.08760000 +Ti 22.87160000 9.98738000 14.10540000 +Ti 22.90680000 9.83559000 18.04580000 +Ti 22.88700000 9.97192000 22.09930000 +Ti 22.88750000 14.06510000 2.12103000 +Ti 22.74180000 14.01770000 6.10125000 +Ti 23.17410000 14.05280000 10.08380000 +Ti 22.91490000 14.00460000 13.97520000 +Ti 22.81610000 13.95240000 18.01650000 +Ti 22.82200000 13.96940000 22.02850000 +Ti 22.86190000 18.05910000 2.05591000 +Ti 22.89350000 17.97570000 6.00822000 +Ti 22.81710000 17.96490000 9.99990000 +Ti 22.87810000 18.00750000 14.01800000 +Ti 22.79960000 17.93310000 18.04530000 +Ti 22.79860000 18.00920000 22.01020000 +Ti 23.00070000 22.10270000 2.13802000 +Ti 22.87960000 21.90910000 6.05604000 +Ti 22.78350000 22.01060000 10.06510000 +Ti 22.79110000 22.10280000 14.06230000 +Ti 22.88420000 21.98470000 18.04560000 +Ti 22.86280000 22.05290000 22.13810000 +O 2.07681000 2.02480000 -0.12818800 +O 2.22395000 2.08339000 3.87630000 +O 2.10372000 2.09753000 7.95915000 +O 2.11148000 2.09216000 11.92070000 +O 2.21595000 2.00526000 16.05460000 +O 2.16851000 2.03205000 20.00640000 +O 2.23181000 6.01104000 -0.03736540 +O 2.23277000 6.04582000 4.00756000 +O 2.32408000 6.07435000 7.96247000 +O 2.20968000 6.10829000 11.92880000 +O 2.21523000 6.05300000 15.95080000 +O 2.16334000 6.15551000 19.85710000 +O 2.25800000 10.02630000 -0.11016800 +O 2.22181000 9.93798000 3.92400000 +O 2.31219000 10.05740000 7.81110000 +O 2.30896000 10.08060000 11.94170000 +O 2.15743000 10.02910000 15.98390000 +O 2.14586000 9.93074000 19.91260000 +O 2.03975000 14.01160000 -0.16973800 +O 2.25164000 13.86010000 3.90665000 +O 2.11762000 14.06920000 7.93927000 +O 2.11551000 13.93540000 12.02550000 +O 2.15536000 13.96530000 15.99040000 +O 2.10292000 14.08600000 19.89880000 +O 2.26519000 17.99430000 -0.00260229 +O 2.14362000 18.06740000 3.99932000 +O 2.17875000 18.01290000 7.99947000 +O 2.26661000 18.11940000 12.00390000 +O 2.07426000 18.08410000 15.96410000 +O 2.22978000 18.06120000 20.07070000 +O 2.09908000 22.18900000 -0.05503940 +O 2.30390000 22.15400000 3.97132000 +O 2.43997000 22.15440000 7.88224000 +O 2.15284000 22.00460000 11.88200000 +O 2.12541000 21.98950000 16.07240000 +O 2.07716000 22.10600000 20.05670000 +O 6.59920000 2.13896000 -0.07304800 +O 6.40342000 2.13042000 3.86043000 +O 6.45611000 2.02621000 8.07481000 +O 6.33268000 2.02964000 11.95790000 +O 6.16944000 2.09009000 15.99310000 +O 6.26327000 2.10133000 19.95360000 +O 6.33164000 6.00545000 -0.04878160 +O 6.37774000 6.00972000 3.95008000 +O 6.39820000 6.00575000 7.82731000 +O 6.37077000 6.00153000 11.97900000 +O 6.29813000 5.98795000 15.99220000 +O 6.24086000 6.04316000 19.89670000 +O 6.34384000 9.95857000 -0.07793230 +O 6.31106000 10.10880000 4.01387000 +O 6.22924000 10.07130000 8.07259000 +O 6.29810000 9.98777000 11.93190000 +O 6.23765000 9.97942000 15.81580000 +O 6.37035000 10.03330000 19.92270000 +O 6.44367000 14.02860000 -0.11609300 +O 6.35689000 13.93950000 3.85781000 +O 6.14325000 13.94600000 7.99519000 +O 6.33547000 14.00610000 11.99710000 +O 6.30591000 13.94460000 15.94310000 +O 6.35156000 14.11280000 19.89540000 +O 6.30720000 17.95540000 -0.06515700 +O 6.42954000 18.00190000 3.92486000 +O 6.35497000 18.02830000 7.86765000 +O 6.38483000 17.96290000 11.90250000 +O 6.31721000 18.03200000 15.90310000 +O 6.17692000 18.07050000 19.84250000 +O 6.26685000 22.05530000 -0.02767020 +O 6.39744000 22.10730000 4.04255000 +O 6.40353000 22.14060000 7.93691000 +O 6.31413000 22.17370000 12.00720000 +O 6.24094000 22.10190000 16.04170000 +O 6.27770000 22.11550000 19.97500000 +O 10.51050000 2.01677000 0.10896300 +O 10.58930000 2.05710000 4.17460000 +O 10.60470000 2.09225000 8.04179000 +O 10.56820000 1.94128000 12.07830000 +O 10.61740000 1.92980000 16.03080000 +O 10.46750000 2.03985000 20.01600000 +O 10.51460000 5.98494000 -0.05413580 +O 10.61540000 5.99507000 4.00611000 +O 10.55540000 6.01003000 8.06779000 +O 10.39940000 5.99127000 12.04580000 +O 10.38090000 5.97963000 16.03420000 +O 10.56440000 6.04523000 19.88890000 +O 10.58220000 10.06870000 -0.05734440 +O 10.59910000 10.07180000 3.90999000 +O 10.56430000 9.90273000 7.96122000 +O 10.51490000 10.07140000 12.02580000 +O 10.52850000 10.08540000 15.94380000 +O 10.50720000 10.06780000 19.90060000 +O 10.50390000 13.95670000 -0.10119100 +O 10.50510000 14.06150000 3.94721000 +O 10.60060000 14.04050000 7.97796000 +O 10.57420000 13.93550000 12.00790000 +O 10.48580000 14.05360000 15.88750000 +O 10.64610000 14.09510000 19.80910000 +O 10.53620000 18.14410000 -0.18964000 +O 10.66080000 17.94960000 3.88929000 +O 10.55180000 17.97160000 7.88211000 +O 10.47190000 18.02510000 11.97040000 +O 10.55810000 17.87850000 15.85510000 +O 10.38510000 18.03940000 19.77420000 +O 10.46820000 21.90400000 0.10982000 +O 10.44480000 22.10890000 4.15420000 +O 10.56770000 21.85300000 8.10296000 +O 10.46960000 21.98830000 11.95290000 +O 10.46920000 22.10300000 16.00650000 +O 10.48910000 22.04600000 20.08220000 +O 14.64210000 1.95903000 -0.06840080 +O 14.50480000 1.96316000 3.88707000 +O 14.67990000 2.00050000 7.99560000 +O 14.82290000 1.94644000 11.97030000 +O 14.75330000 2.08603000 15.92200000 +O 14.69490000 2.03463000 19.98840000 +O 14.60750000 5.92241000 0.05318850 +O 14.81500000 6.00691000 4.09997000 +O 14.72050000 5.89553000 8.06291000 +O 14.64190000 6.06855000 12.12660000 +O 14.67020000 6.00433000 16.01530000 +O 14.65590000 6.03835000 20.17500000 +O 14.58900000 9.94945000 -0.01896030 +O 14.74640000 9.94950000 4.00145000 +O 14.81350000 10.10030000 8.02371000 +O 14.70470000 10.04330000 12.04060000 +O 14.68380000 10.06430000 15.96500000 +O 14.67140000 10.08200000 20.01890000 +O 14.68950000 14.02390000 -0.03998390 +O 14.81530000 14.09090000 4.02005000 +O 14.85770000 14.06250000 7.99911000 +O 14.68850000 14.00730000 12.14300000 +O 14.77040000 13.93530000 16.12570000 +O 14.63870000 13.94350000 20.13460000 +O 14.87090000 18.10610000 -0.01005330 +O 14.73210000 18.02240000 3.96865000 +O 14.65390000 18.06900000 8.11628000 +O 14.72650000 18.12390000 11.98640000 +O 14.73870000 18.10660000 16.12060000 +O 14.80110000 18.05730000 20.06080000 +O 14.66550000 22.08310000 0.04301880 +O 14.71650000 21.84150000 3.89857000 +O 14.71990000 21.98050000 7.91651000 +O 14.69470000 21.96370000 12.08170000 +O 14.70680000 21.98660000 16.06330000 +O 14.65180000 21.99660000 19.97390000 +O 18.92860000 1.90634000 0.08626130 +O 18.86330000 1.92549000 3.99710000 +O 18.85330000 1.99262000 7.89288000 +O 18.91750000 2.13225000 11.89650000 +O 18.75360000 1.97265000 15.97040000 +O 18.83780000 2.00605000 19.93320000 +O 18.75000000 5.92905000 0.09698910 +O 18.84640000 6.07854000 4.01361000 +O 18.94370000 5.94216000 7.98381000 +O 18.73740000 5.98521000 12.12520000 +O 18.80570000 6.01157000 15.97530000 +O 18.89370000 6.09085000 20.07240000 +O 18.98260000 9.85995000 0.06460710 +O 18.83490000 9.93336000 4.01625000 +O 18.83700000 9.82205000 8.12478000 +O 18.95130000 9.87367000 11.94460000 +O 18.80810000 9.91693000 16.07700000 +O 18.87570000 10.09120000 19.96530000 +O 19.01840000 13.99580000 0.16003800 +O 18.98760000 13.98860000 4.07754000 +O 18.86240000 14.11130000 8.16172000 +O 18.85380000 13.85270000 12.04080000 +O 18.90920000 14.08720000 15.94350000 +O 18.98810000 13.93470000 20.09760000 +O 18.87210000 18.03470000 -0.10512100 +O 18.84350000 18.05920000 3.92397000 +O 18.83950000 18.09800000 7.95128000 +O 18.86190000 18.13570000 12.06820000 +O 18.78180000 18.06150000 15.98480000 +O 18.89940000 18.11650000 19.98600000 +O 18.71750000 22.19450000 -0.08744780 +O 18.81440000 21.95750000 4.01668000 +O 18.86850000 22.03190000 8.01217000 +O 18.67970000 22.06740000 11.93200000 +O 18.88810000 22.13240000 15.95000000 +O 18.80070000 22.15490000 20.07010000 +O 23.12470000 1.90452000 -0.03436290 +O 23.11680000 2.08813000 3.97104000 +O 23.29430000 1.88653000 7.94538000 +O 23.02510000 1.97906000 11.93990000 +O 23.09590000 1.96536000 15.92750000 +O 22.97440000 2.15796000 20.00430000 +O 23.10560000 5.98219000 -0.09725250 +O 23.10280000 6.07207000 3.95806000 +O 23.05700000 6.04343000 7.98318000 +O 23.13430000 6.01379000 11.90600000 +O 23.08960000 6.03629000 15.92260000 +O 23.13360000 6.00431000 20.01350000 +O 23.14320000 9.92866000 -0.06837310 +O 23.16480000 10.09840000 3.96356000 +O 23.09500000 10.10330000 8.03679000 +O 23.19460000 10.10190000 12.01940000 +O 23.04740000 10.01850000 15.95100000 +O 23.01180000 10.06640000 19.86740000 +O 23.09690000 14.06430000 -0.09508440 +O 23.13580000 13.84520000 4.02749000 +O 22.97070000 14.04360000 7.89578000 +O 23.14160000 14.18590000 12.01150000 +O 23.12170000 14.20940000 15.86030000 +O 22.94950000 14.08640000 19.88120000 +O 23.03480000 17.95390000 0.12853200 +O 23.16560000 18.07990000 3.96748000 +O 22.90890000 18.03590000 7.99441000 +O 23.04490000 17.93510000 11.97530000 +O 22.94000000 18.06560000 16.09890000 +O 22.97720000 18.07240000 20.08880000 +O 23.06400000 22.03700000 0.01005890 +O 23.08840000 22.09460000 3.96165000 +O 23.04430000 21.91800000 7.90827000 +O 23.09050000 22.15190000 11.95030000 +O 23.03920000 22.01600000 15.91720000 +O 23.09840000 22.06090000 19.83890000 +O 2.10816000 0.05999250 2.01213000 +O 2.31505000 0.22076800 5.99429000 +O 2.20095000 0.11556600 9.99895000 +O 2.11895000 0.05503780 13.91010000 +O 2.14770000 0.02192170 18.05080000 +O 2.08585000 0.09244070 21.99050000 +O 2.11507000 4.16212000 1.88768000 +O 2.15699000 4.13217000 5.92379000 +O 2.00137000 4.11491000 9.93166000 +O 2.12139000 4.14110000 13.96030000 +O 2.25350000 4.00695000 18.02400000 +O 2.18000000 4.16824000 21.99530000 +O 2.22288000 8.07509000 1.98452000 +O 2.15970000 8.03161000 6.09853000 +O 2.15977000 8.09110000 9.84689000 +O 2.25021000 7.99588000 14.12290000 +O 1.97816000 8.09564000 17.93900000 +O 2.06789000 8.11562000 21.99500000 +O 2.20117000 12.03000000 1.93319000 +O 2.28730000 12.02490000 6.03654000 +O 2.07907000 11.99340000 10.01320000 +O 2.09153000 12.03410000 14.03600000 +O 2.07134000 12.02110000 17.95730000 +O 2.04828000 12.09900000 21.80650000 +O 2.35488000 15.98360000 2.00143000 +O 2.17323000 16.10690000 5.91021000 +O 2.07852000 15.99780000 10.05660000 +O 2.05072000 16.06750000 13.90760000 +O 2.15112000 16.12990000 17.92130000 +O 2.05717000 15.98320000 21.98140000 +O 2.23774000 20.13170000 1.88798000 +O 2.14853000 20.07400000 6.01622000 +O 2.21709000 20.07910000 9.90561000 +O 2.09769000 20.16500000 14.03050000 +O 2.09243000 20.08130000 17.98410000 +O 2.11876000 20.10950000 22.01410000 +O 6.36222000 0.09320680 1.95909000 +O 6.34646000 0.02992010 6.04630000 +O 6.37281000 0.03997880 10.05400000 +O 6.24519000 0.04432500 13.89450000 +O 6.26030000 0.14264500 17.99350000 +O 6.24201000 0.11612000 22.01180000 +O 6.37850000 3.99974000 1.92865000 +O 6.51401000 4.03235000 6.00945000 +O 6.44343000 4.04473000 10.06930000 +O 6.25050000 3.99274000 13.91620000 +O 6.32657000 4.10893000 17.95020000 +O 6.33016000 4.12821000 21.96570000 +O 6.39937000 8.06026000 1.99464000 +O 6.41071000 8.18593000 5.97753000 +O 6.40439000 8.02388000 10.00410000 +O 6.24895000 7.96818000 13.90990000 +O 6.51909000 8.02841000 18.04730000 +O 6.46032000 8.01192000 22.00390000 +O 6.29673000 12.03620000 1.82325000 +O 6.34222000 12.09570000 6.11142000 +O 6.24461000 12.02380000 9.98421000 +O 6.20309000 11.98400000 13.97820000 +O 6.28674000 11.98190000 17.95610000 +O 6.28936000 12.06650000 22.01760000 +O 6.28281000 16.09350000 1.91635000 +O 6.49026000 15.90550000 5.92139000 +O 6.33266000 15.94630000 10.04540000 +O 6.27307000 15.97740000 14.03310000 +O 6.38796000 16.03070000 17.86730000 +O 6.17551000 16.16630000 21.91030000 +O 6.34243000 20.07500000 1.91079000 +O 6.30640000 20.02770000 6.07923000 +O 6.23347000 19.92430000 10.06670000 +O 6.27213000 19.94170000 13.93640000 +O 6.24679000 20.04290000 18.02050000 +O 6.25023000 20.08330000 21.98710000 +O 10.50040000 0.00078254 2.02822000 +O 10.57900000 0.01985330 6.17224000 +O 10.53660000 0.06112690 10.01670000 +O 10.46760000 -0.06103570 14.05170000 +O 10.56940000 -0.01023630 18.08200000 +O 10.55840000 0.14795800 22.09760000 +O 10.44290000 4.01529000 2.14100000 +O 10.47370000 4.14849000 6.05236000 +O 10.62320000 4.11602000 10.08370000 +O 10.40810000 3.99093000 13.96330000 +O 10.55940000 3.97949000 18.08870000 +O 10.45970000 4.06154000 22.07300000 +O 10.40380000 8.03037000 1.98087000 +O 10.53480000 8.11763000 5.97926000 +O 10.51330000 7.96639000 10.08720000 +O 10.44700000 7.92251000 14.07130000 +O 10.48060000 8.00671000 17.99550000 +O 10.54880000 8.01107000 22.04130000 +O 10.45440000 12.02170000 1.95684000 +O 10.64210000 12.01480000 5.98421000 +O 10.62700000 11.99270000 9.87811000 +O 10.54460000 11.98500000 13.99810000 +O 10.46740000 12.05360000 17.97150000 +O 10.48930000 11.99160000 21.84740000 +O 10.53780000 16.04480000 1.86025000 +O 10.72910000 16.06770000 6.00470000 +O 10.43610000 15.98210000 9.94118000 +O 10.47770000 15.90080000 13.84860000 +O 10.52070000 16.06240000 17.78300000 +O 10.52040000 16.00850000 21.95180000 +O 10.51960000 20.03160000 2.09631000 +O 10.45180000 19.96290000 5.95699000 +O 10.55220000 19.85310000 9.91878000 +O 10.45940000 19.93000000 14.05760000 +O 10.35680000 20.07760000 17.80700000 +O 10.48010000 20.01820000 21.96420000 +O 14.71290000 0.01517220 2.00899000 +O 14.64300000 -0.02633370 5.88846000 +O 14.77730000 -0.08591990 9.98707000 +O 14.64800000 -0.07937410 13.98420000 +O 14.68960000 0.02102220 18.02470000 +O 14.54890000 -0.00227341 21.95320000 +O 14.63860000 3.94676000 2.02557000 +O 14.72320000 3.86297000 5.93510000 +O 14.80850000 4.05660000 10.14340000 +O 14.62630000 4.02110000 14.07770000 +O 14.69040000 4.00601000 18.18240000 +O 14.65660000 3.91689000 21.99570000 +O 14.70240000 7.91689000 1.89354000 +O 14.77810000 7.88860000 6.02057000 +O 14.82310000 7.97266000 10.03290000 +O 14.59840000 7.97076000 14.10600000 +O 14.75130000 7.98141000 18.02430000 +O 14.43550000 7.98508000 21.99440000 +O 14.65310000 12.04960000 2.02051000 +O 14.68200000 11.94070000 5.97268000 +O 14.64030000 11.92700000 9.95213000 +O 14.74430000 12.02110000 13.93630000 +O 14.60240000 11.92690000 18.12140000 +O 14.39620000 11.92920000 22.02700000 +O 14.64830000 15.93660000 1.90856000 +O 14.61180000 15.87770000 6.01313000 +O 14.84280000 15.97180000 10.00560000 +O 14.75700000 16.08650000 14.11930000 +O 14.70580000 15.91590000 18.17140000 +O 14.73700000 16.01460000 21.94080000 +O 14.61660000 19.92470000 1.94852000 +O 14.83140000 20.01590000 5.94142000 +O 14.63370000 20.00510000 9.95731000 +O 14.73210000 19.92450000 14.08270000 +O 14.71820000 20.07190000 18.05810000 +O 14.72700000 20.02850000 22.03230000 +O 18.96670000 0.00631610 2.09514000 +O 18.85800000 -0.02403910 5.93536000 +O 18.92460000 0.08598130 9.92676000 +O 18.75830000 0.12549500 13.96790000 +O 18.86160000 0.12026900 17.88950000 +O 18.86640000 0.15841000 21.97110000 +O 18.78010000 3.90981000 2.08899000 +O 18.95750000 4.17892000 5.79154000 +O 18.88920000 4.10656000 9.96910000 +O 18.87580000 4.02570000 14.12420000 +O 18.88880000 4.14495000 18.07920000 +O 18.71790000 4.08685000 22.09300000 +O 18.82160000 7.99095000 2.15423000 +O 18.96870000 8.07335000 6.02069000 +O 18.83300000 7.94875000 9.99065000 +O 18.92260000 8.05210000 13.99150000 +O 18.80140000 8.01449000 18.10390000 +O 18.86380000 8.06957000 21.88300000 +O 18.82360000 11.93760000 2.01657000 +O 18.89620000 11.94940000 6.06742000 +O 18.79180000 11.97800000 9.96231000 +O 18.89570000 12.02050000 13.98050000 +O 18.80680000 12.15160000 17.89680000 +O 19.02590000 12.09420000 22.12320000 +O 18.84780000 15.99810000 2.00216000 +O 18.90350000 16.06230000 6.11596000 +O 18.93630000 16.10270000 10.21090000 +O 18.79180000 16.07770000 14.10560000 +O 18.98660000 16.05490000 17.98260000 +O 18.83140000 16.04170000 22.02300000 +O 18.93930000 20.14820000 1.94180000 +O 18.82470000 20.06770000 5.99462000 +O 18.92260000 20.02180000 10.02300000 +O 18.92600000 20.16280000 14.04930000 +O 18.85450000 20.15410000 18.09080000 +O 18.74520000 20.25600000 22.02720000 +O 23.12110000 0.03258960 1.96618000 +O 23.15940000 0.07056540 5.94147000 +O 23.13240000 -0.10694800 9.94866000 +O 23.14050000 -0.04715140 13.93830000 +O 23.03460000 0.12691000 18.08880000 +O 22.99730000 0.08611180 21.95670000 +O 22.98980000 4.07909000 1.92126000 +O 23.13310000 4.09409000 6.00560000 +O 23.07570000 3.96137000 9.93473000 +O 23.06240000 4.04112000 14.03120000 +O 23.10350000 4.08975000 17.90400000 +O 23.07550000 4.07457000 22.08880000 +O 22.98800000 7.96221000 1.93047000 +O 23.06950000 8.08668000 6.07046000 +O 23.19390000 8.07726000 10.00430000 +O 22.99380000 8.13252000 13.87660000 +O 23.09060000 7.96767000 17.97260000 +O 23.02220000 8.03155000 21.93640000 +O 23.14230000 11.99600000 1.84907000 +O 23.15170000 12.06060000 6.02035000 +O 23.05530000 12.01300000 10.04490000 +O 23.19410000 12.09450000 14.03150000 +O 23.03370000 12.10010000 17.85230000 +O 22.93940000 12.07120000 21.99440000 +O 23.02380000 15.90580000 2.09682000 +O 22.92270000 16.03020000 6.01013000 +O 23.08430000 16.02260000 9.98926000 +O 23.11900000 16.13120000 14.03150000 +O 22.92300000 16.07970000 17.92570000 +O 23.10860000 16.17140000 22.04310000 +O 23.13540000 19.92710000 2.04214000 +O 23.12730000 20.11250000 5.96574000 +O 23.03840000 20.02820000 10.03130000 +O 23.05780000 20.08840000 13.98190000 +O 22.95700000 20.06920000 18.00450000 +O 23.08360000 20.14700000 21.98830000 +O 0.18317600 2.03417000 2.00797000 +O 0.19592300 2.15486000 5.87876000 +O 0.12310100 2.01898000 10.10330000 +O 0.12340000 2.10667000 13.94920000 +O 0.11949300 2.03506000 17.95180000 +O 0.13429700 2.03770000 22.03630000 +O -0.09926540 6.07764000 1.88780000 +O 0.18298700 6.10105000 5.99400000 +O 0.25235800 6.05274000 9.90248000 +O -0.08391140 6.05937000 13.98540000 +O 0.12827200 6.02504000 18.00170000 +O 0.27354000 6.12492000 21.93750000 +O 0.20530800 10.04040000 1.86836000 +O 0.23232600 10.01010000 5.96685000 +O 0.18979400 10.02800000 10.01190000 +O 0.24980800 9.95131000 13.99720000 +O 0.03064180 9.87921000 17.89040000 +O 0.11381200 10.08710000 21.96410000 +O 0.25599800 14.01460000 1.97972000 +O 0.29968400 14.04700000 5.96395000 +O -0.20795300 13.99620000 10.02340000 +O 0.25525500 14.05520000 14.03230000 +O 0.15804700 13.94730000 17.99980000 +O 0.02955980 14.07140000 21.85300000 +O 0.29444600 17.72770000 1.88052000 +O 0.12743300 17.94720000 5.93340000 +O 0.24996600 18.04240000 9.98324000 +O 0.20515500 18.05850000 14.02800000 +O 0.09451950 17.98670000 18.00320000 +O 0.26975200 18.02480000 22.08720000 +O 0.15698600 22.01790000 2.03329000 +O 0.26135000 22.08250000 5.97088000 +O 0.26445300 22.12880000 9.91215000 +O 0.12408900 22.04010000 14.06410000 +O 0.11335000 22.07060000 18.07260000 +O 0.06597540 22.19290000 22.03670000 +O 4.39326000 2.11340000 1.85096000 +O 4.46646000 2.12092000 6.04227000 +O 4.40461000 2.08453000 10.02990000 +O 4.22144000 2.02908000 13.72500000 +O 4.28708000 2.07552000 18.12540000 +O 4.40717000 2.12248000 22.02790000 +O 4.13969000 6.00747000 2.05625000 +O 4.47837000 5.94076000 5.96677000 +O 4.40383000 5.93784000 10.00860000 +O 4.07299000 6.06719000 13.96380000 +O 4.34640000 6.16266000 17.87690000 +O 4.24477000 6.23831000 22.01470000 +O 4.48493000 9.92636000 2.02429000 +O 4.40434000 10.11480000 5.97827000 +O 4.30404000 10.01340000 9.97911000 +O 4.19975000 10.06330000 13.95330000 +O 4.40477000 9.98837000 17.99470000 +O 4.41422000 10.04520000 21.97440000 +O 4.33182000 14.04380000 1.71853000 +O 4.28929000 14.04290000 5.89159000 +O 4.03480000 14.08020000 10.11920000 +O 4.27686000 14.09860000 14.02820000 +O 4.39427000 14.05940000 18.05850000 +O 4.34150000 13.96640000 21.88710000 +O 4.30714000 17.99800000 2.06906000 +O 4.48749000 17.89780000 5.93702000 +O 4.30072000 17.92070000 10.00830000 +O 4.32108000 18.00350000 13.96840000 +O 4.26456000 18.15300000 17.86620000 +O 4.21742000 18.12830000 22.05940000 +O 4.40643000 22.07330000 1.95439000 +O 4.36988000 21.94010000 5.98024000 +O 4.41311000 21.95090000 10.04640000 +O 4.33404000 22.13050000 14.06050000 +O 4.34805000 22.18660000 17.99910000 +O 4.33323000 22.04740000 22.02350000 +O 8.58004000 1.91649000 2.16406000 +O 8.49505000 2.08311000 6.01269000 +O 8.71219000 2.09962000 9.99793000 +O 8.57790000 1.96187000 13.92610000 +O 8.55919000 2.10141000 17.96830000 +O 8.52722000 2.10971000 22.01340000 +O 8.30690000 5.94404000 2.02858000 +O 8.55723000 6.06649000 5.90564000 +O 8.51961000 5.98137000 10.01080000 +O 8.27990000 6.04242000 14.00500000 +O 8.49022000 5.97356000 18.02960000 +O 8.54054000 5.94322000 22.04900000 +O 8.51630000 10.10880000 1.99741000 +O 8.58185000 10.10060000 6.03224000 +O 8.65910000 10.02960000 10.09320000 +O 8.51328000 10.09050000 14.06090000 +O 8.55153000 9.99779000 18.01560000 +O 8.53232000 10.00770000 22.08090000 +O 8.53525000 14.03370000 1.87836000 +O 8.61970000 13.88720000 5.94237000 +O 8.31380000 14.05260000 9.95903000 +O 8.48865000 13.91420000 13.96010000 +O 8.45641000 14.01580000 17.93130000 +O 8.49598000 14.00940000 21.92090000 +O 8.53124000 18.14230000 1.92453000 +O 8.55979000 17.86990000 5.98396000 +O 8.45381000 17.97860000 10.00570000 +O 8.43482000 18.03600000 13.95220000 +O 8.47283000 17.98930000 17.88150000 +O 8.43793000 18.10780000 21.96600000 +O 8.48978000 22.18700000 2.04650000 +O 8.56284000 22.04000000 6.08149000 +O 8.50699000 22.00420000 10.07640000 +O 8.49666000 22.00100000 14.12480000 +O 8.53556000 22.17180000 17.99590000 +O 8.43661000 22.08930000 22.08500000 +O 12.65030000 1.98214000 1.95745000 +O 12.73120000 2.10745000 6.00693000 +O 12.80170000 2.15480000 10.10480000 +O 12.71870000 2.11371000 14.10850000 +O 12.76370000 2.01015000 18.00740000 +O 12.61010000 2.09821000 22.06860000 +O 12.51940000 6.09231000 1.97204000 +O 12.73590000 6.08601000 6.04704000 +O 12.84790000 6.00264000 9.96612000 +O 12.28510000 6.05948000 13.95420000 +O 12.72720000 6.10276000 18.07180000 +O 12.66910000 5.95643000 22.05480000 +O 12.75310000 9.94451000 2.02905000 +O 12.79250000 9.91963000 5.97587000 +O 12.68000000 9.95143000 10.01500000 +O 12.69320000 9.98904000 13.96330000 +O 12.66340000 9.96721000 17.98750000 +O 12.48030000 9.97026000 22.11480000 +O 12.74030000 14.01770000 1.99981000 +O 12.75760000 13.92080000 5.98929000 +O 12.47860000 14.13950000 9.92030000 +O 12.77220000 14.11460000 14.07020000 +O 12.73880000 14.07280000 17.94380000 +O 12.62040000 14.23130000 21.94780000 +O 12.65500000 17.97300000 1.82263000 +O 12.74810000 18.08790000 5.85082000 +O 12.65790000 18.03830000 9.99253000 +O 12.72660000 17.95610000 13.93650000 +O 12.68810000 18.12260000 17.89560000 +O 12.73390000 18.06190000 21.97150000 +O 12.64810000 22.01600000 1.94272000 +O 12.81270000 22.11670000 6.12761000 +O 12.76350000 21.94290000 9.98136000 +O 12.68270000 21.97770000 13.94460000 +O 12.72340000 21.95590000 18.03640000 +O 12.65400000 22.07020000 21.99150000 +O 16.85650000 1.95069000 2.08421000 +O 16.91180000 2.04141000 5.90815000 +O 16.86820000 2.08378000 9.96789000 +O 16.90800000 2.05309000 13.89720000 +O 16.86950000 2.03496000 17.97260000 +O 16.90410000 2.01361000 22.05170000 +O 16.64890000 5.86830000 1.90499000 +O 16.76950000 5.96686000 5.95030000 +O 16.93960000 6.05947000 9.87456000 +O 16.59220000 6.03517000 13.98370000 +O 16.83020000 5.97985000 18.09270000 +O 16.90140000 6.16713000 21.98200000 +O 16.67860000 10.10790000 2.00383000 +O 16.88100000 9.95992000 6.01989000 +O 16.86600000 9.99374000 9.98512000 +O 16.98970000 9.91334000 14.09660000 +O 16.83640000 9.92738000 18.00030000 +O 16.93380000 10.12420000 22.09880000 +O 16.93650000 14.00030000 2.03854000 +O 16.95530000 14.04850000 5.90221000 +O 16.63290000 14.04130000 10.22760000 +O 16.89920000 13.99180000 13.99260000 +O 16.85470000 13.99830000 18.12000000 +O 16.92210000 13.91380000 21.93510000 +O 16.91470000 18.11580000 1.95480000 +O 16.85980000 17.96590000 5.98389000 +O 16.88090000 18.13330000 9.93605000 +O 16.91690000 18.04900000 14.08330000 +O 16.96170000 18.06980000 18.09600000 +O 16.95460000 18.06650000 22.01240000 +O 16.98490000 22.08710000 1.91234000 +O 16.86580000 21.92360000 5.97449000 +O 16.81860000 22.00370000 9.91675000 +O 16.71290000 22.01020000 14.06730000 +O 17.01860000 22.15880000 17.97940000 +O 16.74590000 22.16720000 21.94140000 +O 21.18840000 1.93438000 1.96217000 +O 21.18470000 1.92658000 6.00133000 +O 21.04150000 2.07613000 9.93639000 +O 21.09890000 2.07297000 13.99050000 +O 21.13500000 2.06609000 18.07690000 +O 21.03750000 2.14798000 22.05950000 +O 20.72310000 5.90990000 2.00730000 +O 21.10360000 6.03243000 5.90101000 +O 21.15950000 6.04445000 10.00340000 +O 20.79730000 6.05043000 13.95210000 +O 21.08430000 5.99194000 18.04460000 +O 20.99040000 5.86778000 22.06590000 +O 21.13530000 10.09400000 2.04196000 +O 21.13460000 9.97202000 6.10080000 +O 21.14400000 9.95811000 10.01030000 +O 21.04960000 10.09310000 14.06370000 +O 21.08670000 9.97098000 17.99050000 +O 21.07480000 9.97954000 22.03690000 +O 21.00590000 13.89810000 2.06108000 +O 20.92380000 14.01480000 6.00676000 +O 20.81770000 13.93550000 10.10640000 +O 21.11330000 13.97500000 13.81180000 +O 21.03010000 14.02280000 18.01320000 +O 21.04300000 14.19670000 22.01040000 +O 21.01100000 18.06600000 2.03765000 +O 21.14340000 18.06040000 5.86798000 +O 20.99540000 18.09980000 10.05900000 +O 21.04140000 18.03450000 14.03390000 +O 21.04850000 17.98390000 18.04400000 +O 21.01960000 18.05500000 22.01000000 +O 21.19230000 21.98630000 2.07417000 +O 21.06590000 22.08520000 5.98522000 +O 20.99990000 21.98270000 10.08250000 +O 21.00550000 22.12690000 13.99710000 +O 21.05190000 21.99880000 17.99320000 +O 21.09210000 22.07430000 22.02450000 diff --git a/regtest/metatensor/rt-perovskite/plumed.dat b/regtest/metatensor/rt-perovskite/plumed.dat new file mode 100644 index 0000000000..a3467f92a7 --- /dev/null +++ b/regtest/metatensor/rt-perovskite/plumed.dat @@ -0,0 +1,13 @@ +Pmod: METATENSOR ... + MODEL=BaTiO3_CV.pt + EXTENSIONS_DIRECTORY=extensions + + SPECIES1=1-216 + SPECIES2=217-432 + SPECIES3=433-1080 + SPECIES_TO_TYPES=22,56,8 +... + +PRINT ARG=Pmod FILE=COLVAR + +BIASVALUE ARG=Pmod diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index a35d02e558..e3a3517dfe 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -426,11 +426,23 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): // the shape of the output, so we use a dummy system with one since atom for // this auto dummy_system = torch::make_intrusive( - /*types = */ this->atomic_types_.index({torch::indexing::Slice(0, 1)}), - /*positions = */ torch::zeros({1, 3}, tensor_options), + /*types = */ torch::zeros({0}, tensor_options.dtype(torch::kInt32)), + /*positions = */ torch::zeros({0, 3}, tensor_options), /*cell = */ torch::zeros({3, 3}, tensor_options) ); + + log.printf(" the following neighbor lists have been requested:\n"); + auto length_unit = this->getUnits().getLengthString(); + auto model_length_unit = this->capabilities_->length_unit(); for (auto request: this->nl_requests_) { + log.printf(" - %s list, %g %s cutoff (requested %g %s)\n", + request->full_list() ? "full" : "half", + request->engine_cutoff(length_unit), + length_unit.c_str(), + request->cutoff(), + model_length_unit.c_str() + ); + auto neighbors = this->computeNeighbors(request, {PLMD::Vector(0, 0, 0)}, PLMD::Tensor(0, 0, 0, 0, 0, 0, 0, 0, 0)); metatensor_torch::register_autograd_neighbors(dummy_system, neighbors, this->check_consistency_); dummy_system->add_neighbors_list(request, neighbors); @@ -478,6 +490,14 @@ unsigned MetatensorPlumedAction::getNumberOfDerivatives() { void MetatensorPlumedAction::createSystem() { + if (this->getTotAtoms() != static_cast(this->atomic_types_.size(0))) { + std::ostringstream oss; + oss << "METATENSOR action needs to know about all atoms in the system. "; + oss << "There are " << this->getTotAtoms() << " atoms overall, "; + oss << "but we only have atomic types for " << this->atomic_types_.size(0) << " of them."; + this->error(oss.str()); + } + const auto& cell = this->getPbc().getBox(); auto cpu_f64_tensor = torch::TensorOptions().dtype(torch::kFloat64).device(torch::kCPU); diff --git a/user-doc/METATENSORMOD.md b/user-doc/METATENSORMOD.md index 2df18f5d0d..c81bdfd1d9 100644 --- a/user-doc/METATENSORMOD.md +++ b/user-doc/METATENSORMOD.md @@ -131,6 +131,10 @@ LDFLAGS="-L$TORCH_PREFIX/lib -L$METATENSOR_PREFIX/lib -L$METATENSOR_TORCH_PREFIX LDFLAGS="$LDFLAGS -Wl,-rpath,$TORCH_PREFIX/lib" LDFLAGS="$LDFLAGS -Wl,-rpath,$METATENSOR_PREFIX/lib -Wl,-rpath,$METATENSOR_TORCH_PREFIX/lib" +# If you are running on Linux, force the use of rpath instead of runpath +# (we rely on the rpath to find dependencies of dependencies) +LDFLAGS="$LDFLAGS -Wl,--disable-new-dtags" + # configure PLUMED ./configure --enable-libtorch --enable-metatensor --enable-modules=+metatensor \ LDFLAGS="$LDFLAGS" CPPFLAGS="$CPPFLAGS" From 15a18330cac0459d2c10eca6d2a49b2f81b6880f Mon Sep 17 00:00:00 2001 From: Gareth Aneurin Tribello Date: Wed, 24 Apr 2024 12:40:37 +0100 Subject: [PATCH 18/32] Finished writing basic regression test for metatensor --- regtest/metatensor/rt-soap/config | 7 +- regtest/metatensor/rt-soap/forces.reference | 78 +++++++++++++++++++ regtest/metatensor/rt-soap/plumed.dat | 4 +- regtest/metatensor/rt-soap/soap_cv.py | 58 +++++--------- .../metatensor/rt-soap/soap_data.reference | 2 + 5 files changed, 107 insertions(+), 42 deletions(-) create mode 100644 regtest/metatensor/rt-soap/forces.reference create mode 100644 regtest/metatensor/rt-soap/soap_data.reference diff --git a/regtest/metatensor/rt-soap/config b/regtest/metatensor/rt-soap/config index 44fa319b41..9192181d4c 100644 --- a/regtest/metatensor/rt-soap/config +++ b/regtest/metatensor/rt-soap/config @@ -1,4 +1,9 @@ plumed_modules=metatensor plumed_needs=metatensor type=driver -arg="--plumed plumed.dat --ixyz crystal_structure.xyz --dump-forces forces --dump-forces-fmt %8.4f --debug-forces forces.num" +arg="--plumed plumed.dat --ixyz crystal_structure.xyz --dump-forces forces --dump-forces-fmt %8.4f" # --debug-forces forces.num" + +function plumed_regtest_before(){ + python soap_cv.py + echo Generated model using soap_cv.py +} diff --git a/regtest/metatensor/rt-soap/forces.reference b/regtest/metatensor/rt-soap/forces.reference new file mode 100644 index 0000000000..039d6bc618 --- /dev/null +++ b/regtest/metatensor/rt-soap/forces.reference @@ -0,0 +1,78 @@ +76 +-2385.3973 -2758.6366 -2559.3318 +X -0.5046 -14.7610 -5.7792 +X 11.2221 -13.7503 -2.5009 +X 8.2975 9.9633 -1.3084 +X 12.8829 14.8549 0.7372 +X 8.8858 -3.9104 7.3002 +X 8.8146 -14.1253 -2.7495 +X -1.6740 9.7549 -6.4020 +X -2.0899 1.0994 -3.1687 +X 6.7163 0.1327 -5.4507 +X 14.5098 -2.9457 -2.7676 +X -15.0075 -9.4578 -11.8655 +X 6.1580 1.9497 -12.5317 +X -5.6680 -3.1184 5.2709 +X 0.5216 15.5032 4.8350 +X -11.7193 10.8937 1.6692 +X -12.5984 -17.3580 -1.1848 +X -10.2301 -8.3875 4.9173 +X -5.2731 4.4699 -4.4445 +X -8.9411 11.8663 3.4916 +X 1.0432 -11.4657 5.4313 +X 1.9849 0.5634 1.8931 +X -9.1496 3.3735 2.6638 +X -16.0344 2.6388 2.2717 +X 14.7061 11.6954 12.5884 +X -1.5820 -2.8634 11.4844 +X 6.0777 7.5459 -4.3212 +X 10.5329 6.4225 1.8260 +X 11.5813 -4.1084 7.5776 +X 9.6609 7.9748 17.2989 +X 12.4542 2.8960 6.5601 +X 11.7491 -1.3933 -4.3450 +X 6.2641 6.5727 1.1517 +X 32.6713 -2.8616 6.5997 +X 24.9675 1.2945 -9.3590 +X -5.4890 10.6526 -11.2037 +X 4.3650 16.0808 12.9214 +X -6.6853 -10.6213 -2.6347 +X -12.7090 0.6703 -0.8864 +X -9.2591 12.3285 -3.9852 +X -1.2792 0.5233 -6.6290 +X -16.4085 15.5389 -18.7056 +X -15.8455 -8.9101 -4.6598 +X 2.3318 -4.1716 -3.4480 +X 10.6375 11.3446 -9.4963 +X -9.6671 -10.4088 8.3804 +X -3.3161 3.0531 4.2898 +X -10.3911 -6.2835 -3.6980 +X -10.9603 6.2966 -7.7771 +X -9.1254 -5.3706 -16.6306 +X -12.1060 -5.0129 -3.7650 +X -9.6199 2.7982 3.5275 +X -8.0137 -5.9342 0.4336 +X -25.0567 -2.6040 5.7738 +X -32.7334 0.0515 -5.4123 +X 6.7513 -13.8447 15.7283 +X -6.0256 -16.4669 -10.4181 +X 5.1973 7.7844 3.7303 +X 11.5801 -3.2893 -2.7509 +X 9.2378 -13.8778 5.6868 +X 1.7723 -0.1722 7.0570 +X 14.1668 -15.9527 15.3801 +X 14.4890 8.1284 4.0597 +X 5.5686 -10.0483 5.5589 +X 11.9005 8.6205 -12.7022 +X 12.2728 5.7701 2.8822 +X 1.8197 -2.2371 -3.9078 +X 17.8959 2.8505 8.6345 +X -7.9229 10.7577 -10.5727 +X 2.0422 1.8151 4.0374 +X -4.9811 0.1890 -2.5605 +X -4.2991 11.4937 -6.5989 +X -11.7770 -9.5720 9.9282 +X -10.0465 -6.8534 -3.3167 +X -0.2786 5.7009 5.1555 +X -17.2474 -0.5899 -9.2182 +X 7.9853 -11.1857 10.4230 diff --git a/regtest/metatensor/rt-soap/plumed.dat b/regtest/metatensor/rt-soap/plumed.dat index 34851b2c0c..6980d317cd 100644 --- a/regtest/metatensor/rt-soap/plumed.dat +++ b/regtest/metatensor/rt-soap/plumed.dat @@ -1,6 +1,6 @@ soap: METATENSOR ... MODEL=soap_cv.pt - EXTENSIONS_DIRECTORY=../extensions + EXTENSIONS_DIRECTORY=extensions SPECIES1=1-26 SPECIES2=27-62 @@ -13,4 +13,4 @@ scalar: SUM ARG=soap PERIODIC=NO BIASVALUE ARG=scalar -PRINT ARG=soap FILE=soap.matx STRIDE=1 FMT=%8.4f +PRINT ARG=soap FILE=soap_data STRIDE=1 FMT=%8.4f diff --git a/regtest/metatensor/rt-soap/soap_cv.py b/regtest/metatensor/rt-soap/soap_cv.py index 5ec28ae244..5bbbdc830a 100644 --- a/regtest/metatensor/rt-soap/soap_cv.py +++ b/regtest/metatensor/rt-soap/soap_cv.py @@ -32,6 +32,7 @@ def __init__(self, species): atomic_gaussian_width=0.3, ) + torch.manual_seed(-230623) self.register_buffer("pca_projection", torch.rand(2520, 3, dtype=torch.float64)) def forward( @@ -44,32 +45,31 @@ def forward( if "plumed::cv" not in outputs: return {} - output = outputs["plumed::cv"] - - device = torch.device("cpu") - if len(systems) > 0: - device = systems[0].positions.device - - soap = self.calculator(systems, selected_samples=selected_atoms) - soap = soap.keys_to_samples("center_type") - soap = soap.keys_to_properties(self.neighbor_type_pairs) - - if not output.per_atom: + if not outputs["plumed::cv"].per_atom: raise ValueError("per_atom=False is not supported") - soap_block = soap.block() - projected = soap_block.values @ self.pca_projection + if len(systems[0]) == 0: + # PLUMED is trying to determine the size of the output + projected = torch.zeros((0, 3), dtype=torch.float64) + samples = Labels(["system", "atom"], torch.zeros((0, 2), dtype=torch.int32)) + else: + soap = self.calculator(systems, selected_samples=selected_atoms) + soap = soap.keys_to_samples("center_type") + soap = soap.keys_to_properties(self.neighbor_type_pairs) + + soap_block = soap.block() + projected = soap_block.values @ self.pca_projection - samples = soap_block.samples.remove("center_type") + samples = soap_block.samples.remove("center_type") block = TensorBlock( values=projected, samples=samples, components=[], - properties=Labels("soap_pca", torch.tensor([[0], [1], [2]], device=device)), + properties=Labels("soap_pca", torch.tensor([[0], [1], [2]])), ) cv = TensorMap( - keys=Labels("_", torch.tensor([[0]], device=device)), + keys=Labels("_", torch.tensor([[0]])), blocks=[block], ) @@ -81,34 +81,14 @@ def forward( capabilities = ModelCapabilities( - outputs={ - "plumed::cv": ModelOutput( - quantity="", - unit="", - per_atom=True, - explicit_gradients=["postions"], - ) - }, + outputs={"plumed::cv": ModelOutput(per_atom=True)}, interaction_range=4.0, - supported_devices=["cpu", "mps", "cuda"], + supported_devices=["cpu"], length_unit="nm", atomic_types=[6, 1, 7, 8], dtype="float64", ) -metadata = ModelMetadata( - name="Collective Variable test", - description=""" -A simple collective variable for testing purposes -""", - authors=["Some Author"], - references={ - "implementation": ["ref to SOAP code"], - "architecture": ["ref to SOAP"], - "model": ["ref to paper"], - }, -) - - +metadata = ModelMetadata(name="Collective Variable test") model = MetatensorAtomisticModel(cv, metadata, capabilities) model.export("soap_cv.pt", collect_extensions="extensions") diff --git a/regtest/metatensor/rt-soap/soap_data.reference b/regtest/metatensor/rt-soap/soap_data.reference new file mode 100644 index 0000000000..681bac61c9 --- /dev/null +++ b/regtest/metatensor/rt-soap/soap_data.reference @@ -0,0 +1,2 @@ +#! FIELDS time soap.1.1 soap.1.2 soap.1.3 soap.2.1 soap.2.2 soap.2.3 soap.3.1 soap.3.2 soap.3.3 soap.4.1 soap.4.2 soap.4.3 soap.5.1 soap.5.2 soap.5.3 soap.6.1 soap.6.2 soap.6.3 soap.7.1 soap.7.2 soap.7.3 soap.8.1 soap.8.2 soap.8.3 soap.9.1 soap.9.2 soap.9.3 soap.10.1 soap.10.2 soap.10.3 soap.11.1 soap.11.2 soap.11.3 soap.12.1 soap.12.2 soap.12.3 soap.13.1 soap.13.2 soap.13.3 soap.14.1 soap.14.2 soap.14.3 soap.15.1 soap.15.2 soap.15.3 soap.16.1 soap.16.2 soap.16.3 soap.17.1 soap.17.2 soap.17.3 soap.18.1 soap.18.2 soap.18.3 soap.19.1 soap.19.2 soap.19.3 soap.20.1 soap.20.2 soap.20.3 soap.21.1 soap.21.2 soap.21.3 soap.22.1 soap.22.2 soap.22.3 soap.23.1 soap.23.2 soap.23.3 soap.24.1 soap.24.2 soap.24.3 soap.25.1 soap.25.2 soap.25.3 soap.26.1 soap.26.2 soap.26.3 soap.27.1 soap.27.2 soap.27.3 soap.28.1 soap.28.2 soap.28.3 soap.29.1 soap.29.2 soap.29.3 soap.30.1 soap.30.2 soap.30.3 soap.31.1 soap.31.2 soap.31.3 soap.32.1 soap.32.2 soap.32.3 soap.33.1 soap.33.2 soap.33.3 soap.34.1 soap.34.2 soap.34.3 soap.35.1 soap.35.2 soap.35.3 soap.36.1 soap.36.2 soap.36.3 soap.37.1 soap.37.2 soap.37.3 soap.38.1 soap.38.2 soap.38.3 soap.39.1 soap.39.2 soap.39.3 soap.40.1 soap.40.2 soap.40.3 soap.41.1 soap.41.2 soap.41.3 soap.42.1 soap.42.2 soap.42.3 soap.43.1 soap.43.2 soap.43.3 soap.44.1 soap.44.2 soap.44.3 soap.45.1 soap.45.2 soap.45.3 soap.46.1 soap.46.2 soap.46.3 soap.47.1 soap.47.2 soap.47.3 soap.48.1 soap.48.2 soap.48.3 soap.49.1 soap.49.2 soap.49.3 soap.50.1 soap.50.2 soap.50.3 soap.51.1 soap.51.2 soap.51.3 soap.52.1 soap.52.2 soap.52.3 soap.53.1 soap.53.2 soap.53.3 soap.54.1 soap.54.2 soap.54.3 soap.55.1 soap.55.2 soap.55.3 soap.56.1 soap.56.2 soap.56.3 soap.57.1 soap.57.2 soap.57.3 soap.58.1 soap.58.2 soap.58.3 soap.59.1 soap.59.2 soap.59.3 soap.60.1 soap.60.2 soap.60.3 soap.61.1 soap.61.2 soap.61.3 soap.62.1 soap.62.2 soap.62.3 soap.63.1 soap.63.2 soap.63.3 soap.64.1 soap.64.2 soap.64.3 soap.65.1 soap.65.2 soap.65.3 soap.66.1 soap.66.2 soap.66.3 soap.67.1 soap.67.2 soap.67.3 soap.68.1 soap.68.2 soap.68.3 soap.69.1 soap.69.2 soap.69.3 soap.70.1 soap.70.2 soap.70.3 soap.71.1 soap.71.2 soap.71.3 soap.72.1 soap.72.2 soap.72.3 soap.73.1 soap.73.2 soap.73.3 soap.74.1 soap.74.2 soap.74.3 soap.75.1 soap.75.2 soap.75.3 soap.76.1 soap.76.2 soap.76.3 + 0.000000 5.3739 5.3189 6.4924 6.0785 6.3903 6.9409 5.2246 4.6212 5.9061 4.1511 4.0573 4.7709 4.5764 5.2386 5.4536 6.4097 6.9494 8.0462 8.3058 7.8752 8.8313 8.1728 7.8564 9.1499 9.2198 7.6869 10.0432 10.1818 9.0589 10.5571 7.8038 8.0779 8.1486 8.2261 8.2375 8.9137 13.1112 11.5062 14.2129 5.3234 5.3345 6.4221 6.0131 6.2499 6.8923 4.0665 4.0244 4.6783 5.4611 4.8335 6.1604 4.5678 5.1760 5.4657 6.5298 7.0866 8.2041 8.3052 7.9518 8.8008 8.3534 7.9700 9.2914 8.9858 7.4976 9.8040 10.0939 8.8693 10.4755 7.8831 8.1124 8.1852 8.4525 8.4195 9.0012 12.6083 11.1732 13.7332 3.1853 2.4422 3.0983 5.2847 4.0223 4.7505 5.0764 3.9788 5.3169 2.7503 2.2456 3.0933 7.5482 5.6437 8.4672 4.7878 3.7804 5.2445 6.6407 5.3949 6.5881 5.7626 4.5726 5.4500 9.2051 7.5949 9.2700 10.6522 9.2379 11.5987 6.8246 5.2193 6.7261 8.7895 6.4347 8.5113 9.8873 8.1552 9.4047 7.4054 5.5790 7.6670 9.4045 7.5583 9.4808 9.3070 7.5297 9.3143 3.8911 2.8561 3.8631 4.4872 3.0042 4.1091 4.3846 2.9167 4.0029 3.8727 2.8685 3.8882 3.1977 2.4422 3.1223 5.3178 4.0774 4.8516 5.2391 4.1314 5.3919 2.7439 2.2344 3.0599 7.4101 5.6020 8.4271 4.8090 3.7893 5.2875 5.3773 4.2736 5.1331 6.6020 5.2857 6.5914 9.1471 7.5439 9.1758 10.3645 9.0638 11.3519 6.9691 5.3286 6.8511 8.8125 6.4630 8.4846 9.6834 7.8991 9.1113 7.2170 5.4853 7.5350 9.2268 7.3981 9.4124 9.2451 7.4593 9.2829 4.2800 4.4397 4.6966 6.3508 6.4476 7.6988 7.0824 6.4238 8.0042 4.4644 4.7579 5.9902 6.9691 5.9845 7.2233 5.7645 5.3416 6.2066 4.8573 4.2211 5.0366 4.8218 4.1793 5.0233 4.2408 4.4088 4.6487 6.3222 6.4139 7.6069 6.9824 6.3145 7.8332 4.5577 4.8675 6.2457 6.8375 5.8557 7.1789 5.7201 5.3280 6.1530 From 422716878f376758849f34a1e21006057187336c Mon Sep 17 00:00:00 2001 From: Luthaf Date: Thu, 25 Apr 2024 16:36:39 +0200 Subject: [PATCH 19/32] Add regtest without any dependency, using pre-generated model --- regtest/metatensor/rt-basic/Makefile | 1 + regtest/metatensor/rt-basic/config | 6 + regtest/metatensor/rt-basic/cv.py | 165 ++++++++++++++++++ regtest/metatensor/rt-basic/forces.reference | 11 ++ regtest/metatensor/rt-basic/plumed.dat | 64 +++++++ regtest/metatensor/rt-basic/scalar-global.pt | Bin 0 -> 30107 bytes .../metatensor/rt-basic/scalar-per-atom.pt | Bin 0 -> 30147 bytes .../rt-basic/scalar_global.reference | 2 + .../rt-basic/scalar_per_atom.reference | 2 + regtest/metatensor/rt-basic/structure.xyz | 11 ++ regtest/metatensor/rt-basic/vector-global.pt | Bin 0 -> 30107 bytes .../metatensor/rt-basic/vector-per-atom.pt | Bin 0 -> 30147 bytes .../rt-basic/vector_global.reference | 2 + .../rt-basic/vector_per_atom.reference | 2 + src/metatensor/metatensor.cpp | 2 +- 15 files changed, 267 insertions(+), 1 deletion(-) create mode 100644 regtest/metatensor/rt-basic/Makefile create mode 100644 regtest/metatensor/rt-basic/config create mode 100644 regtest/metatensor/rt-basic/cv.py create mode 100644 regtest/metatensor/rt-basic/forces.reference create mode 100644 regtest/metatensor/rt-basic/plumed.dat create mode 100644 regtest/metatensor/rt-basic/scalar-global.pt create mode 100644 regtest/metatensor/rt-basic/scalar-per-atom.pt create mode 100644 regtest/metatensor/rt-basic/scalar_global.reference create mode 100644 regtest/metatensor/rt-basic/scalar_per_atom.reference create mode 100644 regtest/metatensor/rt-basic/structure.xyz create mode 100644 regtest/metatensor/rt-basic/vector-global.pt create mode 100644 regtest/metatensor/rt-basic/vector-per-atom.pt create mode 100644 regtest/metatensor/rt-basic/vector_global.reference create mode 100644 regtest/metatensor/rt-basic/vector_per_atom.reference diff --git a/regtest/metatensor/rt-basic/Makefile b/regtest/metatensor/rt-basic/Makefile new file mode 100644 index 0000000000..3703b27cea --- /dev/null +++ b/regtest/metatensor/rt-basic/Makefile @@ -0,0 +1 @@ +include ../../scripts/test.make diff --git a/regtest/metatensor/rt-basic/config b/regtest/metatensor/rt-basic/config new file mode 100644 index 0000000000..13056b660d --- /dev/null +++ b/regtest/metatensor/rt-basic/config @@ -0,0 +1,6 @@ +plumed_modules=metatensor +plumed_needs=metatensor +type=driver + +# NOTE: to enable --debug-forces, also change the dtype of the models to float64 +arg="--plumed plumed.dat --ixyz structure.xyz --length-units A --dump-forces forces --dump-forces-fmt %8.2f" # --debug-forces forces.num" diff --git a/regtest/metatensor/rt-basic/cv.py b/regtest/metatensor/rt-basic/cv.py new file mode 100644 index 0000000000..4895c2b4a6 --- /dev/null +++ b/regtest/metatensor/rt-basic/cv.py @@ -0,0 +1,165 @@ +from typing import Dict, List, Optional + +import torch +from metatensor.torch import Labels, TensorBlock, TensorMap +from metatensor.torch.atomistic import ( + MetatensorAtomisticModel, + ModelCapabilities, + ModelMetadata, + ModelOutput, + NeighborsListOptions, + System, +) + + +class TestCollectiveVariable(torch.nn.Module): + r""" + This class computes a simple CV which is then used to test metatensor integration + with PLUMED. + + The per-atom CV is defined as a sum over all pairs for an atom: + + CV^1_i = \sum_j 1/r_ij + CV^2_i = \sum_j 1/r_ij^2 + + The global CV is a sum over all atoms of the per-atom CV: + + CV^1 = \sum_i CV^1_i + CV^2 = \sum_i CV^2_i + + If ``multiple_properties=True``, a only CV^1 is returned, otherwise both CV^1 and + CV^2 are returned. + """ + + def __init__(self, cutoff, multiple_properties): + super().__init__() + + self._nl_request = NeighborsListOptions(cutoff=cutoff, full_list=True) + self._multiple_properties = multiple_properties + + def forward( + self, + systems: List[System], + outputs: Dict[str, ModelOutput], + selected_atoms: Optional[Labels], + ) -> Dict[str, TensorMap]: + + if "plumed::cv" not in outputs: + return {} + + device = torch.device("cpu") + if len(systems) > 0: + device = systems[0].positions.device + + if selected_atoms is not None: + raise ValueError("selected atoms is not supported") + + output = outputs["plumed::cv"] + + if output.per_atom: + samples_list: List[List[int]] = [] + for s, system in enumerate(systems): + for i in range(len(system)): + samples_list.append([s, i]) + + sample_values = torch.tensor(samples_list, device=device, dtype=torch.int32) + samples = Labels( + ["system", "atom"], + sample_values.reshape(-1, 2), + ) + else: + samples = Labels( + "system", torch.arange(len(systems), device=device).reshape(-1, 1) + ) + + if self._multiple_properties: + properties = Labels("cv", torch.tensor([[0], [1]], device=device)) + else: + properties = Labels("cv", torch.tensor([[0]], device=device)) + + values = torch.zeros( + (len(samples), len(properties)), dtype=torch.float32, device=device + ) + system_start = 0 + for system_i, system in enumerate(systems): + system_stop = system_start + len(system) + + neighbors = system.get_neighbors_list(self._nl_request) + + atom_index = neighbors.samples.column("first_atom") + distances = torch.linalg.vector_norm(neighbors.values.reshape(-1, 3), dim=1) + inv_dist = 1.0 / distances + + if distances.shape[0] != 0: + if output.per_atom: + sliced = values[system_start:system_stop, 0] + sliced += sliced.index_add(0, atom_index, inv_dist) + else: + values[system_i, 0] += inv_dist.sum() + + if self._multiple_properties: + if output.per_atom: + sliced = values[system_start:system_stop, 1] + sliced += sliced.index_add(0, atom_index, inv_dist**2) + else: + values[system_i, 1] += inv_dist.sum() ** 2 + + system_start = system_stop + + block = TensorBlock( + values=values, + samples=samples, + components=[], + properties=properties, + ) + cv = TensorMap( + keys=Labels("_", torch.tensor([[0]], device=device)), + blocks=[block], + ) + + return {"plumed::cv": cv} + + def requested_neighbors_lists(self) -> List[NeighborsListOptions]: + return [self._nl_request] + + +CUTOFF = 3.5 + +capabilities = ModelCapabilities( + outputs={"plumed::cv": ModelOutput(per_atom=True)}, + interaction_range=CUTOFF, + supported_devices=["cpu", "mps", "cuda"], + length_unit="A", + atomic_types=[6], + dtype="float32", +) + +# export all variations of the model +cv = TestCollectiveVariable(cutoff=CUTOFF, multiple_properties=False) +cv.eval() +model = MetatensorAtomisticModel(cv, ModelMetadata(), capabilities) +model.export("scalar-per-atom.pt") + +cv = TestCollectiveVariable(cutoff=CUTOFF, multiple_properties=True) +cv.eval() +model = MetatensorAtomisticModel(cv, ModelMetadata(), capabilities) +model.export("vector-per-atom.pt") + +capabilities = ModelCapabilities( + outputs={"plumed::cv": ModelOutput(per_atom=False)}, + interaction_range=CUTOFF, + supported_devices=["cpu", "mps", "cuda"], + length_unit="A", + atomic_types=[6], + dtype="float32", +) + +cv = TestCollectiveVariable(cutoff=CUTOFF, multiple_properties=False) +cv.eval() +model = MetatensorAtomisticModel(cv, ModelMetadata(), capabilities) +model.export("scalar-global.pt") + +cv = TestCollectiveVariable(cutoff=CUTOFF, multiple_properties=True) +cv.eval() +model = MetatensorAtomisticModel(cv, ModelMetadata(), capabilities) +model.export("vector-global.pt") diff --git a/regtest/metatensor/rt-basic/forces.reference b/regtest/metatensor/rt-basic/forces.reference new file mode 100644 index 0000000000..92e9575e70 --- /dev/null +++ b/regtest/metatensor/rt-basic/forces.reference @@ -0,0 +1,11 @@ +9 +-4809.71 -5697.44 -5071.73 +X 147.68 -79.47 -178.64 +X -174.52 -55.59 124.40 +X -216.07 78.68 152.02 +X -425.43 203.97 277.68 +X 71.52 -44.53 35.34 +X 231.25 -151.21 -440.05 +X 141.26 -55.91 -67.49 +X 208.93 -18.51 211.77 +X 15.37 122.58 -115.02 diff --git a/regtest/metatensor/rt-basic/plumed.dat b/regtest/metatensor/rt-basic/plumed.dat new file mode 100644 index 0000000000..bb0177dad8 --- /dev/null +++ b/regtest/metatensor/rt-basic/plumed.dat @@ -0,0 +1,64 @@ +scalar_global: METATENSOR ... + MODEL=scalar-global.pt + DEVICE=cpu + # DEVICE=cuda + # DEVICE=mps + + SPECIES1=1-9 + SPECIES_TO_TYPES=6 +... + +PRINT ARG=scalar_global FILE=scalar_global FMT=%8.2f + + +scalar_per_atom: METATENSOR ... + MODEL=scalar-per-atom.pt + DEVICE=cpu + # DEVICE=cuda + # DEVICE=mps + + SPECIES1=1-9 + SPECIES_TO_TYPES=6 +... + +PRINT ARG=scalar_per_atom FILE=scalar_per_atom FMT=%8.2f + + +vector_global: METATENSOR ... + MODEL=vector-global.pt + DEVICE=cpu + # DEVICE=cuda + # DEVICE=mps + + SPECIES1=1-9 + SPECIES_TO_TYPES=6 +... + +PRINT ARG=vector_global FILE=vector_global FMT=%8.2f + + +vector_per_atom: METATENSOR ... + MODEL=vector-per-atom.pt + DEVICE=cpu + # DEVICE=cuda + # DEVICE=mps + + SPECIES1=1-9 + SPECIES_TO_TYPES=6 +... + +PRINT ARG=vector_per_atom FILE=vector_per_atom FMT=%8.2f + + +scalar_per_atom_sum: SUM ARG=scalar_per_atom PERIODIC=NO +vector_global_sum: SUM ARG=vector_global PERIODIC=NO +vector_per_atom_sum: SUM ARG=vector_per_atom PERIODIC=NO + +summed: CUSTOM ... + ARG=scalar_global,scalar_per_atom_sum,vector_global_sum,vector_per_atom_sum + VAR=x,y,z,t + FUNC=x+y+z+t + PERIODIC=NO +... + +BIASVALUE ARG=summed diff --git a/regtest/metatensor/rt-basic/scalar-global.pt b/regtest/metatensor/rt-basic/scalar-global.pt new file mode 100644 index 0000000000000000000000000000000000000000..bccc002572155b2438b1255964546e329653cf0a GIT binary patch literal 30107 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 literal 0 HcmV?d00001 diff --git a/regtest/metatensor/rt-basic/scalar-per-atom.pt b/regtest/metatensor/rt-basic/scalar-per-atom.pt new file mode 100644 index 0000000000000000000000000000000000000000..9079e9865399fee0166f0a593c3e603a0fabfcb2 GIT binary patch literal 30147 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

dR(%;0g{;x>;N5!r; zM$$l8sQu8s0sxfux?4)UAronEHZwA`atB6EI!{v_0{S)-@ S5EK9A*(8!S(JEs9g#Qbc89t`~ diff --git a/regtest/metatensor/rt-basic/vector-per-atom.pt b/regtest/metatensor/rt-basic/vector-per-atom.pt index f036486453dddd31bb028b78f984bb4167ee44a0..919831b43a364a596827d0ab054002b265f4cd0e 100644 GIT binary patch delta 19833 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

aPe$2cy}^#ktwOJc_pF_{BjK5as zzdb?IX>~wV;qv+eS&1)>56VBodl-gBbS~2@B?k;b+07DT1 zb2n;_QoC91OJ4Q28=q-ymxd0`Sf1WU(ApHvX<;(z!i#(f z(v|`5#TNfqVR-Lq(N7(3l)_r`tl=Gh{x$&wxH>d3JBbPTSB9xY2qZ+ZYOpqmYuG(a zN-{+i-~#}}D}rfHwRN~HqnMcUAt(7S--(f=`IzvZ=h4~oFWByJ)OTg^pXL&Ebt**N z{&K)!)ACw9gUGAta#cE?hPCGP5}~r+HqGK5`FB1mxfiV;R?)-hz6wWyi3VpE zNnm|cefeZCRG1q{(iQdQ{#9*3iuw)hPQwlSIzAg89|wLWv~%9(fdlqFF-Ux-SOnVL zw+{Jyy`rH0)GrchP+RL4eHn`~0jC=tDs7b&r3xY)l57HDgude6>Pp{hN7n?;Ak?aL z&2+AX`94uJ@L9OXIYlRGQ@V6CdMj4Xrn758H>nz)3x4IZJSUCl}c9DPKKwRWE5O$ z^bl$<&P-0Ku4&~Rz?e_Spf#gnTOD+ z9pESR*m!910DWLrg54bkBfq;r!cFU^T{iSBedmNlLnHJ`HbpCCx!datmn%P;QOUpi zaVI=j6YC47L?XD-GYn0F>SxLei8mj^GUNvedv|i>(fPfTJ;cqj;x)+uNN`xj*l@u_ z+aau6R4aM+=NM=3VePo%amHkXIOg0-NH2B&i9gf@EQfw zpRi#Kbxj`drQsn?hvuT;MRwtzZ{@6}@J%vLBxec-tSmTt@1YFn-q)Pjt(<&%Z+;@7~~5+4+esmRD(^x1`}) z29W8ooFbH858+Egs2k3AIn

3HlAWo9TmDW*j;S{r$e?hY1D@6e>yh-6>M5%bo% z^E|HD(otrDfYuBBrGk*gv7>U&Xzo15r`~*NFTn&9YVW$3_cK~);48PACm4R|nNwAo zsSqwkUQyud)I?DSsZ1}HYCIg8VN&9*ltd)2NhaK?bDYvV z;iseBpg#BWd~;_!oE431bC803Vi;(0!;6GzLcWny?sgoDYW@F2@iD^Yk_bd4w-@RX zh9qxQ$+OZJ#kzH|S&Rj{V1+u>)~Yh5}T1e)~dbs0a;iRJ{*yYlaD zWMLKuWR{-B7wCH2*ScHe9O(Hnu(>rz0D7mn`9_}*$}Q>GTqYe=co)&$!T+^!Qh+LO z4|k7&GCc%WE=*=?F4i5tSva(A;(B|FKW{5{Wcws*;?-MVs%Q4O(^i$qsv?IutkqGx ztNpN;WDG!{b7PU1>-FHq>h?|Tu&p<@}S+!af$ z?J+v;3D0U{=wc)9s@H_typN*5ZXfV@RcLU_n^pGZ#Q!|{B`%S$RIlbE`61`AnnT!r%FT4C^w3Hq*8H@3X2sd_DH+h`>~FH(__%R4&+12%BB_t5Pc zOd&s+kPT58FDP8{S*;HATqlx`>E4z5+<7T0FS&mFSw{O|Dvm$UEL$$1Gfk8#9SC(E zDVI>KFhad$^9>YV7*CPk_%OAeH+g1Dp2&V+kGWZQyH3-Yyr{=Q7>sXDr92|{OUANG z$T0UUFRe|}L|AIv7ckDd8!F6ne(*^$E}!RFc1Lq9Gv!o4yETV@C8&~|jgP2d>!=8@ zxgtF+L3wQ4tyb7q$=D@dR=4jZ-!we(FG55mC-0`W3))MizAa6Aj^w)Cp@|G+^k?jd zw7Z)7S7(U7M)030rP8K#dCr*5NY+q%DsX#P0TLZ01qrZkI}$0yeAmcj#b53QjOJh{+i*FJ6UXK*c<<_RedLA{ z%q-1BhdU5?Y@ik9p;Q%8m`MWfB1}b?TGrL855|`jzxe()y!p}`*i=+npN90LMX@ryYy`^o) zzR31Miy0;%4Fb8EeizwHKoWZ*n>GN8-4j0S4uQ^7%u#%NhXQKRsf(yt`_0#|*A)AZ zkb?)at(j#d2SK3w%76q|iSjC<2drpfYGGz%WNc|-5Woe4IeNVZ6)yC8A}{3$2YoVveFN8 zD-dX}&gvh{mmf$(>nr{E$PNP8{o@z}I(PsW+|v;!(Pm2jE7P(8f!zK@BFKIxxnDU4 z76Gosr~^hZO2FqU`r!2cA`7K|mNlsVE7-OTkMe#e8YDC zeT~w-stH`VDxvfvCm@jfzhatQ|3Q`kc48!et*Z)r!Km-sMlr&BiBlHX&kYb9E62wl z^1ppjtS#6Gh`~q$lM!M77^4rq^&P=5#{5!IAfPr<0r)?RguwS?J;2C;3xH;fzsZT{ hzwh^S6%yWGg~a`h!F!XZtDw+6lG*Eed#8VM{{#DRN`n9Z diff --git a/src/metatensor/.gitignore b/src/metatensor/.gitignore index fc96bbfc5f..ded87dba97 100644 --- a/src/metatensor/.gitignore +++ b/src/metatensor/.gitignore @@ -10,3 +10,4 @@ !/module.type !/COPYRIGHT !/PEOPLE-METATENSOR +!external/ diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index 5add0dd119..4f40e4f8cf 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -113,6 +113,17 @@ class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { #include +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wfloat-equal" +#pragma GCC diagnostic ignored "-Wfloat-conversion" +#pragma GCC diagnostic ignored "-Wimplicit-float-conversion" +#pragma GCC diagnostic ignored "-Wimplicit-int-conversion" +#pragma GCC diagnostic ignored "-Wshorten-64-to-32" +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wold-style-cast" + #include #include #include @@ -120,6 +131,8 @@ class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { #include #endif +#pragma GCC diagnostic pop + #include #include @@ -152,7 +165,7 @@ class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { void createSystem(); // compute a neighbor list following metatensor format, using data from PLUMED metatensor_torch::TorchTensorBlock computeNeighbors( - metatensor_torch::NeighborsListOptions request, + metatensor_torch::NeighborListOptions request, const std::vector& positions, const PLMD::Tensor& cell ); @@ -164,7 +177,7 @@ class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { // neighbor lists requests made by the model metatensor_torch::ModelCapabilities capabilities_; - std::vector nl_requests_; + std::vector nl_requests_; // dtype/device to use to execute the model torch::ScalarType dtype_; @@ -191,9 +204,9 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): ActionWithValue(options), device_(torch::kCPU) { - if (metatensor_torch::version().find("0.4.") != 0) { + if (metatensor_torch::version().find("0.5.") != 0) { this->error( - "this code requires version 0.4.x of metatensor-torch, got version " + + "this code requires version 0.5.x of metatensor-torch, got version " + metatensor_torch::version() ); } @@ -219,9 +232,9 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): // extract information from the model auto metadata = this->model_.run_method("metadata").toCustomClass(); this->capabilities_ = this->model_.run_method("capabilities").toCustomClass(); - auto requests_ivalue = this->model_.run_method("requested_neighbors_lists"); + auto requests_ivalue = this->model_.run_method("requested_neighbor_lists"); for (auto request_ivalue: requests_ivalue.toList()) { - auto request = request_ivalue.get().toCustomClass(); + auto request = request_ivalue.get().toCustomClass(); this->nl_requests_.push_back(request); } @@ -445,7 +458,7 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): auto neighbors = this->computeNeighbors(request, {PLMD::Vector(0, 0, 0)}, PLMD::Tensor(0, 0, 0, 0, 0, 0, 0, 0, 0)); metatensor_torch::register_autograd_neighbors(dummy_system, neighbors, this->check_consistency_); - dummy_system->add_neighbors_list(request, neighbors); + dummy_system->add_neighbor_list(request, neighbors); } if (output->per_atom) { @@ -551,13 +564,13 @@ void MetatensorPlumedAction::createSystem() { for (auto request: this->nl_requests_) { auto neighbors = this->computeNeighbors(request, positions, cell); metatensor_torch::register_autograd_neighbors(this->system_, neighbors, this->check_consistency_); - this->system_->add_neighbors_list(request, neighbors); + this->system_->add_neighbor_list(request, neighbors); } } metatensor_torch::TorchTensorBlock MetatensorPlumedAction::computeNeighbors( - metatensor_torch::NeighborsListOptions request, + metatensor_torch::NeighborListOptions request, const std::vector& positions, const PLMD::Tensor& cell ) { @@ -587,8 +600,8 @@ metatensor_torch::TorchTensorBlock MetatensorPlumedAction::computeNeighbors( options.return_distances = false; options.return_vectors = true; - VesinNeighborsList* vesin_neighbor_list = new VesinNeighborsList(); - memset(vesin_neighbor_list, 0, sizeof(VesinNeighborsList)); + VesinNeighborList* vesin_neighbor_list = new VesinNeighborList(); + memset(vesin_neighbor_list, 0, sizeof(VesinNeighborList)); const char* error_message = NULL; int status = vesin_neighbors( diff --git a/src/metatensor/vesin.h b/src/metatensor/vesin.h index 336d332005..6efaaea523 100644 --- a/src/metatensor/vesin.h +++ b/src/metatensor/vesin.h @@ -9,20 +9,20 @@ extern "C" { #endif -/// Options for a neighbors list calculation +/// Options for a neighbor list calculation typedef struct VesinOptions { /// Spherical cutoff, only pairs below this cutoff will be included double cutoff; - /// Should the returned neighbors list be a full list (include both `i -> j` + /// Should the returned neighbor list be a full list (include both `i -> j` /// and `j -> i` pairs) or a half list (include only `i -> j`). bool full; // TODO: sort option? - /// Should the returned `VesinNeighborsList` contain `shifts`? + /// Should the returned `VesinNeighborList` contain `shifts`? bool return_shifts; - /// Should the returned `VesinNeighborsList` contain `distances`? + /// Should the returned `VesinNeighborList` contain `distances`? bool return_distances; - /// Should the returned `VesinNeighborsList` contain `vector`? + /// Should the returned `VesinNeighborList` contain `vector`? bool return_vectors; } VesinOptions; @@ -36,7 +36,7 @@ enum VesinDevice { }; -/// The actual neighbors list +/// The actual neighbor list /// /// This is organized as a list of pairs, where each pair can contain the /// following data: @@ -55,9 +55,9 @@ enum VesinDevice { /// /// Under periodic boundary conditions, two atoms can be part of multiple pairs, /// each pair having a different periodic shift. -typedef struct VesinNeighborsList { +typedef struct VesinNeighborList { #ifdef __cplusplus - VesinNeighborsList(): + VesinNeighborList(): length(0), device(VesinUnknownDevice), pairs(nullptr), @@ -67,7 +67,7 @@ typedef struct VesinNeighborsList { {} #endif - /// Number of pairs in this neighbors list + /// Number of pairs in this neighbor list size_t length; /// Device used for the data allocations VesinDevice device; @@ -89,15 +89,15 @@ typedef struct VesinNeighborsList { // TODO: custom memory allocators? } VesinNeighborList; -/// Free all allocated memory inside a `VesinNeighborsList`, according the it's +/// Free all allocated memory inside a `VesinNeighborList`, according the it's /// `device`. void vesin_free(VesinNeighborList* neighbors); -/// Compute a neighbors list. +/// Compute a neighbor list. /// -/// The data is returned in a `VesinNeighborsList`. For an initial call, the -/// `VesinNeighborsList` should be zero-initialized (or default-initalized in -/// C++). The `VesinNeighborsList` can be re-used across calls to this functions +/// The data is returned in a `VesinNeighborList`. For an initial call, the +/// `VesinNeighborList` should be zero-initialized (or default-initalized in +/// C++). The `VesinNeighborList` can be re-used across calls to this functions /// to re-use memory allocations, and once it is no longer needed, users should /// call `vesin_free` to release the corresponding memory. /// @@ -109,7 +109,7 @@ void vesin_free(VesinNeighborList* neighbors); /// @param periodic is the system using periodic boundary conditions? /// @param device device where the `points` and `box` data is allocated. /// @param options options for the calculation -/// @param neighbors non-NULL pointer to `VesinNeighborsList` that will be used +/// @param neighbors non-NULL pointer to `VesinNeighborList` that will be used /// to store the computed list of neighbors. /// @param error_message Pointer to a `char*` that wil be set to the error /// message if this function fails. This does not need to be freed when no diff --git a/src/metatensor/vesin_single_build.cpp b/src/metatensor/vesin_single_build.cpp index ae9c7a0981..caf259ba35 100644 --- a/src/metatensor/vesin_single_build.cpp +++ b/src/metatensor/vesin_single_build.cpp @@ -288,9 +288,9 @@ class CellList { Cell& get_cell(std::array index); }; -/// Wrapper around `VesinNeighborsList` that behaves like a std::vector, +/// Wrapper around `VesinNeighborList` that behaves like a std::vector, /// automatically growing memory allocations. -class GrowableNeighborsList { +class GrowableNeighborList { public: VesinNeighborList& neighbors; size_t capacity; @@ -341,7 +341,7 @@ void vesin::cpu::neighbors( // the cell list creates too many pairs, we only need to keep the // one where the distance is actually below the cutoff - auto neighbors = GrowableNeighborsList{raw_neighbors, raw_neighbors.length, options}; + auto neighbors = GrowableNeighborList{raw_neighbors, raw_neighbors.length, options}; neighbors.reset(); cell_list.foreach_pair([&](size_t first, size_t second, CellShift shift) { @@ -581,7 +581,7 @@ CellList::Cell& CellList::get_cell(std::array index) { /* ========================================================================== */ -void GrowableNeighborsList::set_pair(size_t index, size_t first, size_t second) { +void GrowableNeighborList::set_pair(size_t index, size_t first, size_t second) { if (index >= this->capacity) { this->grow(); } @@ -590,7 +590,7 @@ void GrowableNeighborsList::set_pair(size_t index, size_t first, size_t second) this->neighbors.pairs[index][1] = second; } -void GrowableNeighborsList::set_shift(size_t index, vesin::CellShift shift) { +void GrowableNeighborList::set_shift(size_t index, vesin::CellShift shift) { if (index >= this->capacity) { this->grow(); } @@ -600,7 +600,7 @@ void GrowableNeighborsList::set_shift(size_t index, vesin::CellShift shift) { this->neighbors.shifts[index][2] = shift[2]; } -void GrowableNeighborsList::set_distance(size_t index, double distance) { +void GrowableNeighborList::set_distance(size_t index, double distance) { if (index >= this->capacity) { this->grow(); } @@ -608,7 +608,7 @@ void GrowableNeighborsList::set_distance(size_t index, double distance) { this->neighbors.distances[index] = distance; } -void GrowableNeighborsList::set_vector(size_t index, vesin::Vector vector) { +void GrowableNeighborList::set_vector(size_t index, vesin::Vector vector) { if (index >= this->capacity) { this->grow(); } @@ -646,7 +646,7 @@ static scalar_t* alloc(scalar_t* ptr, size_t size, size_t new_size) { return ptr; } -void GrowableNeighborsList::grow() { +void GrowableNeighborList::grow() { auto new_size = neighbors.length * 2; if (new_size == 0) { new_size = 1; @@ -677,7 +677,7 @@ void GrowableNeighborsList::grow() { this->capacity = new_size; } -void GrowableNeighborsList::reset() { +void GrowableNeighborList::reset() { // set all allocated data to zero auto size = this->neighbors.length; std::memset(this->neighbors.pairs, 0, size * sizeof(size_t[2])); diff --git a/user-doc/METATENSORMOD.md b/user-doc/METATENSORMOD.md index c81bdfd1d9..f76bcb90af 100644 --- a/user-doc/METATENSORMOD.md +++ b/user-doc/METATENSORMOD.md @@ -29,7 +29,7 @@ pre-built Python wheels with `pip`. This is the same set of wheels you will need to define custom models. ```bash -pip install "metatensor-torch ==0.4.0" # change this version to get newer releases +pip install "metatensor-torch ==0.5.1" # change this version to get newer releases # optional: get the other metatensor tools to define models (these are only usable from Python). pip install metatensor-operations metatensor-learn @@ -100,7 +100,7 @@ METATENSOR_TORCH_PREFIX="$METATENSOR_PREFIX" git clone https://github.com/lab-cosmo/metatensor # or a more recent release of metatensor-torch -git checkout metatensor-torch-v0.4.0 +git checkout metatensor-torch-v0.5.0 cd metatensor mkdir build && cd build From 15ea37809dcc57afa75d206eb80ca1df231b39dc Mon Sep 17 00:00:00 2001 From: Luthaf Date: Wed, 15 May 2024 14:41:40 +0200 Subject: [PATCH 22/32] Do not use Action::error() outside of the constructor It segfaults in `keywords.exists("NO_ACTION_LOG")` --- src/metatensor/metatensor.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index 4f40e4f8cf..6826736b0b 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -508,7 +508,7 @@ void MetatensorPlumedAction::createSystem() { oss << "METATENSOR action needs to know about all atoms in the system. "; oss << "There are " << this->getTotAtoms() << " atoms overall, "; oss << "but we only have atomic types for " << this->atomic_types_.size(0) << " of them."; - this->error(oss.str()); + plumed_merror(oss.str()); } const auto& cell = this->getPbc().getBox(); @@ -616,7 +616,7 @@ metatensor_torch::TorchTensorBlock MetatensorPlumedAction::computeNeighbors( ); if (status != EXIT_SUCCESS) { - this->error( + plumed_merror( "failed to compute neighbor list (cutoff=" + std::to_string(cutoff) + ", full=" + (request->full_list() ? "true" : "false") + "): " + error_message ); @@ -671,7 +671,7 @@ metatensor_torch::TorchTensorBlock MetatensorPlumedAction::executeModel(metatens auto cv = dict_output.at("plumed::cv"); this->output_ = cv.toCustomClass(); } catch (const std::exception& e) { - this->error("failed to evaluate the model: " + std::string(e.what())); + plumed_merror("failed to evaluate the model: " + std::string(e.what())); } plumed_massert(this->output_->keys()->count() == 1, "output should have a single block"); @@ -689,13 +689,13 @@ void MetatensorPlumedAction::calculate() { auto torch_values = block->values().to(torch::kCPU).to(torch::kFloat64); if (static_cast(torch_values.size(0)) != this->n_samples_) { - this->error( + plumed_merror( "expected the model to return a TensorBlock with " + std::to_string(this->n_samples_) + " samples, got " + std::to_string(torch_values.size(0)) + " instead" ); } else if (static_cast(torch_values.size(1)) != this->n_properties_) { - this->error( + plumed_merror( "expected the model to return a TensorBlock with " + std::to_string(this->n_properties_) + " properties, got " + std::to_string(torch_values.size(1)) + " instead" From d05d96eda2be8e32a93e75fdf82312c5b43db83b Mon Sep 17 00:00:00 2001 From: Luthaf Date: Wed, 15 May 2024 14:44:34 +0200 Subject: [PATCH 23/32] Update docs website URL --- src/metatensor/COPYRIGHT | 2 +- src/metatensor/metatensor.cpp | 8 ++++---- user-doc/METATENSORMOD.md | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/metatensor/COPYRIGHT b/src/metatensor/COPYRIGHT index 14a8de0de8..da51e08c6d 100644 --- a/src/metatensor/COPYRIGHT +++ b/src/metatensor/COPYRIGHT @@ -1,7 +1,7 @@ Copyright (c) 2024 The METATENSOR code team (see the PEOPLE-METATENSOR file at the root of this folder for a list of names) -See https://lab-cosmo.github.io/metatensor/latest/ for more information about the +See https://docs.metatensor.org/latest/ for more information about the metatensor package that this module allows you to call from PLUMED. This file is part of METATENSOR-PLUMED module. diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index 6826736b0b..eabef5f503 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -75,10 +75,10 @@ the following: */ /* [TorchScript]: https://pytorch.org/docs/stable/jit.html -[mts_models]: https://lab-cosmo.github.io/metatensor/latest/atomistic/index.html -[mts_tutorials]: https://lab-cosmo.github.io/metatensor/latest/examples/atomistic/index.html -[mts_outputs]: https://lab-cosmo.github.io/metatensor/latest/atomistic/outputs.html -[mts_block]: https://lab-cosmo.github.io/metatensor/latest/torch/reference/block.html +[mts_models]: https://docs.metatensor.org/latest/atomistic/index.html +[mts_tutorials]: https://docs.metatensor.org/latest/examples/atomistic/index.html +[mts_outputs]: https://docs.metatensor.org/latest/atomistic/outputs.html +[mts_block]: https://docs.metatensor.org/latest/torch/reference/block.html */ //+ENDPLUMEDOC diff --git a/user-doc/METATENSORMOD.md b/user-doc/METATENSORMOD.md index f76bcb90af..08c4944dec 100644 --- a/user-doc/METATENSORMOD.md +++ b/user-doc/METATENSORMOD.md @@ -157,5 +157,5 @@ This module defines the following actions: [TorchScript]: https://pytorch.org/docs/stable/jit.html -[metatensor]: https://lab-cosmo.github.io/metatensor/latest/index.html -[mts_models]: https://lab-cosmo.github.io/metatensor/latest/atomistic/index.html +[metatensor]: https://docs.metatensor.org/latest/index.html +[mts_models]: https://docs.metatensor.org/latest/atomistic/index.html From 1a5eae039087f61606796e2aef145bb0c4cfe931 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Wed, 15 May 2024 16:21:49 +0200 Subject: [PATCH 24/32] Implement selected_atoms --- regtest/metatensor/rt-soap/plumed.dat | 14 ++ .../rt-soap/soap_selected_data.reference | 2 + src/metatensor/metatensor.cpp | 183 +++++++++++++----- 3 files changed, 154 insertions(+), 45 deletions(-) create mode 100644 regtest/metatensor/rt-soap/soap_selected_data.reference diff --git a/regtest/metatensor/rt-soap/plumed.dat b/regtest/metatensor/rt-soap/plumed.dat index 6980d317cd..8f3bf7ae44 100644 --- a/regtest/metatensor/rt-soap/plumed.dat +++ b/regtest/metatensor/rt-soap/plumed.dat @@ -8,9 +8,23 @@ soap: METATENSOR ... SPECIES_TO_TYPES=6,1,8 ... +soap_selected: METATENSOR ... + MODEL=soap_cv.pt + EXTENSIONS_DIRECTORY=extensions + + SPECIES1=1-26 + SPECIES2=27-62 + SPECIES3=63-76 + SPECIES_TO_TYPES=6,1,8 + + # select out of order to make sure this is respected in the output + SELECTED_ATOMS=2,3,1 +... + scalar: SUM ARG=soap PERIODIC=NO BIASVALUE ARG=scalar PRINT ARG=soap FILE=soap_data STRIDE=1 FMT=%8.4f +PRINT ARG=soap_selected FILE=soap_selected_data STRIDE=1 FMT=%8.4f diff --git a/regtest/metatensor/rt-soap/soap_selected_data.reference b/regtest/metatensor/rt-soap/soap_selected_data.reference new file mode 100644 index 0000000000..805a7de6d5 --- /dev/null +++ b/regtest/metatensor/rt-soap/soap_selected_data.reference @@ -0,0 +1,2 @@ +#! FIELDS time soap_selected.1.1 soap_selected.1.2 soap_selected.1.3 soap_selected.2.1 soap_selected.2.2 soap_selected.2.3 soap_selected.3.1 soap_selected.3.2 soap_selected.3.3 + 0.000000 6.0785 6.3903 6.9409 5.2246 4.6212 5.9061 5.3739 5.3189 6.4924 diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index eabef5f503..4ac8b42fde 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -35,18 +35,11 @@ directory defines a custom machine learning CV that can be used with PLUMED. \par Examples The following input shows how you can call metatensor and evaluate the model -that is described in the file soap_cv.pt from PLUMED. To evaluate this model -plumed is required to use code that is included in the directory extensions -which has been specified using the `EXTENSIONS_DIRECTORY` flag. Numbered -`SPECIES` labels are used to indicate the list of indices that belong to each -atomic species in the model. The `SPECIES_TO_TYPE` keyword then provides -information on the atom type for each species. The first number here is the -atomic number of the atoms that have been specified using the `SPECIES1` flag, -the second number is the atomic number of the atoms that have been specified -using the `SPECIES2` flag and so on. +that is described in the file `custom_cv.pt` from PLUMED. -\plumedfile soap: METATENSOR ... MODEL=soap_cv.pt -EXTENSIONS_DIRECTORY=extensions +\plumedfile +metatensor_cv: METATENSOR ... + MODEL=custom_cv.pt SPECIES1=1-26 SPECIES2=27-62 @@ -55,6 +48,47 @@ EXTENSIONS_DIRECTORY=extensions ... \endplumedfile +The numbered `SPECIES` labels are used to indicate the list of atoms that belong +to each atomic species in the system. The `SPECIES_TO_TYPE` keyword then +provides information on the atom type for each species. The first number here is +the atomic type of the atoms that have been specified using the `SPECIES1` flag, +the second number is the atomic number of the atoms that have been specified +using the `SPECIES2` flag and so on. + +`METATENSOR` action also accepts the following options: + +- `EXTENSIONS_DIRECTORY` should be the path to a directory containing + TorchScript extensions (as shared libraries) that are required to load and + execute the model. This matches the `collect_extensions` argument to + `MetatensorAtomisticModel.export` in Python. +- `NO_CONSISTENCY_CHECK` can be used to disable internal consistency checks; +- `SELECTED_ATOMS` can be used to signal the metatensor models that it should + only run its calculation for the selected subset of atoms. The model still + need to know about all the atoms in the system (through the `SPECIES` + keyword); but this can be used to reduce the calculation cost. Note that the + indices of the selected atoms should start at 1 in the PLUMED input file, but + they will be translated to start at 0 when given to the model (i.e. in + Python/TorchScript, the `forward` method will receive a `selected_atoms` which + starts at 0) + +Here is another example with all the possible keywords: + +\plumedfile +soap: METATENSOR ... + MODEL=soap.pt + EXTENSION_DIRECTORY=extensions + NO_CONSISTENCY_CHECK + + SPECIES1=1-10 + SPECIES2=11-20 + SPECIES_TO_TYPES=8,13 + + # only run the calculation for the Aluminium (type 13) atoms, but + # include the Oxygen (type 8) as potential neighbors. + SELECTED_ATOMS=11-20 +... +\endplumedfile + \par Collective variables and metatensor models Collective variables are not yet part of the [known outputs][mts_outputs] for @@ -309,8 +343,6 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): } this->atomic_types_ = torch::tensor(std::move(atomic_types)); - - // Request the atoms and check we have read in everything this->requestAtoms(all_atoms); bool no_consistency_check = false; @@ -346,10 +378,6 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): output->explicit_gradients = {}; evaluations_options_->outputs.insert("plumed::cv", output); - // TODO: selected_atoms - // evaluations_options_->set_selected_atoms() - - // Determine which device we should use based on user input, what the model // supports and what's available auto available_devices = std::vector(); @@ -435,9 +463,8 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): auto tensor_options = torch::TensorOptions().dtype(this->dtype_).device(this->device_); this->strain_ = torch::eye(3, tensor_options.requires_grad(true)); - // setup storage for the computed CV: we need to run the model once to know - // the shape of the output, so we use a dummy system with one since atom for - // this + // determine how many properties there will be in the output by running the + // model once on a dummy system auto dummy_system = torch::make_intrusive( /*types = */ torch::zeros({0}, tensor_options.dtype(torch::kInt32)), /*positions = */ torch::zeros({0, 3}, tensor_options), @@ -461,16 +488,52 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): dummy_system->add_neighbor_list(request, neighbors); } + this->n_properties_ = static_cast( + this->executeModel(dummy_system)->properties()->count() + ); + + // parse and handle atom sub-selection. This is done AFTER determining the + // output size, since the selection might not be valid for the dummy system + std::vector selected_atoms; + this->parseVector("SELECTED_ATOMS", selected_atoms); + if (!selected_atoms.empty()) { + auto selection_value = torch::zeros( + {static_cast(selected_atoms.size()), 2}, + torch::TensorOptions().dtype(torch::kInt32).device(this->device_) + ); + + for (unsigned i=0; i(this->atomic_types_.size(0)); + if (selected_atoms[i] <= 0 || selected_atoms[i] > n_atoms) { + this->error( + "Values in metatensor's SELECTED_ATOMS should be between 1 " + "and the number of atoms (" + std::to_string(n_atoms) + "), " + "got " + std::to_string(selected_atoms[i])); + } + // PLUMED input uses 1-based indexes, but metatensor wants 0-based + selection_value[i][1] = selected_atoms[i] - 1; + } + + evaluations_options_->set_selected_atoms( + torch::make_intrusive( + std::vector{"system", "atom"}, selection_value + ) + ); + } + + // Now that we now both n_samples and n_properties, we can setup the + // PLUMED-side storage for the computed CV if (output->per_atom) { - this->n_samples_ = static_cast(this->atomic_types_.size(0)); + auto selected_atoms = this->evaluations_options_->get_selected_atoms(); + if (selected_atoms.has_value()) { + this->n_samples_ = static_cast(selected_atoms.value()->count()); + } else { + this->n_samples_ = static_cast(this->atomic_types_.size(0)); + } } else { this->n_samples_ = 1; } - this->n_properties_ = static_cast( - this->executeModel(dummy_system)->properties()->count() - ); - if (n_samples_ == 1 && n_properties_ == 1) { log.printf(" the output of this model is a scalar\n"); @@ -511,6 +574,8 @@ void MetatensorPlumedAction::createSystem() { plumed_merror(oss.str()); } + // this->getTotAtoms() + const auto& cell = this->getPbc().getBox(); auto cpu_f64_tensor = torch::TensorOptions().dtype(torch::kFloat64).device(torch::kCPU); @@ -714,25 +779,39 @@ void MetatensorPlumedAction::calculate() { } } } else { - auto samples = block->samples()->as_metatensor(); - plumed_assert(samples.names().size() == 2); - plumed_assert(samples.names()[0] == std::string("system")); - plumed_assert(samples.names()[1] == std::string("atom")); - - auto& samples_values = samples.values(); + auto samples = block->samples(); + plumed_assert((samples->names() == std::vector{"system", "atom"})); + + auto samples_values = samples->values().to(torch::kCPU); + auto selected_atoms = this->evaluations_options_->get_selected_atoms(); + + // handle the possibility that samples are returned in + // a non-sorted order. + auto get_output_location = [&](unsigned i) { + if (selected_atoms.has_value()) { + // If the users picked some selected atoms, then we store the + // output in the same order as the selection was given + auto sample = samples_values.index({static_cast(i), torch::indexing::Slice()}); + auto position = selected_atoms.value()->position(sample); + plumed_assert(position.has_value()); + return static_cast(position.value()); + } else { + return static_cast(samples_values[i][1].item()); + } + }; if (n_properties_ == 1) { // we have a single CV describing multiple things (i.e. atoms) for (unsigned i=0; i(samples_values(i, 1)); - value->set(atom_i, torch_values[i][0].item()); + auto output_i = get_output_location(i); + value->set(output_i, torch_values[i][0].item()); } } else { // the CV is a matrix for (unsigned i=0; i(samples_values(i, 1)); + auto output_i = get_output_location(i); for (unsigned j=0; jset(atom_i * n_properties_ + j, torch_values[i][j].item()); + value->set(output_i * n_properties_ + j, torch_values[i][j].item()); } } } @@ -759,23 +838,34 @@ void MetatensorPlumedAction::apply() { } } } else { - auto samples = block->samples()->as_metatensor(); - plumed_assert(samples.names().size() == 2); - plumed_assert(samples.names()[0] == std::string("system")); - plumed_assert(samples.names()[1] == std::string("atom")); - - auto& samples_values = samples.values(); + auto samples = block->samples(); + plumed_assert((samples->names() == std::vector{"system", "atom"})); + + auto samples_values = samples->values().to(torch::kCPU); + auto selected_atoms = this->evaluations_options_->get_selected_atoms(); + + // see above for an explanation of why we use this function + auto get_output_location = [&](unsigned i) { + if (selected_atoms.has_value()) { + auto sample = samples_values.index({static_cast(i), torch::indexing::Slice()}); + auto position = selected_atoms.value()->position(sample); + plumed_assert(position.has_value()); + return static_cast(position.value()); + } else { + return static_cast(samples_values[i][1].item()); + } + }; if (n_properties_ == 1) { for (unsigned i=0; i(samples_values(i, 1)); - output_grad[i][0] = value->getForce(atom_i); + auto output_i = get_output_location(i); + output_grad[i][0] = value->getForce(output_i); } } else { for (unsigned i=0; i(samples_values(i, 1)); + auto output_i = get_output_location(i); for (unsigned j=0; jgetForce(atom_i * n_properties_ + j); + output_grad[i][j] = value->getForce(output_i * n_properties_ + j); } } } @@ -842,6 +932,9 @@ namespace PLMD { namespace metatensor { keys.add("numbered", "SPECIES", "the atoms in each PLUMED species"); keys.reset_style("SPECIES", "atoms"); + keys.add("optional", "SELECTED_ATOMS", "subset of atoms that should be used for the calculation"); + keys.reset_style("SELECTED_ATOMS", "atoms"); + keys.add("optional", "SPECIES_TO_TYPES", "mapping from PLUMED SPECIES to metatensor's atomic types"); } From 46b77236f7bb824b861530e71b9e7d5b7c52d22f Mon Sep 17 00:00:00 2001 From: Luthaf Date: Thu, 23 May 2024 13:14:05 +0200 Subject: [PATCH 25/32] Remove regtests that rely on rascaline They will live in https://github.com/lab-cosmo/plumed-metatensor-tests for now --- regtest/metatensor/rt-perovskite/BaTiO3-CV.py | 101 - .../metatensor/rt-perovskite/COLVAR.reference | 3 - regtest/metatensor/rt-perovskite/Makefile | 1 - regtest/metatensor/rt-perovskite/config | 10 - .../metatensor/rt-perovskite/forces.reference | 2164 ----------------- regtest/metatensor/rt-perovskite/frames.xyz | 2164 ----------------- regtest/metatensor/rt-perovskite/plumed.dat | 13 - regtest/metatensor/rt-soap/.gitignore | 2 - regtest/metatensor/rt-soap/Makefile | 1 - regtest/metatensor/rt-soap/config | 9 - .../metatensor/rt-soap/crystal_structure.xyz | 78 - regtest/metatensor/rt-soap/forces.reference | 78 - regtest/metatensor/rt-soap/plumed.dat | 30 - regtest/metatensor/rt-soap/soap_cv.py | 94 - .../metatensor/rt-soap/soap_data.reference | 2 - .../rt-soap/soap_selected_data.reference | 2 - 16 files changed, 4752 deletions(-) delete mode 100644 regtest/metatensor/rt-perovskite/BaTiO3-CV.py delete mode 100644 regtest/metatensor/rt-perovskite/COLVAR.reference delete mode 100644 regtest/metatensor/rt-perovskite/Makefile delete mode 100644 regtest/metatensor/rt-perovskite/config delete mode 100644 regtest/metatensor/rt-perovskite/forces.reference delete mode 100644 regtest/metatensor/rt-perovskite/frames.xyz delete mode 100644 regtest/metatensor/rt-perovskite/plumed.dat delete mode 100644 regtest/metatensor/rt-soap/.gitignore delete mode 100644 regtest/metatensor/rt-soap/Makefile delete mode 100644 regtest/metatensor/rt-soap/config delete mode 100644 regtest/metatensor/rt-soap/crystal_structure.xyz delete mode 100644 regtest/metatensor/rt-soap/forces.reference delete mode 100644 regtest/metatensor/rt-soap/plumed.dat delete mode 100644 regtest/metatensor/rt-soap/soap_cv.py delete mode 100644 regtest/metatensor/rt-soap/soap_data.reference delete mode 100644 regtest/metatensor/rt-soap/soap_selected_data.reference diff --git a/regtest/metatensor/rt-perovskite/BaTiO3-CV.py b/regtest/metatensor/rt-perovskite/BaTiO3-CV.py deleted file mode 100644 index 076e4b9558..0000000000 --- a/regtest/metatensor/rt-perovskite/BaTiO3-CV.py +++ /dev/null @@ -1,101 +0,0 @@ -from typing import Dict, List, Optional - -import torch -from metatensor.torch import Labels, TensorBlock, TensorMap -from metatensor.torch.atomistic import ( - MetatensorAtomisticModel, - ModelCapabilities, - ModelMetadata, - ModelOutput, - System, -) -from rascaline.torch import SphericalExpansion - - -class BaTiO3_CV(torch.nn.Module): - def __init__(self): - super().__init__() - - # only compute the representation for λ=1, Ti centers and O neighbors - self.selected_keys = Labels( - ["o3_lambda", "o3_sigma", "center_type", "neighbor_type"], - values=torch.tensor([[1, 1, 56, 8]]), - ) - self.neighbors = Labels( - ["neighbor_type"], - values=torch.tensor([[8], [22], [56]]), - ) - - self.calculator = SphericalExpansion( - cutoff=3.0, - max_angular=1, - max_radial=1, - radial_basis={"Gto": {}}, - cutoff_function={"ShiftedCosine": {"width": 0.5}}, - center_atom_weight=1.0, - atomic_gaussian_width=0.5, - ) - - def forward( - self, - systems: List[System], - outputs: Dict[str, ModelOutput], - selected_atoms: Optional[Labels], - ) -> Dict[str, TensorMap]: - - if "plumed::cv" not in outputs: - return {} - - spherical_expansion = self.calculator( - systems, - selected_keys=self.selected_keys, - selected_samples=selected_atoms, - ) - - if len(systems[0]) == 0: - # PLUMED is trying to determine the size of the output - CV = torch.zeros((1, 1), dtype=torch.float64) - else: - CV = 100 * spherical_expansion.block().values.mean(dim=0).norm() - - block = TensorBlock( - values=CV.reshape(1, 1), - samples=Labels("system", torch.tensor([[0]])), - components=[], - properties=Labels("cv", torch.tensor([[0]])), - ) - cv = TensorMap( - keys=Labels("_", torch.tensor([[0]])), - blocks=[block], - ) - - return {"plumed::cv": cv} - - -cv = BaTiO3_CV() -cv.eval() - - -capabilities = ModelCapabilities( - outputs={"plumed::cv": ModelOutput(per_atom=False)}, - interaction_range=3.0, - supported_devices=["cpu"], - length_unit="A", - atomic_types=[56, 22, 8], - dtype="float64", -) - -metadata = ModelMetadata( - name="Polarisation-inspired CV in BaTiO3", - description=""" -This is an alternative implementation of the CV used in https://arxiv.org/abs/2310.12579 -to study phase transition in BaTiO3. -""", - references={ - "model": ["https://arxiv.org/abs/2310.12579"], - }, -) - - -model = MetatensorAtomisticModel(cv, metadata, capabilities) -model.export("BaTiO3_CV.pt", collect_extensions="extensions") diff --git a/regtest/metatensor/rt-perovskite/COLVAR.reference b/regtest/metatensor/rt-perovskite/COLVAR.reference deleted file mode 100644 index 19244daca1..0000000000 --- a/regtest/metatensor/rt-perovskite/COLVAR.reference +++ /dev/null @@ -1,3 +0,0 @@ -#! FIELDS time Pmod - 0.000000 0.000308 - 1.000000 5.811288 diff --git a/regtest/metatensor/rt-perovskite/Makefile b/regtest/metatensor/rt-perovskite/Makefile deleted file mode 100644 index 3703b27cea..0000000000 --- a/regtest/metatensor/rt-perovskite/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../scripts/test.make diff --git a/regtest/metatensor/rt-perovskite/config b/regtest/metatensor/rt-perovskite/config deleted file mode 100644 index 027cab2d99..0000000000 --- a/regtest/metatensor/rt-perovskite/config +++ /dev/null @@ -1,10 +0,0 @@ -plumed_modules=metatensor -plumed_needs=metatensor -type=driver - -arg="--plumed plumed.dat --ixyz frames.xyz --length-units A --dump-forces forces --dump-full-virial" - -function plumed_regtest_before(){ - python BaTiO3-CV.py - echo Generated model using generate-cv.py -} diff --git a/regtest/metatensor/rt-perovskite/forces.reference b/regtest/metatensor/rt-perovskite/forces.reference deleted file mode 100644 index cd34ad6ebb..0000000000 --- a/regtest/metatensor/rt-perovskite/forces.reference +++ /dev/null @@ -1,2164 +0,0 @@ -1080 -0.000372 0.000103 0.000103 0.000103 0.000372 0.000103 0.000103 0.000103 0.000372 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X -0.110017 -0.110017 -0.110017 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 0.064510 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064512 0.064512 -0.019005 -X 0.064511 0.064511 -0.019006 -X 0.064511 0.064511 -0.019006 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064510 -0.019006 0.064510 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064512 -0.019005 0.064512 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X 0.064511 -0.019006 0.064511 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064510 0.064510 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019005 0.064512 0.064512 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -X -0.019006 0.064511 0.064511 -1080 --6.194196 0.006156 1.158849 0.006156 -4.893458 -0.012612 1.158849 -0.012612 -4.853024 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.180634 0.003007 -0.046302 -X 0.156569 0.011927 -0.047068 -X 0.180085 0.007828 -0.042453 -X 0.173257 0.006141 -0.041371 -X 0.179709 0.000138 -0.048706 -X 0.180464 0.000443 -0.039403 -X 0.183772 0.002743 -0.049299 -X 0.140379 0.011994 -0.047539 -X 0.184572 0.000228 -0.045978 -X 0.187545 0.000247 -0.043851 -X 0.178471 0.008742 -0.040148 -X 0.187124 0.004884 -0.051277 -X 0.125679 0.008958 -0.050092 -X 0.186137 -0.003083 -0.050710 -X 0.179861 0.007179 -0.047383 -X 0.180698 0.002307 -0.041280 -X 0.058032 -0.007831 -0.048738 -X 0.127870 0.006048 -0.046870 -X 0.182233 -0.000667 -0.045770 -X 0.179872 0.011011 -0.040409 -X 0.179334 0.002614 -0.046585 -X 0.186029 0.003617 -0.047332 -X 0.181147 0.001675 -0.045362 -X 0.185328 0.008785 -0.043322 -X 0.179308 -0.000798 -0.045897 -X 0.087011 0.008758 -0.043412 -X 0.181561 0.000904 -0.047486 -X 0.177623 0.005519 -0.035770 -X 0.179621 0.002412 -0.044527 -X 0.182100 -0.001488 -0.043509 -X 0.180799 0.008110 -0.048709 -X 0.178805 0.003162 -0.052109 -X 0.178099 0.009402 -0.041401 -X 0.177925 0.001887 -0.044484 -X 0.181340 0.002687 -0.041402 -X 0.181557 0.011372 -0.043027 -X 0.187294 0.009208 -0.051249 -X 0.177001 -0.001952 -0.046674 -X 0.096059 0.001363 -0.038222 -X 0.155547 0.005782 -0.044762 -X 0.075634 0.000125 -0.039205 -X 0.183425 0.002104 -0.055875 -X 0.181013 0.004891 -0.043396 -X 0.182614 0.003724 -0.045591 -X 0.179196 0.000866 -0.044877 -X 0.179827 0.003553 -0.041508 -X 0.187656 0.005301 -0.049799 -X 0.178363 0.010226 -0.047527 -X 0.182754 0.003307 -0.043705 -X 0.184058 0.010089 -0.044881 -X 0.033532 0.011170 -0.053928 -X 0.166662 0.004680 -0.047540 -X 0.180662 0.011742 -0.052138 -X 0.180634 0.012656 -0.045929 -X 0.180010 0.006789 -0.048398 -X 0.078535 0.005986 -0.032715 -X 0.179061 0.002910 -0.042823 -X 0.180998 0.006469 -0.043719 -X 0.182451 0.003748 -0.043052 -X 0.180025 0.005148 -0.049614 -X 0.181890 -0.000212 -0.044650 -X 0.182176 0.010602 -0.045972 -X 0.181935 0.002815 -0.047773 -X 0.181533 0.001685 -0.044463 -X 0.179641 0.014992 -0.042625 -X 0.179752 0.003539 -0.044824 -X 0.182535 0.002298 -0.051488 -X 0.183141 -0.001938 -0.049240 -X 0.178528 -0.005321 -0.042430 -X 0.177106 0.005914 -0.042102 -X 0.181274 0.005796 -0.044809 -X 0.181634 0.003965 -0.043900 -X 0.180013 0.004080 -0.037811 -X 0.177927 0.006584 -0.044092 -X 0.181381 -0.001619 -0.046171 -X 0.183953 0.000141 -0.051991 -X 0.179624 0.008310 -0.040663 -X 0.181965 0.006813 -0.045209 -X 0.175569 -0.002079 -0.042904 -X 0.179218 0.002348 -0.049089 -X 0.183574 0.006242 -0.039270 -X 0.188064 0.003072 -0.044074 -X 0.184517 0.002624 -0.052108 -X 0.181353 -0.002467 -0.043108 -X 0.181229 0.007055 -0.047931 -X 0.181452 0.006255 -0.043622 -X 0.179812 0.000605 -0.040768 -X 0.182020 0.000895 -0.043553 -X 0.183322 0.004595 -0.045242 -X 0.184183 0.004502 -0.048180 -X 0.179153 0.001875 -0.049402 -X 0.179093 -0.001909 -0.049577 -X 0.181286 0.005393 -0.042045 -X 0.184283 -0.002067 -0.045445 -X 0.179412 -0.000824 -0.051349 -X 0.173717 -0.005648 -0.040435 -X 0.180271 0.010598 -0.048108 -X 0.180318 0.006195 -0.040005 -X 0.177958 -0.003418 -0.042708 -X 0.169168 0.005916 -0.049016 -X 0.180146 0.007923 -0.039167 -X 0.178326 0.006208 -0.048541 -X 0.180276 0.012014 -0.038720 -X 0.181208 -0.001375 -0.048466 -X 0.174056 0.004441 -0.036808 -X 0.177621 0.002774 -0.038473 -X 0.182169 0.004773 -0.044105 -X 0.171554 0.002952 -0.033908 -X 0.186189 0.005650 -0.044704 -X 0.183661 0.002647 -0.047947 -X 0.179625 0.004081 -0.047288 -X 0.177963 0.007832 -0.038254 -X 0.183673 0.001538 -0.045242 -X 0.091792 0.004152 -0.039606 -X 0.183878 0.010285 -0.050301 -X 0.180042 0.004134 -0.037989 -X 0.181794 0.000030 -0.040570 -X 0.092958 0.004886 -0.047274 -X 0.177687 0.003403 -0.043453 -X 0.182194 0.003349 -0.036671 -X 0.180218 0.000083 -0.048828 -X 0.180289 0.003631 -0.047692 -X 0.179084 0.005119 -0.039257 -X 0.180961 -0.001511 -0.046873 -X 0.180045 0.007252 -0.046222 -X -0.067851 -0.000571 -0.039472 -X 0.183443 0.002515 -0.049604 -X 0.181556 -0.000875 -0.042750 -X 0.181291 0.001451 -0.049777 -X 0.180043 0.008932 -0.043486 -X 0.183075 0.003072 -0.044764 -X 0.048913 0.015877 -0.042928 -X 0.175455 -0.001674 -0.043499 -X 0.173985 -0.002377 -0.043703 -X 0.180407 0.005346 -0.043705 -X 0.180897 -0.001123 -0.047866 -X 0.177799 0.002323 -0.049670 -X 0.180398 0.003135 -0.044072 -X 0.047500 -0.002108 -0.040712 -X 0.183731 0.016967 -0.040361 -X 0.179301 -0.003952 -0.042064 -X 0.185230 0.004555 -0.049029 -X 0.184722 -0.004774 -0.041448 -X 0.179456 0.005037 -0.042691 -X 0.125140 0.011579 -0.037268 -X 0.178355 0.006789 -0.043982 -X 0.178612 0.006702 -0.045697 -X 0.183454 -0.001872 -0.044927 -X 0.184257 0.007531 -0.051204 -X 0.181000 0.006672 -0.047204 -X 0.184473 0.003152 -0.051204 -X 0.176099 0.004675 -0.043296 -X 0.181655 0.007024 -0.040946 -X 0.185187 0.000798 -0.047334 -X 0.180108 0.007056 -0.044998 -X 0.181755 0.006327 -0.040048 -X -0.000486 0.000691 -0.039634 -X 0.078525 0.005914 -0.050218 -X 0.184614 0.008065 -0.049254 -X 0.179112 0.000868 -0.037769 -X 0.179599 0.003065 -0.044002 -X 0.174914 0.005112 -0.041332 -X 0.181769 0.005550 -0.041205 -X 0.177358 0.006578 -0.042975 -X 0.180245 0.002357 -0.040120 -X 0.181173 0.012752 -0.042463 -X 0.176582 -0.002178 -0.042060 -X 0.177883 0.002493 -0.044232 -X 0.177728 0.003581 -0.046376 -X 0.112609 0.001312 -0.037797 -X 0.180702 0.003759 -0.050940 -X 0.182365 -0.000160 -0.041052 -X 0.179768 0.013031 -0.045881 -X 0.179706 0.007690 -0.041960 -X 0.185134 0.006163 -0.052551 -X 0.184816 -0.000331 -0.045758 -X 0.177289 0.005026 -0.042899 -X 0.175628 0.007052 -0.049821 -X 0.183042 0.009050 -0.043572 -X 0.117629 0.004987 -0.042863 -X 0.181956 0.005507 -0.046980 -X 0.181306 -0.000926 -0.049539 -X 0.173747 0.007724 -0.041394 -X 0.180300 0.007226 -0.046497 -X 0.180707 0.003655 -0.038170 -X 0.180978 0.004658 -0.046351 -X 0.180723 -0.000257 -0.039133 -X 0.181701 0.004606 -0.046814 -X 0.179214 0.000166 -0.044293 -X 0.177028 0.001878 -0.040867 -X 0.181200 0.004102 -0.046119 -X -0.003028 -0.010715 -0.025222 -X 0.177137 0.000182 -0.040184 -X 0.177333 -0.000765 -0.037522 -X 0.184395 0.006394 -0.049396 -X 0.178568 0.003426 -0.038435 -X 0.181438 0.010149 -0.041115 -X 0.178963 0.003680 -0.045995 -X 0.175237 0.002351 -0.043191 -X -0.084985 0.010099 -0.024786 -X 0.181250 0.002764 -0.046655 -X 0.183304 0.003544 -0.052504 -X 0.178044 0.010123 -0.039038 -X 0.177955 0.005697 -0.043833 -X 0.045694 0.024815 -0.035114 -X 0.178159 0.000407 -0.039115 -X 0.085838 0.005934 -0.044147 -X 0.175390 0.007189 -0.039254 -X 0.183347 0.004144 -0.044339 -X 0.021049 0.005787 -0.047967 -X 0.182988 0.001214 -0.044530 -X 0.173261 0.004958 -0.042986 -X -0.005295 -0.011526 -0.030852 -X 0.180960 0.001061 -0.046607 -X 0.183975 0.000708 -0.051096 -X 0.178550 0.004279 -0.044055 -X -0.108056 -0.001753 -0.006233 -X -0.106187 -0.002682 -0.006420 -X -0.107907 -0.002114 -0.007621 -X -0.107652 -0.002221 -0.005837 -X -0.105762 -0.001315 -0.007096 -X -0.103872 -0.002102 -0.006950 -X -0.113621 -0.002724 0.001760 -X -0.103052 -0.001696 -0.020310 -X -0.104094 -0.002996 -0.001715 -X -0.110579 -0.001879 -0.000591 -X -0.105212 -0.001519 -0.017720 -X -0.104821 -0.001751 -0.004264 -X -0.104602 -0.002874 -0.004822 -X -0.106599 -0.002302 -0.002353 -X -0.104003 -0.003146 -0.007026 -X -0.105336 -0.002487 -0.005050 -X -0.107064 0.000527 -0.012132 -X -0.103394 -0.002405 -0.004678 -X -0.108143 -0.002323 -0.004561 -X -0.106239 -0.002762 -0.006331 -X -0.110223 -0.003679 0.000987 -X -0.104479 -0.000371 -0.015599 -X -0.106450 -0.000343 -0.009999 -X -0.108058 -0.002363 -0.006467 -X -0.111581 -0.000156 -0.005713 -X -0.102286 -0.002491 -0.013512 -X -0.107840 -0.003880 -0.003689 -X -0.102643 0.000163 -0.011918 -X -0.108443 -0.000896 -0.005399 -X -0.102115 -0.002479 -0.008193 -X -0.108561 -0.001120 -0.003242 -X -0.103288 -0.000330 -0.005329 -X -0.102339 -0.001307 -0.004941 -X -0.103250 -0.001322 -0.010393 -X -0.106603 -0.001842 -0.007491 -X -0.108531 -0.002438 -0.007906 -X -0.102326 -0.000267 -0.004422 -X -0.105901 -0.002747 -0.005216 -X -0.108765 -0.003677 -0.009690 -X -0.109875 -0.002255 -0.010061 -X -0.102984 -0.001981 -0.010584 -X -0.106211 -0.001411 -0.000631 -X -0.111129 -0.001533 0.005057 -X -0.107778 -0.003569 -0.014968 -X -0.107355 -0.003260 -0.004667 -X -0.110482 -0.001242 -0.000330 -X -0.105660 -0.002795 -0.018223 -X -0.105547 -0.002071 -0.009645 -X -0.107106 -0.002254 -0.008466 -X -0.104477 -0.002457 -0.008239 -X -0.111618 -0.003672 -0.010771 -X -0.103707 -0.002070 -0.008899 -X -0.107075 -0.001632 -0.000784 -X -0.109109 -0.001430 -0.003862 -X -0.108222 -0.000992 -0.007963 -X -0.098744 -0.002585 -0.007587 -X -0.109210 -0.002248 0.006955 -X -0.104156 -0.001490 -0.023150 -X -0.108678 -0.001711 -0.002563 -X -0.106401 -0.001538 -0.006135 -X -0.107809 -0.001480 -0.003690 -X -0.106375 -0.002334 -0.005042 -X -0.108207 -0.003360 -0.007868 -X -0.106050 -0.002418 -0.007331 -X -0.105470 -0.002527 -0.008218 -X -0.106700 -0.001950 -0.005750 -X -0.108134 -0.002114 -0.006338 -X -0.103657 -0.001477 -0.010604 -X -0.104738 -0.003035 -0.003370 -X -0.106806 -0.001581 -0.011662 -X -0.109646 -0.001502 -0.008604 -X -0.106177 -0.001096 -0.005625 -X -0.106285 -0.000800 -0.008734 -X -0.102398 -0.001693 -0.010782 -X -0.109001 -0.002755 -0.001627 -X -0.106328 -0.002492 -0.011386 -X -0.106572 -0.002824 -0.008805 -X -0.108987 -0.003908 -0.009357 -X -0.109875 -0.001805 0.003383 -X -0.102521 -0.002659 -0.021727 -X -0.105031 -0.002328 -0.004803 -X -0.114299 -0.002687 -0.003674 -X -0.106198 -0.000962 -0.013396 -X -0.102802 -0.003030 -0.004654 -X -0.109503 -0.001622 -0.008674 -X -0.104653 -0.001293 -0.003689 -X -0.107021 -0.003580 -0.005544 -X -0.106085 -0.002789 -0.008767 -X -0.108432 -0.001030 -0.005057 -X -0.107076 -0.002835 -0.005438 -X -0.104248 -0.002203 -0.008318 -X -0.107606 -0.002217 -0.002335 -X -0.113926 -0.001775 0.001913 -X -0.100515 -0.003195 -0.021019 -X -0.107719 -0.001675 -0.006174 -X -0.102531 -0.002448 -0.004204 -X -0.106675 -0.001803 -0.004247 -X -0.105673 -0.002138 -0.006216 -X -0.105188 -0.002638 -0.008905 -X -0.105432 -0.002822 -0.007486 -X -0.109321 -0.003535 -0.003074 -X -0.104344 -0.002863 -0.006350 -X -0.106044 -0.003666 -0.009083 -X -0.102634 -0.000711 -0.008675 -X -0.104733 -0.006170 -0.009383 -X -0.106130 -0.002129 -0.007087 -X -0.112029 -0.002312 -0.006029 -X -0.107088 -0.002366 -0.010096 -X -0.108950 -0.002706 -0.001718 -X -0.109657 -0.001663 -0.007116 -X -0.105036 -0.003271 -0.005908 -X -0.107430 -0.002909 -0.006074 -X -0.106188 -0.002693 -0.004392 -X -0.106740 -0.002489 -0.011768 -X -0.110344 -0.001965 0.001869 -X -0.101946 -0.002773 -0.017628 -X -0.107530 -0.003834 -0.007323 -X -0.108666 -0.002205 0.002103 -X -0.103747 -0.001632 -0.017687 -X -0.109250 -0.002959 -0.009423 -X -0.109851 -0.002717 -0.001535 -X -0.106520 -0.003190 -0.005505 -X -0.103938 -0.002090 -0.007839 -X -0.104920 -0.001647 -0.009272 -X -0.105690 -0.002938 -0.009764 -X -0.101077 -0.002933 -0.011909 -X -0.103372 -0.002181 -0.005158 -X -0.104955 -0.002401 -0.008553 -X -0.109382 -0.003006 0.003351 -X -0.101639 -0.001230 -0.016570 -X -0.108963 -0.004292 -0.008381 -X -0.105109 -0.005025 -0.015168 -X -0.099465 -0.000719 -0.013836 -X -0.108040 -0.004460 -0.003731 -X -0.103921 -0.002137 -0.013059 -X -0.107249 -0.001415 -0.006373 -X -0.105046 -0.003435 -0.007820 -X -0.106291 -0.003938 -0.008961 -X -0.105236 -0.002626 -0.010377 -X -0.105466 -0.003321 0.000088 -X -0.109516 -0.001877 -0.009357 -X -0.108155 -0.002711 -0.007513 -X -0.103218 -0.004717 -0.008972 -X -0.105538 -0.002953 -0.010175 -X -0.108398 -0.003249 -0.010943 -X -0.112169 -0.001216 -0.005516 -X -0.105616 -0.003838 -0.007828 -X -0.102108 -0.001945 -0.006875 -X -0.106788 -0.000506 -0.007919 -X -0.107216 -0.002677 -0.004786 -X -0.110183 -0.001995 0.000162 -X -0.108542 -0.002109 -0.019108 -X -0.104667 -0.003714 -0.005027 -X -0.107541 -0.001959 0.002499 -X -0.102232 -0.001363 -0.019188 -X -0.104391 -0.001492 -0.007432 -X -0.095968 -0.004173 -0.015480 -X -0.108008 -0.001863 -0.005533 -X -0.104607 -0.003242 -0.007063 -X -0.105953 -0.002393 -0.003283 -X -0.109392 -0.001740 -0.011651 -X -0.105830 -0.002179 -0.005539 -X -0.103543 -0.002557 -0.011207 -X -0.105507 -0.001103 -0.008430 -X -0.103196 -0.002614 -0.001017 -X -0.107270 -0.000639 -0.018620 -X -0.106592 -0.001243 -0.004636 -X -0.107556 -0.002916 -0.008932 -X -0.106108 -0.002487 -0.008310 -X -0.105350 -0.001838 -0.009673 -X -0.108542 -0.002569 -0.003734 -X -0.105159 -0.000842 -0.007039 -X -0.112344 -0.002321 -0.006234 -X -0.106026 -0.001340 -0.007904 -X -0.112689 -0.001878 -0.002716 -X -0.106689 -0.000516 -0.010877 -X -0.101558 -0.002096 -0.010615 -X -0.105079 -0.002289 -0.009156 -X -0.106772 -0.001147 0.000693 -X -0.105790 -0.002784 -0.013845 -X -0.104574 -0.002988 -0.005458 -X -0.105500 -0.000576 -0.007379 -X -0.102786 -0.004198 -0.006064 -X -0.106598 -0.001638 -0.005792 -X -0.106063 -0.002734 -0.006514 -X -0.112277 -0.002417 -0.008649 -X -0.113767 -0.002679 0.006799 -X -0.104500 -0.002048 -0.016251 -X -0.108924 -0.002111 -0.008483 -X -0.108504 -0.001655 0.003663 -X -0.102280 -0.002679 -0.019414 -X -0.103748 -0.002512 -0.009089 -X -0.107506 -0.003967 -0.005693 -X -0.107301 -0.000885 -0.005626 -X -0.106011 -0.001744 -0.007431 -X -0.103356 -0.001204 -0.009916 -X -0.109768 -0.000524 -0.004972 -X -0.106357 -0.002946 -0.006987 -X -0.103005 -0.002835 -0.005888 -X -0.102428 -0.003570 -0.010372 -X -0.111123 -0.002344 0.008222 -X -0.108185 -0.001194 -0.016120 -X -0.102874 -0.000097 -0.008797 -X -0.107557 -0.001913 -0.006425 -X -0.104563 -0.003439 -0.008361 -X -0.106133 -0.000920 -0.005117 -X -0.107765 -0.001953 -0.010403 -X -0.106276 -0.002800 -0.005261 -X -0.106005 -0.001035 -0.010871 -X -0.107707 -0.002125 -0.007910 -X -0.108100 -0.003034 -0.004181 -X -0.109480 -0.000091 -0.010363 -X -0.105893 -0.003251 -0.009025 -X -0.104246 -0.001954 -0.005253 -X -0.108057 -0.001483 -0.002897 -X -0.104583 -0.002415 -0.005528 -X -0.110743 -0.001556 0.027066 -X -0.100735 -0.006788 0.024559 -X -0.105836 -0.004530 0.025914 -X -0.101932 0.000867 0.023768 -X -0.105480 0.001576 0.026044 -X -0.108414 0.002043 0.026390 -X -0.101974 0.011711 0.025388 -X -0.107276 -0.000090 0.025454 -X -0.104877 0.006500 0.025607 -X -0.105829 0.013130 0.026061 -X -0.101418 0.002127 0.025522 -X -0.105510 0.001739 0.025351 -X -0.106314 -0.011931 0.026298 -X -0.107521 0.005316 0.026737 -X -0.107086 -0.002117 0.025010 -X -0.106666 -0.008740 0.026395 -X -0.114274 -0.004927 0.027857 -X -0.111020 -0.004491 0.026917 -X -0.110233 0.002165 0.026662 -X -0.107368 -0.003212 0.026661 -X -0.106299 0.009056 0.026105 -X -0.111233 0.001395 0.027156 -X -0.107921 0.001325 0.026302 -X -0.105436 -0.000290 0.024486 -X -0.107935 0.002675 0.027224 -X -0.106040 -0.002759 0.025481 -X -0.109221 -0.006228 0.026819 -X -0.109973 -0.002184 0.026540 -X -0.106404 0.000973 0.025685 -X -0.105353 0.003994 0.025700 -X -0.102924 -0.004615 0.025001 -X -0.108131 0.003769 0.026777 -X -0.109481 -0.000188 0.026522 -X -0.107463 -0.002888 0.026346 -X -0.105209 -0.005028 0.025527 -X -0.105773 -0.004442 0.025979 -X -0.107879 0.000073 0.026235 -X -0.104446 0.003694 0.025746 -X -0.108239 -0.000374 0.026643 -X -0.108291 0.001204 0.025998 -X -0.105155 -0.002761 0.026080 -X -0.107723 0.001811 0.026419 -X -0.110383 0.007439 0.026928 -X -0.107124 0.000402 0.025685 -X -0.106515 0.004154 0.026569 -X -0.109210 0.013016 0.027796 -X -0.105503 0.004814 0.025597 -X -0.104422 -0.005309 0.024645 -X -0.107256 -0.008463 0.026173 -X -0.106436 -0.003926 0.025382 -X -0.105082 -0.003231 0.025735 -X -0.104045 -0.014130 0.025792 -X -0.104641 -0.000487 0.026235 -X -0.106173 0.005116 0.025589 -X -0.107225 -0.002519 0.025440 -X -0.106761 -0.004338 0.026258 -X -0.106695 0.014707 0.027226 -X -0.106002 0.002662 0.025767 -X -0.107323 0.001358 0.025714 -X -0.106486 -0.001673 0.025972 -X -0.108015 0.000567 0.026274 -X -0.100751 0.006693 0.023125 -X -0.107480 -0.011472 0.026811 -X -0.107217 0.003127 0.026357 -X -0.099417 -0.003599 0.023380 -X -0.105297 -0.003756 0.025216 -X -0.105623 0.000869 0.025395 -X -0.106786 -0.001932 0.026421 -X -0.106846 0.003551 0.026262 -X -0.103996 0.001637 0.025088 -X -0.106656 0.002248 0.026591 -X -0.108691 0.003170 0.026488 -X -0.111250 0.002080 0.027890 -X -0.104768 0.000338 0.026804 -X -0.108988 0.009498 0.027027 -X -0.107624 0.006251 0.026690 -X -0.107692 0.002625 0.027926 -X -0.101344 0.001348 0.026561 -X -0.104317 0.011002 0.025789 -X -0.106086 -0.002542 0.026092 -X -0.108969 -0.005829 0.026984 -X -0.107959 0.002415 0.026408 -X -0.108206 -0.001995 0.027579 -X -0.110279 -0.000026 0.027473 -X -0.106035 -0.012785 0.026652 -X -0.108417 0.001857 0.026081 -X -0.106200 0.001993 0.026019 -X -0.107552 -0.004548 0.026298 -X -0.105976 0.001274 0.025950 -X -0.106693 0.001712 0.025848 -X -0.106527 -0.000237 0.025767 -X -0.102534 0.002607 0.024755 -X -0.109277 0.012288 0.025809 -X -0.108436 0.001154 0.026274 -X -0.106811 -0.000953 0.025890 -X -0.105360 0.000238 0.024152 -X -0.104103 0.003702 0.024415 -X -0.104427 -0.002380 0.026043 -X -0.104974 -0.014523 0.025745 -X -0.104666 0.000449 0.024501 -X -0.104389 -0.000031 0.024652 -X -0.105409 0.002071 0.025877 -X -0.106345 -0.000068 0.026640 -X -0.108119 0.000000 0.026187 -X -0.099461 0.004876 0.023862 -X -0.106517 0.003813 0.026581 -X -0.105217 0.001988 0.025589 -X -0.107802 0.002171 0.026662 -X -0.107693 0.004748 0.026703 -X -0.108647 -0.001386 0.026017 -X -0.100622 0.002583 0.024714 -X -0.105641 -0.000824 0.025842 -X -0.110577 0.001461 0.026945 -X -0.110369 -0.001662 0.026449 -X -0.106834 0.011657 0.025762 -X -0.106043 0.003244 0.025327 -X -0.107619 0.002717 0.026991 -X -0.105714 0.011569 0.025653 -X -0.109447 0.002290 0.027068 -X -0.105560 0.009330 0.025366 -X -0.108887 -0.011148 0.026644 -X -0.107479 0.002848 0.027114 -X -0.106364 0.001663 0.027215 -X -0.111076 -0.011566 0.026947 -X -0.105072 -0.001688 0.026238 -X -0.107532 -0.008166 0.026253 -X -0.106520 0.002001 0.026478 -X -0.106433 0.000402 0.026379 -X -0.105689 0.010409 0.025777 -X -0.105201 0.002696 0.025398 -X -0.107494 0.006790 0.026652 -X -0.107258 0.006058 0.026134 -X -0.108539 -0.000425 0.026613 -X -0.105878 0.004132 0.026157 -X -0.107094 -0.011327 0.027079 -X -0.105165 -0.000612 0.027000 -X -0.105843 0.001165 0.026758 -X -0.103684 0.008970 0.026641 -X -0.103452 0.000300 0.025700 -X -0.109782 0.001730 0.027732 -X -0.111433 0.003433 0.027642 -X -0.107652 0.002516 0.027768 -X -0.105847 -0.000004 0.026595 -X -0.106706 -0.002466 0.027111 -X -0.106088 -0.003140 0.027479 -X -0.107139 0.001184 0.026636 -X -0.100833 0.003354 0.024891 -X -0.104231 0.005053 0.025232 -X -0.110579 -0.003591 0.025825 -X -0.109659 0.003823 0.026386 -X -0.109515 0.011149 0.026787 -X -0.101534 -0.005740 0.024858 -X -0.107392 0.002168 0.026828 -X -0.107508 0.011955 0.026181 -X -0.103128 -0.001111 0.025771 -X -0.107790 0.000177 0.026299 -X -0.102629 -0.013332 0.025494 -X -0.102778 -0.003178 0.027586 -X -0.111567 -0.003218 0.027736 -X -0.113499 -0.008941 0.027848 -X -0.111802 0.000260 0.028109 -X -0.106510 0.001816 0.025548 -X -0.106570 0.009019 0.026373 -X -0.105701 0.006341 0.027109 -X -0.103512 0.010964 0.025922 -X -0.107326 -0.003771 0.026404 -X -0.106754 0.000820 0.026016 -X -0.104483 -0.000365 0.028155 -X -0.107740 -0.001043 0.026609 -X -0.103375 -0.006206 0.026188 -X -0.105064 -0.008964 0.026298 -X -0.104789 0.000803 0.025919 -X -0.102438 -0.000237 0.025448 -X -0.107037 -0.000780 0.026590 -X -0.104924 0.000903 0.025735 -X -0.111322 0.002241 0.027334 -X -0.107880 -0.001933 0.027025 -X -0.102621 -0.006533 0.025564 -X -0.108152 0.000033 0.026809 -X -0.104032 -0.005362 0.025607 -X -0.109381 -0.000238 0.026140 -X -0.105325 0.000011 0.025111 -X -0.102471 0.005672 0.024720 -X -0.107847 0.005737 0.025688 -X -0.106314 -0.000622 0.026179 -X -0.106156 0.000619 0.025426 -X -0.106737 0.009752 0.026564 -X -0.103066 0.000481 0.025063 -X -0.107126 0.002972 0.025826 -X -0.107710 0.012472 0.026606 -X -0.107009 -0.000381 0.024494 -X -0.106758 -0.002471 0.026787 -X -0.105513 -0.008895 0.026201 -X -0.109666 0.000655 0.026993 -X -0.106513 0.000965 0.026210 -X -0.105190 -0.012458 0.025743 -X -0.111017 0.000712 0.026551 -X -0.107444 0.003692 0.025130 -X -0.105266 -0.000649 0.023950 -X -0.101857 -0.008014 0.025145 -X -0.105516 0.007355 0.025949 -X -0.103378 0.001691 0.025877 -X -0.102948 -0.004138 0.024245 -X -0.108205 -0.001548 0.026308 -X -0.108057 0.001404 0.026615 -X -0.108830 0.006550 0.026445 -X -0.109563 -0.011447 0.027112 -X -0.106107 -0.002281 0.026635 -X -0.108541 -0.001153 0.026189 -X -0.103275 -0.002455 0.026256 -X -0.104570 0.006145 0.025833 -X -0.108066 -0.002440 0.026364 -X -0.103974 -0.001466 0.025916 -X -0.102471 -0.002880 0.025051 -X -0.106103 0.002873 0.025947 -X -0.103613 0.000233 0.025193 -X 0.032457 -0.007420 0.027475 -X 0.029227 0.000283 0.028404 -X 0.032491 -0.000942 0.026301 -X 0.031554 0.000838 0.026516 -X 0.032851 -0.004764 0.022889 -X 0.032785 -0.004395 0.027710 -X 0.033743 -0.001196 0.023372 -X 0.031465 -0.003711 0.026181 -X 0.033457 0.002107 0.027790 -X 0.032493 0.003746 0.024193 -X 0.034509 -0.000128 0.022817 -X 0.213402 0.004035 0.012576 -X 0.030936 -0.002970 0.025906 -X 0.034570 -0.001553 0.025019 -X 0.032392 0.002945 0.026893 -X 0.032226 0.003924 0.025639 -X 0.031360 -0.001176 0.025278 -X 0.031358 -0.004794 0.024925 -X 0.033015 -0.006956 0.024800 -X 0.292525 -0.002673 0.010747 -X 0.031844 0.000078 0.024042 -X 0.031932 -0.001776 0.028928 -X 0.032049 -0.006366 0.027963 -X 0.032918 -0.002768 0.026780 -X 0.170072 -0.023620 0.010669 -X 0.032996 -0.002511 0.025283 -X 0.127436 0.006937 0.022309 -X 0.031607 -0.004600 0.023733 -X 0.036445 -0.004216 0.021338 -X 0.187784 -0.000170 0.029095 -X 0.034353 -0.006733 0.021298 -X 0.041947 -0.002628 0.025365 -X 0.214874 0.006424 0.013765 -X 0.032569 -0.006438 0.028073 -X 0.031182 -0.004410 0.028493 -X 0.032383 -0.003541 0.023362 -X 0.032239 -0.001805 0.026412 -X 0.056298 -0.001311 0.027998 -X 0.033074 0.001369 0.024912 -X 0.032286 -0.001468 0.022338 -X 0.030211 0.001025 0.024973 -X 0.032940 -0.003520 0.026170 -X 0.031719 -0.007354 0.027948 -X 0.073844 -0.002731 0.025664 -X 0.032110 -0.000712 0.027783 -X 0.032349 -0.005248 0.025635 -X 0.031238 -0.002755 0.028523 -X 0.029613 -0.003331 0.027255 -X 0.084369 -0.009156 0.027896 -X 0.029538 -0.003588 0.031198 -X 0.031331 -0.000308 0.023846 -X 0.030545 -0.004770 0.026064 -X 0.155248 0.004992 0.030004 -X 0.084977 -0.002213 0.025343 -X 0.029767 -0.004514 0.024009 -X 0.028641 -0.001865 0.030876 -X 0.032639 -0.005185 0.028060 -X 0.030625 -0.001631 0.027254 -X 0.032651 -0.001116 0.024594 -X 0.032472 -0.002228 0.028217 -X 0.031112 -0.000569 0.030697 -X 0.122552 -0.002271 0.027793 -X 0.031011 -0.001471 0.028633 -X 0.031956 0.000266 0.027587 -X 0.028738 0.001904 0.029648 -X 0.031415 -0.002631 0.026952 -X 0.032914 -0.003641 0.025357 -X 0.031052 0.000264 0.025926 -X 0.032209 0.003768 0.027294 -X 0.032624 0.001958 0.023734 -X 0.031287 -0.001703 0.021880 -X 0.033857 -0.004471 0.023675 -X 0.033323 -0.001660 0.019615 -X 0.032857 -0.005228 0.022613 -X 0.118975 -0.004573 0.021941 -X 0.057517 -0.001665 0.028454 -X 0.139656 -0.002988 0.020756 -X 0.033630 0.003732 0.020176 -X 0.034921 0.002225 0.023269 -X 0.028794 -0.001273 0.029237 -X 0.032015 -0.004151 0.026898 -X 0.031792 0.001456 0.021905 -X 0.033266 -0.004494 0.022856 -X 0.033677 0.001958 0.024137 -X 0.031358 -0.000426 0.026257 -X 0.032371 -0.004462 0.025075 -X 0.182635 -0.008777 0.031945 -X 0.048524 0.001259 0.028079 -X 0.032769 -0.000858 0.026718 -X 0.032170 0.003710 0.029513 -X 0.030227 0.000766 0.030760 -X 0.133677 -0.001434 0.015277 -X 0.033764 -0.006446 0.017281 -X 0.033128 -0.000512 0.023656 -X 0.033013 -0.000524 0.024085 -X 0.032030 0.003098 0.024366 -X 0.032921 0.001213 0.026250 -X 0.032194 -0.000688 0.025438 -X 0.031728 -0.004290 0.026305 -X 0.031567 -0.000468 0.027998 -X 0.034085 -0.002941 0.021982 -X 0.034686 -0.000154 0.024213 -X 0.032758 -0.000268 0.021602 -X 0.032564 -0.004043 0.026291 -X 0.030636 0.000133 0.023915 -X 0.032674 -0.002221 0.022973 -X 0.033801 -0.002214 0.020680 -X 0.034181 0.000034 0.018923 -X 0.032193 0.001998 0.030802 -X 0.032901 -0.001079 0.027344 -X 0.029869 0.000087 0.032289 -X 0.031792 -0.001523 0.029169 -X 0.030358 0.002784 0.033174 -X 0.028257 -0.003504 0.033426 -X 0.033226 0.001551 0.019771 -X 0.034803 -0.000378 0.021639 -X 0.032121 0.002100 0.021101 -X 0.128052 0.001733 0.025419 -X 0.033876 0.001416 0.024992 -X 0.034033 0.000341 0.020812 -X 0.031948 0.001057 0.023109 -X 0.032685 0.002651 0.021740 -X 0.034494 -0.000463 0.021734 -X 0.033446 -0.004711 0.023607 -X 0.031248 0.002802 0.024805 -X 0.029365 0.000953 0.023730 -X 0.033628 0.000284 0.023215 -X 0.031247 0.002039 0.021433 -X 0.033108 0.004835 0.023722 -X 0.034205 -0.002972 0.024419 -X 0.034918 0.001834 0.023509 -X 0.031533 0.000072 0.023178 -X 0.031384 -0.001994 0.022151 -X 0.034498 0.005659 0.019806 -X 0.034036 0.002202 0.021180 -X 0.045497 -0.001035 0.018910 -X 0.034844 0.003417 0.026406 -X 0.034751 0.002781 0.020431 -X 0.030136 0.001604 0.030064 -X 0.033947 0.000172 0.022865 -X 0.033179 -0.005210 0.023140 -X 0.035700 -0.002756 0.022328 -X 0.031401 0.005253 0.028788 -X 0.030902 0.003214 0.030552 -X 0.032685 -0.003730 0.024106 -X 0.032929 -0.009414 0.020386 -X 0.033628 -0.004928 0.018342 -X 0.031313 -0.001639 0.026040 -X 0.031396 -0.010582 0.025098 -X 0.122929 -0.009365 0.023739 -X 0.031589 -0.008983 0.027587 -X 0.032974 -0.006223 0.020985 -X 0.033072 -0.003594 0.023229 -X 0.032055 -0.005472 0.024164 -X 0.032636 -0.004374 0.024054 -X 0.031424 -0.007178 0.028120 -X 0.031437 -0.003600 0.028722 -X 0.029445 -0.006395 0.025567 -X 0.031141 -0.006927 0.026950 -X 0.032944 -0.004868 0.022883 -X 0.033864 -0.008923 0.021206 -X 0.280659 -0.008960 0.018824 -X 0.033773 -0.003810 0.021922 -X 0.033354 -0.008608 0.025108 -X 0.028229 -0.006558 0.034681 -X 0.030702 -0.007945 0.026469 -X 0.032541 -0.008019 0.025747 -X 0.163295 -0.020518 0.024885 -X 0.032245 -0.004592 0.030344 -X 0.027612 -0.007756 0.034915 -X 0.032044 -0.003766 0.030683 -X 0.030800 -0.004894 0.032431 -X 0.031317 -0.007720 0.026533 -X 0.030354 -0.008917 0.029571 -X 0.164183 -0.008242 0.016798 -X 0.031878 -0.008974 0.021809 -X 0.030478 -0.003468 0.028344 -X 0.029648 -0.002398 0.030710 -X 0.030518 -0.010193 0.027396 -X 0.031946 -0.005005 0.026882 -X 0.089467 -0.000781 0.024009 -X 0.030981 -0.001300 0.031387 -X 0.032604 -0.003689 0.029175 -X 0.032974 -0.006884 0.026952 -X 0.032048 0.000521 0.027064 -X 0.033181 -0.000554 0.020468 -X 0.033145 0.000543 0.025936 -X 0.033626 -0.000499 0.031429 -X 0.031351 -0.003479 0.029656 -X 0.033016 -0.005878 0.028352 -X 0.032752 -0.003323 0.029763 -X 0.030727 -0.000103 0.029857 -X 0.206980 0.003968 0.023404 -X 0.133385 0.000884 0.030576 -X 0.034413 -0.000419 0.027520 -X 0.031381 -0.001221 0.029075 -X 0.032901 -0.004949 0.028609 -X 0.031798 -0.003397 0.030465 -X 0.031692 0.001235 0.031681 -X 0.028862 0.000877 0.033186 -X 0.033810 -0.002695 0.024323 -X 0.032836 0.001293 0.025914 -X 0.031550 -0.002606 0.026663 -X 0.029625 -0.005317 0.029549 -X 0.033312 -0.000394 0.025847 -X 0.097312 -0.002024 0.018941 -X 0.033013 -0.007087 0.023062 -X 0.034195 -0.001931 0.022228 -X 0.030586 -0.005027 0.027132 -X 0.031676 -0.002333 0.025631 -X 0.031998 0.001306 0.031657 -X 0.031562 -0.003237 0.029793 -X 0.032404 -0.000767 0.027084 -X 0.033114 -0.000225 0.025904 -X 0.032971 -0.002976 0.025928 -X 0.099550 -0.005252 0.028926 diff --git a/regtest/metatensor/rt-perovskite/frames.xyz b/regtest/metatensor/rt-perovskite/frames.xyz deleted file mode 100644 index 81086ca340..0000000000 --- a/regtest/metatensor/rt-perovskite/frames.xyz +++ /dev/null @@ -1,2164 +0,0 @@ -1080 -23.985 0.0 0.0 0.0 23.985 0.0 0.0 0.0 23.985 -Ba 0.00000000 0.00000000 0.00000000 -Ba 0.00000000 0.00000000 3.99750000 -Ba 0.00000000 0.00000000 7.99500000 -Ba 0.00000000 0.00000000 11.99250000 -Ba 0.00000000 0.00000000 15.99000000 -Ba 0.00000000 0.00000000 19.98750000 -Ba 0.00000000 3.99750000 0.00000000 -Ba 0.00000000 3.99750000 3.99750000 -Ba 0.00000000 3.99750000 7.99500000 -Ba 0.00000000 3.99750000 11.99250000 -Ba 0.00000000 3.99750000 15.99000000 -Ba 0.00000000 3.99750000 19.98750000 -Ba 0.00000000 7.99500000 0.00000000 -Ba 0.00000000 7.99500000 3.99750000 -Ba 0.00000000 7.99500000 7.99500000 -Ba 0.00000000 7.99500000 11.99250000 -Ba 0.00000000 7.99500000 15.99000000 -Ba 0.00000000 7.99500000 19.98750000 -Ba 0.00000000 11.99250000 0.00000000 -Ba 0.00000000 11.99250000 3.99750000 -Ba 0.00000000 11.99250000 7.99500000 -Ba 0.00000000 11.99250000 11.99250000 -Ba 0.00000000 11.99250000 15.99000000 -Ba 0.00000000 11.99250000 19.98750000 -Ba 0.00000000 15.99000000 0.00000000 -Ba 0.00000000 15.99000000 3.99750000 -Ba 0.00000000 15.99000000 7.99500000 -Ba 0.00000000 15.99000000 11.99250000 -Ba 0.00000000 15.99000000 15.99000000 -Ba 0.00000000 15.99000000 19.98750000 -Ba 0.00000000 19.98750000 0.00000000 -Ba 0.00000000 19.98750000 3.99750000 -Ba 0.00000000 19.98750000 7.99500000 -Ba 0.00000000 19.98750000 11.99250000 -Ba 0.00000000 19.98750000 15.99000000 -Ba 0.00000000 19.98750000 19.98750000 -Ba 3.99750000 0.00000000 0.00000000 -Ba 3.99750000 0.00000000 3.99750000 -Ba 3.99750000 0.00000000 7.99500000 -Ba 3.99750000 0.00000000 11.99250000 -Ba 3.99750000 0.00000000 15.99000000 -Ba 3.99750000 0.00000000 19.98750000 -Ba 3.99750000 3.99750000 0.00000000 -Ba 3.99750000 3.99750000 3.99750000 -Ba 3.99750000 3.99750000 7.99500000 -Ba 3.99750000 3.99750000 11.99250000 -Ba 3.99750000 3.99750000 15.99000000 -Ba 3.99750000 3.99750000 19.98750000 -Ba 3.99750000 7.99500000 0.00000000 -Ba 3.99750000 7.99500000 3.99750000 -Ba 3.99750000 7.99500000 7.99500000 -Ba 3.99750000 7.99500000 11.99250000 -Ba 3.99750000 7.99500000 15.99000000 -Ba 3.99750000 7.99500000 19.98750000 -Ba 3.99750000 11.99250000 0.00000000 -Ba 3.99750000 11.99250000 3.99750000 -Ba 3.99750000 11.99250000 7.99500000 -Ba 3.99750000 11.99250000 11.99250000 -Ba 3.99750000 11.99250000 15.99000000 -Ba 3.99750000 11.99250000 19.98750000 -Ba 3.99750000 15.99000000 0.00000000 -Ba 3.99750000 15.99000000 3.99750000 -Ba 3.99750000 15.99000000 7.99500000 -Ba 3.99750000 15.99000000 11.99250000 -Ba 3.99750000 15.99000000 15.99000000 -Ba 3.99750000 15.99000000 19.98750000 -Ba 3.99750000 19.98750000 0.00000000 -Ba 3.99750000 19.98750000 3.99750000 -Ba 3.99750000 19.98750000 7.99500000 -Ba 3.99750000 19.98750000 11.99250000 -Ba 3.99750000 19.98750000 15.99000000 -Ba 3.99750000 19.98750000 19.98750000 -Ba 7.99500000 0.00000000 0.00000000 -Ba 7.99500000 0.00000000 3.99750000 -Ba 7.99500000 0.00000000 7.99500000 -Ba 7.99500000 0.00000000 11.99250000 -Ba 7.99500000 0.00000000 15.99000000 -Ba 7.99500000 0.00000000 19.98750000 -Ba 7.99500000 3.99750000 0.00000000 -Ba 7.99500000 3.99750000 3.99750000 -Ba 7.99500000 3.99750000 7.99500000 -Ba 7.99500000 3.99750000 11.99250000 -Ba 7.99500000 3.99750000 15.99000000 -Ba 7.99500000 3.99750000 19.98750000 -Ba 7.99500000 7.99500000 0.00000000 -Ba 7.99500000 7.99500000 3.99750000 -Ba 7.99500000 7.99500000 7.99500000 -Ba 7.99500000 7.99500000 11.99250000 -Ba 7.99500000 7.99500000 15.99000000 -Ba 7.99500000 7.99500000 19.98750000 -Ba 7.99500000 11.99250000 0.00000000 -Ba 7.99500000 11.99250000 3.99750000 -Ba 7.99500000 11.99250000 7.99500000 -Ba 7.99500000 11.99250000 11.99250000 -Ba 7.99500000 11.99250000 15.99000000 -Ba 7.99500000 11.99250000 19.98750000 -Ba 7.99500000 15.99000000 0.00000000 -Ba 7.99500000 15.99000000 3.99750000 -Ba 7.99500000 15.99000000 7.99500000 -Ba 7.99500000 15.99000000 11.99250000 -Ba 7.99500000 15.99000000 15.99000000 -Ba 7.99500000 15.99000000 19.98750000 -Ba 7.99500000 19.98750000 0.00000000 -Ba 7.99500000 19.98750000 3.99750000 -Ba 7.99500000 19.98750000 7.99500000 -Ba 7.99500000 19.98750000 11.99250000 -Ba 7.99500000 19.98750000 15.99000000 -Ba 7.99500000 19.98750000 19.98750000 -Ba 11.99250000 0.00000000 0.00000000 -Ba 11.99250000 0.00000000 3.99750000 -Ba 11.99250000 0.00000000 7.99500000 -Ba 11.99250000 0.00000000 11.99250000 -Ba 11.99250000 0.00000000 15.99000000 -Ba 11.99250000 0.00000000 19.98750000 -Ba 11.99250000 3.99750000 0.00000000 -Ba 11.99250000 3.99750000 3.99750000 -Ba 11.99250000 3.99750000 7.99500000 -Ba 11.99250000 3.99750000 11.99250000 -Ba 11.99250000 3.99750000 15.99000000 -Ba 11.99250000 3.99750000 19.98750000 -Ba 11.99250000 7.99500000 0.00000000 -Ba 11.99250000 7.99500000 3.99750000 -Ba 11.99250000 7.99500000 7.99500000 -Ba 11.99250000 7.99500000 11.99250000 -Ba 11.99250000 7.99500000 15.99000000 -Ba 11.99250000 7.99500000 19.98750000 -Ba 11.99250000 11.99250000 0.00000000 -Ba 11.99250000 11.99250000 3.99750000 -Ba 11.99250000 11.99250000 7.99500000 -Ba 11.99250000 11.99250000 11.99250000 -Ba 11.99250000 11.99250000 15.99000000 -Ba 11.99250000 11.99250000 19.98750000 -Ba 11.99250000 15.99000000 0.00000000 -Ba 11.99250000 15.99000000 3.99750000 -Ba 11.99250000 15.99000000 7.99500000 -Ba 11.99250000 15.99000000 11.99250000 -Ba 11.99250000 15.99000000 15.99000000 -Ba 11.99250000 15.99000000 19.98750000 -Ba 11.99250000 19.98750000 0.00000000 -Ba 11.99250000 19.98750000 3.99750000 -Ba 11.99250000 19.98750000 7.99500000 -Ba 11.99250000 19.98750000 11.99250000 -Ba 11.99250000 19.98750000 15.99000000 -Ba 11.99250000 19.98750000 19.98750000 -Ba 15.99000000 0.00000000 0.00000000 -Ba 15.99000000 0.00000000 3.99750000 -Ba 15.99000000 0.00000000 7.99500000 -Ba 15.99000000 0.00000000 11.99250000 -Ba 15.99000000 0.00000000 15.99000000 -Ba 15.99000000 0.00000000 19.98750000 -Ba 15.99000000 3.99750000 0.00000000 -Ba 15.99000000 3.99750000 3.99750000 -Ba 15.99000000 3.99750000 7.99500000 -Ba 15.99000000 3.99750000 11.99250000 -Ba 15.99000000 3.99750000 15.99000000 -Ba 15.99000000 3.99750000 19.98750000 -Ba 15.99000000 7.99500000 0.00000000 -Ba 15.99000000 7.99500000 3.99750000 -Ba 15.99000000 7.99500000 7.99500000 -Ba 15.99000000 7.99500000 11.99250000 -Ba 15.99000000 7.99500000 15.99000000 -Ba 15.99000000 7.99500000 19.98750000 -Ba 15.99000000 11.99250000 0.00000000 -Ba 15.99000000 11.99250000 3.99750000 -Ba 15.99000000 11.99250000 7.99500000 -Ba 15.99000000 11.99250000 11.99250000 -Ba 15.99000000 11.99250000 15.99000000 -Ba 15.99000000 11.99250000 19.98750000 -Ba 15.99000000 15.99000000 0.00000000 -Ba 15.99000000 15.99000000 3.99750000 -Ba 15.99000000 15.99000000 7.99500000 -Ba 15.99000000 15.99000000 11.99250000 -Ba 15.99000000 15.99000000 15.99000000 -Ba 15.99000000 15.99000000 19.98750000 -Ba 15.99000000 19.98750000 0.00000000 -Ba 15.99000000 19.98750000 3.99750000 -Ba 15.99000000 19.98750000 7.99500000 -Ba 15.99000000 19.98750000 11.99250000 -Ba 15.99000000 19.98750000 15.99000000 -Ba 15.99000000 19.98750000 19.98750000 -Ba 19.98750000 0.00000000 0.00000000 -Ba 19.98750000 0.00000000 3.99750000 -Ba 19.98750000 0.00000000 7.99500000 -Ba 19.98750000 0.00000000 11.99250000 -Ba 19.98750000 0.00000000 15.99000000 -Ba 19.98750000 0.00000000 19.98750000 -Ba 19.98750000 3.99750000 0.00000000 -Ba 19.98750000 3.99750000 3.99750000 -Ba 19.98750000 3.99750000 7.99500000 -Ba 19.98750000 3.99750000 11.99250000 -Ba 19.98750000 3.99750000 15.99000000 -Ba 19.98750000 3.99750000 19.98750000 -Ba 19.98750000 7.99500000 0.00000000 -Ba 19.98750000 7.99500000 3.99750000 -Ba 19.98750000 7.99500000 7.99500000 -Ba 19.98750000 7.99500000 11.99250000 -Ba 19.98750000 7.99500000 15.99000000 -Ba 19.98750000 7.99500000 19.98750000 -Ba 19.98750000 11.99250000 0.00000000 -Ba 19.98750000 11.99250000 3.99750000 -Ba 19.98750000 11.99250000 7.99500000 -Ba 19.98750000 11.99250000 11.99250000 -Ba 19.98750000 11.99250000 15.99000000 -Ba 19.98750000 11.99250000 19.98750000 -Ba 19.98750000 15.99000000 0.00000000 -Ba 19.98750000 15.99000000 3.99750000 -Ba 19.98750000 15.99000000 7.99500000 -Ba 19.98750000 15.99000000 11.99250000 -Ba 19.98750000 15.99000000 15.99000000 -Ba 19.98750000 15.99000000 19.98750000 -Ba 19.98750000 19.98750000 0.00000000 -Ba 19.98750000 19.98750000 3.99750000 -Ba 19.98750000 19.98750000 7.99500000 -Ba 19.98750000 19.98750000 11.99250000 -Ba 19.98750000 19.98750000 15.99000000 -Ba 19.98750000 19.98750000 19.98750000 -Ti 1.99875000 1.99875000 1.99875000 -Ti 1.99875000 1.99875000 5.99625000 -Ti 1.99875000 1.99875000 9.99375000 -Ti 1.99875000 1.99875000 13.99120000 -Ti 1.99875000 1.99875000 17.98870000 -Ti 1.99875000 1.99875000 21.98620000 -Ti 1.99875000 5.99625000 1.99875000 -Ti 1.99875000 5.99625000 5.99625000 -Ti 1.99875000 5.99625000 9.99375000 -Ti 1.99875000 5.99625000 13.99120000 -Ti 1.99875000 5.99625000 17.98870000 -Ti 1.99875000 5.99625000 21.98620000 -Ti 1.99875000 9.99375000 1.99875000 -Ti 1.99875000 9.99375000 5.99625000 -Ti 1.99875000 9.99375000 9.99375000 -Ti 1.99875000 9.99375000 13.99120000 -Ti 1.99875000 9.99375000 17.98870000 -Ti 1.99875000 9.99375000 21.98620000 -Ti 1.99875000 13.99120000 1.99875000 -Ti 1.99875000 13.99120000 5.99625000 -Ti 1.99875000 13.99120000 9.99375000 -Ti 1.99875000 13.99120000 13.99120000 -Ti 1.99875000 13.99120000 17.98870000 -Ti 1.99875000 13.99120000 21.98620000 -Ti 1.99875000 17.98870000 1.99875000 -Ti 1.99875000 17.98870000 5.99625000 -Ti 1.99875000 17.98870000 9.99375000 -Ti 1.99875000 17.98870000 13.99120000 -Ti 1.99875000 17.98870000 17.98870000 -Ti 1.99875000 17.98870000 21.98620000 -Ti 1.99875000 21.98620000 1.99875000 -Ti 1.99875000 21.98620000 5.99625000 -Ti 1.99875000 21.98620000 9.99375000 -Ti 1.99875000 21.98620000 13.99120000 -Ti 1.99875000 21.98620000 17.98870000 -Ti 1.99875000 21.98620000 21.98620000 -Ti 5.99625000 1.99875000 1.99875000 -Ti 5.99625000 1.99875000 5.99625000 -Ti 5.99625000 1.99875000 9.99375000 -Ti 5.99625000 1.99875000 13.99120000 -Ti 5.99625000 1.99875000 17.98870000 -Ti 5.99625000 1.99875000 21.98620000 -Ti 5.99625000 5.99625000 1.99875000 -Ti 5.99625000 5.99625000 5.99625000 -Ti 5.99625000 5.99625000 9.99375000 -Ti 5.99625000 5.99625000 13.99120000 -Ti 5.99625000 5.99625000 17.98870000 -Ti 5.99625000 5.99625000 21.98620000 -Ti 5.99625000 9.99375000 1.99875000 -Ti 5.99625000 9.99375000 5.99625000 -Ti 5.99625000 9.99375000 9.99375000 -Ti 5.99625000 9.99375000 13.99120000 -Ti 5.99625000 9.99375000 17.98870000 -Ti 5.99625000 9.99375000 21.98620000 -Ti 5.99625000 13.99120000 1.99875000 -Ti 5.99625000 13.99120000 5.99625000 -Ti 5.99625000 13.99120000 9.99375000 -Ti 5.99625000 13.99120000 13.99120000 -Ti 5.99625000 13.99120000 17.98870000 -Ti 5.99625000 13.99120000 21.98620000 -Ti 5.99625000 17.98870000 1.99875000 -Ti 5.99625000 17.98870000 5.99625000 -Ti 5.99625000 17.98870000 9.99375000 -Ti 5.99625000 17.98870000 13.99120000 -Ti 5.99625000 17.98870000 17.98870000 -Ti 5.99625000 17.98870000 21.98620000 -Ti 5.99625000 21.98620000 1.99875000 -Ti 5.99625000 21.98620000 5.99625000 -Ti 5.99625000 21.98620000 9.99375000 -Ti 5.99625000 21.98620000 13.99120000 -Ti 5.99625000 21.98620000 17.98870000 -Ti 5.99625000 21.98620000 21.98620000 -Ti 9.99375000 1.99875000 1.99875000 -Ti 9.99375000 1.99875000 5.99625000 -Ti 9.99375000 1.99875000 9.99375000 -Ti 9.99375000 1.99875000 13.99120000 -Ti 9.99375000 1.99875000 17.98870000 -Ti 9.99375000 1.99875000 21.98620000 -Ti 9.99375000 5.99625000 1.99875000 -Ti 9.99375000 5.99625000 5.99625000 -Ti 9.99375000 5.99625000 9.99375000 -Ti 9.99375000 5.99625000 13.99120000 -Ti 9.99375000 5.99625000 17.98870000 -Ti 9.99375000 5.99625000 21.98620000 -Ti 9.99375000 9.99375000 1.99875000 -Ti 9.99375000 9.99375000 5.99625000 -Ti 9.99375000 9.99375000 9.99375000 -Ti 9.99375000 9.99375000 13.99120000 -Ti 9.99375000 9.99375000 17.98870000 -Ti 9.99375000 9.99375000 21.98620000 -Ti 9.99375000 13.99120000 1.99875000 -Ti 9.99375000 13.99120000 5.99625000 -Ti 9.99375000 13.99120000 9.99375000 -Ti 9.99375000 13.99120000 13.99120000 -Ti 9.99375000 13.99120000 17.98870000 -Ti 9.99375000 13.99120000 21.98620000 -Ti 9.99375000 17.98870000 1.99875000 -Ti 9.99375000 17.98870000 5.99625000 -Ti 9.99375000 17.98870000 9.99375000 -Ti 9.99375000 17.98870000 13.99120000 -Ti 9.99375000 17.98870000 17.98870000 -Ti 9.99375000 17.98870000 21.98620000 -Ti 9.99375000 21.98620000 1.99875000 -Ti 9.99375000 21.98620000 5.99625000 -Ti 9.99375000 21.98620000 9.99375000 -Ti 9.99375000 21.98620000 13.99120000 -Ti 9.99375000 21.98620000 17.98870000 -Ti 9.99375000 21.98620000 21.98620000 -Ti 13.99120000 1.99875000 1.99875000 -Ti 13.99120000 1.99875000 5.99625000 -Ti 13.99120000 1.99875000 9.99375000 -Ti 13.99120000 1.99875000 13.99120000 -Ti 13.99120000 1.99875000 17.98870000 -Ti 13.99120000 1.99875000 21.98620000 -Ti 13.99120000 5.99625000 1.99875000 -Ti 13.99120000 5.99625000 5.99625000 -Ti 13.99120000 5.99625000 9.99375000 -Ti 13.99120000 5.99625000 13.99120000 -Ti 13.99120000 5.99625000 17.98870000 -Ti 13.99120000 5.99625000 21.98620000 -Ti 13.99120000 9.99375000 1.99875000 -Ti 13.99120000 9.99375000 5.99625000 -Ti 13.99120000 9.99375000 9.99375000 -Ti 13.99120000 9.99375000 13.99120000 -Ti 13.99120000 9.99375000 17.98870000 -Ti 13.99120000 9.99375000 21.98620000 -Ti 13.99120000 13.99120000 1.99875000 -Ti 13.99120000 13.99120000 5.99625000 -Ti 13.99120000 13.99120000 9.99375000 -Ti 13.99120000 13.99120000 13.99120000 -Ti 13.99120000 13.99120000 17.98870000 -Ti 13.99120000 13.99120000 21.98620000 -Ti 13.99120000 17.98870000 1.99875000 -Ti 13.99120000 17.98870000 5.99625000 -Ti 13.99120000 17.98870000 9.99375000 -Ti 13.99120000 17.98870000 13.99120000 -Ti 13.99120000 17.98870000 17.98870000 -Ti 13.99120000 17.98870000 21.98620000 -Ti 13.99120000 21.98620000 1.99875000 -Ti 13.99120000 21.98620000 5.99625000 -Ti 13.99120000 21.98620000 9.99375000 -Ti 13.99120000 21.98620000 13.99120000 -Ti 13.99120000 21.98620000 17.98870000 -Ti 13.99120000 21.98620000 21.98620000 -Ti 17.98870000 1.99875000 1.99875000 -Ti 17.98870000 1.99875000 5.99625000 -Ti 17.98870000 1.99875000 9.99375000 -Ti 17.98870000 1.99875000 13.99120000 -Ti 17.98870000 1.99875000 17.98870000 -Ti 17.98870000 1.99875000 21.98620000 -Ti 17.98870000 5.99625000 1.99875000 -Ti 17.98870000 5.99625000 5.99625000 -Ti 17.98870000 5.99625000 9.99375000 -Ti 17.98870000 5.99625000 13.99120000 -Ti 17.98870000 5.99625000 17.98870000 -Ti 17.98870000 5.99625000 21.98620000 -Ti 17.98870000 9.99375000 1.99875000 -Ti 17.98870000 9.99375000 5.99625000 -Ti 17.98870000 9.99375000 9.99375000 -Ti 17.98870000 9.99375000 13.99120000 -Ti 17.98870000 9.99375000 17.98870000 -Ti 17.98870000 9.99375000 21.98620000 -Ti 17.98870000 13.99120000 1.99875000 -Ti 17.98870000 13.99120000 5.99625000 -Ti 17.98870000 13.99120000 9.99375000 -Ti 17.98870000 13.99120000 13.99120000 -Ti 17.98870000 13.99120000 17.98870000 -Ti 17.98870000 13.99120000 21.98620000 -Ti 17.98870000 17.98870000 1.99875000 -Ti 17.98870000 17.98870000 5.99625000 -Ti 17.98870000 17.98870000 9.99375000 -Ti 17.98870000 17.98870000 13.99120000 -Ti 17.98870000 17.98870000 17.98870000 -Ti 17.98870000 17.98870000 21.98620000 -Ti 17.98870000 21.98620000 1.99875000 -Ti 17.98870000 21.98620000 5.99625000 -Ti 17.98870000 21.98620000 9.99375000 -Ti 17.98870000 21.98620000 13.99120000 -Ti 17.98870000 21.98620000 17.98870000 -Ti 17.98870000 21.98620000 21.98620000 -Ti 21.98620000 1.99875000 1.99875000 -Ti 21.98620000 1.99875000 5.99625000 -Ti 21.98620000 1.99875000 9.99375000 -Ti 21.98620000 1.99875000 13.99120000 -Ti 21.98620000 1.99875000 17.98870000 -Ti 21.98620000 1.99875000 21.98620000 -Ti 21.98620000 5.99625000 1.99875000 -Ti 21.98620000 5.99625000 5.99625000 -Ti 21.98620000 5.99625000 9.99375000 -Ti 21.98620000 5.99625000 13.99120000 -Ti 21.98620000 5.99625000 17.98870000 -Ti 21.98620000 5.99625000 21.98620000 -Ti 21.98620000 9.99375000 1.99875000 -Ti 21.98620000 9.99375000 5.99625000 -Ti 21.98620000 9.99375000 9.99375000 -Ti 21.98620000 9.99375000 13.99120000 -Ti 21.98620000 9.99375000 17.98870000 -Ti 21.98620000 9.99375000 21.98620000 -Ti 21.98620000 13.99120000 1.99875000 -Ti 21.98620000 13.99120000 5.99625000 -Ti 21.98620000 13.99120000 9.99375000 -Ti 21.98620000 13.99120000 13.99120000 -Ti 21.98620000 13.99120000 17.98870000 -Ti 21.98620000 13.99120000 21.98620000 -Ti 21.98620000 17.98870000 1.99875000 -Ti 21.98620000 17.98870000 5.99625000 -Ti 21.98620000 17.98870000 9.99375000 -Ti 21.98620000 17.98870000 13.99120000 -Ti 21.98620000 17.98870000 17.98870000 -Ti 21.98620000 17.98870000 21.98620000 -Ti 21.98620000 21.98620000 1.99875000 -Ti 21.98620000 21.98620000 5.99625000 -Ti 21.98620000 21.98620000 9.99375000 -Ti 21.98620000 21.98620000 13.99120000 -Ti 21.98620000 21.98620000 17.98870000 -Ti 21.98620000 21.98620000 21.98620000 -O 1.99875000 1.99875000 0.00000000 -O 1.99875000 1.99875000 3.99750000 -O 1.99875000 1.99875000 7.99500000 -O 1.99875000 1.99875000 11.99250000 -O 1.99875000 1.99875000 15.99000000 -O 1.99875000 1.99875000 19.98750000 -O 1.99875000 5.99625000 0.00000000 -O 1.99875000 5.99625000 3.99750000 -O 1.99875000 5.99625000 7.99500000 -O 1.99875000 5.99625000 11.99250000 -O 1.99875000 5.99625000 15.99000000 -O 1.99875000 5.99625000 19.98750000 -O 1.99875000 9.99375000 0.00000000 -O 1.99875000 9.99375000 3.99750000 -O 1.99875000 9.99375000 7.99500000 -O 1.99875000 9.99375000 11.99250000 -O 1.99875000 9.99375000 15.99000000 -O 1.99875000 9.99375000 19.98750000 -O 1.99875000 13.99120000 0.00000000 -O 1.99875000 13.99120000 3.99750000 -O 1.99875000 13.99120000 7.99500000 -O 1.99875000 13.99120000 11.99250000 -O 1.99875000 13.99120000 15.99000000 -O 1.99875000 13.99120000 19.98750000 -O 1.99875000 17.98870000 0.00000000 -O 1.99875000 17.98870000 3.99750000 -O 1.99875000 17.98870000 7.99500000 -O 1.99875000 17.98870000 11.99250000 -O 1.99875000 17.98870000 15.99000000 -O 1.99875000 17.98870000 19.98750000 -O 1.99875000 21.98620000 0.00000000 -O 1.99875000 21.98620000 3.99750000 -O 1.99875000 21.98620000 7.99500000 -O 1.99875000 21.98620000 11.99250000 -O 1.99875000 21.98620000 15.99000000 -O 1.99875000 21.98620000 19.98750000 -O 5.99625000 1.99875000 0.00000000 -O 5.99625000 1.99875000 3.99750000 -O 5.99625000 1.99875000 7.99500000 -O 5.99625000 1.99875000 11.99250000 -O 5.99625000 1.99875000 15.99000000 -O 5.99625000 1.99875000 19.98750000 -O 5.99625000 5.99625000 0.00000000 -O 5.99625000 5.99625000 3.99750000 -O 5.99625000 5.99625000 7.99500000 -O 5.99625000 5.99625000 11.99250000 -O 5.99625000 5.99625000 15.99000000 -O 5.99625000 5.99625000 19.98750000 -O 5.99625000 9.99375000 0.00000000 -O 5.99625000 9.99375000 3.99750000 -O 5.99625000 9.99375000 7.99500000 -O 5.99625000 9.99375000 11.99250000 -O 5.99625000 9.99375000 15.99000000 -O 5.99625000 9.99375000 19.98750000 -O 5.99625000 13.99120000 0.00000000 -O 5.99625000 13.99120000 3.99750000 -O 5.99625000 13.99120000 7.99500000 -O 5.99625000 13.99120000 11.99250000 -O 5.99625000 13.99120000 15.99000000 -O 5.99625000 13.99120000 19.98750000 -O 5.99625000 17.98870000 0.00000000 -O 5.99625000 17.98870000 3.99750000 -O 5.99625000 17.98870000 7.99500000 -O 5.99625000 17.98870000 11.99250000 -O 5.99625000 17.98870000 15.99000000 -O 5.99625000 17.98870000 19.98750000 -O 5.99625000 21.98620000 0.00000000 -O 5.99625000 21.98620000 3.99750000 -O 5.99625000 21.98620000 7.99500000 -O 5.99625000 21.98620000 11.99250000 -O 5.99625000 21.98620000 15.99000000 -O 5.99625000 21.98620000 19.98750000 -O 9.99375000 1.99875000 0.00000000 -O 9.99375000 1.99875000 3.99750000 -O 9.99375000 1.99875000 7.99500000 -O 9.99375000 1.99875000 11.99250000 -O 9.99375000 1.99875000 15.99000000 -O 9.99375000 1.99875000 19.98750000 -O 9.99375000 5.99625000 0.00000000 -O 9.99375000 5.99625000 3.99750000 -O 9.99375000 5.99625000 7.99500000 -O 9.99375000 5.99625000 11.99250000 -O 9.99375000 5.99625000 15.99000000 -O 9.99375000 5.99625000 19.98750000 -O 9.99375000 9.99375000 0.00000000 -O 9.99375000 9.99375000 3.99750000 -O 9.99375000 9.99375000 7.99500000 -O 9.99375000 9.99375000 11.99250000 -O 9.99375000 9.99375000 15.99000000 -O 9.99375000 9.99375000 19.98750000 -O 9.99375000 13.99120000 0.00000000 -O 9.99375000 13.99120000 3.99750000 -O 9.99375000 13.99120000 7.99500000 -O 9.99375000 13.99120000 11.99250000 -O 9.99375000 13.99120000 15.99000000 -O 9.99375000 13.99120000 19.98750000 -O 9.99375000 17.98870000 0.00000000 -O 9.99375000 17.98870000 3.99750000 -O 9.99375000 17.98870000 7.99500000 -O 9.99375000 17.98870000 11.99250000 -O 9.99375000 17.98870000 15.99000000 -O 9.99375000 17.98870000 19.98750000 -O 9.99375000 21.98620000 0.00000000 -O 9.99375000 21.98620000 3.99750000 -O 9.99375000 21.98620000 7.99500000 -O 9.99375000 21.98620000 11.99250000 -O 9.99375000 21.98620000 15.99000000 -O 9.99375000 21.98620000 19.98750000 -O 13.99120000 1.99875000 0.00000000 -O 13.99120000 1.99875000 3.99750000 -O 13.99120000 1.99875000 7.99500000 -O 13.99120000 1.99875000 11.99250000 -O 13.99120000 1.99875000 15.99000000 -O 13.99120000 1.99875000 19.98750000 -O 13.99120000 5.99625000 0.00000000 -O 13.99120000 5.99625000 3.99750000 -O 13.99120000 5.99625000 7.99500000 -O 13.99120000 5.99625000 11.99250000 -O 13.99120000 5.99625000 15.99000000 -O 13.99120000 5.99625000 19.98750000 -O 13.99120000 9.99375000 0.00000000 -O 13.99120000 9.99375000 3.99750000 -O 13.99120000 9.99375000 7.99500000 -O 13.99120000 9.99375000 11.99250000 -O 13.99120000 9.99375000 15.99000000 -O 13.99120000 9.99375000 19.98750000 -O 13.99120000 13.99120000 0.00000000 -O 13.99120000 13.99120000 3.99750000 -O 13.99120000 13.99120000 7.99500000 -O 13.99120000 13.99120000 11.99250000 -O 13.99120000 13.99120000 15.99000000 -O 13.99120000 13.99120000 19.98750000 -O 13.99120000 17.98870000 0.00000000 -O 13.99120000 17.98870000 3.99750000 -O 13.99120000 17.98870000 7.99500000 -O 13.99120000 17.98870000 11.99250000 -O 13.99120000 17.98870000 15.99000000 -O 13.99120000 17.98870000 19.98750000 -O 13.99120000 21.98620000 0.00000000 -O 13.99120000 21.98620000 3.99750000 -O 13.99120000 21.98620000 7.99500000 -O 13.99120000 21.98620000 11.99250000 -O 13.99120000 21.98620000 15.99000000 -O 13.99120000 21.98620000 19.98750000 -O 17.98870000 1.99875000 0.00000000 -O 17.98870000 1.99875000 3.99750000 -O 17.98870000 1.99875000 7.99500000 -O 17.98870000 1.99875000 11.99250000 -O 17.98870000 1.99875000 15.99000000 -O 17.98870000 1.99875000 19.98750000 -O 17.98870000 5.99625000 0.00000000 -O 17.98870000 5.99625000 3.99750000 -O 17.98870000 5.99625000 7.99500000 -O 17.98870000 5.99625000 11.99250000 -O 17.98870000 5.99625000 15.99000000 -O 17.98870000 5.99625000 19.98750000 -O 17.98870000 9.99375000 0.00000000 -O 17.98870000 9.99375000 3.99750000 -O 17.98870000 9.99375000 7.99500000 -O 17.98870000 9.99375000 11.99250000 -O 17.98870000 9.99375000 15.99000000 -O 17.98870000 9.99375000 19.98750000 -O 17.98870000 13.99120000 0.00000000 -O 17.98870000 13.99120000 3.99750000 -O 17.98870000 13.99120000 7.99500000 -O 17.98870000 13.99120000 11.99250000 -O 17.98870000 13.99120000 15.99000000 -O 17.98870000 13.99120000 19.98750000 -O 17.98870000 17.98870000 0.00000000 -O 17.98870000 17.98870000 3.99750000 -O 17.98870000 17.98870000 7.99500000 -O 17.98870000 17.98870000 11.99250000 -O 17.98870000 17.98870000 15.99000000 -O 17.98870000 17.98870000 19.98750000 -O 17.98870000 21.98620000 0.00000000 -O 17.98870000 21.98620000 3.99750000 -O 17.98870000 21.98620000 7.99500000 -O 17.98870000 21.98620000 11.99250000 -O 17.98870000 21.98620000 15.99000000 -O 17.98870000 21.98620000 19.98750000 -O 21.98620000 1.99875000 0.00000000 -O 21.98620000 1.99875000 3.99750000 -O 21.98620000 1.99875000 7.99500000 -O 21.98620000 1.99875000 11.99250000 -O 21.98620000 1.99875000 15.99000000 -O 21.98620000 1.99875000 19.98750000 -O 21.98620000 5.99625000 0.00000000 -O 21.98620000 5.99625000 3.99750000 -O 21.98620000 5.99625000 7.99500000 -O 21.98620000 5.99625000 11.99250000 -O 21.98620000 5.99625000 15.99000000 -O 21.98620000 5.99625000 19.98750000 -O 21.98620000 9.99375000 0.00000000 -O 21.98620000 9.99375000 3.99750000 -O 21.98620000 9.99375000 7.99500000 -O 21.98620000 9.99375000 11.99250000 -O 21.98620000 9.99375000 15.99000000 -O 21.98620000 9.99375000 19.98750000 -O 21.98620000 13.99120000 0.00000000 -O 21.98620000 13.99120000 3.99750000 -O 21.98620000 13.99120000 7.99500000 -O 21.98620000 13.99120000 11.99250000 -O 21.98620000 13.99120000 15.99000000 -O 21.98620000 13.99120000 19.98750000 -O 21.98620000 17.98870000 0.00000000 -O 21.98620000 17.98870000 3.99750000 -O 21.98620000 17.98870000 7.99500000 -O 21.98620000 17.98870000 11.99250000 -O 21.98620000 17.98870000 15.99000000 -O 21.98620000 17.98870000 19.98750000 -O 21.98620000 21.98620000 0.00000000 -O 21.98620000 21.98620000 3.99750000 -O 21.98620000 21.98620000 7.99500000 -O 21.98620000 21.98620000 11.99250000 -O 21.98620000 21.98620000 15.99000000 -O 21.98620000 21.98620000 19.98750000 -O 1.99875000 0.00000000 1.99875000 -O 1.99875000 0.00000000 5.99625000 -O 1.99875000 0.00000000 9.99375000 -O 1.99875000 0.00000000 13.99120000 -O 1.99875000 0.00000000 17.98870000 -O 1.99875000 0.00000000 21.98620000 -O 1.99875000 3.99750000 1.99875000 -O 1.99875000 3.99750000 5.99625000 -O 1.99875000 3.99750000 9.99375000 -O 1.99875000 3.99750000 13.99120000 -O 1.99875000 3.99750000 17.98870000 -O 1.99875000 3.99750000 21.98620000 -O 1.99875000 7.99500000 1.99875000 -O 1.99875000 7.99500000 5.99625000 -O 1.99875000 7.99500000 9.99375000 -O 1.99875000 7.99500000 13.99120000 -O 1.99875000 7.99500000 17.98870000 -O 1.99875000 7.99500000 21.98620000 -O 1.99875000 11.99250000 1.99875000 -O 1.99875000 11.99250000 5.99625000 -O 1.99875000 11.99250000 9.99375000 -O 1.99875000 11.99250000 13.99120000 -O 1.99875000 11.99250000 17.98870000 -O 1.99875000 11.99250000 21.98620000 -O 1.99875000 15.99000000 1.99875000 -O 1.99875000 15.99000000 5.99625000 -O 1.99875000 15.99000000 9.99375000 -O 1.99875000 15.99000000 13.99120000 -O 1.99875000 15.99000000 17.98870000 -O 1.99875000 15.99000000 21.98620000 -O 1.99875000 19.98750000 1.99875000 -O 1.99875000 19.98750000 5.99625000 -O 1.99875000 19.98750000 9.99375000 -O 1.99875000 19.98750000 13.99120000 -O 1.99875000 19.98750000 17.98870000 -O 1.99875000 19.98750000 21.98620000 -O 5.99625000 0.00000000 1.99875000 -O 5.99625000 0.00000000 5.99625000 -O 5.99625000 0.00000000 9.99375000 -O 5.99625000 0.00000000 13.99120000 -O 5.99625000 0.00000000 17.98870000 -O 5.99625000 0.00000000 21.98620000 -O 5.99625000 3.99750000 1.99875000 -O 5.99625000 3.99750000 5.99625000 -O 5.99625000 3.99750000 9.99375000 -O 5.99625000 3.99750000 13.99120000 -O 5.99625000 3.99750000 17.98870000 -O 5.99625000 3.99750000 21.98620000 -O 5.99625000 7.99500000 1.99875000 -O 5.99625000 7.99500000 5.99625000 -O 5.99625000 7.99500000 9.99375000 -O 5.99625000 7.99500000 13.99120000 -O 5.99625000 7.99500000 17.98870000 -O 5.99625000 7.99500000 21.98620000 -O 5.99625000 11.99250000 1.99875000 -O 5.99625000 11.99250000 5.99625000 -O 5.99625000 11.99250000 9.99375000 -O 5.99625000 11.99250000 13.99120000 -O 5.99625000 11.99250000 17.98870000 -O 5.99625000 11.99250000 21.98620000 -O 5.99625000 15.99000000 1.99875000 -O 5.99625000 15.99000000 5.99625000 -O 5.99625000 15.99000000 9.99375000 -O 5.99625000 15.99000000 13.99120000 -O 5.99625000 15.99000000 17.98870000 -O 5.99625000 15.99000000 21.98620000 -O 5.99625000 19.98750000 1.99875000 -O 5.99625000 19.98750000 5.99625000 -O 5.99625000 19.98750000 9.99375000 -O 5.99625000 19.98750000 13.99120000 -O 5.99625000 19.98750000 17.98870000 -O 5.99625000 19.98750000 21.98620000 -O 9.99375000 0.00000000 1.99875000 -O 9.99375000 0.00000000 5.99625000 -O 9.99375000 0.00000000 9.99375000 -O 9.99375000 0.00000000 13.99120000 -O 9.99375000 0.00000000 17.98870000 -O 9.99375000 0.00000000 21.98620000 -O 9.99375000 3.99750000 1.99875000 -O 9.99375000 3.99750000 5.99625000 -O 9.99375000 3.99750000 9.99375000 -O 9.99375000 3.99750000 13.99120000 -O 9.99375000 3.99750000 17.98870000 -O 9.99375000 3.99750000 21.98620000 -O 9.99375000 7.99500000 1.99875000 -O 9.99375000 7.99500000 5.99625000 -O 9.99375000 7.99500000 9.99375000 -O 9.99375000 7.99500000 13.99120000 -O 9.99375000 7.99500000 17.98870000 -O 9.99375000 7.99500000 21.98620000 -O 9.99375000 11.99250000 1.99875000 -O 9.99375000 11.99250000 5.99625000 -O 9.99375000 11.99250000 9.99375000 -O 9.99375000 11.99250000 13.99120000 -O 9.99375000 11.99250000 17.98870000 -O 9.99375000 11.99250000 21.98620000 -O 9.99375000 15.99000000 1.99875000 -O 9.99375000 15.99000000 5.99625000 -O 9.99375000 15.99000000 9.99375000 -O 9.99375000 15.99000000 13.99120000 -O 9.99375000 15.99000000 17.98870000 -O 9.99375000 15.99000000 21.98620000 -O 9.99375000 19.98750000 1.99875000 -O 9.99375000 19.98750000 5.99625000 -O 9.99375000 19.98750000 9.99375000 -O 9.99375000 19.98750000 13.99120000 -O 9.99375000 19.98750000 17.98870000 -O 9.99375000 19.98750000 21.98620000 -O 13.99120000 0.00000000 1.99875000 -O 13.99120000 0.00000000 5.99625000 -O 13.99120000 0.00000000 9.99375000 -O 13.99120000 0.00000000 13.99120000 -O 13.99120000 0.00000000 17.98870000 -O 13.99120000 0.00000000 21.98620000 -O 13.99120000 3.99750000 1.99875000 -O 13.99120000 3.99750000 5.99625000 -O 13.99120000 3.99750000 9.99375000 -O 13.99120000 3.99750000 13.99120000 -O 13.99120000 3.99750000 17.98870000 -O 13.99120000 3.99750000 21.98620000 -O 13.99120000 7.99500000 1.99875000 -O 13.99120000 7.99500000 5.99625000 -O 13.99120000 7.99500000 9.99375000 -O 13.99120000 7.99500000 13.99120000 -O 13.99120000 7.99500000 17.98870000 -O 13.99120000 7.99500000 21.98620000 -O 13.99120000 11.99250000 1.99875000 -O 13.99120000 11.99250000 5.99625000 -O 13.99120000 11.99250000 9.99375000 -O 13.99120000 11.99250000 13.99120000 -O 13.99120000 11.99250000 17.98870000 -O 13.99120000 11.99250000 21.98620000 -O 13.99120000 15.99000000 1.99875000 -O 13.99120000 15.99000000 5.99625000 -O 13.99120000 15.99000000 9.99375000 -O 13.99120000 15.99000000 13.99120000 -O 13.99120000 15.99000000 17.98870000 -O 13.99120000 15.99000000 21.98620000 -O 13.99120000 19.98750000 1.99875000 -O 13.99120000 19.98750000 5.99625000 -O 13.99120000 19.98750000 9.99375000 -O 13.99120000 19.98750000 13.99120000 -O 13.99120000 19.98750000 17.98870000 -O 13.99120000 19.98750000 21.98620000 -O 17.98870000 0.00000000 1.99875000 -O 17.98870000 0.00000000 5.99625000 -O 17.98870000 0.00000000 9.99375000 -O 17.98870000 0.00000000 13.99120000 -O 17.98870000 0.00000000 17.98870000 -O 17.98870000 0.00000000 21.98620000 -O 17.98870000 3.99750000 1.99875000 -O 17.98870000 3.99750000 5.99625000 -O 17.98870000 3.99750000 9.99375000 -O 17.98870000 3.99750000 13.99120000 -O 17.98870000 3.99750000 17.98870000 -O 17.98870000 3.99750000 21.98620000 -O 17.98870000 7.99500000 1.99875000 -O 17.98870000 7.99500000 5.99625000 -O 17.98870000 7.99500000 9.99375000 -O 17.98870000 7.99500000 13.99120000 -O 17.98870000 7.99500000 17.98870000 -O 17.98870000 7.99500000 21.98620000 -O 17.98870000 11.99250000 1.99875000 -O 17.98870000 11.99250000 5.99625000 -O 17.98870000 11.99250000 9.99375000 -O 17.98870000 11.99250000 13.99120000 -O 17.98870000 11.99250000 17.98870000 -O 17.98870000 11.99250000 21.98620000 -O 17.98870000 15.99000000 1.99875000 -O 17.98870000 15.99000000 5.99625000 -O 17.98870000 15.99000000 9.99375000 -O 17.98870000 15.99000000 13.99120000 -O 17.98870000 15.99000000 17.98870000 -O 17.98870000 15.99000000 21.98620000 -O 17.98870000 19.98750000 1.99875000 -O 17.98870000 19.98750000 5.99625000 -O 17.98870000 19.98750000 9.99375000 -O 17.98870000 19.98750000 13.99120000 -O 17.98870000 19.98750000 17.98870000 -O 17.98870000 19.98750000 21.98620000 -O 21.98620000 0.00000000 1.99875000 -O 21.98620000 0.00000000 5.99625000 -O 21.98620000 0.00000000 9.99375000 -O 21.98620000 0.00000000 13.99120000 -O 21.98620000 0.00000000 17.98870000 -O 21.98620000 0.00000000 21.98620000 -O 21.98620000 3.99750000 1.99875000 -O 21.98620000 3.99750000 5.99625000 -O 21.98620000 3.99750000 9.99375000 -O 21.98620000 3.99750000 13.99120000 -O 21.98620000 3.99750000 17.98870000 -O 21.98620000 3.99750000 21.98620000 -O 21.98620000 7.99500000 1.99875000 -O 21.98620000 7.99500000 5.99625000 -O 21.98620000 7.99500000 9.99375000 -O 21.98620000 7.99500000 13.99120000 -O 21.98620000 7.99500000 17.98870000 -O 21.98620000 7.99500000 21.98620000 -O 21.98620000 11.99250000 1.99875000 -O 21.98620000 11.99250000 5.99625000 -O 21.98620000 11.99250000 9.99375000 -O 21.98620000 11.99250000 13.99120000 -O 21.98620000 11.99250000 17.98870000 -O 21.98620000 11.99250000 21.98620000 -O 21.98620000 15.99000000 1.99875000 -O 21.98620000 15.99000000 5.99625000 -O 21.98620000 15.99000000 9.99375000 -O 21.98620000 15.99000000 13.99120000 -O 21.98620000 15.99000000 17.98870000 -O 21.98620000 15.99000000 21.98620000 -O 21.98620000 19.98750000 1.99875000 -O 21.98620000 19.98750000 5.99625000 -O 21.98620000 19.98750000 9.99375000 -O 21.98620000 19.98750000 13.99120000 -O 21.98620000 19.98750000 17.98870000 -O 21.98620000 19.98750000 21.98620000 -O 0.00000000 1.99875000 1.99875000 -O 0.00000000 1.99875000 5.99625000 -O 0.00000000 1.99875000 9.99375000 -O 0.00000000 1.99875000 13.99120000 -O 0.00000000 1.99875000 17.98870000 -O 0.00000000 1.99875000 21.98620000 -O 0.00000000 5.99625000 1.99875000 -O 0.00000000 5.99625000 5.99625000 -O 0.00000000 5.99625000 9.99375000 -O 0.00000000 5.99625000 13.99120000 -O 0.00000000 5.99625000 17.98870000 -O 0.00000000 5.99625000 21.98620000 -O 0.00000000 9.99375000 1.99875000 -O 0.00000000 9.99375000 5.99625000 -O 0.00000000 9.99375000 9.99375000 -O 0.00000000 9.99375000 13.99120000 -O 0.00000000 9.99375000 17.98870000 -O 0.00000000 9.99375000 21.98620000 -O 0.00000000 13.99120000 1.99875000 -O 0.00000000 13.99120000 5.99625000 -O 0.00000000 13.99120000 9.99375000 -O 0.00000000 13.99120000 13.99120000 -O 0.00000000 13.99120000 17.98870000 -O 0.00000000 13.99120000 21.98620000 -O 0.00000000 17.98870000 1.99875000 -O 0.00000000 17.98870000 5.99625000 -O 0.00000000 17.98870000 9.99375000 -O 0.00000000 17.98870000 13.99120000 -O 0.00000000 17.98870000 17.98870000 -O 0.00000000 17.98870000 21.98620000 -O 0.00000000 21.98620000 1.99875000 -O 0.00000000 21.98620000 5.99625000 -O 0.00000000 21.98620000 9.99375000 -O 0.00000000 21.98620000 13.99120000 -O 0.00000000 21.98620000 17.98870000 -O 0.00000000 21.98620000 21.98620000 -O 3.99750000 1.99875000 1.99875000 -O 3.99750000 1.99875000 5.99625000 -O 3.99750000 1.99875000 9.99375000 -O 3.99750000 1.99875000 13.99120000 -O 3.99750000 1.99875000 17.98870000 -O 3.99750000 1.99875000 21.98620000 -O 3.99750000 5.99625000 1.99875000 -O 3.99750000 5.99625000 5.99625000 -O 3.99750000 5.99625000 9.99375000 -O 3.99750000 5.99625000 13.99120000 -O 3.99750000 5.99625000 17.98870000 -O 3.99750000 5.99625000 21.98620000 -O 3.99750000 9.99375000 1.99875000 -O 3.99750000 9.99375000 5.99625000 -O 3.99750000 9.99375000 9.99375000 -O 3.99750000 9.99375000 13.99120000 -O 3.99750000 9.99375000 17.98870000 -O 3.99750000 9.99375000 21.98620000 -O 3.99750000 13.99120000 1.99875000 -O 3.99750000 13.99120000 5.99625000 -O 3.99750000 13.99120000 9.99375000 -O 3.99750000 13.99120000 13.99120000 -O 3.99750000 13.99120000 17.98870000 -O 3.99750000 13.99120000 21.98620000 -O 3.99750000 17.98870000 1.99875000 -O 3.99750000 17.98870000 5.99625000 -O 3.99750000 17.98870000 9.99375000 -O 3.99750000 17.98870000 13.99120000 -O 3.99750000 17.98870000 17.98870000 -O 3.99750000 17.98870000 21.98620000 -O 3.99750000 21.98620000 1.99875000 -O 3.99750000 21.98620000 5.99625000 -O 3.99750000 21.98620000 9.99375000 -O 3.99750000 21.98620000 13.99120000 -O 3.99750000 21.98620000 17.98870000 -O 3.99750000 21.98620000 21.98620000 -O 7.99500000 1.99875000 1.99875000 -O 7.99500000 1.99875000 5.99625000 -O 7.99500000 1.99875000 9.99375000 -O 7.99500000 1.99875000 13.99120000 -O 7.99500000 1.99875000 17.98870000 -O 7.99500000 1.99875000 21.98620000 -O 7.99500000 5.99625000 1.99875000 -O 7.99500000 5.99625000 5.99625000 -O 7.99500000 5.99625000 9.99375000 -O 7.99500000 5.99625000 13.99120000 -O 7.99500000 5.99625000 17.98870000 -O 7.99500000 5.99625000 21.98620000 -O 7.99500000 9.99375000 1.99875000 -O 7.99500000 9.99375000 5.99625000 -O 7.99500000 9.99375000 9.99375000 -O 7.99500000 9.99375000 13.99120000 -O 7.99500000 9.99375000 17.98870000 -O 7.99500000 9.99375000 21.98620000 -O 7.99500000 13.99120000 1.99875000 -O 7.99500000 13.99120000 5.99625000 -O 7.99500000 13.99120000 9.99375000 -O 7.99500000 13.99120000 13.99120000 -O 7.99500000 13.99120000 17.98870000 -O 7.99500000 13.99120000 21.98620000 -O 7.99500000 17.98870000 1.99875000 -O 7.99500000 17.98870000 5.99625000 -O 7.99500000 17.98870000 9.99375000 -O 7.99500000 17.98870000 13.99120000 -O 7.99500000 17.98870000 17.98870000 -O 7.99500000 17.98870000 21.98620000 -O 7.99500000 21.98620000 1.99875000 -O 7.99500000 21.98620000 5.99625000 -O 7.99500000 21.98620000 9.99375000 -O 7.99500000 21.98620000 13.99120000 -O 7.99500000 21.98620000 17.98870000 -O 7.99500000 21.98620000 21.98620000 -O 11.99250000 1.99875000 1.99875000 -O 11.99250000 1.99875000 5.99625000 -O 11.99250000 1.99875000 9.99375000 -O 11.99250000 1.99875000 13.99120000 -O 11.99250000 1.99875000 17.98870000 -O 11.99250000 1.99875000 21.98620000 -O 11.99250000 5.99625000 1.99875000 -O 11.99250000 5.99625000 5.99625000 -O 11.99250000 5.99625000 9.99375000 -O 11.99250000 5.99625000 13.99120000 -O 11.99250000 5.99625000 17.98870000 -O 11.99250000 5.99625000 21.98620000 -O 11.99250000 9.99375000 1.99875000 -O 11.99250000 9.99375000 5.99625000 -O 11.99250000 9.99375000 9.99375000 -O 11.99250000 9.99375000 13.99120000 -O 11.99250000 9.99375000 17.98870000 -O 11.99250000 9.99375000 21.98620000 -O 11.99250000 13.99120000 1.99875000 -O 11.99250000 13.99120000 5.99625000 -O 11.99250000 13.99120000 9.99375000 -O 11.99250000 13.99120000 13.99120000 -O 11.99250000 13.99120000 17.98870000 -O 11.99250000 13.99120000 21.98620000 -O 11.99250000 17.98870000 1.99875000 -O 11.99250000 17.98870000 5.99625000 -O 11.99250000 17.98870000 9.99375000 -O 11.99250000 17.98870000 13.99120000 -O 11.99250000 17.98870000 17.98870000 -O 11.99250000 17.98870000 21.98620000 -O 11.99250000 21.98620000 1.99875000 -O 11.99250000 21.98620000 5.99625000 -O 11.99250000 21.98620000 9.99375000 -O 11.99250000 21.98620000 13.99120000 -O 11.99250000 21.98620000 17.98870000 -O 11.99250000 21.98620000 21.98620000 -O 15.99000000 1.99875000 1.99875000 -O 15.99000000 1.99875000 5.99625000 -O 15.99000000 1.99875000 9.99375000 -O 15.99000000 1.99875000 13.99120000 -O 15.99000000 1.99875000 17.98870000 -O 15.99000000 1.99875000 21.98620000 -O 15.99000000 5.99625000 1.99875000 -O 15.99000000 5.99625000 5.99625000 -O 15.99000000 5.99625000 9.99375000 -O 15.99000000 5.99625000 13.99120000 -O 15.99000000 5.99625000 17.98870000 -O 15.99000000 5.99625000 21.98620000 -O 15.99000000 9.99375000 1.99875000 -O 15.99000000 9.99375000 5.99625000 -O 15.99000000 9.99375000 9.99375000 -O 15.99000000 9.99375000 13.99120000 -O 15.99000000 9.99375000 17.98870000 -O 15.99000000 9.99375000 21.98620000 -O 15.99000000 13.99120000 1.99875000 -O 15.99000000 13.99120000 5.99625000 -O 15.99000000 13.99120000 9.99375000 -O 15.99000000 13.99120000 13.99120000 -O 15.99000000 13.99120000 17.98870000 -O 15.99000000 13.99120000 21.98620000 -O 15.99000000 17.98870000 1.99875000 -O 15.99000000 17.98870000 5.99625000 -O 15.99000000 17.98870000 9.99375000 -O 15.99000000 17.98870000 13.99120000 -O 15.99000000 17.98870000 17.98870000 -O 15.99000000 17.98870000 21.98620000 -O 15.99000000 21.98620000 1.99875000 -O 15.99000000 21.98620000 5.99625000 -O 15.99000000 21.98620000 9.99375000 -O 15.99000000 21.98620000 13.99120000 -O 15.99000000 21.98620000 17.98870000 -O 15.99000000 21.98620000 21.98620000 -O 19.98750000 1.99875000 1.99875000 -O 19.98750000 1.99875000 5.99625000 -O 19.98750000 1.99875000 9.99375000 -O 19.98750000 1.99875000 13.99120000 -O 19.98750000 1.99875000 17.98870000 -O 19.98750000 1.99875000 21.98620000 -O 19.98750000 5.99625000 1.99875000 -O 19.98750000 5.99625000 5.99625000 -O 19.98750000 5.99625000 9.99375000 -O 19.98750000 5.99625000 13.99120000 -O 19.98750000 5.99625000 17.98870000 -O 19.98750000 5.99625000 21.98620000 -O 19.98750000 9.99375000 1.99875000 -O 19.98750000 9.99375000 5.99625000 -O 19.98750000 9.99375000 9.99375000 -O 19.98750000 9.99375000 13.99120000 -O 19.98750000 9.99375000 17.98870000 -O 19.98750000 9.99375000 21.98620000 -O 19.98750000 13.99120000 1.99875000 -O 19.98750000 13.99120000 5.99625000 -O 19.98750000 13.99120000 9.99375000 -O 19.98750000 13.99120000 13.99120000 -O 19.98750000 13.99120000 17.98870000 -O 19.98750000 13.99120000 21.98620000 -O 19.98750000 17.98870000 1.99875000 -O 19.98750000 17.98870000 5.99625000 -O 19.98750000 17.98870000 9.99375000 -O 19.98750000 17.98870000 13.99120000 -O 19.98750000 17.98870000 17.98870000 -O 19.98750000 17.98870000 21.98620000 -O 19.98750000 21.98620000 1.99875000 -O 19.98750000 21.98620000 5.99625000 -O 19.98750000 21.98620000 9.99375000 -O 19.98750000 21.98620000 13.99120000 -O 19.98750000 21.98620000 17.98870000 -O 19.98750000 21.98620000 21.98620000 -1080 -25.11507 0.0 0.0 -0.005043078522169093 23.99892947012968 0.0 -0.05482460032288387 0.06433829446045435 24.020811272075417 -Ba -0.00381606 -0.03647920 0.06838540 -Ba 0.02642510 -0.02580880 4.04818000 -Ba -0.01751390 -0.05678240 7.90392000 -Ba -0.00491312 -0.06764750 11.98130000 -Ba -0.02844770 0.00706528 15.96940000 -Ba -0.14265300 0.09687840 20.14900000 -Ba 0.02882720 3.97704000 0.07769310 -Ba -0.05764520 4.01052000 4.04062000 -Ba 0.03597440 4.07019000 7.96829000 -Ba 0.00521899 4.10599000 11.97750000 -Ba -0.06805140 4.04566000 16.02450000 -Ba -0.04008030 4.05095000 19.99790000 -Ba -0.03770690 7.96782000 -0.07183250 -Ba 0.00708128 8.01987000 3.90283000 -Ba 0.09589330 8.09754000 8.12170000 -Ba -0.01285180 8.04873000 12.02200000 -Ba -0.03138950 8.07546000 15.96910000 -Ba -0.05859750 8.05412000 20.00310000 -Ba -0.03445630 12.09770000 -0.05867040 -Ba -0.06793650 12.06430000 4.09514000 -Ba -0.10777300 12.01340000 7.90747000 -Ba 0.01899680 12.14410000 12.03440000 -Ba -0.06128730 11.97730000 15.93970000 -Ba -0.07826670 12.01170000 19.92830000 -Ba 0.01234560 15.87490000 -0.03393900 -Ba 0.10089400 16.00810000 3.99101000 -Ba -0.04364040 16.08550000 8.01975000 -Ba -0.05872050 16.08520000 12.00480000 -Ba -0.00443129 15.91780000 15.92960000 -Ba -0.04868420 16.12210000 19.98620000 -Ba -0.08827340 19.94730000 0.08130310 -Ba 0.08964670 19.92190000 3.98086000 -Ba -0.09345580 20.05350000 7.98872000 -Ba -0.06121210 20.03230000 12.01280000 -Ba -0.18611000 19.87340000 16.04240000 -Ba 0.06899050 20.00210000 19.95160000 -Ba 4.17059000 0.05115520 -0.03816610 -Ba 4.28852000 0.01060090 4.00212000 -Ba 4.20865000 0.13372600 8.00288000 -Ba 4.16563000 0.02816380 12.09510000 -Ba 4.11748000 -0.01596690 15.97240000 -Ba 4.04165000 0.08981900 20.09740000 -Ba 4.18683000 3.93530000 0.07421850 -Ba 4.12407000 3.94817000 3.97523000 -Ba 4.17034000 4.04693000 7.98184000 -Ba 4.17191000 4.16966000 11.95820000 -Ba 4.07501000 4.06672000 16.04380000 -Ba 4.15393000 4.13016000 20.01090000 -Ba 4.11811000 8.00918000 -0.07297140 -Ba 4.22395000 7.90551000 4.02511000 -Ba 4.08847000 8.04850000 8.04831000 -Ba 4.23300000 8.03574000 12.11400000 -Ba 4.19605000 8.11593000 15.98820000 -Ba 4.15531000 7.96265000 19.99260000 -Ba 4.23591000 11.93680000 -0.06034350 -Ba 4.21083000 11.96210000 3.92652000 -Ba 4.11286000 12.09710000 8.07440000 -Ba 4.21049000 12.14220000 11.97900000 -Ba 4.12493000 11.94890000 16.05560000 -Ba 4.05626000 12.00270000 19.98840000 -Ba 4.17432000 15.96680000 -0.06059280 -Ba 4.29677000 15.88040000 4.00991000 -Ba 4.21207000 16.02180000 8.19218000 -Ba 4.12058000 16.06620000 12.01430000 -Ba 4.09945000 16.02190000 16.03470000 -Ba 4.11518000 15.97470000 20.09970000 -Ba 4.20828000 20.01210000 0.08606140 -Ba 4.14460000 20.08140000 3.94693000 -Ba 4.17875000 20.02820000 7.99900000 -Ba 4.09911000 20.08000000 11.93230000 -Ba 4.05169000 20.10400000 15.93570000 -Ba 4.19195000 20.09290000 20.03630000 -Ba 8.35983000 0.09652280 0.03118210 -Ba 8.38813000 -0.02526530 4.06500000 -Ba 8.38774000 0.03235410 8.05943000 -Ba 8.35937000 0.03932870 12.06190000 -Ba 8.24196000 0.05605940 15.95150000 -Ba 8.23007000 0.06989200 19.86690000 -Ba 8.43943000 4.00841000 0.02984090 -Ba 8.35341000 4.03743000 4.05521000 -Ba 8.34386000 4.07720000 8.07100000 -Ba 8.39164000 3.95744000 11.93780000 -Ba 8.41425000 3.88829000 15.93100000 -Ba 8.27448000 4.03558000 20.08600000 -Ba 8.33073000 8.00232000 0.04183660 -Ba 8.35084000 8.06172000 3.90761000 -Ba 8.38722000 8.10175000 8.12598000 -Ba 8.34589000 8.18990000 12.08380000 -Ba 8.39071000 7.96801000 16.00120000 -Ba 8.45601000 8.07187000 20.06200000 -Ba 8.35749000 11.96340000 -0.13396900 -Ba 8.19653000 12.03940000 4.02708000 -Ba 8.36170000 12.03100000 8.01328000 -Ba 8.35546000 12.01220000 11.97100000 -Ba 8.29724000 12.01610000 16.02920000 -Ba 8.33202000 11.95410000 19.88250000 -Ba 8.30836000 16.10580000 -0.06125180 -Ba 8.38011000 15.86570000 4.03896000 -Ba 8.38841000 15.93990000 8.03633000 -Ba 8.45475000 15.93750000 12.13830000 -Ba 8.28664000 16.03820000 16.02080000 -Ba 8.33307000 16.07040000 20.01060000 -Ba 8.32870000 20.00420000 0.01373540 -Ba 8.38385000 20.03100000 3.93204000 -Ba 8.43910000 20.01950000 7.96916000 -Ba 8.22004000 19.93300000 11.99920000 -Ba 8.21032000 19.92250000 15.96620000 -Ba 8.26599000 20.05940000 20.02390000 -Ba 12.50810000 0.00573562 -0.10112100 -Ba 12.43820000 0.06886510 4.10691000 -Ba 12.63220000 0.03423090 7.89434000 -Ba 12.52060000 0.01794160 11.96900000 -Ba 12.50170000 -0.01505830 16.00000000 -Ba 12.55150000 0.07905630 19.98670000 -Ba 12.56380000 3.95902000 0.08868370 -Ba 12.55280000 4.03911000 4.09595000 -Ba 12.54790000 4.12914000 8.03850000 -Ba 12.67550000 4.20581000 12.12110000 -Ba 12.53610000 4.15153000 15.99890000 -Ba 12.60290000 4.11032000 20.02510000 -Ba 12.52930000 8.05901000 0.07055700 -Ba 12.52340000 8.01483000 4.13592000 -Ba 12.48790000 8.01292000 8.07748000 -Ba 12.48680000 8.02658000 12.15700000 -Ba 12.48320000 8.08653000 16.00650000 -Ba 12.51690000 8.07956000 20.02910000 -Ba 12.54160000 12.11150000 -0.01321450 -Ba 12.48510000 11.94620000 4.03671000 -Ba 12.56410000 11.96890000 7.92402000 -Ba 12.59620000 11.96300000 11.88030000 -Ba 12.59640000 12.16310000 16.03910000 -Ba 12.46330000 12.10510000 19.91320000 -Ba 12.67140000 16.02410000 -0.10397200 -Ba 12.50950000 15.97020000 3.97590000 -Ba 12.64350000 16.16860000 8.02980000 -Ba 12.41820000 15.98980000 11.89730000 -Ba 12.44480000 16.00310000 15.93100000 -Ba 12.52160000 16.13480000 19.77190000 -Ba 12.62620000 20.01130000 -0.01445690 -Ba 12.45860000 20.05690000 3.94395000 -Ba 12.52420000 19.94860000 8.02287000 -Ba 12.39240000 20.06210000 11.98430000 -Ba 12.51710000 20.03470000 16.01970000 -Ba 12.50350000 20.08490000 19.93350000 -Ba 16.56040000 0.01037360 0.02800700 -Ba 16.70100000 0.03799460 3.98681000 -Ba 16.67650000 0.04301960 7.96185000 -Ba 16.66180000 -0.00289580 11.97540000 -Ba 16.67610000 0.10419700 15.99930000 -Ba 16.67790000 0.20556600 20.11800000 -Ba 16.65580000 3.94576000 -0.05609250 -Ba 16.69370000 4.07616000 3.94290000 -Ba 16.73300000 4.06901000 7.92107000 -Ba 16.85990000 3.97627000 11.92290000 -Ba 16.71500000 3.98251000 15.99350000 -Ba 16.78320000 4.11086000 20.12470000 -Ba 16.83190000 7.94147000 -0.05540830 -Ba 16.63600000 8.01238000 3.97505000 -Ba 16.66130000 8.04034000 8.00733000 -Ba 16.82020000 8.00566000 11.95420000 -Ba 16.64940000 8.05522000 16.00770000 -Ba 16.56360000 8.12375000 20.06990000 -Ba 16.73790000 12.05110000 0.01536350 -Ba 16.69220000 12.17130000 3.96682000 -Ba 16.74260000 11.96000000 8.12191000 -Ba 16.69340000 12.01690000 12.03980000 -Ba 16.64480000 11.85590000 16.08990000 -Ba 16.59080000 12.02360000 19.93400000 -Ba 16.62100000 15.98610000 -0.00586329 -Ba 16.74260000 16.03550000 4.02356000 -Ba 16.75270000 15.95840000 8.09888000 -Ba 16.70700000 15.98000000 12.09560000 -Ba 16.75940000 16.09910000 15.99310000 -Ba 16.68770000 16.06940000 19.97180000 -Ba 16.74390000 19.97740000 -0.01417630 -Ba 16.65480000 20.05310000 3.88790000 -Ba 16.75000000 20.03530000 8.06489000 -Ba 16.69590000 20.03530000 11.95780000 -Ba 16.74070000 20.02170000 16.11360000 -Ba 16.69150000 20.14470000 20.02130000 -Ba 20.95790000 -0.02656800 0.10388200 -Ba 21.02880000 0.04010300 4.02627000 -Ba 20.76240000 -0.13764700 8.00113000 -Ba 20.75580000 0.02030850 11.96590000 -Ba 20.81700000 -0.00478688 16.02120000 -Ba 20.91200000 -0.02975920 19.98620000 -Ba 20.97090000 3.96775000 0.05917190 -Ba 21.06970000 4.00314000 4.07056000 -Ba 20.84730000 4.09283000 7.88580000 -Ba 20.91710000 3.94505000 11.97990000 -Ba 20.87380000 4.10074000 16.00890000 -Ba 20.84610000 4.04248000 20.00510000 -Ba 20.83480000 7.93172000 0.09649040 -Ba 20.89480000 8.02409000 4.04254000 -Ba 20.93160000 7.95122000 8.06882000 -Ba 20.98920000 8.10133000 12.00690000 -Ba 20.91710000 7.98494000 16.05110000 -Ba 20.85680000 7.95493000 20.21540000 -Ba 20.81230000 11.91290000 0.02532200 -Ba 20.84390000 12.02460000 3.93620000 -Ba 20.88090000 11.98950000 8.03088000 -Ba 20.83830000 11.96610000 12.06580000 -Ba 20.85900000 11.97860000 15.96700000 -Ba 20.88990000 12.01580000 19.99060000 -Ba 20.94420000 16.00090000 -0.00660418 -Ba 20.82960000 16.06340000 4.17036000 -Ba 20.82840000 16.08960000 7.95611000 -Ba 20.83030000 16.07420000 12.06680000 -Ba 20.90090000 16.04700000 15.98210000 -Ba 20.81760000 15.99170000 20.03040000 -Ba 20.88100000 20.05510000 0.01731710 -Ba 20.87750000 19.89930000 3.95102000 -Ba 20.83610000 20.06310000 8.14940000 -Ba 20.83200000 20.03090000 12.03740000 -Ba 20.79310000 20.03450000 16.04830000 -Ba 20.96430000 19.99250000 20.03560000 -Ti 2.01265000 1.89565000 2.09092000 -Ti 1.95618000 2.04605000 6.09494000 -Ti 1.92087000 2.06093000 10.07780000 -Ti 1.92475000 2.08069000 14.07250000 -Ti 1.92935000 1.96147000 18.02090000 -Ti 1.93959000 2.00553000 22.07760000 -Ti 2.33087000 6.04462000 2.03831000 -Ti 1.95902000 6.00912000 6.04290000 -Ti 2.09111000 6.14026000 10.06660000 -Ti 2.28469000 6.09632000 14.04940000 -Ti 1.98388000 6.03632000 18.03550000 -Ti 2.03802000 6.03544000 22.15820000 -Ti 1.96026000 10.05130000 1.99926000 -Ti 2.09414000 10.00010000 6.02369000 -Ti 2.00882000 10.12750000 10.09840000 -Ti 2.00552000 10.12000000 14.07700000 -Ti 1.84010000 9.87067000 17.98180000 -Ti 1.89006000 9.94056000 22.03410000 -Ti 2.03531000 13.92460000 2.06454000 -Ti 2.01251000 13.94510000 6.07290000 -Ti 2.25163000 14.17630000 10.06270000 -Ti 2.02449000 14.03070000 14.08470000 -Ti 1.93150000 13.84420000 18.07780000 -Ti 1.90462000 13.97310000 22.03620000 -Ti 2.09787000 17.81770000 1.88837000 -Ti 1.93993000 17.95650000 5.97807000 -Ti 2.05346000 18.14760000 9.96204000 -Ti 1.92913000 17.96940000 13.97250000 -Ti 1.99073000 17.89010000 17.95290000 -Ti 2.00331000 18.03710000 22.05260000 -Ti 2.02903000 21.96170000 2.00312000 -Ti 2.07448000 21.94060000 6.05426000 -Ti 2.03809000 22.06560000 10.02150000 -Ti 1.91760000 21.97100000 14.13700000 -Ti 1.89895000 21.95470000 18.11980000 -Ti 1.86863000 22.05780000 22.04730000 -Ti 6.25495000 1.95724000 2.07933000 -Ti 6.26934000 2.07359000 6.17485000 -Ti 6.16889000 2.15294000 10.05260000 -Ti 6.06870000 2.08449000 13.91100000 -Ti 6.00432000 2.07777000 18.02620000 -Ti 6.19621000 2.01099000 22.08890000 -Ti 6.46066000 5.87242000 2.10786000 -Ti 6.23718000 5.99257000 6.06054000 -Ti 6.25969000 6.12433000 10.11900000 -Ti 6.46395000 5.99246000 14.10250000 -Ti 6.15951000 6.05349000 18.07540000 -Ti 6.06559000 6.04573000 22.15460000 -Ti 6.20881000 9.89274000 2.05927000 -Ti 6.18475000 9.99513000 6.14153000 -Ti 6.07784000 10.13870000 10.00390000 -Ti 6.00638000 10.04230000 14.03340000 -Ti 6.14946000 9.95379000 18.10700000 -Ti 6.19740000 9.92212000 22.05970000 -Ti 6.12296000 13.89220000 1.93099000 -Ti 6.07749000 13.97490000 6.15604000 -Ti 6.52381000 14.10940000 10.15220000 -Ti 6.06122000 14.06210000 14.08750000 -Ti 6.16584000 13.94870000 18.05640000 -Ti 6.15516000 13.96590000 22.07530000 -Ti 6.19265000 17.89910000 2.05953000 -Ti 6.21715000 17.97690000 6.06651000 -Ti 6.15072000 18.10840000 10.04790000 -Ti 6.09710000 18.03890000 14.01820000 -Ti 6.02911000 18.06520000 18.00920000 -Ti 6.04909000 18.04610000 22.06980000 -Ti 6.21637000 21.95740000 1.98730000 -Ti 6.13754000 21.99930000 6.02080000 -Ti 6.23043000 22.17890000 10.08230000 -Ti 6.09864000 22.12620000 14.06460000 -Ti 6.06520000 22.05550000 17.98100000 -Ti 6.12270000 21.99450000 22.00440000 -Ti 10.38780000 1.95498000 1.95747000 -Ti 10.34800000 1.99519000 6.05225000 -Ti 10.51560000 2.11102000 10.01790000 -Ti 10.41520000 2.07819000 14.02190000 -Ti 10.37920000 2.03689000 17.98270000 -Ti 10.32870000 2.18486000 21.92810000 -Ti 10.71930000 5.99826000 2.08863000 -Ti 10.29130000 6.03667000 6.08186000 -Ti 10.36860000 6.03774000 10.12320000 -Ti 10.45720000 6.09458000 13.97550000 -Ti 10.29960000 5.96981000 17.99000000 -Ti 10.34140000 6.10914000 22.10050000 -Ti 10.31500000 9.99786000 2.05011000 -Ti 10.36950000 9.97015000 6.09676000 -Ti 10.38470000 10.07730000 10.10190000 -Ti 10.33420000 10.13570000 14.13100000 -Ti 10.35360000 9.99844000 18.11290000 -Ti 10.36210000 10.09520000 22.16940000 -Ti 10.29120000 14.01150000 2.03970000 -Ti 10.42620000 14.04270000 6.06521000 -Ti 10.67220000 13.97930000 9.94441000 -Ti 10.28220000 14.04960000 14.00610000 -Ti 10.28740000 14.00650000 17.98040000 -Ti 10.27780000 14.10810000 21.99070000 -Ti 10.39350000 18.04930000 2.05698000 -Ti 10.35590000 17.97940000 6.03376000 -Ti 10.25280000 18.01660000 10.04280000 -Ti 10.22670000 18.07910000 14.05240000 -Ti 10.26680000 18.01630000 17.88620000 -Ti 10.29320000 18.11310000 22.02140000 -Ti 10.32800000 22.06760000 1.90044000 -Ti 10.34370000 21.96600000 6.06488000 -Ti 10.27510000 22.18150000 10.02030000 -Ti 10.27090000 22.07750000 14.02370000 -Ti 10.30670000 22.09690000 17.87940000 -Ti 10.27910000 22.07560000 21.86520000 -Ti 14.53430000 2.07060000 2.10191000 -Ti 14.55280000 2.05495000 6.09199000 -Ti 14.59040000 2.17922000 10.19390000 -Ti 14.53970000 2.10322000 14.13150000 -Ti 14.56080000 2.15370000 18.19140000 -Ti 14.36100000 2.12526000 22.13680000 -Ti 14.81430000 6.08669000 1.91993000 -Ti 14.54690000 6.09534000 5.98697000 -Ti 14.56170000 6.12140000 9.95310000 -Ti 14.83300000 6.14398000 13.99270000 -Ti 14.54510000 6.10304000 18.01910000 -Ti 14.51240000 6.12661000 21.97260000 -Ti 14.48240000 10.05130000 1.97863000 -Ti 14.54700000 10.06580000 5.96002000 -Ti 14.55660000 10.08780000 9.98778000 -Ti 14.52420000 10.02480000 14.03930000 -Ti 14.43480000 10.11060000 18.04180000 -Ti 14.27330000 10.14870000 22.06890000 -Ti 14.51920000 14.07080000 1.97513000 -Ti 14.50130000 14.10180000 5.92469000 -Ti 14.83240000 14.15750000 9.88898000 -Ti 14.57690000 14.05090000 14.02270000 -Ti 14.56810000 14.12670000 17.93640000 -Ti 14.36630000 14.20270000 21.90260000 -Ti 14.44040000 18.03280000 1.89012000 -Ti 14.56530000 18.20760000 5.84079000 -Ti 14.45250000 18.12870000 9.92300000 -Ti 14.50720000 18.06840000 13.87500000 -Ti 14.55700000 18.19130000 17.93770000 -Ti 14.54590000 18.21500000 21.89230000 -Ti 14.41650000 22.14330000 2.00919000 -Ti 14.60560000 22.07770000 6.03801000 -Ti 14.52810000 22.01060000 9.95791000 -Ti 14.55400000 22.02730000 13.94050000 -Ti 14.53180000 22.23370000 18.03190000 -Ti 14.43590000 22.20470000 22.02910000 -Ti 18.66130000 1.99382000 2.05389000 -Ti 18.70410000 1.86850000 5.90537000 -Ti 18.69280000 2.08317000 9.94458000 -Ti 18.69430000 2.09952000 14.07340000 -Ti 18.68560000 1.90307000 18.12060000 -Ti 18.72650000 1.99258000 22.17380000 -Ti 18.94530000 5.92426000 1.99552000 -Ti 18.61020000 5.96116000 5.84763000 -Ti 18.72610000 6.06408000 9.86772000 -Ti 18.98450000 6.07764000 13.93670000 -Ti 18.65640000 6.01081000 17.99570000 -Ti 18.68220000 6.01349000 22.03910000 -Ti 18.53850000 10.02480000 2.04943000 -Ti 18.58570000 9.93044000 5.95447000 -Ti 18.64520000 9.94169000 10.00580000 -Ti 18.74790000 9.91395000 14.00370000 -Ti 18.64220000 9.87815000 17.92780000 -Ti 18.70970000 10.01710000 21.94370000 -Ti 18.73190000 14.00270000 1.91664000 -Ti 18.75410000 13.91900000 5.91943000 -Ti 18.97830000 14.03400000 10.11400000 -Ti 18.65700000 13.89180000 14.01740000 -Ti 18.71370000 13.93800000 17.99660000 -Ti 18.70460000 13.97960000 21.89820000 -Ti 18.71740000 17.99760000 2.05385000 -Ti 18.62090000 17.99230000 6.09750000 -Ti 18.68810000 18.08640000 10.07040000 -Ti 18.70740000 17.99140000 14.12610000 -Ti 18.72370000 18.01070000 18.01880000 -Ti 18.70480000 17.99570000 22.02880000 -Ti 18.72970000 22.03770000 1.90179000 -Ti 18.65800000 21.86720000 5.90886000 -Ti 18.59120000 21.97630000 9.99422000 -Ti 18.54110000 22.01820000 14.06750000 -Ti 18.73820000 22.01040000 18.05510000 -Ti 18.55720000 22.12100000 22.03130000 -Ti 22.95230000 2.03339000 2.04842000 -Ti 22.93920000 1.90980000 6.09119000 -Ti 22.88100000 2.03913000 10.04250000 -Ti 22.92100000 1.96694000 14.09610000 -Ti 22.90120000 2.02639000 18.14640000 -Ti 22.84130000 2.07714000 22.00650000 -Ti 23.20620000 6.03598000 2.02308000 -Ti 22.96150000 6.02429000 6.05859000 -Ti 22.92540000 6.02281000 10.02010000 -Ti 23.24930000 5.94173000 14.06430000 -Ti 22.90340000 5.97183000 18.13360000 -Ti 22.79610000 6.02248000 22.14880000 -Ti 22.94440000 10.08780000 2.06222000 -Ti 22.97080000 9.97841000 6.04313000 -Ti 22.97920000 9.98792000 10.08760000 -Ti 22.87160000 9.98738000 14.10540000 -Ti 22.90680000 9.83559000 18.04580000 -Ti 22.88700000 9.97192000 22.09930000 -Ti 22.88750000 14.06510000 2.12103000 -Ti 22.74180000 14.01770000 6.10125000 -Ti 23.17410000 14.05280000 10.08380000 -Ti 22.91490000 14.00460000 13.97520000 -Ti 22.81610000 13.95240000 18.01650000 -Ti 22.82200000 13.96940000 22.02850000 -Ti 22.86190000 18.05910000 2.05591000 -Ti 22.89350000 17.97570000 6.00822000 -Ti 22.81710000 17.96490000 9.99990000 -Ti 22.87810000 18.00750000 14.01800000 -Ti 22.79960000 17.93310000 18.04530000 -Ti 22.79860000 18.00920000 22.01020000 -Ti 23.00070000 22.10270000 2.13802000 -Ti 22.87960000 21.90910000 6.05604000 -Ti 22.78350000 22.01060000 10.06510000 -Ti 22.79110000 22.10280000 14.06230000 -Ti 22.88420000 21.98470000 18.04560000 -Ti 22.86280000 22.05290000 22.13810000 -O 2.07681000 2.02480000 -0.12818800 -O 2.22395000 2.08339000 3.87630000 -O 2.10372000 2.09753000 7.95915000 -O 2.11148000 2.09216000 11.92070000 -O 2.21595000 2.00526000 16.05460000 -O 2.16851000 2.03205000 20.00640000 -O 2.23181000 6.01104000 -0.03736540 -O 2.23277000 6.04582000 4.00756000 -O 2.32408000 6.07435000 7.96247000 -O 2.20968000 6.10829000 11.92880000 -O 2.21523000 6.05300000 15.95080000 -O 2.16334000 6.15551000 19.85710000 -O 2.25800000 10.02630000 -0.11016800 -O 2.22181000 9.93798000 3.92400000 -O 2.31219000 10.05740000 7.81110000 -O 2.30896000 10.08060000 11.94170000 -O 2.15743000 10.02910000 15.98390000 -O 2.14586000 9.93074000 19.91260000 -O 2.03975000 14.01160000 -0.16973800 -O 2.25164000 13.86010000 3.90665000 -O 2.11762000 14.06920000 7.93927000 -O 2.11551000 13.93540000 12.02550000 -O 2.15536000 13.96530000 15.99040000 -O 2.10292000 14.08600000 19.89880000 -O 2.26519000 17.99430000 -0.00260229 -O 2.14362000 18.06740000 3.99932000 -O 2.17875000 18.01290000 7.99947000 -O 2.26661000 18.11940000 12.00390000 -O 2.07426000 18.08410000 15.96410000 -O 2.22978000 18.06120000 20.07070000 -O 2.09908000 22.18900000 -0.05503940 -O 2.30390000 22.15400000 3.97132000 -O 2.43997000 22.15440000 7.88224000 -O 2.15284000 22.00460000 11.88200000 -O 2.12541000 21.98950000 16.07240000 -O 2.07716000 22.10600000 20.05670000 -O 6.59920000 2.13896000 -0.07304800 -O 6.40342000 2.13042000 3.86043000 -O 6.45611000 2.02621000 8.07481000 -O 6.33268000 2.02964000 11.95790000 -O 6.16944000 2.09009000 15.99310000 -O 6.26327000 2.10133000 19.95360000 -O 6.33164000 6.00545000 -0.04878160 -O 6.37774000 6.00972000 3.95008000 -O 6.39820000 6.00575000 7.82731000 -O 6.37077000 6.00153000 11.97900000 -O 6.29813000 5.98795000 15.99220000 -O 6.24086000 6.04316000 19.89670000 -O 6.34384000 9.95857000 -0.07793230 -O 6.31106000 10.10880000 4.01387000 -O 6.22924000 10.07130000 8.07259000 -O 6.29810000 9.98777000 11.93190000 -O 6.23765000 9.97942000 15.81580000 -O 6.37035000 10.03330000 19.92270000 -O 6.44367000 14.02860000 -0.11609300 -O 6.35689000 13.93950000 3.85781000 -O 6.14325000 13.94600000 7.99519000 -O 6.33547000 14.00610000 11.99710000 -O 6.30591000 13.94460000 15.94310000 -O 6.35156000 14.11280000 19.89540000 -O 6.30720000 17.95540000 -0.06515700 -O 6.42954000 18.00190000 3.92486000 -O 6.35497000 18.02830000 7.86765000 -O 6.38483000 17.96290000 11.90250000 -O 6.31721000 18.03200000 15.90310000 -O 6.17692000 18.07050000 19.84250000 -O 6.26685000 22.05530000 -0.02767020 -O 6.39744000 22.10730000 4.04255000 -O 6.40353000 22.14060000 7.93691000 -O 6.31413000 22.17370000 12.00720000 -O 6.24094000 22.10190000 16.04170000 -O 6.27770000 22.11550000 19.97500000 -O 10.51050000 2.01677000 0.10896300 -O 10.58930000 2.05710000 4.17460000 -O 10.60470000 2.09225000 8.04179000 -O 10.56820000 1.94128000 12.07830000 -O 10.61740000 1.92980000 16.03080000 -O 10.46750000 2.03985000 20.01600000 -O 10.51460000 5.98494000 -0.05413580 -O 10.61540000 5.99507000 4.00611000 -O 10.55540000 6.01003000 8.06779000 -O 10.39940000 5.99127000 12.04580000 -O 10.38090000 5.97963000 16.03420000 -O 10.56440000 6.04523000 19.88890000 -O 10.58220000 10.06870000 -0.05734440 -O 10.59910000 10.07180000 3.90999000 -O 10.56430000 9.90273000 7.96122000 -O 10.51490000 10.07140000 12.02580000 -O 10.52850000 10.08540000 15.94380000 -O 10.50720000 10.06780000 19.90060000 -O 10.50390000 13.95670000 -0.10119100 -O 10.50510000 14.06150000 3.94721000 -O 10.60060000 14.04050000 7.97796000 -O 10.57420000 13.93550000 12.00790000 -O 10.48580000 14.05360000 15.88750000 -O 10.64610000 14.09510000 19.80910000 -O 10.53620000 18.14410000 -0.18964000 -O 10.66080000 17.94960000 3.88929000 -O 10.55180000 17.97160000 7.88211000 -O 10.47190000 18.02510000 11.97040000 -O 10.55810000 17.87850000 15.85510000 -O 10.38510000 18.03940000 19.77420000 -O 10.46820000 21.90400000 0.10982000 -O 10.44480000 22.10890000 4.15420000 -O 10.56770000 21.85300000 8.10296000 -O 10.46960000 21.98830000 11.95290000 -O 10.46920000 22.10300000 16.00650000 -O 10.48910000 22.04600000 20.08220000 -O 14.64210000 1.95903000 -0.06840080 -O 14.50480000 1.96316000 3.88707000 -O 14.67990000 2.00050000 7.99560000 -O 14.82290000 1.94644000 11.97030000 -O 14.75330000 2.08603000 15.92200000 -O 14.69490000 2.03463000 19.98840000 -O 14.60750000 5.92241000 0.05318850 -O 14.81500000 6.00691000 4.09997000 -O 14.72050000 5.89553000 8.06291000 -O 14.64190000 6.06855000 12.12660000 -O 14.67020000 6.00433000 16.01530000 -O 14.65590000 6.03835000 20.17500000 -O 14.58900000 9.94945000 -0.01896030 -O 14.74640000 9.94950000 4.00145000 -O 14.81350000 10.10030000 8.02371000 -O 14.70470000 10.04330000 12.04060000 -O 14.68380000 10.06430000 15.96500000 -O 14.67140000 10.08200000 20.01890000 -O 14.68950000 14.02390000 -0.03998390 -O 14.81530000 14.09090000 4.02005000 -O 14.85770000 14.06250000 7.99911000 -O 14.68850000 14.00730000 12.14300000 -O 14.77040000 13.93530000 16.12570000 -O 14.63870000 13.94350000 20.13460000 -O 14.87090000 18.10610000 -0.01005330 -O 14.73210000 18.02240000 3.96865000 -O 14.65390000 18.06900000 8.11628000 -O 14.72650000 18.12390000 11.98640000 -O 14.73870000 18.10660000 16.12060000 -O 14.80110000 18.05730000 20.06080000 -O 14.66550000 22.08310000 0.04301880 -O 14.71650000 21.84150000 3.89857000 -O 14.71990000 21.98050000 7.91651000 -O 14.69470000 21.96370000 12.08170000 -O 14.70680000 21.98660000 16.06330000 -O 14.65180000 21.99660000 19.97390000 -O 18.92860000 1.90634000 0.08626130 -O 18.86330000 1.92549000 3.99710000 -O 18.85330000 1.99262000 7.89288000 -O 18.91750000 2.13225000 11.89650000 -O 18.75360000 1.97265000 15.97040000 -O 18.83780000 2.00605000 19.93320000 -O 18.75000000 5.92905000 0.09698910 -O 18.84640000 6.07854000 4.01361000 -O 18.94370000 5.94216000 7.98381000 -O 18.73740000 5.98521000 12.12520000 -O 18.80570000 6.01157000 15.97530000 -O 18.89370000 6.09085000 20.07240000 -O 18.98260000 9.85995000 0.06460710 -O 18.83490000 9.93336000 4.01625000 -O 18.83700000 9.82205000 8.12478000 -O 18.95130000 9.87367000 11.94460000 -O 18.80810000 9.91693000 16.07700000 -O 18.87570000 10.09120000 19.96530000 -O 19.01840000 13.99580000 0.16003800 -O 18.98760000 13.98860000 4.07754000 -O 18.86240000 14.11130000 8.16172000 -O 18.85380000 13.85270000 12.04080000 -O 18.90920000 14.08720000 15.94350000 -O 18.98810000 13.93470000 20.09760000 -O 18.87210000 18.03470000 -0.10512100 -O 18.84350000 18.05920000 3.92397000 -O 18.83950000 18.09800000 7.95128000 -O 18.86190000 18.13570000 12.06820000 -O 18.78180000 18.06150000 15.98480000 -O 18.89940000 18.11650000 19.98600000 -O 18.71750000 22.19450000 -0.08744780 -O 18.81440000 21.95750000 4.01668000 -O 18.86850000 22.03190000 8.01217000 -O 18.67970000 22.06740000 11.93200000 -O 18.88810000 22.13240000 15.95000000 -O 18.80070000 22.15490000 20.07010000 -O 23.12470000 1.90452000 -0.03436290 -O 23.11680000 2.08813000 3.97104000 -O 23.29430000 1.88653000 7.94538000 -O 23.02510000 1.97906000 11.93990000 -O 23.09590000 1.96536000 15.92750000 -O 22.97440000 2.15796000 20.00430000 -O 23.10560000 5.98219000 -0.09725250 -O 23.10280000 6.07207000 3.95806000 -O 23.05700000 6.04343000 7.98318000 -O 23.13430000 6.01379000 11.90600000 -O 23.08960000 6.03629000 15.92260000 -O 23.13360000 6.00431000 20.01350000 -O 23.14320000 9.92866000 -0.06837310 -O 23.16480000 10.09840000 3.96356000 -O 23.09500000 10.10330000 8.03679000 -O 23.19460000 10.10190000 12.01940000 -O 23.04740000 10.01850000 15.95100000 -O 23.01180000 10.06640000 19.86740000 -O 23.09690000 14.06430000 -0.09508440 -O 23.13580000 13.84520000 4.02749000 -O 22.97070000 14.04360000 7.89578000 -O 23.14160000 14.18590000 12.01150000 -O 23.12170000 14.20940000 15.86030000 -O 22.94950000 14.08640000 19.88120000 -O 23.03480000 17.95390000 0.12853200 -O 23.16560000 18.07990000 3.96748000 -O 22.90890000 18.03590000 7.99441000 -O 23.04490000 17.93510000 11.97530000 -O 22.94000000 18.06560000 16.09890000 -O 22.97720000 18.07240000 20.08880000 -O 23.06400000 22.03700000 0.01005890 -O 23.08840000 22.09460000 3.96165000 -O 23.04430000 21.91800000 7.90827000 -O 23.09050000 22.15190000 11.95030000 -O 23.03920000 22.01600000 15.91720000 -O 23.09840000 22.06090000 19.83890000 -O 2.10816000 0.05999250 2.01213000 -O 2.31505000 0.22076800 5.99429000 -O 2.20095000 0.11556600 9.99895000 -O 2.11895000 0.05503780 13.91010000 -O 2.14770000 0.02192170 18.05080000 -O 2.08585000 0.09244070 21.99050000 -O 2.11507000 4.16212000 1.88768000 -O 2.15699000 4.13217000 5.92379000 -O 2.00137000 4.11491000 9.93166000 -O 2.12139000 4.14110000 13.96030000 -O 2.25350000 4.00695000 18.02400000 -O 2.18000000 4.16824000 21.99530000 -O 2.22288000 8.07509000 1.98452000 -O 2.15970000 8.03161000 6.09853000 -O 2.15977000 8.09110000 9.84689000 -O 2.25021000 7.99588000 14.12290000 -O 1.97816000 8.09564000 17.93900000 -O 2.06789000 8.11562000 21.99500000 -O 2.20117000 12.03000000 1.93319000 -O 2.28730000 12.02490000 6.03654000 -O 2.07907000 11.99340000 10.01320000 -O 2.09153000 12.03410000 14.03600000 -O 2.07134000 12.02110000 17.95730000 -O 2.04828000 12.09900000 21.80650000 -O 2.35488000 15.98360000 2.00143000 -O 2.17323000 16.10690000 5.91021000 -O 2.07852000 15.99780000 10.05660000 -O 2.05072000 16.06750000 13.90760000 -O 2.15112000 16.12990000 17.92130000 -O 2.05717000 15.98320000 21.98140000 -O 2.23774000 20.13170000 1.88798000 -O 2.14853000 20.07400000 6.01622000 -O 2.21709000 20.07910000 9.90561000 -O 2.09769000 20.16500000 14.03050000 -O 2.09243000 20.08130000 17.98410000 -O 2.11876000 20.10950000 22.01410000 -O 6.36222000 0.09320680 1.95909000 -O 6.34646000 0.02992010 6.04630000 -O 6.37281000 0.03997880 10.05400000 -O 6.24519000 0.04432500 13.89450000 -O 6.26030000 0.14264500 17.99350000 -O 6.24201000 0.11612000 22.01180000 -O 6.37850000 3.99974000 1.92865000 -O 6.51401000 4.03235000 6.00945000 -O 6.44343000 4.04473000 10.06930000 -O 6.25050000 3.99274000 13.91620000 -O 6.32657000 4.10893000 17.95020000 -O 6.33016000 4.12821000 21.96570000 -O 6.39937000 8.06026000 1.99464000 -O 6.41071000 8.18593000 5.97753000 -O 6.40439000 8.02388000 10.00410000 -O 6.24895000 7.96818000 13.90990000 -O 6.51909000 8.02841000 18.04730000 -O 6.46032000 8.01192000 22.00390000 -O 6.29673000 12.03620000 1.82325000 -O 6.34222000 12.09570000 6.11142000 -O 6.24461000 12.02380000 9.98421000 -O 6.20309000 11.98400000 13.97820000 -O 6.28674000 11.98190000 17.95610000 -O 6.28936000 12.06650000 22.01760000 -O 6.28281000 16.09350000 1.91635000 -O 6.49026000 15.90550000 5.92139000 -O 6.33266000 15.94630000 10.04540000 -O 6.27307000 15.97740000 14.03310000 -O 6.38796000 16.03070000 17.86730000 -O 6.17551000 16.16630000 21.91030000 -O 6.34243000 20.07500000 1.91079000 -O 6.30640000 20.02770000 6.07923000 -O 6.23347000 19.92430000 10.06670000 -O 6.27213000 19.94170000 13.93640000 -O 6.24679000 20.04290000 18.02050000 -O 6.25023000 20.08330000 21.98710000 -O 10.50040000 0.00078254 2.02822000 -O 10.57900000 0.01985330 6.17224000 -O 10.53660000 0.06112690 10.01670000 -O 10.46760000 -0.06103570 14.05170000 -O 10.56940000 -0.01023630 18.08200000 -O 10.55840000 0.14795800 22.09760000 -O 10.44290000 4.01529000 2.14100000 -O 10.47370000 4.14849000 6.05236000 -O 10.62320000 4.11602000 10.08370000 -O 10.40810000 3.99093000 13.96330000 -O 10.55940000 3.97949000 18.08870000 -O 10.45970000 4.06154000 22.07300000 -O 10.40380000 8.03037000 1.98087000 -O 10.53480000 8.11763000 5.97926000 -O 10.51330000 7.96639000 10.08720000 -O 10.44700000 7.92251000 14.07130000 -O 10.48060000 8.00671000 17.99550000 -O 10.54880000 8.01107000 22.04130000 -O 10.45440000 12.02170000 1.95684000 -O 10.64210000 12.01480000 5.98421000 -O 10.62700000 11.99270000 9.87811000 -O 10.54460000 11.98500000 13.99810000 -O 10.46740000 12.05360000 17.97150000 -O 10.48930000 11.99160000 21.84740000 -O 10.53780000 16.04480000 1.86025000 -O 10.72910000 16.06770000 6.00470000 -O 10.43610000 15.98210000 9.94118000 -O 10.47770000 15.90080000 13.84860000 -O 10.52070000 16.06240000 17.78300000 -O 10.52040000 16.00850000 21.95180000 -O 10.51960000 20.03160000 2.09631000 -O 10.45180000 19.96290000 5.95699000 -O 10.55220000 19.85310000 9.91878000 -O 10.45940000 19.93000000 14.05760000 -O 10.35680000 20.07760000 17.80700000 -O 10.48010000 20.01820000 21.96420000 -O 14.71290000 0.01517220 2.00899000 -O 14.64300000 -0.02633370 5.88846000 -O 14.77730000 -0.08591990 9.98707000 -O 14.64800000 -0.07937410 13.98420000 -O 14.68960000 0.02102220 18.02470000 -O 14.54890000 -0.00227341 21.95320000 -O 14.63860000 3.94676000 2.02557000 -O 14.72320000 3.86297000 5.93510000 -O 14.80850000 4.05660000 10.14340000 -O 14.62630000 4.02110000 14.07770000 -O 14.69040000 4.00601000 18.18240000 -O 14.65660000 3.91689000 21.99570000 -O 14.70240000 7.91689000 1.89354000 -O 14.77810000 7.88860000 6.02057000 -O 14.82310000 7.97266000 10.03290000 -O 14.59840000 7.97076000 14.10600000 -O 14.75130000 7.98141000 18.02430000 -O 14.43550000 7.98508000 21.99440000 -O 14.65310000 12.04960000 2.02051000 -O 14.68200000 11.94070000 5.97268000 -O 14.64030000 11.92700000 9.95213000 -O 14.74430000 12.02110000 13.93630000 -O 14.60240000 11.92690000 18.12140000 -O 14.39620000 11.92920000 22.02700000 -O 14.64830000 15.93660000 1.90856000 -O 14.61180000 15.87770000 6.01313000 -O 14.84280000 15.97180000 10.00560000 -O 14.75700000 16.08650000 14.11930000 -O 14.70580000 15.91590000 18.17140000 -O 14.73700000 16.01460000 21.94080000 -O 14.61660000 19.92470000 1.94852000 -O 14.83140000 20.01590000 5.94142000 -O 14.63370000 20.00510000 9.95731000 -O 14.73210000 19.92450000 14.08270000 -O 14.71820000 20.07190000 18.05810000 -O 14.72700000 20.02850000 22.03230000 -O 18.96670000 0.00631610 2.09514000 -O 18.85800000 -0.02403910 5.93536000 -O 18.92460000 0.08598130 9.92676000 -O 18.75830000 0.12549500 13.96790000 -O 18.86160000 0.12026900 17.88950000 -O 18.86640000 0.15841000 21.97110000 -O 18.78010000 3.90981000 2.08899000 -O 18.95750000 4.17892000 5.79154000 -O 18.88920000 4.10656000 9.96910000 -O 18.87580000 4.02570000 14.12420000 -O 18.88880000 4.14495000 18.07920000 -O 18.71790000 4.08685000 22.09300000 -O 18.82160000 7.99095000 2.15423000 -O 18.96870000 8.07335000 6.02069000 -O 18.83300000 7.94875000 9.99065000 -O 18.92260000 8.05210000 13.99150000 -O 18.80140000 8.01449000 18.10390000 -O 18.86380000 8.06957000 21.88300000 -O 18.82360000 11.93760000 2.01657000 -O 18.89620000 11.94940000 6.06742000 -O 18.79180000 11.97800000 9.96231000 -O 18.89570000 12.02050000 13.98050000 -O 18.80680000 12.15160000 17.89680000 -O 19.02590000 12.09420000 22.12320000 -O 18.84780000 15.99810000 2.00216000 -O 18.90350000 16.06230000 6.11596000 -O 18.93630000 16.10270000 10.21090000 -O 18.79180000 16.07770000 14.10560000 -O 18.98660000 16.05490000 17.98260000 -O 18.83140000 16.04170000 22.02300000 -O 18.93930000 20.14820000 1.94180000 -O 18.82470000 20.06770000 5.99462000 -O 18.92260000 20.02180000 10.02300000 -O 18.92600000 20.16280000 14.04930000 -O 18.85450000 20.15410000 18.09080000 -O 18.74520000 20.25600000 22.02720000 -O 23.12110000 0.03258960 1.96618000 -O 23.15940000 0.07056540 5.94147000 -O 23.13240000 -0.10694800 9.94866000 -O 23.14050000 -0.04715140 13.93830000 -O 23.03460000 0.12691000 18.08880000 -O 22.99730000 0.08611180 21.95670000 -O 22.98980000 4.07909000 1.92126000 -O 23.13310000 4.09409000 6.00560000 -O 23.07570000 3.96137000 9.93473000 -O 23.06240000 4.04112000 14.03120000 -O 23.10350000 4.08975000 17.90400000 -O 23.07550000 4.07457000 22.08880000 -O 22.98800000 7.96221000 1.93047000 -O 23.06950000 8.08668000 6.07046000 -O 23.19390000 8.07726000 10.00430000 -O 22.99380000 8.13252000 13.87660000 -O 23.09060000 7.96767000 17.97260000 -O 23.02220000 8.03155000 21.93640000 -O 23.14230000 11.99600000 1.84907000 -O 23.15170000 12.06060000 6.02035000 -O 23.05530000 12.01300000 10.04490000 -O 23.19410000 12.09450000 14.03150000 -O 23.03370000 12.10010000 17.85230000 -O 22.93940000 12.07120000 21.99440000 -O 23.02380000 15.90580000 2.09682000 -O 22.92270000 16.03020000 6.01013000 -O 23.08430000 16.02260000 9.98926000 -O 23.11900000 16.13120000 14.03150000 -O 22.92300000 16.07970000 17.92570000 -O 23.10860000 16.17140000 22.04310000 -O 23.13540000 19.92710000 2.04214000 -O 23.12730000 20.11250000 5.96574000 -O 23.03840000 20.02820000 10.03130000 -O 23.05780000 20.08840000 13.98190000 -O 22.95700000 20.06920000 18.00450000 -O 23.08360000 20.14700000 21.98830000 -O 0.18317600 2.03417000 2.00797000 -O 0.19592300 2.15486000 5.87876000 -O 0.12310100 2.01898000 10.10330000 -O 0.12340000 2.10667000 13.94920000 -O 0.11949300 2.03506000 17.95180000 -O 0.13429700 2.03770000 22.03630000 -O -0.09926540 6.07764000 1.88780000 -O 0.18298700 6.10105000 5.99400000 -O 0.25235800 6.05274000 9.90248000 -O -0.08391140 6.05937000 13.98540000 -O 0.12827200 6.02504000 18.00170000 -O 0.27354000 6.12492000 21.93750000 -O 0.20530800 10.04040000 1.86836000 -O 0.23232600 10.01010000 5.96685000 -O 0.18979400 10.02800000 10.01190000 -O 0.24980800 9.95131000 13.99720000 -O 0.03064180 9.87921000 17.89040000 -O 0.11381200 10.08710000 21.96410000 -O 0.25599800 14.01460000 1.97972000 -O 0.29968400 14.04700000 5.96395000 -O -0.20795300 13.99620000 10.02340000 -O 0.25525500 14.05520000 14.03230000 -O 0.15804700 13.94730000 17.99980000 -O 0.02955980 14.07140000 21.85300000 -O 0.29444600 17.72770000 1.88052000 -O 0.12743300 17.94720000 5.93340000 -O 0.24996600 18.04240000 9.98324000 -O 0.20515500 18.05850000 14.02800000 -O 0.09451950 17.98670000 18.00320000 -O 0.26975200 18.02480000 22.08720000 -O 0.15698600 22.01790000 2.03329000 -O 0.26135000 22.08250000 5.97088000 -O 0.26445300 22.12880000 9.91215000 -O 0.12408900 22.04010000 14.06410000 -O 0.11335000 22.07060000 18.07260000 -O 0.06597540 22.19290000 22.03670000 -O 4.39326000 2.11340000 1.85096000 -O 4.46646000 2.12092000 6.04227000 -O 4.40461000 2.08453000 10.02990000 -O 4.22144000 2.02908000 13.72500000 -O 4.28708000 2.07552000 18.12540000 -O 4.40717000 2.12248000 22.02790000 -O 4.13969000 6.00747000 2.05625000 -O 4.47837000 5.94076000 5.96677000 -O 4.40383000 5.93784000 10.00860000 -O 4.07299000 6.06719000 13.96380000 -O 4.34640000 6.16266000 17.87690000 -O 4.24477000 6.23831000 22.01470000 -O 4.48493000 9.92636000 2.02429000 -O 4.40434000 10.11480000 5.97827000 -O 4.30404000 10.01340000 9.97911000 -O 4.19975000 10.06330000 13.95330000 -O 4.40477000 9.98837000 17.99470000 -O 4.41422000 10.04520000 21.97440000 -O 4.33182000 14.04380000 1.71853000 -O 4.28929000 14.04290000 5.89159000 -O 4.03480000 14.08020000 10.11920000 -O 4.27686000 14.09860000 14.02820000 -O 4.39427000 14.05940000 18.05850000 -O 4.34150000 13.96640000 21.88710000 -O 4.30714000 17.99800000 2.06906000 -O 4.48749000 17.89780000 5.93702000 -O 4.30072000 17.92070000 10.00830000 -O 4.32108000 18.00350000 13.96840000 -O 4.26456000 18.15300000 17.86620000 -O 4.21742000 18.12830000 22.05940000 -O 4.40643000 22.07330000 1.95439000 -O 4.36988000 21.94010000 5.98024000 -O 4.41311000 21.95090000 10.04640000 -O 4.33404000 22.13050000 14.06050000 -O 4.34805000 22.18660000 17.99910000 -O 4.33323000 22.04740000 22.02350000 -O 8.58004000 1.91649000 2.16406000 -O 8.49505000 2.08311000 6.01269000 -O 8.71219000 2.09962000 9.99793000 -O 8.57790000 1.96187000 13.92610000 -O 8.55919000 2.10141000 17.96830000 -O 8.52722000 2.10971000 22.01340000 -O 8.30690000 5.94404000 2.02858000 -O 8.55723000 6.06649000 5.90564000 -O 8.51961000 5.98137000 10.01080000 -O 8.27990000 6.04242000 14.00500000 -O 8.49022000 5.97356000 18.02960000 -O 8.54054000 5.94322000 22.04900000 -O 8.51630000 10.10880000 1.99741000 -O 8.58185000 10.10060000 6.03224000 -O 8.65910000 10.02960000 10.09320000 -O 8.51328000 10.09050000 14.06090000 -O 8.55153000 9.99779000 18.01560000 -O 8.53232000 10.00770000 22.08090000 -O 8.53525000 14.03370000 1.87836000 -O 8.61970000 13.88720000 5.94237000 -O 8.31380000 14.05260000 9.95903000 -O 8.48865000 13.91420000 13.96010000 -O 8.45641000 14.01580000 17.93130000 -O 8.49598000 14.00940000 21.92090000 -O 8.53124000 18.14230000 1.92453000 -O 8.55979000 17.86990000 5.98396000 -O 8.45381000 17.97860000 10.00570000 -O 8.43482000 18.03600000 13.95220000 -O 8.47283000 17.98930000 17.88150000 -O 8.43793000 18.10780000 21.96600000 -O 8.48978000 22.18700000 2.04650000 -O 8.56284000 22.04000000 6.08149000 -O 8.50699000 22.00420000 10.07640000 -O 8.49666000 22.00100000 14.12480000 -O 8.53556000 22.17180000 17.99590000 -O 8.43661000 22.08930000 22.08500000 -O 12.65030000 1.98214000 1.95745000 -O 12.73120000 2.10745000 6.00693000 -O 12.80170000 2.15480000 10.10480000 -O 12.71870000 2.11371000 14.10850000 -O 12.76370000 2.01015000 18.00740000 -O 12.61010000 2.09821000 22.06860000 -O 12.51940000 6.09231000 1.97204000 -O 12.73590000 6.08601000 6.04704000 -O 12.84790000 6.00264000 9.96612000 -O 12.28510000 6.05948000 13.95420000 -O 12.72720000 6.10276000 18.07180000 -O 12.66910000 5.95643000 22.05480000 -O 12.75310000 9.94451000 2.02905000 -O 12.79250000 9.91963000 5.97587000 -O 12.68000000 9.95143000 10.01500000 -O 12.69320000 9.98904000 13.96330000 -O 12.66340000 9.96721000 17.98750000 -O 12.48030000 9.97026000 22.11480000 -O 12.74030000 14.01770000 1.99981000 -O 12.75760000 13.92080000 5.98929000 -O 12.47860000 14.13950000 9.92030000 -O 12.77220000 14.11460000 14.07020000 -O 12.73880000 14.07280000 17.94380000 -O 12.62040000 14.23130000 21.94780000 -O 12.65500000 17.97300000 1.82263000 -O 12.74810000 18.08790000 5.85082000 -O 12.65790000 18.03830000 9.99253000 -O 12.72660000 17.95610000 13.93650000 -O 12.68810000 18.12260000 17.89560000 -O 12.73390000 18.06190000 21.97150000 -O 12.64810000 22.01600000 1.94272000 -O 12.81270000 22.11670000 6.12761000 -O 12.76350000 21.94290000 9.98136000 -O 12.68270000 21.97770000 13.94460000 -O 12.72340000 21.95590000 18.03640000 -O 12.65400000 22.07020000 21.99150000 -O 16.85650000 1.95069000 2.08421000 -O 16.91180000 2.04141000 5.90815000 -O 16.86820000 2.08378000 9.96789000 -O 16.90800000 2.05309000 13.89720000 -O 16.86950000 2.03496000 17.97260000 -O 16.90410000 2.01361000 22.05170000 -O 16.64890000 5.86830000 1.90499000 -O 16.76950000 5.96686000 5.95030000 -O 16.93960000 6.05947000 9.87456000 -O 16.59220000 6.03517000 13.98370000 -O 16.83020000 5.97985000 18.09270000 -O 16.90140000 6.16713000 21.98200000 -O 16.67860000 10.10790000 2.00383000 -O 16.88100000 9.95992000 6.01989000 -O 16.86600000 9.99374000 9.98512000 -O 16.98970000 9.91334000 14.09660000 -O 16.83640000 9.92738000 18.00030000 -O 16.93380000 10.12420000 22.09880000 -O 16.93650000 14.00030000 2.03854000 -O 16.95530000 14.04850000 5.90221000 -O 16.63290000 14.04130000 10.22760000 -O 16.89920000 13.99180000 13.99260000 -O 16.85470000 13.99830000 18.12000000 -O 16.92210000 13.91380000 21.93510000 -O 16.91470000 18.11580000 1.95480000 -O 16.85980000 17.96590000 5.98389000 -O 16.88090000 18.13330000 9.93605000 -O 16.91690000 18.04900000 14.08330000 -O 16.96170000 18.06980000 18.09600000 -O 16.95460000 18.06650000 22.01240000 -O 16.98490000 22.08710000 1.91234000 -O 16.86580000 21.92360000 5.97449000 -O 16.81860000 22.00370000 9.91675000 -O 16.71290000 22.01020000 14.06730000 -O 17.01860000 22.15880000 17.97940000 -O 16.74590000 22.16720000 21.94140000 -O 21.18840000 1.93438000 1.96217000 -O 21.18470000 1.92658000 6.00133000 -O 21.04150000 2.07613000 9.93639000 -O 21.09890000 2.07297000 13.99050000 -O 21.13500000 2.06609000 18.07690000 -O 21.03750000 2.14798000 22.05950000 -O 20.72310000 5.90990000 2.00730000 -O 21.10360000 6.03243000 5.90101000 -O 21.15950000 6.04445000 10.00340000 -O 20.79730000 6.05043000 13.95210000 -O 21.08430000 5.99194000 18.04460000 -O 20.99040000 5.86778000 22.06590000 -O 21.13530000 10.09400000 2.04196000 -O 21.13460000 9.97202000 6.10080000 -O 21.14400000 9.95811000 10.01030000 -O 21.04960000 10.09310000 14.06370000 -O 21.08670000 9.97098000 17.99050000 -O 21.07480000 9.97954000 22.03690000 -O 21.00590000 13.89810000 2.06108000 -O 20.92380000 14.01480000 6.00676000 -O 20.81770000 13.93550000 10.10640000 -O 21.11330000 13.97500000 13.81180000 -O 21.03010000 14.02280000 18.01320000 -O 21.04300000 14.19670000 22.01040000 -O 21.01100000 18.06600000 2.03765000 -O 21.14340000 18.06040000 5.86798000 -O 20.99540000 18.09980000 10.05900000 -O 21.04140000 18.03450000 14.03390000 -O 21.04850000 17.98390000 18.04400000 -O 21.01960000 18.05500000 22.01000000 -O 21.19230000 21.98630000 2.07417000 -O 21.06590000 22.08520000 5.98522000 -O 20.99990000 21.98270000 10.08250000 -O 21.00550000 22.12690000 13.99710000 -O 21.05190000 21.99880000 17.99320000 -O 21.09210000 22.07430000 22.02450000 diff --git a/regtest/metatensor/rt-perovskite/plumed.dat b/regtest/metatensor/rt-perovskite/plumed.dat deleted file mode 100644 index a3467f92a7..0000000000 --- a/regtest/metatensor/rt-perovskite/plumed.dat +++ /dev/null @@ -1,13 +0,0 @@ -Pmod: METATENSOR ... - MODEL=BaTiO3_CV.pt - EXTENSIONS_DIRECTORY=extensions - - SPECIES1=1-216 - SPECIES2=217-432 - SPECIES3=433-1080 - SPECIES_TO_TYPES=22,56,8 -... - -PRINT ARG=Pmod FILE=COLVAR - -BIASVALUE ARG=Pmod diff --git a/regtest/metatensor/rt-soap/.gitignore b/regtest/metatensor/rt-soap/.gitignore deleted file mode 100644 index 7d07b69c6c..0000000000 --- a/regtest/metatensor/rt-soap/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -extensions/ -soap_cv.pt diff --git a/regtest/metatensor/rt-soap/Makefile b/regtest/metatensor/rt-soap/Makefile deleted file mode 100644 index 3703b27cea..0000000000 --- a/regtest/metatensor/rt-soap/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../scripts/test.make diff --git a/regtest/metatensor/rt-soap/config b/regtest/metatensor/rt-soap/config deleted file mode 100644 index 9192181d4c..0000000000 --- a/regtest/metatensor/rt-soap/config +++ /dev/null @@ -1,9 +0,0 @@ -plumed_modules=metatensor -plumed_needs=metatensor -type=driver -arg="--plumed plumed.dat --ixyz crystal_structure.xyz --dump-forces forces --dump-forces-fmt %8.4f" # --debug-forces forces.num" - -function plumed_regtest_before(){ - python soap_cv.py - echo Generated model using soap_cv.py -} diff --git a/regtest/metatensor/rt-soap/crystal_structure.xyz b/regtest/metatensor/rt-soap/crystal_structure.xyz deleted file mode 100644 index 8084820a41..0000000000 --- a/regtest/metatensor/rt-soap/crystal_structure.xyz +++ /dev/null @@ -1,78 +0,0 @@ -76 -9.29282 8.82648 8.80317 -C -0.00674798 1.62841 5.1374 -C -0.234997 2.66289 6.02956 -C -0.645067 3.94896 1.67162 -C -0.686759 6.81038 6.83509 -C -1.21518 1.44361 4.30407 -C -1.64474 3.17369 5.81622 -C -2.51526 5.37019 6.12042 -C -2.59982 3.16974 7.09021 -C -3.04198 6.41918 5.19058 -C -3.07058 -0.447098 7.5688 -C -3.33529 1.81888 7.17616 -C -3.52606 4.37762 6.77056 -C -4.26818 4.86202 7.96407 -C 1.15528 4.96346 3.67396 -C 1.46515 3.94504 2.79141 -C 1.8355 -0.229246 1.89091 -C 1.84526 2.65735 7.07491 -C 2.3535 5.10858 4.48679 -C 2.83322 3.38203 3.004 -C 3.66083 1.24405 2.65283 -C 3.81093 3.40544 1.76377 -C 4.22474 0.188689 3.59337 -C 4.29399 7.00701 1.25775 -C 4.52552 4.72654 1.62947 -C 4.63227 2.20046 2.00559 -C 5.4412 1.75131 0.827934 -H -0.597154 5.01805 1.48822 -H -1.09178 3.36331 0.862686 -H -1.25464 3.78279 2.676 -H -1.27458 7.74831 2.42989 -H -2.02781 3.32334 7.96672 -H -2.07989 8.33492 0.952737 -H -2.23197 -1.1727 7.84 -H -2.32895 7.01916 4.76419 -H -3.46144 -0.773536 6.59683 -H -3.61517 5.1856 8.74908 -H -3.622 5.87365 4.43455 -H -3.78336 7.06884 5.71404 -H -3.8561 -0.507043 8.39732 -H -4.23715 4.12125 5.94111 -H -4.88784 5.74215 7.71773 -H -4.95914 4.053 8.36145 -H 0.061143 6.26169 6.23598 -H 0.223955 5.48529 3.82962 -H 0.934864 1.09568 4.99619 -H 1.12813 0.32584 2.53852 -H 1.76654 1.56839 7.34513 -H 2.24591 3.20688 7.94958 -H 2.4153 2.76976 6.13735 -H 2.42478 -1.13676 6.38955 -H 3.17168 3.23498 0.851446 -H 3.24428 -1.74337 7.85678 -H 3.40391 -0.402137 4.06113 -H 3.40727 7.69773 0.912087 -H 4.63741 7.37035 2.22775 -H 4.77799 1.3854 0.00264514 -H 4.81423 0.703684 4.40367 -H 4.95021 -0.447272 3.08942 -H 5.04072 7.01358 0.449909 -H 5.37118 2.45599 2.87965 -H 6.09722 0.829165 1.09862 -H 6.17357 2.52147 0.48128 -O -1.40912 0.683441 3.39886 -O -1.63781 4.54532 5.38982 -O -1.77114 5.89669 7.23639 -O -2.14901 2.33897 4.74752 -O -2.52094 0.809112 7.4815 -O -4.57576 1.73881 7.09528 -O 0.441217 3.16788 6.97222 -O 0.730293 3.42562 1.79561 -O 2.60189 5.89386 5.38898 -O 2.7961 2.04711 3.4473 -O 2.96333 0.623505 1.5615 -O 3.37537 4.19401 4.06299 -O 3.6605 5.69469 1.30667 -O 5.72352 4.85085 1.72059 diff --git a/regtest/metatensor/rt-soap/forces.reference b/regtest/metatensor/rt-soap/forces.reference deleted file mode 100644 index 039d6bc618..0000000000 --- a/regtest/metatensor/rt-soap/forces.reference +++ /dev/null @@ -1,78 +0,0 @@ -76 --2385.3973 -2758.6366 -2559.3318 -X -0.5046 -14.7610 -5.7792 -X 11.2221 -13.7503 -2.5009 -X 8.2975 9.9633 -1.3084 -X 12.8829 14.8549 0.7372 -X 8.8858 -3.9104 7.3002 -X 8.8146 -14.1253 -2.7495 -X -1.6740 9.7549 -6.4020 -X -2.0899 1.0994 -3.1687 -X 6.7163 0.1327 -5.4507 -X 14.5098 -2.9457 -2.7676 -X -15.0075 -9.4578 -11.8655 -X 6.1580 1.9497 -12.5317 -X -5.6680 -3.1184 5.2709 -X 0.5216 15.5032 4.8350 -X -11.7193 10.8937 1.6692 -X -12.5984 -17.3580 -1.1848 -X -10.2301 -8.3875 4.9173 -X -5.2731 4.4699 -4.4445 -X -8.9411 11.8663 3.4916 -X 1.0432 -11.4657 5.4313 -X 1.9849 0.5634 1.8931 -X -9.1496 3.3735 2.6638 -X -16.0344 2.6388 2.2717 -X 14.7061 11.6954 12.5884 -X -1.5820 -2.8634 11.4844 -X 6.0777 7.5459 -4.3212 -X 10.5329 6.4225 1.8260 -X 11.5813 -4.1084 7.5776 -X 9.6609 7.9748 17.2989 -X 12.4542 2.8960 6.5601 -X 11.7491 -1.3933 -4.3450 -X 6.2641 6.5727 1.1517 -X 32.6713 -2.8616 6.5997 -X 24.9675 1.2945 -9.3590 -X -5.4890 10.6526 -11.2037 -X 4.3650 16.0808 12.9214 -X -6.6853 -10.6213 -2.6347 -X -12.7090 0.6703 -0.8864 -X -9.2591 12.3285 -3.9852 -X -1.2792 0.5233 -6.6290 -X -16.4085 15.5389 -18.7056 -X -15.8455 -8.9101 -4.6598 -X 2.3318 -4.1716 -3.4480 -X 10.6375 11.3446 -9.4963 -X -9.6671 -10.4088 8.3804 -X -3.3161 3.0531 4.2898 -X -10.3911 -6.2835 -3.6980 -X -10.9603 6.2966 -7.7771 -X -9.1254 -5.3706 -16.6306 -X -12.1060 -5.0129 -3.7650 -X -9.6199 2.7982 3.5275 -X -8.0137 -5.9342 0.4336 -X -25.0567 -2.6040 5.7738 -X -32.7334 0.0515 -5.4123 -X 6.7513 -13.8447 15.7283 -X -6.0256 -16.4669 -10.4181 -X 5.1973 7.7844 3.7303 -X 11.5801 -3.2893 -2.7509 -X 9.2378 -13.8778 5.6868 -X 1.7723 -0.1722 7.0570 -X 14.1668 -15.9527 15.3801 -X 14.4890 8.1284 4.0597 -X 5.5686 -10.0483 5.5589 -X 11.9005 8.6205 -12.7022 -X 12.2728 5.7701 2.8822 -X 1.8197 -2.2371 -3.9078 -X 17.8959 2.8505 8.6345 -X -7.9229 10.7577 -10.5727 -X 2.0422 1.8151 4.0374 -X -4.9811 0.1890 -2.5605 -X -4.2991 11.4937 -6.5989 -X -11.7770 -9.5720 9.9282 -X -10.0465 -6.8534 -3.3167 -X -0.2786 5.7009 5.1555 -X -17.2474 -0.5899 -9.2182 -X 7.9853 -11.1857 10.4230 diff --git a/regtest/metatensor/rt-soap/plumed.dat b/regtest/metatensor/rt-soap/plumed.dat deleted file mode 100644 index 8f3bf7ae44..0000000000 --- a/regtest/metatensor/rt-soap/plumed.dat +++ /dev/null @@ -1,30 +0,0 @@ -soap: METATENSOR ... - MODEL=soap_cv.pt - EXTENSIONS_DIRECTORY=extensions - - SPECIES1=1-26 - SPECIES2=27-62 - SPECIES3=63-76 - SPECIES_TO_TYPES=6,1,8 -... - -soap_selected: METATENSOR ... - MODEL=soap_cv.pt - EXTENSIONS_DIRECTORY=extensions - - SPECIES1=1-26 - SPECIES2=27-62 - SPECIES3=63-76 - SPECIES_TO_TYPES=6,1,8 - - # select out of order to make sure this is respected in the output - SELECTED_ATOMS=2,3,1 -... - - -scalar: SUM ARG=soap PERIODIC=NO -BIASVALUE ARG=scalar - - -PRINT ARG=soap FILE=soap_data STRIDE=1 FMT=%8.4f -PRINT ARG=soap_selected FILE=soap_selected_data STRIDE=1 FMT=%8.4f diff --git a/regtest/metatensor/rt-soap/soap_cv.py b/regtest/metatensor/rt-soap/soap_cv.py deleted file mode 100644 index 5bbbdc830a..0000000000 --- a/regtest/metatensor/rt-soap/soap_cv.py +++ /dev/null @@ -1,94 +0,0 @@ -from typing import Dict, List, Optional - -import torch -from metatensor.torch import Labels, TensorBlock, TensorMap -from metatensor.torch.atomistic import ( - MetatensorAtomisticModel, - ModelCapabilities, - ModelMetadata, - ModelOutput, - System, -) -from rascaline.torch import SoapPowerSpectrum - - -class SOAP_CV(torch.nn.Module): - def __init__(self, species): - super().__init__() - - self.neighbor_type_pairs = Labels( - names=["neighbor_1_type", "neighbor_2_type"], - values=torch.tensor( - [[t1, t2] for t1 in species for t2 in species if t1 <= t2] - ), - ) - self.calculator = SoapPowerSpectrum( - cutoff=4.0, - max_angular=6, - max_radial=6, - radial_basis={"Gto": {}}, - cutoff_function={"ShiftedCosine": {"width": 0.5}}, - center_atom_weight=1.0, - atomic_gaussian_width=0.3, - ) - - torch.manual_seed(-230623) - self.register_buffer("pca_projection", torch.rand(2520, 3, dtype=torch.float64)) - - def forward( - self, - systems: List[System], - outputs: Dict[str, ModelOutput], - selected_atoms: Optional[Labels], - ) -> Dict[str, TensorMap]: - - if "plumed::cv" not in outputs: - return {} - - if not outputs["plumed::cv"].per_atom: - raise ValueError("per_atom=False is not supported") - - if len(systems[0]) == 0: - # PLUMED is trying to determine the size of the output - projected = torch.zeros((0, 3), dtype=torch.float64) - samples = Labels(["system", "atom"], torch.zeros((0, 2), dtype=torch.int32)) - else: - soap = self.calculator(systems, selected_samples=selected_atoms) - soap = soap.keys_to_samples("center_type") - soap = soap.keys_to_properties(self.neighbor_type_pairs) - - soap_block = soap.block() - projected = soap_block.values @ self.pca_projection - - samples = soap_block.samples.remove("center_type") - - block = TensorBlock( - values=projected, - samples=samples, - components=[], - properties=Labels("soap_pca", torch.tensor([[0], [1], [2]])), - ) - cv = TensorMap( - keys=Labels("_", torch.tensor([[0]])), - blocks=[block], - ) - - return {"plumed::cv": cv} - - -cv = SOAP_CV(species=[1, 6, 7, 8]) -cv.eval() - - -capabilities = ModelCapabilities( - outputs={"plumed::cv": ModelOutput(per_atom=True)}, - interaction_range=4.0, - supported_devices=["cpu"], - length_unit="nm", - atomic_types=[6, 1, 7, 8], - dtype="float64", -) - -metadata = ModelMetadata(name="Collective Variable test") -model = MetatensorAtomisticModel(cv, metadata, capabilities) -model.export("soap_cv.pt", collect_extensions="extensions") diff --git a/regtest/metatensor/rt-soap/soap_data.reference b/regtest/metatensor/rt-soap/soap_data.reference deleted file mode 100644 index 681bac61c9..0000000000 --- a/regtest/metatensor/rt-soap/soap_data.reference +++ /dev/null @@ -1,2 +0,0 @@ -#! FIELDS time soap.1.1 soap.1.2 soap.1.3 soap.2.1 soap.2.2 soap.2.3 soap.3.1 soap.3.2 soap.3.3 soap.4.1 soap.4.2 soap.4.3 soap.5.1 soap.5.2 soap.5.3 soap.6.1 soap.6.2 soap.6.3 soap.7.1 soap.7.2 soap.7.3 soap.8.1 soap.8.2 soap.8.3 soap.9.1 soap.9.2 soap.9.3 soap.10.1 soap.10.2 soap.10.3 soap.11.1 soap.11.2 soap.11.3 soap.12.1 soap.12.2 soap.12.3 soap.13.1 soap.13.2 soap.13.3 soap.14.1 soap.14.2 soap.14.3 soap.15.1 soap.15.2 soap.15.3 soap.16.1 soap.16.2 soap.16.3 soap.17.1 soap.17.2 soap.17.3 soap.18.1 soap.18.2 soap.18.3 soap.19.1 soap.19.2 soap.19.3 soap.20.1 soap.20.2 soap.20.3 soap.21.1 soap.21.2 soap.21.3 soap.22.1 soap.22.2 soap.22.3 soap.23.1 soap.23.2 soap.23.3 soap.24.1 soap.24.2 soap.24.3 soap.25.1 soap.25.2 soap.25.3 soap.26.1 soap.26.2 soap.26.3 soap.27.1 soap.27.2 soap.27.3 soap.28.1 soap.28.2 soap.28.3 soap.29.1 soap.29.2 soap.29.3 soap.30.1 soap.30.2 soap.30.3 soap.31.1 soap.31.2 soap.31.3 soap.32.1 soap.32.2 soap.32.3 soap.33.1 soap.33.2 soap.33.3 soap.34.1 soap.34.2 soap.34.3 soap.35.1 soap.35.2 soap.35.3 soap.36.1 soap.36.2 soap.36.3 soap.37.1 soap.37.2 soap.37.3 soap.38.1 soap.38.2 soap.38.3 soap.39.1 soap.39.2 soap.39.3 soap.40.1 soap.40.2 soap.40.3 soap.41.1 soap.41.2 soap.41.3 soap.42.1 soap.42.2 soap.42.3 soap.43.1 soap.43.2 soap.43.3 soap.44.1 soap.44.2 soap.44.3 soap.45.1 soap.45.2 soap.45.3 soap.46.1 soap.46.2 soap.46.3 soap.47.1 soap.47.2 soap.47.3 soap.48.1 soap.48.2 soap.48.3 soap.49.1 soap.49.2 soap.49.3 soap.50.1 soap.50.2 soap.50.3 soap.51.1 soap.51.2 soap.51.3 soap.52.1 soap.52.2 soap.52.3 soap.53.1 soap.53.2 soap.53.3 soap.54.1 soap.54.2 soap.54.3 soap.55.1 soap.55.2 soap.55.3 soap.56.1 soap.56.2 soap.56.3 soap.57.1 soap.57.2 soap.57.3 soap.58.1 soap.58.2 soap.58.3 soap.59.1 soap.59.2 soap.59.3 soap.60.1 soap.60.2 soap.60.3 soap.61.1 soap.61.2 soap.61.3 soap.62.1 soap.62.2 soap.62.3 soap.63.1 soap.63.2 soap.63.3 soap.64.1 soap.64.2 soap.64.3 soap.65.1 soap.65.2 soap.65.3 soap.66.1 soap.66.2 soap.66.3 soap.67.1 soap.67.2 soap.67.3 soap.68.1 soap.68.2 soap.68.3 soap.69.1 soap.69.2 soap.69.3 soap.70.1 soap.70.2 soap.70.3 soap.71.1 soap.71.2 soap.71.3 soap.72.1 soap.72.2 soap.72.3 soap.73.1 soap.73.2 soap.73.3 soap.74.1 soap.74.2 soap.74.3 soap.75.1 soap.75.2 soap.75.3 soap.76.1 soap.76.2 soap.76.3 - 0.000000 5.3739 5.3189 6.4924 6.0785 6.3903 6.9409 5.2246 4.6212 5.9061 4.1511 4.0573 4.7709 4.5764 5.2386 5.4536 6.4097 6.9494 8.0462 8.3058 7.8752 8.8313 8.1728 7.8564 9.1499 9.2198 7.6869 10.0432 10.1818 9.0589 10.5571 7.8038 8.0779 8.1486 8.2261 8.2375 8.9137 13.1112 11.5062 14.2129 5.3234 5.3345 6.4221 6.0131 6.2499 6.8923 4.0665 4.0244 4.6783 5.4611 4.8335 6.1604 4.5678 5.1760 5.4657 6.5298 7.0866 8.2041 8.3052 7.9518 8.8008 8.3534 7.9700 9.2914 8.9858 7.4976 9.8040 10.0939 8.8693 10.4755 7.8831 8.1124 8.1852 8.4525 8.4195 9.0012 12.6083 11.1732 13.7332 3.1853 2.4422 3.0983 5.2847 4.0223 4.7505 5.0764 3.9788 5.3169 2.7503 2.2456 3.0933 7.5482 5.6437 8.4672 4.7878 3.7804 5.2445 6.6407 5.3949 6.5881 5.7626 4.5726 5.4500 9.2051 7.5949 9.2700 10.6522 9.2379 11.5987 6.8246 5.2193 6.7261 8.7895 6.4347 8.5113 9.8873 8.1552 9.4047 7.4054 5.5790 7.6670 9.4045 7.5583 9.4808 9.3070 7.5297 9.3143 3.8911 2.8561 3.8631 4.4872 3.0042 4.1091 4.3846 2.9167 4.0029 3.8727 2.8685 3.8882 3.1977 2.4422 3.1223 5.3178 4.0774 4.8516 5.2391 4.1314 5.3919 2.7439 2.2344 3.0599 7.4101 5.6020 8.4271 4.8090 3.7893 5.2875 5.3773 4.2736 5.1331 6.6020 5.2857 6.5914 9.1471 7.5439 9.1758 10.3645 9.0638 11.3519 6.9691 5.3286 6.8511 8.8125 6.4630 8.4846 9.6834 7.8991 9.1113 7.2170 5.4853 7.5350 9.2268 7.3981 9.4124 9.2451 7.4593 9.2829 4.2800 4.4397 4.6966 6.3508 6.4476 7.6988 7.0824 6.4238 8.0042 4.4644 4.7579 5.9902 6.9691 5.9845 7.2233 5.7645 5.3416 6.2066 4.8573 4.2211 5.0366 4.8218 4.1793 5.0233 4.2408 4.4088 4.6487 6.3222 6.4139 7.6069 6.9824 6.3145 7.8332 4.5577 4.8675 6.2457 6.8375 5.8557 7.1789 5.7201 5.3280 6.1530 diff --git a/regtest/metatensor/rt-soap/soap_selected_data.reference b/regtest/metatensor/rt-soap/soap_selected_data.reference deleted file mode 100644 index 805a7de6d5..0000000000 --- a/regtest/metatensor/rt-soap/soap_selected_data.reference +++ /dev/null @@ -1,2 +0,0 @@ -#! FIELDS time soap_selected.1.1 soap_selected.1.2 soap_selected.1.3 soap_selected.2.1 soap_selected.2.2 soap_selected.2.3 soap_selected.3.1 soap_selected.3.2 soap_selected.3.3 - 0.000000 6.0785 6.3903 6.9409 5.2246 4.6212 5.9061 5.3739 5.3189 6.4924 From 42d3d9b1de4e7cf3841aa7b56cab6bf39616191a Mon Sep 17 00:00:00 2001 From: Luthaf Date: Thu, 23 May 2024 13:18:56 +0200 Subject: [PATCH 26/32] Correct header --- src/metatensor/metatensor.cpp | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index 4ac8b42fde..decbfb476a 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -1,11 +1,25 @@ -/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - Copyright (c) 2024 Guillaume Fraux - - This module is free software: you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ +/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +Copyright (c) 2024 The METATENSOR code team +(see the PEOPLE-METATENSOR file at the root of this folder for a list of names) + +See https://docs.metatensor.org/latest/ for more information about the +metatensor package that this module allows you to call from PLUMED. + +This file is part of METATENSOR-PLUMED module. + +The METATENSOR-PLUMED module is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +The METATENSOR-PLUMED module is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the METATENSOR-PLUMED module. If not, see . ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ #include "core/ActionAtomistic.h" #include "core/ActionWithValue.h" From d7659643d8d8c6950eef52d98ba1c9a7a87295f8 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Thu, 23 May 2024 14:21:52 +0200 Subject: [PATCH 27/32] Regenerate configure with autoconf 2.69 --- configure | 8550 ++++++++++++++++++++++++----------------------------- 1 file changed, 3873 insertions(+), 4677 deletions(-) diff --git a/configure b/configure index cab5b86a63..2eabb2f4db 100755 --- a/configure +++ b/configure @@ -1,10 +1,9 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for PLUMED 2. +# Generated by GNU Autoconf 2.69 for PLUMED 2. # # -# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, -# Inc. +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation @@ -15,65 +14,63 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else case e in #( - e) case `(set -o) 2>/dev/null` in #( +else + case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; -esac ;; esac fi - -# Reset variables that may have inherited troublesome values from -# the environment. - -# IFS needs to be set, to space, tab, and newline, in precisely that order. -# (If _AS_PATH_WALK were called with IFS unset, it would have the -# side effect of setting IFS to empty, thus disabling word splitting.) -# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -IFS=" "" $as_nl" - -PS1='$ ' -PS2='> ' -PS4='+ ' - -# Ensure predictable behavior from utilities with locale-dependent output. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# We cannot yet rely on "unset" to work, but we need these variables -# to be unset--not just set to an empty or harmless value--now, to -# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct -# also avoids known problems related to "unset" and subshell syntax -# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). -for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH -do eval test \${$as_var+y} \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done - -# Ensure that fds 0, 1, and 2 are open. -if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi -if (exec 3>&2) ; then :; else exec 2>/dev/null; fi +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi # The user is always right. -if ${PATH_SEPARATOR+false} :; then +if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -82,6 +79,13 @@ if ${PATH_SEPARATOR+false} :; then fi +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -90,27 +94,43 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - test -r "$as_dir$0" && as_myself=$as_dir$0 && break + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as 'sh COMMAND' +# We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. @@ -131,28 +151,26 @@ case $- in # (((( esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed 'exec'. -printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else case e in #( - e) case \`(set -o) 2>/dev/null\` in #( +else + case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; -esac ;; esac fi " @@ -167,54 +185,42 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ) -then : +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : -else case e in #( - e) exitcode=1; echo positional parameters were not saved. ;; -esac +else + exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 -blah=\$(echo \$(echo blah)) -test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" - if (eval "$as_required") 2>/dev/null -then : + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : as_have_required=yes -else case e in #( - e) as_have_required=no ;; -esac +else + as_have_required=no fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null -then : + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : -else case e in #( - e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. - as_shell=$as_dir$as_base + as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null -then : + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes - if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null -then : + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi @@ -222,22 +228,14 @@ fi esac as_found=false done -IFS=$as_save_IFS -if $as_found -then : - -else case e in #( - e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null -then : +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes -fi ;; -esac -fi +fi; } +IFS=$as_save_IFS - if test "x$CONFIG_SHELL" != x -then : + if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also @@ -254,27 +252,25 @@ case $- in # (((( esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed 'exec'. -printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi - if test x$as_have_required = xno -then : - printf "%s\n" "$0: This script requires a shell more modern than all" - printf "%s\n" "$0: the shells that I found on your system." - if test ${ZSH_VERSION+y} ; then - printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" - printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." else - printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 -fi ;; -esac +fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} @@ -295,7 +291,6 @@ as_fn_unset () } as_unset=as_fn_unset - # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -327,7 +322,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -336,7 +331,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_dir" | +$as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -375,18 +370,16 @@ as_fn_executable_p () # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null -then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' -else case e in #( - e) as_fn_append () +else + as_fn_append () { eval $1=\$$1\$2 - } ;; -esac + } fi # as_fn_append # as_fn_arith ARG... @@ -394,18 +387,16 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null -then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else case e in #( - e) as_fn_arith () +else + as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } ;; -esac + } fi # as_fn_arith @@ -419,9 +410,9 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - printf "%s\n" "$as_me: error: $2" >&2 + $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -448,7 +439,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X/"$0" | +$as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -481,8 +472,6 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits /[$]LINENO/= ' <$as_myself | sed ' - t clear - :clear s/[$]LINENO.*/&-/ t lineno b @@ -494,7 +483,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall @@ -508,10 +497,6 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits exit } - -# Determine whether it's possible to make 'echo' print without a newline. -# These variables are no longer used directly by Autoconf, but are AC_SUBSTed -# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -525,12 +510,6 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac -# For backward compatibility with old third-party macros, we provide -# the shell variables $as_echo and $as_echo_n. New code should use -# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. -as_echo='printf %s\n' -as_echo_n='printf %s' - rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -542,9 +521,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. - # In both cases, we have to default to 'cp -pR'. + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -569,12 +548,10 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. -as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -as_tr_sh="eval sed '$as_sed_sh'" # deprecated +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 /dev/null && - as_fn_error $? "invalid feature name: '$ac_useropt'" + as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -924,9 +909,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: '$ac_useropt'" + as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1079,15 +1064,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1137,9 +1113,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: '$ac_useropt'" + as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1153,9 +1129,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: '$ac_useropt'" + as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1183,8 +1159,8 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) as_fn_error $? "unrecognized option: '$ac_option' -Try '$0 --help' for more information" + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" ;; *=*) @@ -1192,16 +1168,16 @@ Try '$0 --help' for more information" # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: '$ac_envvar'" ;; + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. - printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; @@ -1217,7 +1193,7 @@ if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1225,7 +1201,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1242,7 +1218,7 @@ do as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done -# There might be people who depend on the old broken behavior: '$host' +# There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias @@ -1281,7 +1257,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_myself" | +$as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1310,7 +1286,7 @@ if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi -ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` @@ -1338,7 +1314,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures PLUMED 2 to adapt to many kinds of systems. +\`configure' configures PLUMED 2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1352,11 +1328,11 @@ Configuration: --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print 'checking ...' messages + -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for '--cache-file=config.cache' + -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or '..'] + --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @@ -1364,10 +1340,10 @@ Installation directories: --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] -By default, 'make install' will install all the files in -'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify -an installation prefix other than '$ac_default_prefix' using '--prefix', -for instance '--prefix=\$HOME'. +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. For better control, use the options below. @@ -1378,7 +1354,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1506,8 +1481,9 @@ Some influential environment variables: CFLAGS C compiler flags FC Fortran compiler command FCFLAGS Fortran compiler flags + CXXCPP C++ preprocessor -Use these variables to override the choices made by 'configure' or to help +Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. @@ -1526,9 +1502,9 @@ if test "$ac_init_help" = "recursive"; then case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1556,8 +1532,7 @@ esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } - # Check for configure.gnu first; this name is used for a wrapper for - # Metaconfig's "Configure" on case-insensitive file systems. + # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive @@ -1565,7 +1540,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1575,9 +1550,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF PLUMED configure 2 -generated by GNU Autoconf 2.72 +generated by GNU Autoconf 2.69 -Copyright (C) 2023 Free Software Foundation, Inc. +Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1594,14 +1569,14 @@ fi ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam + rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1609,19 +1584,17 @@ printf "%s\n" "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext -then : + } && test -s conftest.$ac_objext; then : ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 +else + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 ;; -esac + ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval @@ -1634,14 +1607,14 @@ fi ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam + rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1649,19 +1622,17 @@ printf "%s\n" "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext -then : + } && test -s conftest.$ac_objext; then : ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 +else + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 ;; -esac + ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval @@ -1674,14 +1645,14 @@ fi ac_fn_fc_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam + rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1689,19 +1660,17 @@ printf "%s\n" "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_fc_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext -then : + } && test -s conftest.$ac_objext; then : ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 +else + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 ;; -esac + ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval @@ -1714,14 +1683,14 @@ fi ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1729,22 +1698,20 @@ printf "%s\n" "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - } -then : + }; then : ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 +else + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 ;; -esac + ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would @@ -1762,14 +1729,14 @@ fi ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1777,22 +1744,20 @@ printf "%s\n" "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - } -then : + }; then : ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 +else + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 ;; -esac + ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would @@ -1806,8 +1771,8 @@ fi # ac_fn_cxx_try_run LINENO # ------------------------ -# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that -# executables *can* be run. +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. ac_fn_cxx_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack @@ -1817,30 +1782,28 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; } -then : + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: program exited with status $ac_status" >&5 - printf "%s\n" "$as_me: failed program was:" >&5 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=$ac_status ;; -esac + ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno @@ -1848,6 +1811,130 @@ fi } # ac_fn_cxx_try_run +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES +# --------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_cxx_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_cxx_check_header_mongrel + # ac_fn_cxx_check_header_compile LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in @@ -1855,61 +1942,37 @@ fi ac_fn_cxx_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -printf %s "checking for $2... " >&6; } -if eval test \${$3+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : eval "$3=yes" -else case e in #( - e) eval "$3=no" ;; -esac +else + eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_compile -ac_configure_args_raw= -for ac_arg -do - case $ac_arg in - *\'*) - ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append ac_configure_args_raw " '$ac_arg'" -done - -case $ac_configure_args_raw in - *$as_nl*) - ac_safe_unquote= ;; - *) - ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. - ac_unsafe_a="$ac_unsafe_z#~" - ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" - ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; -esac - cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by PLUMED $as_me 2, which was -generated by GNU Autoconf 2.72. Invocation command line was +generated by GNU Autoconf 2.69. Invocation command line was - $ $0$ac_configure_args_raw + $ $0 $@ _ACEOF exec 5>>config.log @@ -1942,12 +2005,8 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - printf "%s\n" "PATH: $as_dir" + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" done IFS=$as_save_IFS @@ -1982,7 +2041,7 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; @@ -2017,13 +2076,11 @@ done # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? - # Sanitize IFS. - IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo - printf "%s\n" "## ---------------- ## + $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo @@ -2034,8 +2091,8 @@ trap 'exit_status=$? case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -2059,7 +2116,7 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ) echo - printf "%s\n" "## ----------------- ## + $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo @@ -2067,14 +2124,14 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - printf "%s\n" "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - printf "%s\n" "## ------------------- ## + $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo @@ -2082,15 +2139,15 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - printf "%s\n" "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - printf "%s\n" "## ----------- ## + $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo @@ -2098,8 +2155,8 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} echo fi test "$ac_signal" != 0 && - printf "%s\n" "$as_me: caught signal $ac_signal" - printf "%s\n" "$as_me: exit $exit_status" + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && @@ -2113,50 +2170,65 @@ ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h -printf "%s\n" "/* confdefs.h */" > confdefs.h +$as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. -printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF -printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF -printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF -printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF -printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF -printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - ac_site_files="$CONFIG_SITE" + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac elif test "x$prefix" != xNONE; then - ac_site_files="$prefix/share/config.site $prefix/etc/config.site" + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site else - ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site fi - -for ac_site_file in $ac_site_files +for ac_site_file in "$ac_site_file1" "$ac_site_file2" do - case $ac_site_file in #( - */*) : - ;; #( - *) : - ac_site_file=./$ac_site_file ;; -esac - if test -f "$ac_site_file" && test -r "$ac_site_file"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file -See 'config.log' for more details" "$LINENO" 5; } +See \`config.log' for more details" "$LINENO" 5; } fi done @@ -2164,668 +2236,117 @@ if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi -# Test code for whether the C++ compiler supports C++98 (global declarations) -ac_cxx_conftest_cxx98_globals=' -// Does the compiler advertise C++98 conformance? -#if !defined __cplusplus || __cplusplus < 199711L -# error "Compiler does not advertise C++98 conformance" -#endif +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## -// These inclusions are to reject old compilers that -// lack the unsuffixed header files. -#include -#include +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu -// and are *not* freestanding headers in C++98. -extern void assert (int); -namespace std { - extern int strcmp (const char *, const char *); -} -// Namespaces, exceptions, and templates were all added after "C++ 2.0". -using std::exception; -using std::strcmp; -namespace { +################################################################## +# In order to add m4 macros, put then in a m4 directory and include them here. +# E.g.: +# m4_include([./m4/m4_ax_openmp.m4]) -void test_exception_syntax() -{ - try { - throw "test"; - } catch (const char *s) { - // Extra parentheses suppress a warning when building autoconf itself, - // due to lint rules shared with more typical C programs. - assert (!(strcmp) (s, "test")); - } -} +################################################################## +# Here we define a few useful macros -template struct test_template -{ - T const val; - explicit test_template(T t) : val(t) {} - template T add(U u) { return static_cast(u) + val; } -}; +# PLUMED_CONFIG_ENABLE(variablename,optionname,doc,default) +# notice that variablename and optionname are likely identical, +# they just need to be different with optionname contains a "-" +# (not allowed in shell variable names) -} // anonymous namespace -' -# Test code for whether the C++ compiler supports C++98 (body of main) -ac_cxx_conftest_cxx98_main=' - assert (argc); - assert (! argv[0]); -{ - test_exception_syntax (); - test_template tt (2.0); - assert (tt.add (4) == 6.0); - assert (true && !false); -} -' +# PLUMED_CHECK_CXXFLAG(flag) +# use it to check if a flag is available on this compiler -# Test code for whether the C++ compiler supports C++11 (global declarations) -ac_cxx_conftest_cxx11_globals=' -// Does the compiler advertise C++ 2011 conformance? -#if !defined __cplusplus || __cplusplus < 201103L -# error "Compiler does not advertise C++11 conformance" -#endif -namespace cxx11test -{ - constexpr int get_val() { return 20; } +# PLUMED_CHECK_CFLAG(flag) +# use it to check if a flag is available on this compiler - struct testinit - { - int i; - double d; - }; - class delegate - { - public: - delegate(int n) : n(n) {} - delegate(): delegate(2354) {} +# PLUMED_CHECK_LDFLAGS(flag) +# use it to check if a flag is available on this compiler - virtual int getval() { return this->n; }; - protected: - int n; - }; - class overridden : public delegate - { - public: - overridden(int n): delegate(n) {} - virtual int getval() override final { return this->n * 2; } - }; - - class nocopy - { - public: - nocopy(int i): i(i) {} - nocopy() = default; - nocopy(const nocopy&) = delete; - nocopy & operator=(const nocopy&) = delete; - private: - int i; - }; - - // for testing lambda expressions - template Ret eval(Fn f, Ret v) - { - return f(v); - } - - // for testing variadic templates and trailing return types - template auto sum(V first) -> V - { - return first; - } - template auto sum(V first, Args... rest) -> V - { - return first + sum(rest...); - } -} -' - -# Test code for whether the C++ compiler supports C++11 (body of main) -ac_cxx_conftest_cxx11_main=' -{ - // Test auto and decltype - auto a1 = 6538; - auto a2 = 48573953.4; - auto a3 = "String literal"; - - int total = 0; - for (auto i = a3; *i; ++i) { total += *i; } - - decltype(a2) a4 = 34895.034; -} -{ - // Test constexpr - short sa[cxx11test::get_val()] = { 0 }; -} -{ - // Test initializer lists - cxx11test::testinit il = { 4323, 435234.23544 }; -} -{ - // Test range-based for - int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, - 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; - for (auto &x : array) { x += 23; } -} -{ - // Test lambda expressions - using cxx11test::eval; - assert (eval ([](int x) { return x*2; }, 21) == 42); - double d = 2.0; - assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); - assert (d == 5.0); - assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); - assert (d == 5.0); -} -{ - // Test use of variadic templates - using cxx11test::sum; - auto a = sum(1); - auto b = sum(1, 2); - auto c = sum(1.0, 2.0, 3.0); -} -{ - // Test constructor delegation - cxx11test::delegate d1; - cxx11test::delegate d2(); - cxx11test::delegate d3(45); -} -{ - // Test override and final - cxx11test::overridden o1(55464); -} -{ - // Test nullptr - char *c = nullptr; -} -{ - // Test template brackets - test_template<::test_template> v(test_template(12)); -} -{ - // Unicode literals - char const *utf8 = u8"UTF-8 string \u2500"; - char16_t const *utf16 = u"UTF-8 string \u2500"; - char32_t const *utf32 = U"UTF-32 string \u2500"; -} -' - -# Test code for whether the C compiler supports C++11 (complete). -ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} -${ac_cxx_conftest_cxx11_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_cxx_conftest_cxx98_main} - ${ac_cxx_conftest_cxx11_main} - return ok; -} -" - -# Test code for whether the C compiler supports C++98 (complete). -ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_cxx_conftest_cxx98_main} - return ok; -} -" - -# Test code for whether the C compiler supports C89 (global declarations) -ac_c_conftest_c89_globals=' -/* Does the compiler advertise C89 conformance? - Do not test the value of __STDC__, because some compilers set it to 0 - while being otherwise adequately conformant. */ -#if !defined __STDC__ -# error "Compiler does not advertise C89 conformance" -#endif - -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ -struct buf { int x; }; -struct buf * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (char **p, int i) -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* C89 style stringification. */ -#define noexpand_stringify(a) #a -const char *stringified = noexpand_stringify(arbitrary+token=sequence); - -/* C89 style token pasting. Exercises some of the corner cases that - e.g. old MSVC gets wrong, but not very hard. */ -#define noexpand_concat(a,b) a##b -#define expand_concat(a,b) noexpand_concat(a,b) -extern int vA; -extern int vbee; -#define aye A -#define bee B -int *pvA = &expand_concat(v,aye); -int *pvbee = &noexpand_concat(v,bee); - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not \xHH hex character constants. - These do not provoke an error unfortunately, instead are silently treated - as an "x". The following induces an error, until -std is added to get - proper ANSI mode. Curiously \x00 != x always comes out true, for an - array size at least. It is necessary to write \x00 == 0 to get something - that is true only with -std. */ -int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) '\''x'\'' -int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), - int, int);' - -# Test code for whether the C compiler supports C89 (body of main). -ac_c_conftest_c89_main=' -ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); -' - -# Test code for whether the C compiler supports C99 (global declarations) -ac_c_conftest_c99_globals=' -/* Does the compiler advertise C99 conformance? */ -#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L -# error "Compiler does not advertise C99 conformance" -#endif - -// See if C++-style comments work. - -#include -extern int puts (const char *); -extern int printf (const char *, ...); -extern int dprintf (int, const char *, ...); -extern void *malloc (size_t); -extern void free (void *); - -// Check varargs macros. These examples are taken from C99 6.10.3.5. -// dprintf is used instead of fprintf to avoid needing to declare -// FILE and stderr. -#define debug(...) dprintf (2, __VA_ARGS__) -#define showlist(...) puts (#__VA_ARGS__) -#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) -static void -test_varargs_macros (void) -{ - int x = 1234; - int y = 5678; - debug ("Flag"); - debug ("X = %d\n", x); - showlist (The first, second, and third items.); - report (x>y, "x is %d but y is %d", x, y); -} - -// Check long long types. -#define BIG64 18446744073709551615ull -#define BIG32 4294967295ul -#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) -#if !BIG_OK - #error "your preprocessor is broken" -#endif -#if BIG_OK -#else - #error "your preprocessor is broken" -#endif -static long long int bignum = -9223372036854775807LL; -static unsigned long long int ubignum = BIG64; - -struct incomplete_array -{ - int datasize; - double data[]; -}; - -struct named_init { - int number; - const wchar_t *name; - double average; -}; - -typedef const char *ccp; - -static inline int -test_restrict (ccp restrict text) -{ - // Iterate through items via the restricted pointer. - // Also check for declarations in for loops. - for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) - continue; - return 0; -} - -// Check varargs and va_copy. -static bool -test_varargs (const char *format, ...) -{ - va_list args; - va_start (args, format); - va_list args_copy; - va_copy (args_copy, args); - - const char *str = ""; - int number = 0; - float fnumber = 0; - - while (*format) - { - switch (*format++) - { - case '\''s'\'': // string - str = va_arg (args_copy, const char *); - break; - case '\''d'\'': // int - number = va_arg (args_copy, int); - break; - case '\''f'\'': // float - fnumber = va_arg (args_copy, double); - break; - default: - break; - } - } - va_end (args_copy); - va_end (args); - - return *str && number && fnumber; -} -' - -# Test code for whether the C compiler supports C99 (body of main). -ac_c_conftest_c99_main=' - // Check bool. - _Bool success = false; - success |= (argc != 0); - - // Check restrict. - if (test_restrict ("String literal") == 0) - success = true; - char *restrict newvar = "Another string"; - - // Check varargs. - success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); - test_varargs_macros (); - - // Check flexible array members. - struct incomplete_array *ia = - malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); - ia->datasize = 10; - for (int i = 0; i < ia->datasize; ++i) - ia->data[i] = i * 1.234; - // Work around memory leak warnings. - free (ia); - - // Check named initializers. - struct named_init ni = { - .number = 34, - .name = L"Test wide string", - .average = 543.34343, - }; - - ni.number = 58; - - int dynamic_array[ni.number]; - dynamic_array[0] = argv[0][0]; - dynamic_array[ni.number - 1] = 543; - - // work around unused variable warnings - ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' - || dynamic_array[ni.number - 1] != 543); -' - -# Test code for whether the C compiler supports C11 (global declarations) -ac_c_conftest_c11_globals=' -/* Does the compiler advertise C11 conformance? */ -#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L -# error "Compiler does not advertise C11 conformance" -#endif - -// Check _Alignas. -char _Alignas (double) aligned_as_double; -char _Alignas (0) no_special_alignment; -extern char aligned_as_int; -char _Alignas (0) _Alignas (int) aligned_as_int; - -// Check _Alignof. -enum -{ - int_alignment = _Alignof (int), - int_array_alignment = _Alignof (int[100]), - char_alignment = _Alignof (char) -}; -_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); - -// Check _Noreturn. -int _Noreturn does_not_return (void) { for (;;) continue; } - -// Check _Static_assert. -struct test_static_assert -{ - int x; - _Static_assert (sizeof (int) <= sizeof (long int), - "_Static_assert does not work in struct"); - long int y; -}; - -// Check UTF-8 literals. -#define u8 syntax error! -char const utf8_literal[] = u8"happens to be ASCII" "another string"; - -// Check duplicate typedefs. -typedef long *long_ptr; -typedef long int *long_ptr; -typedef long_ptr long_ptr; - -// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. -struct anonymous -{ - union { - struct { int i; int j; }; - struct { int k; long int l; } w; - }; - int m; -} v1; -' - -# Test code for whether the C compiler supports C11 (body of main). -ac_c_conftest_c11_main=' - _Static_assert ((offsetof (struct anonymous, i) - == offsetof (struct anonymous, w.k)), - "Anonymous union alignment botch"); - v1.i = 2; - v1.w.k = 5; - ok |= v1.i != 5; -' - -# Test code for whether the C compiler supports C11 (complete). -ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} -${ac_c_conftest_c99_globals} -${ac_c_conftest_c11_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - ${ac_c_conftest_c99_main} - ${ac_c_conftest_c11_main} - return ok; -} -" - -# Test code for whether the C compiler supports C99 (complete). -ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} -${ac_c_conftest_c99_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - ${ac_c_conftest_c99_main} - return ok; -} -" - -# Test code for whether the C compiler supports C89 (complete). -ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - return ok; -} -" - -as_fn_append ac_header_cxx_list " stdio.h stdio_h HAVE_STDIO_H" -as_fn_append ac_header_cxx_list " stdlib.h stdlib_h HAVE_STDLIB_H" -as_fn_append ac_header_cxx_list " string.h string_h HAVE_STRING_H" -as_fn_append ac_header_cxx_list " inttypes.h inttypes_h HAVE_INTTYPES_H" -as_fn_append ac_header_cxx_list " stdint.h stdint_h HAVE_STDINT_H" -as_fn_append ac_header_cxx_list " strings.h strings_h HAVE_STRINGS_H" -as_fn_append ac_header_cxx_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" -as_fn_append ac_header_cxx_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" -as_fn_append ac_header_cxx_list " unistd.h unistd_h HAVE_UNISTD_H" -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 -printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 -printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 -printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 -printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 -printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 -printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' - and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -################################################################## -# In order to add m4 macros, put then in a m4 directory and include them here. -# E.g.: -# m4_include([./m4/m4_ax_openmp.m4]) - -################################################################## -# Here we define a few useful macros - -# PLUMED_CONFIG_ENABLE(variablename,optionname,doc,default) -# notice that variablename and optionname are likely identical, -# they just need to be different with optionname contains a "-" -# (not allowed in shell variable names) - - -# PLUMED_CHECK_CXXFLAG(flag) -# use it to check if a flag is available on this compiler - - -# PLUMED_CHECK_CFLAG(flag) -# use it to check if a flag is available on this compiler - - -# PLUMED_CHECK_LDFLAGS(flag) -# use it to check if a flag is available on this compiler - - -# PLUMED_SEARCH_LIBS(function,search-libs[,action-if-found][,action-if-not-found][,other-libraries]) -# same as AC_SEARCH_LIBS, but does not try any library unless $libsearch=true -# Should be used instead of AC_SEARCH_LIBS in order to make --disable-libsearch work correctly +# PLUMED_SEARCH_LIBS(function,search-libs[,action-if-found][,action-if-not-found][,other-libraries]) +# same as AC_SEARCH_LIBS, but does not try any library unless $libsearch=true +# Should be used instead of AC_SEARCH_LIBS in order to make --disable-libsearch work correctly # PLUMED_CHECK_PACKAGE(header,function,define[,library]) @@ -2844,13 +2365,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu ################################################################## -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Optional modules are disabled by default" >&5 -printf "%s\n" "$as_me: Optional modules are disabled by default" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: Optional modules are disabled by default" >&5 +$as_echo "$as_me: Optional modules are disabled by default" >&6;} rm -f src/*.on src/*.off # Check whether --enable-modules was given. -if test ${enable_modules+y} -then : +if test "${enable_modules+set}" = set; then : enableval=$enable_modules; rm -f src/*.on src/*.off if test "${enableval}" = yes ; then @@ -2863,18 +2383,18 @@ then : do case "$modules_mod" in (none) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling all optional modules" >&5 -printf "%s\n" "$as_me: Disabling all optional modules" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling all optional modules" >&5 +$as_echo "$as_me: Disabling all optional modules" >&6;} rm -f src/*.off src/*.on touch $(grep default-on src/*/module.type | sed "s|/module.type:.*|.off|") ;; (all) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling all optional modules" >&5 -printf "%s\n" "$as_me: Enabling all optional modules" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling all optional modules" >&5 +$as_echo "$as_me: Enabling all optional modules" >&6;} rm -f src/*.off src/*.off touch $(grep default-off src/*/module.type | sed "s|/module.type:.*|.on|") ;; (reset) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Resetting modules to default" >&5 -printf "%s\n" "$as_me: Resetting modules to default" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Resetting modules to default" >&5 +$as_echo "$as_me: Resetting modules to default" >&6;} rm -f src/*.on src/*.off ;; (-*) modules_mod=`echo "${modules_mod}" | sed "s|-||"` @@ -2884,8 +2404,8 @@ printf "%s\n" "$as_me: Resetting modules to default" >&6;} if grep -q always src/$modules_mod/module.type ; then as_fn_error $? "trying to remove module $modules_mod which is always enabled" "$LINENO" 5 fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling module ${modules_mod}" >&5 -printf "%s\n" "$as_me: Disabling module ${modules_mod}" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling module ${modules_mod}" >&5 +$as_echo "$as_me: Disabling module ${modules_mod}" >&6;} rm -f src/$modules_mod.on touch src/$modules_mod.off ;; (+*) @@ -2893,16 +2413,16 @@ printf "%s\n" "$as_me: Disabling module ${modules_mod}" >&6;} if test ! -f src/$modules_mod/module.type ; then as_fn_error $? "trying to add module $modules_mod which does not exist" "$LINENO" 5 fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling module ${modules_mod}" >&5 -printf "%s\n" "$as_me: Enabling module ${modules_mod}" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling module ${modules_mod}" >&5 +$as_echo "$as_me: Enabling module ${modules_mod}" >&6;} rm -f src/$modules_mod.off touch src/$modules_mod.on ;; (*) if test ! -f src/$modules_mod/module.type ; then as_fn_error $? "trying to add module $modules_mod which does not exist" "$LINENO" 5 fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling module ${modules_mod}" >&5 -printf "%s\n" "$as_me: Enabling module ${modules_mod}" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling module ${modules_mod}" >&5 +$as_echo "$as_me: Enabling module ${modules_mod}" >&6;} rm -f src/$modules_mod.off touch src/$modules_mod.on ;; esac @@ -2921,20 +2441,18 @@ fi libsearch= # Check whether --enable-libsearch was given. -if test ${enable_libsearch+y} -then : +if test "${enable_libsearch+set}" = set; then : enableval=$enable_libsearch; case "${enableval}" in (yes) libsearch=true ;; (no) libsearch=false ;; (*) as_fn_error $? "wrong argument to --enable-libsearch" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) libsearch=true ;; (no) libsearch=false ;; esac - ;; -esac + fi @@ -2945,20 +2463,18 @@ fi static_patch= # Check whether --enable-static-patch was given. -if test ${enable_static_patch+y} -then : +if test "${enable_static_patch+set}" = set; then : enableval=$enable_static_patch; case "${enableval}" in (yes) static_patch=true ;; (no) static_patch=false ;; (*) as_fn_error $? "wrong argument to --enable-static-patch" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) static_patch=true ;; (no) static_patch=false ;; esac - ;; -esac + fi @@ -2966,86 +2482,77 @@ fi doc= # Check whether --enable-doc was given. -if test ${enable_doc+y} -then : +if test "${enable_doc+set}" = set; then : enableval=$enable_doc; case "${enableval}" in (yes) doc=true ;; (no) doc=false ;; (*) as_fn_error $? "wrong argument to --enable-doc" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) doc=true ;; (no) doc=false ;; esac - ;; -esac + fi pdfdoc= # Check whether --enable-pdfdoc was given. -if test ${enable_pdfdoc+y} -then : +if test "${enable_pdfdoc+set}" = set; then : enableval=$enable_pdfdoc; case "${enableval}" in (yes) pdfdoc=true ;; (no) pdfdoc=false ;; (*) as_fn_error $? "wrong argument to --enable-pdfdoc" "$LINENO" 5 ;; esac -else case e in #( - e) case "no" in +else + case "no" in (yes) pdfdoc=true ;; (no) pdfdoc=false ;; esac - ;; -esac + fi debug= # Check whether --enable-debug was given. -if test ${enable_debug+y} -then : +if test "${enable_debug+set}" = set; then : enableval=$enable_debug; case "${enableval}" in (yes) debug=true ;; (no) debug=false ;; (*) as_fn_error $? "wrong argument to --enable-debug" "$LINENO" 5 ;; esac -else case e in #( - e) case "no" in +else + case "no" in (yes) debug=true ;; (no) debug=false ;; esac - ;; -esac + fi gcov= # Check whether --enable-gcov was given. -if test ${enable_gcov+y} -then : +if test "${enable_gcov+set}" = set; then : enableval=$enable_gcov; case "${enableval}" in (yes) gcov=true ;; (no) gcov=false ;; (*) as_fn_error $? "wrong argument to --enable-gcov" "$LINENO" 5 ;; esac -else case e in #( - e) case "no" in +else + case "no" in (yes) gcov=true ;; (no) gcov=false ;; esac - ;; -esac + fi # Check whether --enable-cxx was given. -if test ${enable_cxx+y} -then : +if test "${enable_cxx+set}" = set; then : enableval=$enable_cxx; case "${enableval}" in (11) cxx_level=17 ;; @@ -3056,754 +2563,679 @@ then : (none) cxx_level="" ;; (*) as_fn_error $? "cxx level not supported" "$LINENO" 5 esac - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Selected C++ level: $cxx_level" >&5 -printf "%s\n" "$as_me: Selected C++ level: $cxx_level" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Selected C++ level: $cxx_level" >&5 +$as_echo "$as_me: Selected C++ level: $cxx_level" >&6;} + +else -else case e in #( - e) cxx_level="17" - ;; -esac + fi basic_warnings= # Check whether --enable-basic-warnings was given. -if test ${enable_basic_warnings+y} -then : +if test "${enable_basic_warnings+set}" = set; then : enableval=$enable_basic_warnings; case "${enableval}" in (yes) basic_warnings=true ;; (no) basic_warnings=false ;; (*) as_fn_error $? "wrong argument to --enable-basic-warnings" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) basic_warnings=true ;; (no) basic_warnings=false ;; esac - ;; -esac + fi fussy= # Check whether --enable-fussy was given. -if test ${enable_fussy+y} -then : +if test "${enable_fussy+set}" = set; then : enableval=$enable_fussy; case "${enableval}" in (yes) fussy=true ;; (no) fussy=false ;; (*) as_fn_error $? "wrong argument to --enable-fussy" "$LINENO" 5 ;; esac -else case e in #( - e) case "no" in +else + case "no" in (yes) fussy=true ;; (no) fussy=false ;; esac - ;; -esac + fi debug_glibcxx= # Check whether --enable-debug-glibcxx was given. -if test ${enable_debug_glibcxx+y} -then : +if test "${enable_debug_glibcxx+set}" = set; then : enableval=$enable_debug_glibcxx; case "${enableval}" in (yes) debug_glibcxx=true ;; (no) debug_glibcxx=false ;; (*) as_fn_error $? "wrong argument to --enable-debug-glibcxx" "$LINENO" 5 ;; esac -else case e in #( - e) case "no" in +else + case "no" in (yes) debug_glibcxx=true ;; (no) debug_glibcxx=false ;; esac - ;; -esac + fi shared= # Check whether --enable-shared was given. -if test ${enable_shared+y} -then : +if test "${enable_shared+set}" = set; then : enableval=$enable_shared; case "${enableval}" in (yes) shared=true ;; (no) shared=false ;; (*) as_fn_error $? "wrong argument to --enable-shared" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) shared=true ;; (no) shared=false ;; esac - ;; -esac + fi dependency_tracking= # Check whether --enable-dependency-tracking was given. -if test ${enable_dependency_tracking+y} -then : +if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; case "${enableval}" in (yes) dependency_tracking=true ;; (no) dependency_tracking=false ;; (*) as_fn_error $? "wrong argument to --enable-dependency-tracking" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) dependency_tracking=true ;; (no) dependency_tracking=false ;; esac - ;; -esac + fi no_gnu_unique= # Check whether --enable-no-gnu-unique was given. -if test ${enable_no_gnu_unique+y} -then : +if test "${enable_no_gnu_unique+set}" = set; then : enableval=$enable_no_gnu_unique; case "${enableval}" in (yes) no_gnu_unique=true ;; (no) no_gnu_unique=false ;; (*) as_fn_error $? "wrong argument to --enable-no-gnu-unique" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) no_gnu_unique=true ;; (no) no_gnu_unique=false ;; esac - ;; -esac + fi rpath= # Check whether --enable-rpath was given. -if test ${enable_rpath+y} -then : +if test "${enable_rpath+set}" = set; then : enableval=$enable_rpath; case "${enableval}" in (yes) rpath=true ;; (no) rpath=false ;; (*) as_fn_error $? "wrong argument to --enable-rpath" "$LINENO" 5 ;; esac -else case e in #( - e) case "no" in +else + case "no" in (yes) rpath=true ;; (no) rpath=false ;; esac - ;; -esac + fi absolute_soname= # Check whether --enable-absolute-soname was given. -if test ${enable_absolute_soname+y} -then : +if test "${enable_absolute_soname+set}" = set; then : enableval=$enable_absolute_soname; case "${enableval}" in (yes) absolute_soname=true ;; (no) absolute_soname=false ;; (*) as_fn_error $? "wrong argument to --enable-absolute-soname" "$LINENO" 5 ;; esac -else case e in #( - e) case "no" in +else + case "no" in (yes) absolute_soname=true ;; (no) absolute_soname=false ;; esac - ;; -esac + fi absolute_install_name= # Check whether --enable-absolute-install-name was given. -if test ${enable_absolute_install_name+y} -then : +if test "${enable_absolute_install_name+set}" = set; then : enableval=$enable_absolute_install_name; case "${enableval}" in (yes) absolute_install_name=true ;; (no) absolute_install_name=false ;; (*) as_fn_error $? "wrong argument to --enable-absolute-install-name" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) absolute_install_name=true ;; (no) absolute_install_name=false ;; esac - ;; -esac + fi loader_path= # Check whether --enable-loader-path was given. -if test ${enable_loader_path+y} -then : +if test "${enable_loader_path+set}" = set; then : enableval=$enable_loader_path; case "${enableval}" in (yes) loader_path=true ;; (no) loader_path=false ;; (*) as_fn_error $? "wrong argument to --enable-loader-path" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) loader_path=true ;; (no) loader_path=false ;; esac - ;; -esac + fi bsymbolic= # Check whether --enable-bsymbolic was given. -if test ${enable_bsymbolic+y} -then : +if test "${enable_bsymbolic+set}" = set; then : enableval=$enable_bsymbolic; case "${enableval}" in (yes) bsymbolic=true ;; (no) bsymbolic=false ;; (*) as_fn_error $? "wrong argument to --enable-bsymbolic" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) bsymbolic=true ;; (no) bsymbolic=false ;; esac - ;; -esac + fi ld_r= # Check whether --enable-ld-r was given. -if test ${enable_ld_r+y} -then : +if test "${enable_ld_r+set}" = set; then : enableval=$enable_ld_r; case "${enableval}" in (yes) ld_r=true ;; (no) ld_r=false ;; (*) as_fn_error $? "wrong argument to --enable-ld-r" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) ld_r=true ;; (no) ld_r=false ;; esac - ;; -esac + fi ar_cr= # Check whether --enable-ar-cr was given. -if test ${enable_ar_cr+y} -then : +if test "${enable_ar_cr+set}" = set; then : enableval=$enable_ar_cr; case "${enableval}" in (yes) ar_cr=true ;; (no) ar_cr=false ;; (*) as_fn_error $? "wrong argument to --enable-ar-cr" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) ar_cr=true ;; (no) ar_cr=false ;; esac - ;; -esac + fi static_archive= # Check whether --enable-static-archive was given. -if test ${enable_static_archive+y} -then : +if test "${enable_static_archive+set}" = set; then : enableval=$enable_static_archive; case "${enableval}" in (yes) static_archive=true ;; (no) static_archive=false ;; (*) as_fn_error $? "wrong argument to --enable-static-archive" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) static_archive=true ;; (no) static_archive=false ;; esac - ;; -esac + fi asmjit= # Check whether --enable-asmjit was given. -if test ${enable_asmjit+y} -then : +if test "${enable_asmjit+set}" = set; then : enableval=$enable_asmjit; case "${enableval}" in (yes) asmjit=true ;; (no) asmjit=false ;; (*) as_fn_error $? "wrong argument to --enable-asmjit" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) asmjit=true ;; (no) asmjit=false ;; esac - ;; -esac + fi mpi= # Check whether --enable-mpi was given. -if test ${enable_mpi+y} -then : +if test "${enable_mpi+set}" = set; then : enableval=$enable_mpi; case "${enableval}" in (yes) mpi=true ;; (no) mpi=false ;; (*) as_fn_error $? "wrong argument to --enable-mpi" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) mpi=true ;; (no) mpi=false ;; esac - ;; -esac + fi external_lapack= # Check whether --enable-external-lapack was given. -if test ${enable_external_lapack+y} -then : +if test "${enable_external_lapack+set}" = set; then : enableval=$enable_external_lapack; case "${enableval}" in (yes) external_lapack=true ;; (no) external_lapack=false ;; (*) as_fn_error $? "wrong argument to --enable-external-lapack" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) external_lapack=true ;; (no) external_lapack=false ;; esac - ;; -esac + fi external_blas= # Check whether --enable-external-blas was given. -if test ${enable_external_blas+y} -then : +if test "${enable_external_blas+set}" = set; then : enableval=$enable_external_blas; case "${enableval}" in (yes) external_blas=true ;; (no) external_blas=false ;; (*) as_fn_error $? "wrong argument to --enable-external-blas" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) external_blas=true ;; (no) external_blas=false ;; esac - ;; -esac + fi molfile_plugins= # Check whether --enable-molfile-plugins was given. -if test ${enable_molfile_plugins+y} -then : +if test "${enable_molfile_plugins+set}" = set; then : enableval=$enable_molfile_plugins; case "${enableval}" in (yes) molfile_plugins=true ;; (no) molfile_plugins=false ;; (*) as_fn_error $? "wrong argument to --enable-molfile-plugins" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) molfile_plugins=true ;; (no) molfile_plugins=false ;; esac - ;; -esac + fi external_molfile_plugins= # Check whether --enable-external-molfile-plugins was given. -if test ${enable_external_molfile_plugins+y} -then : +if test "${enable_external_molfile_plugins+set}" = set; then : enableval=$enable_external_molfile_plugins; case "${enableval}" in (yes) external_molfile_plugins=true ;; (no) external_molfile_plugins=false ;; (*) as_fn_error $? "wrong argument to --enable-external-molfile-plugins" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) external_molfile_plugins=true ;; (no) external_molfile_plugins=false ;; esac - ;; -esac + fi zlib= # Check whether --enable-zlib was given. -if test ${enable_zlib+y} -then : +if test "${enable_zlib+set}" = set; then : enableval=$enable_zlib; case "${enableval}" in (yes) zlib=true ;; (no) zlib=false ;; (*) as_fn_error $? "wrong argument to --enable-zlib" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) zlib=true ;; (no) zlib=false ;; esac - ;; -esac + fi dlopen= # Check whether --enable-dlopen was given. -if test ${enable_dlopen+y} -then : +if test "${enable_dlopen+set}" = set; then : enableval=$enable_dlopen; case "${enableval}" in (yes) dlopen=true ;; (no) dlopen=false ;; (*) as_fn_error $? "wrong argument to --enable-dlopen" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) dlopen=true ;; (no) dlopen=false ;; esac - ;; -esac + fi dladdr= # Check whether --enable-dladdr was given. -if test ${enable_dladdr+y} -then : +if test "${enable_dladdr+set}" = set; then : enableval=$enable_dladdr; case "${enableval}" in (yes) dladdr=true ;; (no) dladdr=false ;; (*) as_fn_error $? "wrong argument to --enable-dladdr" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) dladdr=true ;; (no) dladdr=false ;; esac - ;; -esac + fi rtld_default= # Check whether --enable-rtld_default was given. -if test ${enable_rtld_default+y} -then : +if test "${enable_rtld_default+set}" = set; then : enableval=$enable_rtld_default; case "${enableval}" in (yes) rtld_default=true ;; (no) rtld_default=false ;; (*) as_fn_error $? "wrong argument to --enable-rtld_default" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) rtld_default=true ;; (no) rtld_default=false ;; esac - ;; -esac + fi subprocess= # Check whether --enable-subprocess was given. -if test ${enable_subprocess+y} -then : +if test "${enable_subprocess+set}" = set; then : enableval=$enable_subprocess; case "${enableval}" in (yes) subprocess=true ;; (no) subprocess=false ;; (*) as_fn_error $? "wrong argument to --enable-subprocess" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) subprocess=true ;; (no) subprocess=false ;; esac - ;; -esac + fi execinfo= # Check whether --enable-execinfo was given. -if test ${enable_execinfo+y} -then : +if test "${enable_execinfo+set}" = set; then : enableval=$enable_execinfo; case "${enableval}" in (yes) execinfo=true ;; (no) execinfo=false ;; (*) as_fn_error $? "wrong argument to --enable-execinfo" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) execinfo=true ;; (no) execinfo=false ;; esac - ;; -esac + fi gsl= # Check whether --enable-gsl was given. -if test ${enable_gsl+y} -then : +if test "${enable_gsl+set}" = set; then : enableval=$enable_gsl; case "${enableval}" in (yes) gsl=true ;; (no) gsl=false ;; (*) as_fn_error $? "wrong argument to --enable-gsl" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) gsl=true ;; (no) gsl=false ;; esac - ;; -esac + fi boost_graph= # Check whether --enable-boost_graph was given. -if test ${enable_boost_graph+y} -then : +if test "${enable_boost_graph+set}" = set; then : enableval=$enable_boost_graph; case "${enableval}" in (yes) boost_graph=true ;; (no) boost_graph=false ;; (*) as_fn_error $? "wrong argument to --enable-boost_graph" "$LINENO" 5 ;; esac -else case e in #( - e) case "no" in +else + case "no" in (yes) boost_graph=true ;; (no) boost_graph=false ;; esac - ;; -esac + fi boost_serialization= # Check whether --enable-boost_serialization was given. -if test ${enable_boost_serialization+y} -then : +if test "${enable_boost_serialization+set}" = set; then : enableval=$enable_boost_serialization; case "${enableval}" in (yes) boost_serialization=true ;; (no) boost_serialization=false ;; (*) as_fn_error $? "wrong argument to --enable-boost_serialization" "$LINENO" 5 ;; esac -else case e in #( - e) case "no" in +else + case "no" in (yes) boost_serialization=true ;; (no) boost_serialization=false ;; esac - ;; -esac + fi fftw= # Check whether --enable-fftw was given. -if test ${enable_fftw+y} -then : +if test "${enable_fftw+set}" = set; then : enableval=$enable_fftw; case "${enableval}" in (yes) fftw=true ;; (no) fftw=false ;; (*) as_fn_error $? "wrong argument to --enable-fftw" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) fftw=true ;; (no) fftw=false ;; esac - ;; -esac + fi python= # Check whether --enable-python was given. -if test ${enable_python+y} -then : +if test "${enable_python+set}" = set; then : enableval=$enable_python; case "${enableval}" in (yes) python=true ;; (no) python=false ;; (*) as_fn_error $? "wrong argument to --enable-python" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) python=true ;; (no) python=false ;; esac - ;; -esac + fi pycv= # Check whether --enable-pycv was given. -if test ${enable_pycv+y} -then : +if test "${enable_pycv+set}" = set; then : enableval=$enable_pycv; case "${enableval}" in (yes) pycv=true ;; (no) pycv=false ;; (*) as_fn_error $? "wrong argument to --enable-pycv" "$LINENO" 5 ;; esac -else case e in #( - e) case "yes" in +else + case "yes" in (yes) pycv=true ;; (no) pycv=false ;; esac - ;; -esac + fi af_ocl= # Check whether --enable-af_ocl was given. -if test ${enable_af_ocl+y} -then : +if test "${enable_af_ocl+set}" = set; then : enableval=$enable_af_ocl; case "${enableval}" in (yes) af_ocl=true ;; (no) af_ocl=false ;; (*) as_fn_error $? "wrong argument to --enable-af_ocl" "$LINENO" 5 ;; esac -else case e in #( - e) case "no" in +else + case "no" in (yes) af_ocl=true ;; (no) af_ocl=false ;; esac - ;; -esac + fi af_cuda= # Check whether --enable-af_cuda was given. -if test ${enable_af_cuda+y} -then : +if test "${enable_af_cuda+set}" = set; then : enableval=$enable_af_cuda; case "${enableval}" in (yes) af_cuda=true ;; (no) af_cuda=false ;; (*) as_fn_error $? "wrong argument to --enable-af_cuda" "$LINENO" 5 ;; esac -else case e in #( - e) case "no" in +else + case "no" in (yes) af_cuda=true ;; (no) af_cuda=false ;; esac - ;; -esac + fi af_cpu= # Check whether --enable-af_cpu was given. -if test ${enable_af_cpu+y} -then : +if test "${enable_af_cpu+set}" = set; then : enableval=$enable_af_cpu; case "${enableval}" in (yes) af_cpu=true ;; (no) af_cpu=false ;; (*) as_fn_error $? "wrong argument to --enable-af_cpu" "$LINENO" 5 ;; esac -else case e in #( - e) case "no" in +else + case "no" in (yes) af_cpu=true ;; (no) af_cpu=false ;; esac - ;; -esac + fi libtorch= # Check whether --enable-libtorch was given. -if test ${enable_libtorch+y} -then : +if test "${enable_libtorch+set}" = set; then : enableval=$enable_libtorch; case "${enableval}" in (yes) libtorch=true ;; (no) libtorch=false ;; (*) as_fn_error $? "wrong argument to --enable-libtorch" "$LINENO" 5 ;; esac -else case e in #( - e) case "no" in +else + case "no" in (yes) libtorch=true ;; (no) libtorch=false ;; esac - ;; -esac + fi #added by luigibonati metatensor= # Check whether --enable-metatensor was given. -if test ${enable_metatensor+y} -then : +if test "${enable_metatensor+set}" = set; then : enableval=$enable_metatensor; case "${enableval}" in (yes) metatensor=true ;; (no) metatensor=false ;; (*) as_fn_error $? "wrong argument to --enable-metatensor" "$LINENO" 5 ;; esac -else case e in #( - e) case "no" in +else + case "no" in (yes) metatensor=true ;; (no) metatensor=false ;; esac - ;; -esac + fi @@ -3841,12 +3273,6 @@ compilers="mpic++ mpicxx mpiicpc openmpic++ openmpicxx $compilers" fi # do the actual search - - - - - - ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -3861,44 +3287,38 @@ if test -z "$CXX"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CXX+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CXX"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi ;; -esac +fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -printf "%s\n" "$CXX" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -3911,44 +3331,38 @@ if test -z "$CXX"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CXX+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CXX"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi ;; -esac +fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -printf "%s\n" "$ac_ct_CXX" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -3960,8 +3374,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX @@ -3971,7 +3385,7 @@ fi fi fi # Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do @@ -3981,7 +3395,7 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -3991,7 +3405,7 @@ printf "%s\n" "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done @@ -3999,7 +3413,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; @@ -4011,9 +3425,9 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 -printf %s "checking whether the C++ compiler works... " >&6; } -ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 +$as_echo_n "checking whether the C++ compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" @@ -4034,14 +3448,13 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : - # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. -# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. @@ -4056,12 +3469,12 @@ do # certainly right. break;; *.* ) - if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an '-o' + # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. @@ -4072,52 +3485,48 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else case e in #( - e) ac_file='' ;; -esac +else + ac_file='' fi -if test -z "$ac_file" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -printf "%s\n" "$as_me: failed program was:" >&5 +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables -See 'config.log' for more details" "$LINENO" 5; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } ;; -esac +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 -printf %s "checking for C++ compiler default output file name... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -printf "%s\n" "$ac_file" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 +$as_echo_n "checking for C++ compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -printf %s "checking for suffix of executables... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : - # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) -# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will -# work properly (i.e., refer to 'conftest.exe'), while it won't with -# 'rm'. + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in @@ -4127,16 +3536,15 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See 'config.log' for more details" "$LINENO" 5; } ;; -esac +See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -printf "%s\n" "$ac_cv_exeext" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext @@ -4145,11 +3553,9 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main (void) +main () { FILE *f = fopen ("conftest.out", "w"); - if (!f) - return 1; return ferror (f) || fclose (f) != 0; ; @@ -4159,8 +3565,8 @@ _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -printf %s "checking whether we are cross compiling... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in @@ -4168,10 +3574,10 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in @@ -4179,41 +3585,39 @@ printf "%s\n" "$ac_try_echo"; } >&5 *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot run C++ compiled programs. -If you meant to cross compile, use '--host'. -See 'config.log' for more details" "$LINENO" 5; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C++ compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } fi fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -printf "%s\n" "$cross_compiling" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } -rm -f conftest.$ac_ext conftest$ac_cv_exeext \ - conftest.o conftest.obj conftest.out +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -printf %s "checking for suffix of object files... " >&6; } -if test ${ac_cv_objext+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; @@ -4227,12 +3631,11 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in @@ -4241,34 +3644,31 @@ then : break;; esac done -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 +else + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile -See 'config.log' for more details" "$LINENO" 5; } ;; -esac +See \`config.log' for more details" "$LINENO" 5; } fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; -esac +rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -printf "%s\n" "$ac_cv_objext" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 -printf %s "checking whether the compiler supports GNU C++... " >&6; } -if test ${ac_cv_cxx_compiler_gnu+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { #ifndef __GNUC__ choke me @@ -4278,36 +3678,30 @@ main (void) return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes -else case e in #( - e) ac_compiler_gnu=no ;; -esac +else + ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi -ac_test_CXXFLAGS=${CXXFLAGS+y} +ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -printf %s "checking whether $CXX accepts -g... " >&6; } -if test ${ac_cv_prog_cxx_g+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_save_cxx_werror_flag=$ac_cxx_werror_flag +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" @@ -4315,63 +3709,57 @@ else case e in #( /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes -else case e in #( - e) CXXFLAGS="" +else + CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : -else case e in #( - e) ac_cxx_werror_flag=$ac_save_cxx_werror_flag +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag ;; -esac +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } -if test $ac_test_CXXFLAGS; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then @@ -4386,121 +3774,12 @@ else CXXFLAGS= fi fi -ac_prog_cxx_stdcxx=no -if test x$ac_prog_cxx_stdcxx = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 -printf %s "checking for $CXX option to enable C++11 features... " >&6; } -if test ${ac_cv_prog_cxx_cxx11+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cxx_cxx11=no -ac_save_CXX=$CXX -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_cxx_conftest_cxx11_program -_ACEOF -for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA -do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_cxx11=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx11" != "xno" && break -done -rm -f conftest.$ac_ext -CXX=$ac_save_CXX ;; -esac -fi - -if test "x$ac_cv_prog_cxx_cxx11" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cxx_cxx11" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } - CXX="$CXX $ac_cv_prog_cxx_cxx11" ;; -esac -fi - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 - ac_prog_cxx_stdcxx=cxx11 ;; -esac -fi -fi -if test x$ac_prog_cxx_stdcxx = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 -printf %s "checking for $CXX option to enable C++98 features... " >&6; } -if test ${ac_cv_prog_cxx_cxx98+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cxx_cxx98=no -ac_save_CXX=$CXX -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_cxx_conftest_cxx98_program -_ACEOF -for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA -do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_cxx98=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx98" != "xno" && break -done -rm -f conftest.$ac_ext -CXX=$ac_save_CXX ;; -esac -fi - -if test "x$ac_cv_prog_cxx_cxx98" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cxx_cxx98" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } - CXX="$CXX $ac_cv_prog_cxx_cxx98" ;; -esac -fi - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 - ac_prog_cxx_stdcxx=cxx98 ;; -esac -fi -fi - ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -4511,44 +3790,38 @@ if test -n "$ac_tool_prefix"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi ;; -esac +fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -4561,44 +3834,38 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CC"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi ;; -esac +fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -4610,8 +3877,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -4619,23 +3886,23 @@ esac fi -test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH -See 'config.log' for more details" "$LINENO" 5; } +See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion -version; do +for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -4645,21 +3912,20 @@ printf "%s\n" "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 -printf %s "checking whether the compiler supports GNU C... " >&6; } -if test ${ac_cv_c_compiler_gnu+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { #ifndef __GNUC__ choke me @@ -4669,36 +3935,30 @@ main (void) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO" -then : +if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes -else case e in #( - e) ac_compiler_gnu=no ;; -esac +else + ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } -ac_compiler_gnu=$ac_cv_c_compiler_gnu +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi -ac_test_CFLAGS=${CFLAGS+y} +ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -printf %s "checking whether $CC accepts -g... " >&6; } -if test ${ac_cv_prog_cc_g+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_save_c_werror_flag=$ac_c_werror_flag +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" @@ -4706,63 +3966,57 @@ else case e in #( /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO" -then : +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes -else case e in #( - e) CFLAGS="" +else + CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO" -then : +if ac_fn_c_try_compile "$LINENO"; then : -else case e in #( - e) ac_c_werror_flag=$ac_save_c_werror_flag +else + ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO" -then : +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag ;; -esac +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -printf "%s\n" "$ac_cv_prog_cc_g" >&6; } -if test $ac_test_CFLAGS; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then @@ -4777,153 +4031,94 @@ else CFLAGS= fi fi -ac_prog_cc_stdc=no -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 -printf %s "checking for $CC option to enable C11 features... " >&6; } -if test ${ac_cv_prog_cc_c11+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cc_c11=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_c_conftest_c11_program -_ACEOF -for ac_arg in '' -std=gnu11 -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c11=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c11" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC ;; -esac -fi +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} -if test "x$ac_cv_prog_cc_c11" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cc_c11" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 -printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } - CC="$CC $ac_cv_prog_cc_c11" ;; -esac -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 - ac_prog_cc_stdc=c11 ;; -esac -fi -fi -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 -printf %s "checking for $CC option to enable C99 features... " >&6; } -if test ${ac_cv_prog_cc_c99+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cc_c99=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c99_program -_ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c99=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c99" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC ;; -esac -fi +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; -if test "x$ac_cv_prog_cc_c99" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cc_c99" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } - CC="$CC $ac_cv_prog_cc_c99" ;; -esac -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 - ac_prog_cc_stdc=c99 ;; -esac -fi -fi -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 -printf %s "checking for $CC option to enable C89 features... " >&6; } -if test ${ac_cv_prog_cc_c89+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c89_program +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : + if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext conftest.beam +rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext -CC=$ac_save_CC ;; -esac -fi +CC=$ac_save_CC -if test "x$ac_cv_prog_cc_c89" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cc_c89" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } - CC="$CC $ac_cv_prog_cc_c89" ;; -esac fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 - ac_prog_cc_stdc=c89 ;; +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac -fi +if test "x$ac_cv_prog_cc_c89" != xno; then : + fi ac_ext=c @@ -4946,44 +4141,38 @@ if test -n "$ac_tool_prefix"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_FC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$FC"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_FC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$FC"; then ac_cv_prog_FC="$FC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_FC="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi ;; -esac +fi fi FC=$ac_cv_prog_FC if test -n "$FC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FC" >&5 -printf "%s\n" "$FC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5 +$as_echo "$FC" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -4996,44 +4185,38 @@ if test -z "$FC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_FC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_FC"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_FC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_FC"; then ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_FC="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi ;; -esac +fi fi ac_ct_FC=$ac_cv_prog_ac_ct_FC if test -n "$ac_ct_FC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5 -printf "%s\n" "$ac_ct_FC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5 +$as_echo "$ac_ct_FC" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5045,8 +4228,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac FC=$ac_ct_FC @@ -5055,7 +4238,7 @@ fi # Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5 +$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do @@ -5065,7 +4248,7 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -5075,22 +4258,21 @@ printf "%s\n" "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done rm -f a.out -# If we don't use '.F' as extension, the preprocessor is not run on the +# If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU Fortran" >&5 -printf %s "checking whether the compiler supports GNU Fortran... " >&6; } -if test ${ac_cv_fc_compiler_gnu+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat > conftest.$ac_ext <<_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran compiler" >&5 +$as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; } +if ${ac_cv_fc_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat > conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me @@ -5098,52 +4280,43 @@ else case e in #( end _ACEOF -if ac_fn_fc_try_compile "$LINENO" -then : +if ac_fn_fc_try_compile "$LINENO"; then : ac_compiler_gnu=yes -else case e in #( - e) ac_compiler_gnu=no ;; -esac +else + ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_fc_compiler_gnu=$ac_compiler_gnu - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_fc_compiler_gnu" >&6; } -ac_compiler_gnu=$ac_cv_fc_compiler_gnu +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5 +$as_echo "$ac_cv_fc_compiler_gnu" >&6; } ac_ext=$ac_save_ext -ac_test_FCFLAGS=${FCFLAGS+y} +ac_test_FCFLAGS=${FCFLAGS+set} ac_save_FCFLAGS=$FCFLAGS FCFLAGS= -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5 -printf %s "checking whether $FC accepts -g... " >&6; } -if test ${ac_cv_prog_fc_g+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) FCFLAGS=-g +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5 +$as_echo_n "checking whether $FC accepts -g... " >&6; } +if ${ac_cv_prog_fc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + FCFLAGS=-g cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF -if ac_fn_fc_try_compile "$LINENO" -then : +if ac_fn_fc_try_compile "$LINENO"; then : ac_cv_prog_fc_g=yes -else case e in #( - e) ac_cv_prog_fc_g=no ;; -esac +else + ac_cv_prog_fc_g=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5 -printf "%s\n" "$ac_cv_prog_fc_g" >&6; } -if test $ac_test_FCFLAGS; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5 +$as_echo "$ac_cv_prog_fc_g" >&6; } +if test "$ac_test_FCFLAGS" = set; then FCFLAGS=$ac_save_FCFLAGS elif test $ac_cv_prog_fc_g = yes; then if test "x$ac_cv_fc_compiler_gnu" = xyes; then @@ -5183,26 +4356,26 @@ if test -z "$LDSHARED" ; then LDSHARED="$CXX" fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial CXX: $CXX" >&5 -printf "%s\n" "$as_me: Initial CXX: $CXX" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial CXXFLAGS: $CXXFLAGS" >&5 -printf "%s\n" "$as_me: Initial CXXFLAGS: $CXXFLAGS" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial CPPFLAGS: $CPPFLAGS" >&5 -printf "%s\n" "$as_me: Initial CPPFLAGS: $CPPFLAGS" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial CFLAGS: $CFLAGS" >&5 -printf "%s\n" "$as_me: Initial CFLAGS: $CFLAGS" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial LDFLAGS: $LDFLAGS" >&5 -printf "%s\n" "$as_me: Initial LDFLAGS: $LDFLAGS" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial LIBS: $LIBS" >&5 -printf "%s\n" "$as_me: Initial LIBS: $LIBS" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial STATIC_LIBS: $STATIC_LIBS" >&5 -printf "%s\n" "$as_me: Initial STATIC_LIBS: $STATIC_LIBS" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial LD: $LD" >&5 -printf "%s\n" "$as_me: Initial LD: $LD" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial LDSHARED: $LDSHARED" >&5 -printf "%s\n" "$as_me: Initial LDSHARED: $LDSHARED" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Initial SOEXT: $SOEXT" >&5 -printf "%s\n" "$as_me: Initial SOEXT: $SOEXT" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial CXX: $CXX" >&5 +$as_echo "$as_me: Initial CXX: $CXX" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial CXXFLAGS: $CXXFLAGS" >&5 +$as_echo "$as_me: Initial CXXFLAGS: $CXXFLAGS" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial CPPFLAGS: $CPPFLAGS" >&5 +$as_echo "$as_me: Initial CPPFLAGS: $CPPFLAGS" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial CFLAGS: $CFLAGS" >&5 +$as_echo "$as_me: Initial CFLAGS: $CFLAGS" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial LDFLAGS: $LDFLAGS" >&5 +$as_echo "$as_me: Initial LDFLAGS: $LDFLAGS" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial LIBS: $LIBS" >&5 +$as_echo "$as_me: Initial LIBS: $LIBS" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial STATIC_LIBS: $STATIC_LIBS" >&5 +$as_echo "$as_me: Initial STATIC_LIBS: $STATIC_LIBS" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial LD: $LD" >&5 +$as_echo "$as_me: Initial LD: $LD" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial LDSHARED: $LDSHARED" >&5 +$as_echo "$as_me: Initial LDSHARED: $LDSHARED" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial SOEXT: $SOEXT" >&5 +$as_echo "$as_me: Initial SOEXT: $SOEXT" >&6;} # check C++ flags if test $shared = true @@ -5211,52 +4384,48 @@ then save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fPIC" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -fPIC" >&5 -printf %s "checking whether $CXX accepts -fPIC... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -fPIC" >&5 +$as_echo_n "checking whether $CXX accepts -fPIC... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -5268,52 +4437,48 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fPIC" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -fPIC" >&5 -printf %s "checking whether $CC accepts -fPIC... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -fPIC" >&5 +$as_echo_n "checking whether $CC accepts -fPIC... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO" -then : +if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CCFLAGS="$save_CCFLAGS" ;; -esac +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CCFLAGS="$save_CCFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CCFLAGS="$save_CCFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CCFLAGS="$save_CCFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -5328,102 +4493,94 @@ then save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wall" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wall" >&5 -printf %s "checking whether $CXX accepts -Wall... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wall" >&5 +$as_echo_n "checking whether $CXX accepts -Wall... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -pedantic" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -pedantic" >&5 -printf %s "checking whether $CXX accepts -pedantic... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -pedantic" >&5 +$as_echo_n "checking whether $CXX accepts -pedantic... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi @@ -5432,52 +4589,48 @@ then save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -std=c++$cxx_level" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -std=c++$cxx_level" >&5 -printf %s "checking whether $CXX accepts -std=c++$cxx_level... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -std=c++$cxx_level" >&5 +$as_echo_n "checking whether $CXX accepts -std=c++$cxx_level... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi @@ -5486,52 +4639,48 @@ then save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -g" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -printf %s "checking whether $CXX accepts -g... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi @@ -5543,29 +4692,27 @@ then save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS --coverage" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether LDFLAGS can contain --coverage" >&5 -printf %s "checking whether LDFLAGS can contain --coverage... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether LDFLAGS can contain --coverage" >&5 +$as_echo_n "checking whether LDFLAGS can contain --coverage... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; LDFLAGS="$save_LDFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; LDFLAGS="$save_LDFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext STATIC_LIBS="$STATIC_LIBS --coverage" @@ -5576,507 +4723,467 @@ then save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wextra" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wextra" >&5 -printf %s "checking whether $CXX accepts -Wextra... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wextra" >&5 +$as_echo_n "checking whether $CXX accepts -Wextra... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wfloat-equal" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wfloat-equal" >&5 -printf %s "checking whether $CXX accepts -Wfloat-equal... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wfloat-equal" >&5 +$as_echo_n "checking whether $CXX accepts -Wfloat-equal... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wwrite-strings" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wwrite-strings" >&5 -printf %s "checking whether $CXX accepts -Wwrite-strings... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wwrite-strings" >&5 +$as_echo_n "checking whether $CXX accepts -Wwrite-strings... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wpointer-arith" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wpointer-arith" >&5 -printf %s "checking whether $CXX accepts -Wpointer-arith... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wpointer-arith" >&5 +$as_echo_n "checking whether $CXX accepts -Wpointer-arith... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wcast-qual" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wcast-qual" >&5 -printf %s "checking whether $CXX accepts -Wcast-qual... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wcast-qual" >&5 +$as_echo_n "checking whether $CXX accepts -Wcast-qual... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wcast-align" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wcast-align" >&5 -printf %s "checking whether $CXX accepts -Wcast-align... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wcast-align" >&5 +$as_echo_n "checking whether $CXX accepts -Wcast-align... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wconversion" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wconversion" >&5 -printf %s "checking whether $CXX accepts -Wconversion... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wconversion" >&5 +$as_echo_n "checking whether $CXX accepts -Wconversion... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wredundant-decls" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wredundant-decls" >&5 -printf %s "checking whether $CXX accepts -Wredundant-decls... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wredundant-decls" >&5 +$as_echo_n "checking whether $CXX accepts -Wredundant-decls... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wvariadic-macros" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wvariadic-macros" >&5 -printf %s "checking whether $CXX accepts -Wvariadic-macros... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wvariadic-macros" >&5 +$as_echo_n "checking whether $CXX accepts -Wvariadic-macros... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wold-style-cast" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wold-style-cast" >&5 -printf %s "checking whether $CXX accepts -Wold-style-cast... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wold-style-cast" >&5 +$as_echo_n "checking whether $CXX accepts -Wold-style-cast... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX declares c++17 support" >&5 -printf %s "checking whether $CXX declares c++17 support... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX declares c++17 support" >&5 +$as_echo_n "checking whether $CXX declares c++17 support... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6085,46 +5192,44 @@ this_compiler_does_not_support_cxx17 #endif int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; }; +if ac_fn_cxx_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; }; support_cxx17=true -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ; - support_cxx17=false ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } ; + support_cxx17=false fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test "$support_cxx17" = false then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: C++17 support is required as of PLUMED 2.10" >&5 -printf "%s\n" "$as_me: WARNING: C++17 support is required as of PLUMED 2.10" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Your compiler appears not to support C++17" >&5 -printf "%s\n" "$as_me: WARNING: Your compiler appears not to support C++17" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please change compiler or make sure that everything works correctly" >&5 -printf "%s\n" "$as_me: WARNING: Please change compiler or make sure that everything works correctly" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C++17 support is required as of PLUMED 2.10" >&5 +$as_echo "$as_me: WARNING: C++17 support is required as of PLUMED 2.10" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your compiler appears not to support C++17" >&5 +$as_echo "$as_me: WARNING: Your compiler appears not to support C++17" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please change compiler or make sure that everything works correctly" >&5 +$as_echo "$as_me: WARNING: Please change compiler or make sure that everything works correctly" >&2;} fi # We assume now that compiler supports C++11 library -printf "%s\n" "#define __PLUMED_WRAPPER_LIBCXX11 1" >>confdefs.h +$as_echo "#define __PLUMED_WRAPPER_LIBCXX11 1" >>confdefs.h if test "$dependency_tracking" = true then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX can generate dependency file with -MM -MF" >&5 -printf %s "checking whether $CXX can generate dependency file with -MM -MF... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX can generate dependency file with -MM -MF" >&5 +$as_echo_n "checking whether $CXX can generate dependency file with -MM -MF... " >&6; } dependency=ko echo "#include \"conftest1.h\"" > conftest.cpp echo "#include \"conftest2.h\"" > conftest1.h @@ -6132,12 +5237,12 @@ printf %s "checking whether $CXX can generate dependency file with -MM -MF... " $CXX $CXXFLAGS -c -MM -MFconftest.d conftest.cpp 1> /dev/null 2> /dev/null grep conftest2 conftest.d 1> /dev/null 2>/dev/null && dependency=ok if test "$dependency" = ok ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } disable_dependency_tracking=no else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } disable_dependency_tracking=yes fi else @@ -6145,11 +5250,11 @@ else fi if test "$disable_dependency_tracking" = yes ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: dependencies tracking disabled - always make clean before make" >&5 -printf "%s\n" "$as_me: WARNING: dependencies tracking disabled - always make clean before make" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dependencies tracking disabled - always make clean before make" >&5 +$as_echo "$as_me: WARNING: dependencies tracking disabled - always make clean before make" >&2;} else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: dependency tracking enabled" >&5 -printf "%s\n" "$as_me: dependency tracking enabled" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: dependency tracking enabled" >&5 +$as_echo "$as_me: dependency tracking enabled" >&6;} fi @@ -6158,59 +5263,55 @@ then save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-gnu-unique" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -fno-gnu-unique" >&5 -printf %s "checking whether $CXX accepts -fno-gnu-unique... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -fno-gnu-unique" >&5 +$as_echo_n "checking whether $CXX accepts -fno-gnu-unique... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi #### Compulsory libraries #### # some of them might be made optional if we find that are not available in some system -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Now we will check compulsory headers and libraries" >&5 -printf "%s\n" "$as_me: Now we will check compulsory headers and libraries" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: Now we will check compulsory headers and libraries" >&5 +$as_echo "$as_me: Now we will check compulsory headers and libraries" >&6;} found=ko @@ -6235,8 +5336,8 @@ printf "%s\n" "$as_me: Now we will check compulsory headers and libraries" >&6;} fi # check without libraries - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem library without extra libs" >&5 -printf %s "checking filesystem library without extra libs... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking filesystem library without extra libs" >&5 +$as_echo_n "checking filesystem library without extra libs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6253,24 +5354,22 @@ int main(){ } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$found" = "ko" ; then if test "$multiple" = "yes" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem library with $all_LIBS" >&5 -printf %s "checking filesystem library with $all_LIBS... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking filesystem library with $all_LIBS" >&5 +$as_echo_n "checking filesystem library with $all_LIBS... " >&6; } LIBS="$all_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6288,24 +5387,22 @@ int main(){ } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext else for testlib in $testlibs do - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem library with -l$testlib" >&5 -printf %s "checking filesystem library with -l$testlib... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking filesystem library with -l$testlib" >&5 +$as_echo_n "checking filesystem library with -l$testlib... " >&6; } LIBS="-l$testlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6323,18 +5420,16 @@ int main(){ } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $found = ok ; then break @@ -6345,12 +5440,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ fi if test $found = ok ; then - printf "%s\n" "#define __PLUMED_CXX17_FILESYSTEM 1" >>confdefs.h + $as_echo "#define __PLUMED_CXX17_FILESYSTEM 1" >>confdefs.h __PLUMED_CXX17_FILESYSTEM=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_CXX17_FILESYSTEM" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_CXX17_FILESYSTEM" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_CXX17_FILESYSTEM" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_CXX17_FILESYSTEM" >&2;} LIBS="$save_LIBS" fi @@ -6369,474 +5464,452 @@ lapack_found= # external lapack can only work with external blas # thus, if external blas are disabled also external lapack should be disabled if test "$external_blas" = false && test "$external_lapack" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Internal blas can only be used with internal lapack" >&5 -printf "%s\n" "$as_me: Internal blas can only be used with internal lapack" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Will not search for external lapack" >&5 -printf "%s\n" "$as_me: Will not search for external lapack" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Internal blas can only be used with internal lapack" >&5 +$as_echo "$as_me: Internal blas can only be used with internal lapack" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Will not search for external lapack" >&5 +$as_echo "$as_me: Will not search for external lapack" >&6;} external_lapack=false fi # first look for blas if test "$external_blas" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether dgemv_ can be linked with no library" >&5 -printf %s "checking whether dgemv_ can be linked with no library... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dgemv_ can be linked with no library" >&5 +$as_echo_n "checking whether dgemv_ can be linked with no library... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int dgemv_ (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dgemv_ (); int -main (void) +main () { -return conftest::dgemv_ (); +return dgemv_ (); ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } blas_found=underscore -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether dgemv_ can be linked with no library" >&5 -printf %s "checking whether dgemv_ can be linked with no library... " >&6; } +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dgemv_ can be linked with no library" >&5 +$as_echo_n "checking whether dgemv_ can be linked with no library... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int dgemv (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dgemv (); int -main (void) +main () { -return conftest::dgemv (); +return dgemv (); ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } blas_found=nounderscore -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv_" >&5 -printf %s "checking for library containing dgemv_... " >&6; } -if test ${ac_cv_search_dgemv_+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv_" >&5 +$as_echo_n "checking for library containing dgemv_... " >&6; } +if ${ac_cv_search_dgemv_+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int dgemv_ (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dgemv_ (); int -main (void) +main () { -return conftest::dgemv_ (); +return dgemv_ (); ; return 0; } _ACEOF -for ac_lib in '' blas -do +for ac_lib in '' blas; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_dgemv_=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_dgemv_+y} -then : + if ${ac_cv_search_dgemv_+:} false; then : break fi done -if test ${ac_cv_search_dgemv_+y} -then : +if ${ac_cv_search_dgemv_+:} false; then : -else case e in #( - e) ac_cv_search_dgemv_=no ;; -esac +else + ac_cv_search_dgemv_=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv_" >&5 -printf "%s\n" "$ac_cv_search_dgemv_" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv_" >&5 +$as_echo "$ac_cv_search_dgemv_" >&6; } ac_res=$ac_cv_search_dgemv_ -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" blas_found=underscore -else case e in #( - e) +else + if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv" >&5 -printf %s "checking for library containing dgemv... " >&6; } -if test ${ac_cv_search_dgemv+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv" >&5 +$as_echo_n "checking for library containing dgemv... " >&6; } +if ${ac_cv_search_dgemv+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int dgemv (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dgemv (); int -main (void) +main () { -return conftest::dgemv (); +return dgemv (); ; return 0; } _ACEOF -for ac_lib in '' blas -do +for ac_lib in '' blas; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_dgemv=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_dgemv+y} -then : + if ${ac_cv_search_dgemv+:} false; then : break fi done -if test ${ac_cv_search_dgemv+y} -then : +if ${ac_cv_search_dgemv+:} false; then : -else case e in #( - e) ac_cv_search_dgemv=no ;; -esac +else + ac_cv_search_dgemv=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv" >&5 -printf "%s\n" "$ac_cv_search_dgemv" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv" >&5 +$as_echo "$ac_cv_search_dgemv" >&6; } ac_res=$ac_cv_search_dgemv -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" blas_found=nounderscore fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv" >&5 -printf %s "checking for library containing dgemv... " >&6; } -if test ${ac_cv_search_dgemv+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv" >&5 +$as_echo_n "checking for library containing dgemv... " >&6; } +if ${ac_cv_search_dgemv+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int dgemv (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dgemv (); int -main (void) +main () { -return conftest::dgemv (); +return dgemv (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_dgemv=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_dgemv+y} -then : + if ${ac_cv_search_dgemv+:} false; then : break fi done -if test ${ac_cv_search_dgemv+y} -then : +if ${ac_cv_search_dgemv+:} false; then : -else case e in #( - e) ac_cv_search_dgemv=no ;; -esac +else + ac_cv_search_dgemv=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv" >&5 -printf "%s\n" "$ac_cv_search_dgemv" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv" >&5 +$as_echo "$ac_cv_search_dgemv" >&6; } ac_res=$ac_cv_search_dgemv -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" blas_found=nounderscore fi fi - ;; -esac + fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv_" >&5 -printf %s "checking for library containing dgemv_... " >&6; } -if test ${ac_cv_search_dgemv_+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv_" >&5 +$as_echo_n "checking for library containing dgemv_... " >&6; } +if ${ac_cv_search_dgemv_+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int dgemv_ (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dgemv_ (); int -main (void) +main () { -return conftest::dgemv_ (); +return dgemv_ (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_dgemv_=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_dgemv_+y} -then : + if ${ac_cv_search_dgemv_+:} false; then : break fi done -if test ${ac_cv_search_dgemv_+y} -then : +if ${ac_cv_search_dgemv_+:} false; then : -else case e in #( - e) ac_cv_search_dgemv_=no ;; -esac +else + ac_cv_search_dgemv_=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv_" >&5 -printf "%s\n" "$ac_cv_search_dgemv_" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv_" >&5 +$as_echo "$ac_cv_search_dgemv_" >&6; } ac_res=$ac_cv_search_dgemv_ -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" blas_found=underscore -else case e in #( - e) +else + if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv" >&5 -printf %s "checking for library containing dgemv... " >&6; } -if test ${ac_cv_search_dgemv+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv" >&5 +$as_echo_n "checking for library containing dgemv... " >&6; } +if ${ac_cv_search_dgemv+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int dgemv (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dgemv (); int -main (void) +main () { -return conftest::dgemv (); +return dgemv (); ; return 0; } _ACEOF -for ac_lib in '' blas -do +for ac_lib in '' blas; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_dgemv=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_dgemv+y} -then : + if ${ac_cv_search_dgemv+:} false; then : break fi done -if test ${ac_cv_search_dgemv+y} -then : +if ${ac_cv_search_dgemv+:} false; then : -else case e in #( - e) ac_cv_search_dgemv=no ;; -esac +else + ac_cv_search_dgemv=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv" >&5 -printf "%s\n" "$ac_cv_search_dgemv" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv" >&5 +$as_echo "$ac_cv_search_dgemv" >&6; } ac_res=$ac_cv_search_dgemv -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" blas_found=nounderscore fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv" >&5 -printf %s "checking for library containing dgemv... " >&6; } -if test ${ac_cv_search_dgemv+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dgemv" >&5 +$as_echo_n "checking for library containing dgemv... " >&6; } +if ${ac_cv_search_dgemv+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int dgemv (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dgemv (); int -main (void) +main () { -return conftest::dgemv (); +return dgemv (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_dgemv=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_dgemv+y} -then : + if ${ac_cv_search_dgemv+:} false; then : break fi done -if test ${ac_cv_search_dgemv+y} -then : +if ${ac_cv_search_dgemv+:} false; then : -else case e in #( - e) ac_cv_search_dgemv=no ;; -esac +else + ac_cv_search_dgemv=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv" >&5 -printf "%s\n" "$ac_cv_search_dgemv" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dgemv" >&5 +$as_echo "$ac_cv_search_dgemv" >&6; } ac_res=$ac_cv_search_dgemv -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" blas_found=nounderscore fi fi - ;; -esac + fi fi - ;; -esac + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - ;; -esac + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # if not found, then use internal lapack and blas if test -z "$blas_found" ; then -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using internal lapack and blas, could be inefficient" >&5 -printf "%s\n" "$as_me: WARNING: using internal lapack and blas, could be inefficient" >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using internal lapack and blas, could be inefficient" >&5 +$as_echo "$as_me: WARNING: using internal lapack and blas, could be inefficient" >&2;} fi # if found, also look for external lapack if test -n "$blas_found" ; then -printf "%s\n" "#define __PLUMED_HAS_EXTERNAL_BLAS 1" >>confdefs.h +$as_echo "#define __PLUMED_HAS_EXTERNAL_BLAS 1" >>confdefs.h if test "$external_lapack" = true ; then @@ -6847,127 +5920,119 @@ case "$blas_found" in esac if test "${libsearch}" = true ; then - as_ac_Search=`printf "%s\n" "ac_cv_search_$search_for" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing $search_for" >&5 -printf %s "checking for library containing $search_for... " >&6; } -if eval test \${$as_ac_Search+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + as_ac_Search=`$as_echo "ac_cv_search_$search_for" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing $search_for" >&5 +$as_echo_n "checking for library containing $search_for... " >&6; } +if eval \${$as_ac_Search+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int $search_for (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $search_for (); int -main (void) +main () { -return conftest::$search_for (); +return $search_for (); ; return 0; } _ACEOF -for ac_lib in '' lapack -do +for ac_lib in '' lapack; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : eval "$as_ac_Search=\$ac_res" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if eval test \${$as_ac_Search+y} -then : + if eval \${$as_ac_Search+:} false; then : break fi done -if eval test \${$as_ac_Search+y} -then : +if eval \${$as_ac_Search+:} false; then : -else case e in #( - e) eval "$as_ac_Search=no" ;; -esac +else + eval "$as_ac_Search=no" fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi eval ac_res=\$$as_ac_Search - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } eval ac_res=\$$as_ac_Search -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" lapack_found=yes fi else - as_ac_Search=`printf "%s\n" "ac_cv_search_$search_for" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing $search_for" >&5 -printf %s "checking for library containing $search_for... " >&6; } -if eval test \${$as_ac_Search+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + as_ac_Search=`$as_echo "ac_cv_search_$search_for" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing $search_for" >&5 +$as_echo_n "checking for library containing $search_for... " >&6; } +if eval \${$as_ac_Search+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int $search_for (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $search_for (); int -main (void) +main () { -return conftest::$search_for (); +return $search_for (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : eval "$as_ac_Search=\$ac_res" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if eval test \${$as_ac_Search+y} -then : + if eval \${$as_ac_Search+:} false; then : break fi done -if eval test \${$as_ac_Search+y} -then : +if eval \${$as_ac_Search+:} false; then : -else case e in #( - e) eval "$as_ac_Search=no" ;; -esac +else + eval "$as_ac_Search=no" fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi eval ac_res=\$$as_ac_Search - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } eval ac_res=\$$as_ac_Search -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" lapack_found=yes fi @@ -6978,10 +6043,10 @@ fi # if not found, then use internal lapack with external blas if test -z "$lapack_found" ; then -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using internal lapack, could be inefficient" >&5 -printf "%s\n" "$as_me: WARNING: using internal lapack, could be inefficient" >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using internal lapack, could be inefficient" >&5 +$as_echo "$as_me: WARNING: using internal lapack, could be inefficient" >&2;} else -printf "%s\n" "#define __PLUMED_HAS_EXTERNAL_LAPACK 1" >>confdefs.h +$as_echo "#define __PLUMED_HAS_EXTERNAL_LAPACK 1" >>confdefs.h fi @@ -6992,7 +6057,7 @@ fi # in the latter case, also (internal) lapack names will be underscored consistently if test "$blas_found" = nounderscore then - printf "%s\n" "#define F77_NO_UNDERSCORE 1" >>confdefs.h + $as_echo "#define F77_NO_UNDERSCORE 1" >>confdefs.h fi @@ -7001,15 +6066,14 @@ if test -n "$blas_found" ; then -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sdot returns float" >&5 -printf %s "checking whether sdot returns float... " >&6; } -if test "$cross_compiling" = yes -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not checked (cross compiling)" >&5 -printf "%s\n" "not checked (cross compiling)" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sdot returns float" >&5 +$as_echo_n "checking whether sdot returns float... " >&6; } +if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not checked (cross compiling)" >&5 +$as_echo "not checked (cross compiling)" >&6; } -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if ! defined(F77_NO_UNDERSCORE) @@ -7035,33 +6099,29 @@ int main(){ } _ACEOF -if ac_fn_cxx_try_run "$LINENO" -then : - sdot_returns_float=yes ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) sdot_returns_float=no ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; -esac +if ac_fn_cxx_try_run "$LINENO"; then : + sdot_returns_float=yes ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + sdot_returns_float=no ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac + conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test "$sdot_returns_float" = no ; then -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sdot returns double" >&5 -printf %s "checking whether sdot returns double... " >&6; } -if test "$cross_compiling" = yes -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not checked (cross compiling)" >&5 -printf "%s\n" "not checked (cross compiling)" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sdot returns double" >&5 +$as_echo_n "checking whether sdot returns double... " >&6; } +if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not checked (cross compiling)" >&5 +$as_echo "not checked (cross compiling)" >&6; } -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if ! defined(F77_NO_UNDERSCORE) @@ -7087,223 +6147,575 @@ int main(){ } _ACEOF -if ac_fn_cxx_try_run "$LINENO" -then : - sdot_returns_double=yes ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) sdot_returns_double=no ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi +if ac_fn_cxx_try_run "$LINENO"; then : + sdot_returns_double=yes ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + sdot_returns_double=no ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi + +if test "$sdot_returns_double" = yes ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Setting workaround for blas float functions returning double" >&5 +$as_echo "$as_me: Setting workaround for blas float functions returning double" >&6;} + $as_echo "#define __PLUMED_BLAS_RETURNS_FLOAT double" >>confdefs.h + + if test -n "$lapack_found" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Setting workaround for lapack float functions returning double" >&5 +$as_echo "$as_me: Setting workaround for lapack float functions returning double" >&6;} + $as_echo "#define __PLUMED_LAPACK_RETURNS_FLOAT double" >>confdefs.h + + fi +else if test "$sdot_returns_float" = no && test "$sdot_returns_double" = no ; +then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: There is a problem with your blas implementation" >&5 +$as_echo "$as_me: WARNING: There is a problem with your blas implementation" >&2;} +fi + +fi + +fi + +#### End of compulsory libraries #### + +#### Optional libraries #### +{ $as_echo "$as_me:${as_lineno-$LINENO}: Now we will check for optional headers and libraries" >&5 +$as_echo "$as_me: Now we will check for optional headers and libraries" >&6;} + +############################################################# +# I add the possibility to completely remove molfile_plugins +# I would like to be 100% that the molfile module compiles +# correctly on all machines +# In case of problem, it is sufficient to configure with +# ./configure --disable-molfile-plugins +# GB +############################################################# + +if test $molfile_plugins = true ; then + +# Check for molfile_plugins and use internal fallback if not found. TG + +# We always have molfile, now +$as_echo "#define __PLUMED_HAS_MOLFILE_PLUGINS 1" >>confdefs.h + + + if test "$external_molfile_plugins" = true ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : +else + ac_cv_header_stdc=no +fi +rm -f conftest* fi -if test "$sdot_returns_double" = yes ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Setting workaround for blas float functions returning double" >&5 -printf "%s\n" "$as_me: Setting workaround for blas float functions returning double" >&6;} - printf "%s\n" "#define __PLUMED_BLAS_RETURNS_FLOAT double" >>confdefs.h +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include - if test -n "$lapack_found" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Setting workaround for lapack float functions returning double" >&5 -printf "%s\n" "$as_me: Setting workaround for lapack float functions returning double" >&6;} - printf "%s\n" "#define __PLUMED_LAPACK_RETURNS_FLOAT double" >>confdefs.h +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : - fi -else if test "$sdot_returns_float" = no && test "$sdot_returns_double" = no ; -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: There is a problem with your blas implementation" >&5 -printf "%s\n" "$as_me: WARNING: There is a problem with your blas implementation" >&2;} +else + ac_cv_header_stdc=no fi +rm -f conftest* fi -fi +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif -#### End of compulsory libraries #### +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : -#### Optional libraries #### -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Now we will check for optional headers and libraries" >&5 -printf "%s\n" "$as_me: Now we will check for optional headers and libraries" >&6;} +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi -############################################################# -# I add the possibility to completely remove molfile_plugins -# I would like to be 100% that the molfile module compiles -# correctly on all machines -# In case of problem, it is sufficient to configure with -# ./configure --disable-molfile-plugins -# GB -############################################################# +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then -if test $molfile_plugins = true ; then +$as_echo "#define STDC_HEADERS 1" >>confdefs.h -# Check for molfile_plugins and use internal fallback if not found. TG +fi -# We always have molfile, now -printf "%s\n" "#define __PLUMED_HAS_MOLFILE_PLUGINS 1" >>confdefs.h +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_cxx_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF +fi - if test "$external_molfile_plugins" = true ; then - ac_header= ac_cache= -for ac_item in $ac_header_cxx_list -do - if test $ac_cache; then - ac_fn_cxx_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" - if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then - printf "%s\n" "#define $ac_item 1" >> confdefs.h - fi - ac_header= ac_cache= - elif test $ac_header; then - ac_cache=$ac_item - else - ac_header=$ac_item - fi done - - - - - -if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes -then : - -printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h - -fi - found=ko __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS=no - ac_fn_cxx_check_header_compile "$LINENO" "libmolfile_plugin.h" "ac_cv_header_libmolfile_plugin_h" "$ac_includes_default" -if test "x$ac_cv_header_libmolfile_plugin_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "libmolfile_plugin.h" "ac_cv_header_libmolfile_plugin_h" "$ac_includes_default" +if test "x$ac_cv_header_libmolfile_plugin_h" = xyes; then : if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing molfile_dcdplugin_init" >&5 -printf %s "checking for library containing molfile_dcdplugin_init... " >&6; } -if test ${ac_cv_search_molfile_dcdplugin_init+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing molfile_dcdplugin_init" >&5 +$as_echo_n "checking for library containing molfile_dcdplugin_init... " >&6; } +if ${ac_cv_search_molfile_dcdplugin_init+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int molfile_dcdplugin_init (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char molfile_dcdplugin_init (); int -main (void) +main () { -return conftest::molfile_dcdplugin_init (); +return molfile_dcdplugin_init (); ; return 0; } _ACEOF -for ac_lib in '' molfile_plugin -do +for ac_lib in '' molfile_plugin; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_molfile_dcdplugin_init=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_molfile_dcdplugin_init+y} -then : + if ${ac_cv_search_molfile_dcdplugin_init+:} false; then : break fi done -if test ${ac_cv_search_molfile_dcdplugin_init+y} -then : +if ${ac_cv_search_molfile_dcdplugin_init+:} false; then : -else case e in #( - e) ac_cv_search_molfile_dcdplugin_init=no ;; -esac +else + ac_cv_search_molfile_dcdplugin_init=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_molfile_dcdplugin_init" >&5 -printf "%s\n" "$ac_cv_search_molfile_dcdplugin_init" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_molfile_dcdplugin_init" >&5 +$as_echo "$ac_cv_search_molfile_dcdplugin_init" >&6; } ac_res=$ac_cv_search_molfile_dcdplugin_init -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing molfile_dcdplugin_init" >&5 -printf %s "checking for library containing molfile_dcdplugin_init... " >&6; } -if test ${ac_cv_search_molfile_dcdplugin_init+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing molfile_dcdplugin_init" >&5 +$as_echo_n "checking for library containing molfile_dcdplugin_init... " >&6; } +if ${ac_cv_search_molfile_dcdplugin_init+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int molfile_dcdplugin_init (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char molfile_dcdplugin_init (); int -main (void) +main () { -return conftest::molfile_dcdplugin_init (); +return molfile_dcdplugin_init (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_molfile_dcdplugin_init=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_molfile_dcdplugin_init+y} -then : + if ${ac_cv_search_molfile_dcdplugin_init+:} false; then : break fi done -if test ${ac_cv_search_molfile_dcdplugin_init+y} -then : +if ${ac_cv_search_molfile_dcdplugin_init+:} false; then : -else case e in #( - e) ac_cv_search_molfile_dcdplugin_init=no ;; -esac +else + ac_cv_search_molfile_dcdplugin_init=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_molfile_dcdplugin_init" >&5 -printf "%s\n" "$ac_cv_search_molfile_dcdplugin_init" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_molfile_dcdplugin_init" >&5 +$as_echo "$ac_cv_search_molfile_dcdplugin_init" >&6; } ac_res=$ac_cv_search_molfile_dcdplugin_init -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -7313,20 +6725,21 @@ fi fi + if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS 1" >>confdefs.h __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS" >&2;} fi if test "$__PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS" != yes ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using internal molfile_plugins, which only support dcd/xtc/trr/trj/crd files" >&5 -printf "%s\n" "$as_me: WARNING: using internal molfile_plugins, which only support dcd/xtc/trr/trj/crd files" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using internal molfile_plugins, which only support dcd/xtc/trr/trj/crd files" >&5 +$as_echo "$as_me: WARNING: using internal molfile_plugins, which only support dcd/xtc/trr/trj/crd files" >&2;} else - printf "%s\n" "#define __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_EXTERNAL_MOLFILE_PLUGINS 1" >>confdefs.h fi fi @@ -7335,44 +6748,43 @@ fi # this is special and is also attached to STATIC_LIBS # this flag should be used also when linking MD engines to allow plumed # to be loaded later -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -printf %s "checking for dlopen in -ldl... " >&6; } -if test ${ac_cv_lib_dl_dlopen+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int dlopen (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); int -main (void) +main () { -return conftest::dlopen (); +return dlopen (); ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes -else case e in #( - e) ac_cv_lib_dl_dlopen=no ;; -esac +else + ac_cv_lib_dl_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac +LIBS=$ac_check_lib_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes -then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : STATIC_LIBS="-ldl $STATIC_LIBS" LIBS="-ldl $LIBS" fi @@ -7381,129 +6793,120 @@ fi found=ko __PLUMED_HAS_DLADDR=no - ac_fn_cxx_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" -if test "x$ac_cv_header_dlfcn_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dladdr" >&5 -printf %s "checking for library containing dladdr... " >&6; } -if test ${ac_cv_search_dladdr+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dladdr" >&5 +$as_echo_n "checking for library containing dladdr... " >&6; } +if ${ac_cv_search_dladdr+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int dladdr (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dladdr (); int -main (void) +main () { -return conftest::dladdr (); +return dladdr (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_dladdr=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_dladdr+y} -then : + if ${ac_cv_search_dladdr+:} false; then : break fi done -if test ${ac_cv_search_dladdr+y} -then : +if ${ac_cv_search_dladdr+:} false; then : -else case e in #( - e) ac_cv_search_dladdr=no ;; -esac +else + ac_cv_search_dladdr=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dladdr" >&5 -printf "%s\n" "$ac_cv_search_dladdr" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dladdr" >&5 +$as_echo "$ac_cv_search_dladdr" >&6; } ac_res=$ac_cv_search_dladdr -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dladdr" >&5 -printf %s "checking for library containing dladdr... " >&6; } -if test ${ac_cv_search_dladdr+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dladdr" >&5 +$as_echo_n "checking for library containing dladdr... " >&6; } +if ${ac_cv_search_dladdr+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int dladdr (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dladdr (); int -main (void) +main () { -return conftest::dladdr (); +return dladdr (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_dladdr=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_dladdr+y} -then : + if ${ac_cv_search_dladdr+:} false; then : break fi done -if test ${ac_cv_search_dladdr+y} -then : +if ${ac_cv_search_dladdr+:} false; then : -else case e in #( - e) ac_cv_search_dladdr=no ;; -esac +else + ac_cv_search_dladdr=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dladdr" >&5 -printf "%s\n" "$ac_cv_search_dladdr" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dladdr" >&5 +$as_echo "$ac_cv_search_dladdr" >&6; } ac_res=$ac_cv_search_dladdr -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -7513,13 +6916,14 @@ fi fi + if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_DLADDR 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_DLADDR 1" >>confdefs.h __PLUMED_HAS_DLADDR=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_DLADDR" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_DLADDR" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_DLADDR" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_DLADDR" >&2;} fi @@ -7529,129 +6933,120 @@ if test $mpi = true ; then found=ko __PLUMED_HAS_MPI=no - ac_fn_cxx_check_header_compile "$LINENO" "mpi.h" "ac_cv_header_mpi_h" "$ac_includes_default" -if test "x$ac_cv_header_mpi_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "mpi.h" "ac_cv_header_mpi_h" "$ac_includes_default" +if test "x$ac_cv_header_mpi_h" = xyes; then : if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing MPI_Init" >&5 -printf %s "checking for library containing MPI_Init... " >&6; } -if test ${ac_cv_search_MPI_Init+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing MPI_Init" >&5 +$as_echo_n "checking for library containing MPI_Init... " >&6; } +if ${ac_cv_search_MPI_Init+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int MPI_Init (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char MPI_Init (); int -main (void) +main () { -return conftest::MPI_Init (); +return MPI_Init (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_MPI_Init=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_MPI_Init+y} -then : + if ${ac_cv_search_MPI_Init+:} false; then : break fi done -if test ${ac_cv_search_MPI_Init+y} -then : +if ${ac_cv_search_MPI_Init+:} false; then : -else case e in #( - e) ac_cv_search_MPI_Init=no ;; -esac +else + ac_cv_search_MPI_Init=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_MPI_Init" >&5 -printf "%s\n" "$ac_cv_search_MPI_Init" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_MPI_Init" >&5 +$as_echo "$ac_cv_search_MPI_Init" >&6; } ac_res=$ac_cv_search_MPI_Init -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing MPI_Init" >&5 -printf %s "checking for library containing MPI_Init... " >&6; } -if test ${ac_cv_search_MPI_Init+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing MPI_Init" >&5 +$as_echo_n "checking for library containing MPI_Init... " >&6; } +if ${ac_cv_search_MPI_Init+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int MPI_Init (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char MPI_Init (); int -main (void) +main () { -return conftest::MPI_Init (); +return MPI_Init (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_MPI_Init=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_MPI_Init+y} -then : + if ${ac_cv_search_MPI_Init+:} false; then : break fi done -if test ${ac_cv_search_MPI_Init+y} -then : +if ${ac_cv_search_MPI_Init+:} false; then : -else case e in #( - e) ac_cv_search_MPI_Init=no ;; -esac +else + ac_cv_search_MPI_Init=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_MPI_Init" >&5 -printf "%s\n" "$ac_cv_search_MPI_Init" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_MPI_Init" >&5 +$as_echo "$ac_cv_search_MPI_Init" >&6; } ac_res=$ac_cv_search_MPI_Init -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -7661,13 +7056,14 @@ fi fi + if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_MPI 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_MPI 1" >>confdefs.h __PLUMED_HAS_MPI=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_MPI" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_MPI" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_MPI" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_MPI" >&2;} fi if test "$__PLUMED_HAS_MPI" = yes; then @@ -7679,89 +7075,76 @@ fi # search for openmp is automatically disabled by autoconf # when configuring with --disable-openmp -if test -e penmp || test -e mp; then - as_fn_error $? "AC_OPENMP clobbers files named 'mp' and 'penmp'. Aborting configure because one of these files already exists." "$LINENO" 5 -fi -# Check whether --enable-openmp was given. -if test ${enable_openmp+y} -then : + + OPENMP_CXXFLAGS= + # Check whether --enable-openmp was given. +if test "${enable_openmp+set}" = set; then : enableval=$enable_openmp; fi - OPENMP_CXXFLAGS= if test "$enable_openmp" != no; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to support OpenMP" >&5 -printf %s "checking for $CXX option to support OpenMP... " >&6; } -if test ${ac_cv_prog_cxx_openmp+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cxx_openmp='not found' - for ac_option in '' -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp -homp \ - -Popenmp --openmp; do - - ac_save_CXXFLAGS=$CXXFLAGS - CXXFLAGS="$CXXFLAGS $ac_option" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CXX option to support OpenMP" >&5 +$as_echo_n "checking for $CXX option to support OpenMP... " >&6; } +if ${ac_cv_prog_cxx_openmp+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef _OPENMP -#error "OpenMP not supported" + choke me #endif #include -int main (void) { return omp_get_num_threads (); } +int main () { return omp_get_num_threads (); } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_prog_cxx_openmp='none needed' +else + ac_cv_prog_cxx_openmp='unsupported' + for ac_option in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp -homp \ + -Popenmp --openmp; do + ac_save_CXXFLAGS=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $ac_option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef _OPENMP -#error "OpenMP not supported" + choke me #endif #include -int main (void) { return omp_get_num_threads (); } +int main () { return omp_get_num_threads (); } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_prog_cxx_openmp=$ac_option -else case e in #( - e) ac_cv_prog_cxx_openmp='unsupported' ;; -esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext + CXXFLAGS=$ac_save_CXXFLAGS + if test "$ac_cv_prog_cxx_openmp" != unsupported; then + break + fi + done fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CXXFLAGS=$ac_save_CXXFLAGS - - if test "$ac_cv_prog_cxx_openmp" != 'not found'; then - break - fi - done - if test "$ac_cv_prog_cxx_openmp" = 'not found'; then - ac_cv_prog_cxx_openmp='unsupported' - elif test "$ac_cv_prog_cxx_openmp" = ''; then - ac_cv_prog_cxx_openmp='none needed' - fi - rm -f penmp mp ;; -esac +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_openmp" >&5 -printf "%s\n" "$ac_cv_prog_cxx_openmp" >&6; } - if test "$ac_cv_prog_cxx_openmp" != 'unsupported' && \ - test "$ac_cv_prog_cxx_openmp" != 'none needed'; then - OPENMP_CXXFLAGS="$ac_cv_prog_cxx_openmp" - fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_openmp" >&5 +$as_echo "$ac_cv_prog_cxx_openmp" >&6; } + case $ac_cv_prog_cxx_openmp in #( + "none needed" | unsupported) + ;; #( + *) + OPENMP_CXXFLAGS=$ac_cv_prog_cxx_openmp ;; + esac fi if test $asmjit = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether architecture is X86/X64" >&5 -printf %s "checking whether architecture is X86/X64... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether architecture is X86/X64" >&5 +$as_echo_n "checking whether architecture is X86/X64... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7774,30 +7157,28 @@ this_is_not_x86_x64 #endif int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; }; +if ac_fn_cxx_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; }; x86_x64=true -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ; - x86_x64=false ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } ; + x86_x64=false fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $asmjit = true && test $x86_x64 = false ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: asmjit does not support this architecture, it will be disabled" >&5 -printf "%s\n" "$as_me: WARNING: asmjit does not support this architecture, it will be disabled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: asmjit does not support this architecture, it will be disabled" >&5 +$as_echo "$as_me: WARNING: asmjit does not support this architecture, it will be disabled" >&2;} asmjit=false fi @@ -7807,123 +7188,115 @@ if test $asmjit = true ; then if test `(uname)` = Linux ; then if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 -printf %s "checking for library containing clock_gettime... " >&6; } -if test ${ac_cv_search_clock_gettime+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +$as_echo_n "checking for library containing clock_gettime... " >&6; } +if ${ac_cv_search_clock_gettime+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int clock_gettime (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (); int -main (void) +main () { -return conftest::clock_gettime (); +return clock_gettime (); ; return 0; } _ACEOF -for ac_lib in '' rt -do +for ac_lib in '' rt; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_clock_gettime=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_clock_gettime+y} -then : + if ${ac_cv_search_clock_gettime+:} false; then : break fi done -if test ${ac_cv_search_clock_gettime+y} -then : +if ${ac_cv_search_clock_gettime+:} false; then : -else case e in #( - e) ac_cv_search_clock_gettime=no ;; -esac +else + ac_cv_search_clock_gettime=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 -printf "%s\n" "$ac_cv_search_clock_gettime" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +$as_echo "$ac_cv_search_clock_gettime" >&6; } ac_res=$ac_cv_search_clock_gettime -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 -printf %s "checking for library containing clock_gettime... " >&6; } -if test ${ac_cv_search_clock_gettime+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +$as_echo_n "checking for library containing clock_gettime... " >&6; } +if ${ac_cv_search_clock_gettime+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int clock_gettime (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (); int -main (void) +main () { -return conftest::clock_gettime (); +return clock_gettime (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_clock_gettime=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_clock_gettime+y} -then : + if ${ac_cv_search_clock_gettime+:} false; then : break fi done -if test ${ac_cv_search_clock_gettime+y} -then : +if ${ac_cv_search_clock_gettime+:} false; then : -else case e in #( - e) ac_cv_search_clock_gettime=no ;; -esac +else + ac_cv_search_clock_gettime=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 -printf "%s\n" "$ac_cv_search_clock_gettime" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +$as_echo "$ac_cv_search_clock_gettime" >&6; } ac_res=$ac_cv_search_clock_gettime -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -7934,13 +7307,13 @@ fi found=ok fi if test "$found" = ok ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling embedded asmjit" >&5 -printf "%s\n" "$as_me: Enabling embedded asmjit" >&6;} - printf "%s\n" "#define __PLUMED_HAS_ASMJIT 1" >>confdefs.h + { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling embedded asmjit" >&5 +$as_echo "$as_me: Enabling embedded asmjit" >&6;} + $as_echo "#define __PLUMED_HAS_ASMJIT 1" >>confdefs.h else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot link clock_gettime on this Linux, asmjit will not be enabled" >&5 -printf "%s\n" "$as_me: WARNING: cannot link clock_gettime on this Linux, asmjit will not be enabled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot link clock_gettime on this Linux, asmjit will not be enabled" >&5 +$as_echo "$as_me: WARNING: cannot link clock_gettime on this Linux, asmjit will not be enabled" >&2;} fi fi @@ -7948,129 +7321,120 @@ if test $dlopen = true ; then found=ko __PLUMED_HAS_DLOPEN=no - ac_fn_cxx_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" -if test "x$ac_cv_header_dlfcn_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 -printf %s "checking for library containing dlopen... " >&6; } -if test ${ac_cv_search_dlopen+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +$as_echo_n "checking for library containing dlopen... " >&6; } +if ${ac_cv_search_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int dlopen (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); int -main (void) +main () { -return conftest::dlopen (); +return dlopen (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_dlopen=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_dlopen+y} -then : + if ${ac_cv_search_dlopen+:} false; then : break fi done -if test ${ac_cv_search_dlopen+y} -then : +if ${ac_cv_search_dlopen+:} false; then : -else case e in #( - e) ac_cv_search_dlopen=no ;; -esac +else + ac_cv_search_dlopen=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 -printf "%s\n" "$ac_cv_search_dlopen" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +$as_echo "$ac_cv_search_dlopen" >&6; } ac_res=$ac_cv_search_dlopen -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 -printf %s "checking for library containing dlopen... " >&6; } -if test ${ac_cv_search_dlopen+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +$as_echo_n "checking for library containing dlopen... " >&6; } +if ${ac_cv_search_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int dlopen (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); int -main (void) +main () { -return conftest::dlopen (); +return dlopen (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_dlopen=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_dlopen+y} -then : + if ${ac_cv_search_dlopen+:} false; then : break fi done -if test ${ac_cv_search_dlopen+y} -then : +if ${ac_cv_search_dlopen+:} false; then : -else case e in #( - e) ac_cv_search_dlopen=no ;; -esac +else + ac_cv_search_dlopen=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 -printf "%s\n" "$ac_cv_search_dlopen" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +$as_echo "$ac_cv_search_dlopen" >&6; } ac_res=$ac_cv_search_dlopen -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -8080,13 +7444,14 @@ fi fi + if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_DLOPEN 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_DLOPEN 1" >>confdefs.h __PLUMED_HAS_DLOPEN=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_DLOPEN" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_DLOPEN" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_DLOPEN" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_DLOPEN" >&2;} fi fi @@ -8115,8 +7480,8 @@ if test $rtld_default = true ; then fi # check without libraries - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking RTLD_DEFAULT without extra libs" >&5 -printf %s "checking RTLD_DEFAULT without extra libs... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking RTLD_DEFAULT without extra libs" >&5 +$as_echo_n "checking RTLD_DEFAULT without extra libs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8129,24 +7494,22 @@ main () } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$found" = "ko" ; then if test "$multiple" = "yes" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking RTLD_DEFAULT with $all_LIBS" >&5 -printf %s "checking RTLD_DEFAULT with $all_LIBS... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking RTLD_DEFAULT with $all_LIBS" >&5 +$as_echo_n "checking RTLD_DEFAULT with $all_LIBS... " >&6; } LIBS="$all_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8160,24 +7523,22 @@ main () } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext else for testlib in $testlibs do - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking RTLD_DEFAULT with -l$testlib" >&5 -printf %s "checking RTLD_DEFAULT with -l$testlib... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking RTLD_DEFAULT with -l$testlib" >&5 +$as_echo_n "checking RTLD_DEFAULT with -l$testlib... " >&6; } LIBS="-l$testlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8191,18 +7552,16 @@ main () } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $found = ok ; then break @@ -8213,12 +7572,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ fi if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_RTLD_DEFAULT 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_RTLD_DEFAULT 1" >>confdefs.h __PLUMED_HAS_RTLD_DEFAULT=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_RTLD_DEFAULT" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_RTLD_DEFAULT" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_RTLD_DEFAULT" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_RTLD_DEFAULT" >&2;} LIBS="$save_LIBS" fi @@ -8248,8 +7607,8 @@ if test $subprocess = true ; then fi # check without libraries - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking subprocess without extra libs" >&5 -printf %s "checking subprocess without extra libs... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking subprocess without extra libs" >&5 +$as_echo_n "checking subprocess without extra libs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8285,24 +7644,22 @@ main () _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$found" = "ko" ; then if test "$multiple" = "yes" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking subprocess with $all_LIBS" >&5 -printf %s "checking subprocess with $all_LIBS... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking subprocess with $all_LIBS" >&5 +$as_echo_n "checking subprocess with $all_LIBS... " >&6; } LIBS="$all_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8339,24 +7696,22 @@ main () _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext else for testlib in $testlibs do - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking subprocess with -l$testlib" >&5 -printf %s "checking subprocess with -l$testlib... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking subprocess with -l$testlib" >&5 +$as_echo_n "checking subprocess with -l$testlib... " >&6; } LIBS="-l$testlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8393,18 +7748,16 @@ main () _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $found = ok ; then break @@ -8415,12 +7768,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ fi if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_SUBPROCESS 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_SUBPROCESS 1" >>confdefs.h __PLUMED_HAS_SUBPROCESS=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_SUBPROCESS" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_SUBPROCESS" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_SUBPROCESS" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_SUBPROCESS" >&2;} LIBS="$save_LIBS" fi @@ -8430,129 +7783,120 @@ if test $execinfo = true ; then found=ko __PLUMED_HAS_EXECINFO=no - ac_fn_cxx_check_header_compile "$LINENO" "execinfo.h" "ac_cv_header_execinfo_h" "$ac_includes_default" -if test "x$ac_cv_header_execinfo_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "execinfo.h" "ac_cv_header_execinfo_h" "$ac_includes_default" +if test "x$ac_cv_header_execinfo_h" = xyes; then : if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing backtrace" >&5 -printf %s "checking for library containing backtrace... " >&6; } -if test ${ac_cv_search_backtrace+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing backtrace" >&5 +$as_echo_n "checking for library containing backtrace... " >&6; } +if ${ac_cv_search_backtrace+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int backtrace (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char backtrace (); int -main (void) +main () { -return conftest::backtrace (); +return backtrace (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_backtrace=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_backtrace+y} -then : + if ${ac_cv_search_backtrace+:} false; then : break fi done -if test ${ac_cv_search_backtrace+y} -then : +if ${ac_cv_search_backtrace+:} false; then : -else case e in #( - e) ac_cv_search_backtrace=no ;; -esac +else + ac_cv_search_backtrace=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_backtrace" >&5 -printf "%s\n" "$ac_cv_search_backtrace" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_backtrace" >&5 +$as_echo "$ac_cv_search_backtrace" >&6; } ac_res=$ac_cv_search_backtrace -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing backtrace" >&5 -printf %s "checking for library containing backtrace... " >&6; } -if test ${ac_cv_search_backtrace+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing backtrace" >&5 +$as_echo_n "checking for library containing backtrace... " >&6; } +if ${ac_cv_search_backtrace+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int backtrace (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char backtrace (); int -main (void) +main () { -return conftest::backtrace (); +return backtrace (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_backtrace=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_backtrace+y} -then : + if ${ac_cv_search_backtrace+:} false; then : break fi done -if test ${ac_cv_search_backtrace+y} -then : +if ${ac_cv_search_backtrace+:} false; then : -else case e in #( - e) ac_cv_search_backtrace=no ;; -esac +else + ac_cv_search_backtrace=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_backtrace" >&5 -printf "%s\n" "$ac_cv_search_backtrace" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_backtrace" >&5 +$as_echo "$ac_cv_search_backtrace" >&6; } ac_res=$ac_cv_search_backtrace -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -8562,13 +7906,14 @@ fi fi + if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_EXECINFO 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_EXECINFO 1" >>confdefs.h __PLUMED_HAS_EXECINFO=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_EXECINFO" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_EXECINFO" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_EXECINFO" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_EXECINFO" >&2;} fi fi @@ -8576,129 +7921,120 @@ if test $zlib = true ; then found=ko __PLUMED_HAS_ZLIB=no - ac_fn_cxx_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" -if test "x$ac_cv_header_zlib_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" +if test "x$ac_cv_header_zlib_h" = xyes; then : if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gzopen" >&5 -printf %s "checking for library containing gzopen... " >&6; } -if test ${ac_cv_search_gzopen+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gzopen" >&5 +$as_echo_n "checking for library containing gzopen... " >&6; } +if ${ac_cv_search_gzopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int gzopen (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gzopen (); int -main (void) +main () { -return conftest::gzopen (); +return gzopen (); ; return 0; } _ACEOF -for ac_lib in '' z -do +for ac_lib in '' z; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_gzopen=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_gzopen+y} -then : + if ${ac_cv_search_gzopen+:} false; then : break fi done -if test ${ac_cv_search_gzopen+y} -then : +if ${ac_cv_search_gzopen+:} false; then : -else case e in #( - e) ac_cv_search_gzopen=no ;; -esac +else + ac_cv_search_gzopen=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gzopen" >&5 -printf "%s\n" "$ac_cv_search_gzopen" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gzopen" >&5 +$as_echo "$ac_cv_search_gzopen" >&6; } ac_res=$ac_cv_search_gzopen -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gzopen" >&5 -printf %s "checking for library containing gzopen... " >&6; } -if test ${ac_cv_search_gzopen+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gzopen" >&5 +$as_echo_n "checking for library containing gzopen... " >&6; } +if ${ac_cv_search_gzopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int gzopen (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gzopen (); int -main (void) +main () { -return conftest::gzopen (); +return gzopen (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_gzopen=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_gzopen+y} -then : + if ${ac_cv_search_gzopen+:} false; then : break fi done -if test ${ac_cv_search_gzopen+y} -then : +if ${ac_cv_search_gzopen+:} false; then : -else case e in #( - e) ac_cv_search_gzopen=no ;; -esac +else + ac_cv_search_gzopen=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gzopen" >&5 -printf "%s\n" "$ac_cv_search_gzopen" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gzopen" >&5 +$as_echo "$ac_cv_search_gzopen" >&6; } ac_res=$ac_cv_search_gzopen -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -8708,13 +8044,14 @@ fi fi + if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_ZLIB 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_ZLIB 1" >>confdefs.h __PLUMED_HAS_ZLIB=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ZLIB" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_ZLIB" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ZLIB" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_ZLIB" >&2;} fi fi @@ -8723,187 +8060,174 @@ if test $gsl = true ; then found=ko if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing cblas_dgemv" >&5 -printf %s "checking for library containing cblas_dgemv... " >&6; } -if test ${ac_cv_search_cblas_dgemv+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing cblas_dgemv" >&5 +$as_echo_n "checking for library containing cblas_dgemv... " >&6; } +if ${ac_cv_search_cblas_dgemv+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int cblas_dgemv (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char cblas_dgemv (); int -main (void) +main () { -return conftest::cblas_dgemv (); +return cblas_dgemv (); ; return 0; } _ACEOF -for ac_lib in '' gslcblas -do +for ac_lib in '' gslcblas; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_cblas_dgemv=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_cblas_dgemv+y} -then : + if ${ac_cv_search_cblas_dgemv+:} false; then : break fi done -if test ${ac_cv_search_cblas_dgemv+y} -then : +if ${ac_cv_search_cblas_dgemv+:} false; then : -else case e in #( - e) ac_cv_search_cblas_dgemv=no ;; -esac +else + ac_cv_search_cblas_dgemv=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_cblas_dgemv" >&5 -printf "%s\n" "$ac_cv_search_cblas_dgemv" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_cblas_dgemv" >&5 +$as_echo "$ac_cv_search_cblas_dgemv" >&6; } ac_res=$ac_cv_search_cblas_dgemv -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - ac_fn_cxx_check_header_compile "$LINENO" "gsl/gsl_vector.h" "ac_cv_header_gsl_gsl_vector_h" "$ac_includes_default" -if test "x$ac_cv_header_gsl_gsl_vector_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "gsl/gsl_vector.h" "ac_cv_header_gsl_gsl_vector_h" "$ac_includes_default" +if test "x$ac_cv_header_gsl_gsl_vector_h" = xyes; then : if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gsl_vector_alloc" >&5 -printf %s "checking for library containing gsl_vector_alloc... " >&6; } -if test ${ac_cv_search_gsl_vector_alloc+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gsl_vector_alloc" >&5 +$as_echo_n "checking for library containing gsl_vector_alloc... " >&6; } +if ${ac_cv_search_gsl_vector_alloc+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int gsl_vector_alloc (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gsl_vector_alloc (); int -main (void) +main () { -return conftest::gsl_vector_alloc (); +return gsl_vector_alloc (); ; return 0; } _ACEOF -for ac_lib in '' gsl -do +for ac_lib in '' gsl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_gsl_vector_alloc=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_gsl_vector_alloc+y} -then : + if ${ac_cv_search_gsl_vector_alloc+:} false; then : break fi done -if test ${ac_cv_search_gsl_vector_alloc+y} -then : +if ${ac_cv_search_gsl_vector_alloc+:} false; then : -else case e in #( - e) ac_cv_search_gsl_vector_alloc=no ;; -esac +else + ac_cv_search_gsl_vector_alloc=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsl_vector_alloc" >&5 -printf "%s\n" "$ac_cv_search_gsl_vector_alloc" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsl_vector_alloc" >&5 +$as_echo "$ac_cv_search_gsl_vector_alloc" >&6; } ac_res=$ac_cv_search_gsl_vector_alloc -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gsl_vector_alloc" >&5 -printf %s "checking for library containing gsl_vector_alloc... " >&6; } -if test ${ac_cv_search_gsl_vector_alloc+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gsl_vector_alloc" >&5 +$as_echo_n "checking for library containing gsl_vector_alloc... " >&6; } +if ${ac_cv_search_gsl_vector_alloc+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int gsl_vector_alloc (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gsl_vector_alloc (); int -main (void) +main () { -return conftest::gsl_vector_alloc (); +return gsl_vector_alloc (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_gsl_vector_alloc=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_gsl_vector_alloc+y} -then : + if ${ac_cv_search_gsl_vector_alloc+:} false; then : break fi done -if test ${ac_cv_search_gsl_vector_alloc+y} -then : +if ${ac_cv_search_gsl_vector_alloc+:} false; then : -else case e in #( - e) ac_cv_search_gsl_vector_alloc=no ;; -esac +else + ac_cv_search_gsl_vector_alloc=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsl_vector_alloc" >&5 -printf "%s\n" "$ac_cv_search_gsl_vector_alloc" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsl_vector_alloc" >&5 +$as_echo "$ac_cv_search_gsl_vector_alloc" >&6; } ac_res=$ac_cv_search_gsl_vector_alloc -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -8914,190 +8238,178 @@ fi fi + fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing cblas_dgemv" >&5 -printf %s "checking for library containing cblas_dgemv... " >&6; } -if test ${ac_cv_search_cblas_dgemv+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing cblas_dgemv" >&5 +$as_echo_n "checking for library containing cblas_dgemv... " >&6; } +if ${ac_cv_search_cblas_dgemv+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int cblas_dgemv (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char cblas_dgemv (); int -main (void) +main () { -return conftest::cblas_dgemv (); +return cblas_dgemv (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_cblas_dgemv=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_cblas_dgemv+y} -then : + if ${ac_cv_search_cblas_dgemv+:} false; then : break fi done -if test ${ac_cv_search_cblas_dgemv+y} -then : +if ${ac_cv_search_cblas_dgemv+:} false; then : -else case e in #( - e) ac_cv_search_cblas_dgemv=no ;; -esac +else + ac_cv_search_cblas_dgemv=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_cblas_dgemv" >&5 -printf "%s\n" "$ac_cv_search_cblas_dgemv" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_cblas_dgemv" >&5 +$as_echo "$ac_cv_search_cblas_dgemv" >&6; } ac_res=$ac_cv_search_cblas_dgemv -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - ac_fn_cxx_check_header_compile "$LINENO" "gsl/gsl_vector.h" "ac_cv_header_gsl_gsl_vector_h" "$ac_includes_default" -if test "x$ac_cv_header_gsl_gsl_vector_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "gsl/gsl_vector.h" "ac_cv_header_gsl_gsl_vector_h" "$ac_includes_default" +if test "x$ac_cv_header_gsl_gsl_vector_h" = xyes; then : if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gsl_vector_alloc" >&5 -printf %s "checking for library containing gsl_vector_alloc... " >&6; } -if test ${ac_cv_search_gsl_vector_alloc+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gsl_vector_alloc" >&5 +$as_echo_n "checking for library containing gsl_vector_alloc... " >&6; } +if ${ac_cv_search_gsl_vector_alloc+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int gsl_vector_alloc (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gsl_vector_alloc (); int -main (void) +main () { -return conftest::gsl_vector_alloc (); +return gsl_vector_alloc (); ; return 0; } _ACEOF -for ac_lib in '' gsl -do +for ac_lib in '' gsl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_gsl_vector_alloc=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_gsl_vector_alloc+y} -then : + if ${ac_cv_search_gsl_vector_alloc+:} false; then : break fi done -if test ${ac_cv_search_gsl_vector_alloc+y} -then : +if ${ac_cv_search_gsl_vector_alloc+:} false; then : -else case e in #( - e) ac_cv_search_gsl_vector_alloc=no ;; -esac +else + ac_cv_search_gsl_vector_alloc=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsl_vector_alloc" >&5 -printf "%s\n" "$ac_cv_search_gsl_vector_alloc" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsl_vector_alloc" >&5 +$as_echo "$ac_cv_search_gsl_vector_alloc" >&6; } ac_res=$ac_cv_search_gsl_vector_alloc -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gsl_vector_alloc" >&5 -printf %s "checking for library containing gsl_vector_alloc... " >&6; } -if test ${ac_cv_search_gsl_vector_alloc+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gsl_vector_alloc" >&5 +$as_echo_n "checking for library containing gsl_vector_alloc... " >&6; } +if ${ac_cv_search_gsl_vector_alloc+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int gsl_vector_alloc (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gsl_vector_alloc (); int -main (void) +main () { -return conftest::gsl_vector_alloc (); +return gsl_vector_alloc (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_gsl_vector_alloc=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_gsl_vector_alloc+y} -then : + if ${ac_cv_search_gsl_vector_alloc+:} false; then : break fi done -if test ${ac_cv_search_gsl_vector_alloc+y} -then : +if ${ac_cv_search_gsl_vector_alloc+:} false; then : -else case e in #( - e) ac_cv_search_gsl_vector_alloc=no ;; -esac +else + ac_cv_search_gsl_vector_alloc=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsl_vector_alloc" >&5 -printf "%s\n" "$ac_cv_search_gsl_vector_alloc" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsl_vector_alloc" >&5 +$as_echo "$ac_cv_search_gsl_vector_alloc" >&6; } ac_res=$ac_cv_search_gsl_vector_alloc -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -9108,16 +8420,17 @@ fi fi + fi fi if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_GSL 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_GSL 1" >>confdefs.h else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_GSL" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_GSL" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_GSL" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_GSL" >&2;} fi fi @@ -9145,8 +8458,8 @@ if test $boost_graph = true ; then fi # check without libraries - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking boost graph without extra libs" >&5 -printf %s "checking boost graph without extra libs... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking boost graph without extra libs" >&5 +$as_echo_n "checking boost graph without extra libs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9161,24 +8474,22 @@ main () } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$found" = "ko" ; then if test "$multiple" = "yes" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking boost graph with $all_LIBS" >&5 -printf %s "checking boost graph with $all_LIBS... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking boost graph with $all_LIBS" >&5 +$as_echo_n "checking boost graph with $all_LIBS... " >&6; } LIBS="$all_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9194,24 +8505,22 @@ main () } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext else for testlib in $testlibs do - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking boost graph with -l$testlib" >&5 -printf %s "checking boost graph with -l$testlib... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking boost graph with -l$testlib" >&5 +$as_echo_n "checking boost graph with -l$testlib... " >&6; } LIBS="-l$testlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9227,18 +8536,16 @@ main () } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $found = ok ; then break @@ -9249,12 +8556,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ fi if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_BOOST_GRAPH 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_BOOST_GRAPH 1" >>confdefs.h __PLUMED_HAS_BOOST_GRAPH=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_BOOST_GRAPH" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_BOOST_GRAPH" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_BOOST_GRAPH" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_BOOST_GRAPH" >&2;} LIBS="$save_LIBS" fi @@ -9284,8 +8591,8 @@ if test $boost_serialization = true ; then fi # check without libraries - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking boost serialization without extra libs" >&5 -printf %s "checking boost serialization without extra libs... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking boost serialization without extra libs" >&5 +$as_echo_n "checking boost serialization without extra libs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9298,24 +8605,22 @@ int main() { } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$found" = "ko" ; then if test "$multiple" = "yes" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking boost serialization with $all_LIBS" >&5 -printf %s "checking boost serialization with $all_LIBS... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking boost serialization with $all_LIBS" >&5 +$as_echo_n "checking boost serialization with $all_LIBS... " >&6; } LIBS="$all_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9329,24 +8634,22 @@ int main() { } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext else for testlib in $testlibs do - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking boost serialization with -l$testlib" >&5 -printf %s "checking boost serialization with -l$testlib... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking boost serialization with -l$testlib" >&5 +$as_echo_n "checking boost serialization with -l$testlib... " >&6; } LIBS="-l$testlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9360,18 +8663,16 @@ int main() { } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $found = ok ; then break @@ -9382,12 +8683,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ fi if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_BOOST_SERIALIZATION 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_BOOST_SERIALIZATION 1" >>confdefs.h __PLUMED_HAS_BOOST_SERIALIZATION=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_BOOST_SERIALIZATION" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_BOOST_SERIALIZATION" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_BOOST_SERIALIZATION" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_BOOST_SERIALIZATION" >&2;} LIBS="$save_LIBS" fi @@ -9398,129 +8699,120 @@ if test $fftw = true ; then found=ko __PLUMED_HAS_FFTW=no - ac_fn_cxx_check_header_compile "$LINENO" "fftw3.h" "ac_cv_header_fftw3_h" "$ac_includes_default" -if test "x$ac_cv_header_fftw3_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "fftw3.h" "ac_cv_header_fftw3_h" "$ac_includes_default" +if test "x$ac_cv_header_fftw3_h" = xyes; then : if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing fftw_execute" >&5 -printf %s "checking for library containing fftw_execute... " >&6; } -if test ${ac_cv_search_fftw_execute+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing fftw_execute" >&5 +$as_echo_n "checking for library containing fftw_execute... " >&6; } +if ${ac_cv_search_fftw_execute+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int fftw_execute (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char fftw_execute (); int -main (void) +main () { -return conftest::fftw_execute (); +return fftw_execute (); ; return 0; } _ACEOF -for ac_lib in '' fftw3 -do +for ac_lib in '' fftw3; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_fftw_execute=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_fftw_execute+y} -then : + if ${ac_cv_search_fftw_execute+:} false; then : break fi done -if test ${ac_cv_search_fftw_execute+y} -then : +if ${ac_cv_search_fftw_execute+:} false; then : -else case e in #( - e) ac_cv_search_fftw_execute=no ;; -esac +else + ac_cv_search_fftw_execute=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fftw_execute" >&5 -printf "%s\n" "$ac_cv_search_fftw_execute" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fftw_execute" >&5 +$as_echo "$ac_cv_search_fftw_execute" >&6; } ac_res=$ac_cv_search_fftw_execute -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing fftw_execute" >&5 -printf %s "checking for library containing fftw_execute... " >&6; } -if test ${ac_cv_search_fftw_execute+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing fftw_execute" >&5 +$as_echo_n "checking for library containing fftw_execute... " >&6; } +if ${ac_cv_search_fftw_execute+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int fftw_execute (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char fftw_execute (); int -main (void) +main () { -return conftest::fftw_execute (); +return fftw_execute (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_fftw_execute=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_fftw_execute+y} -then : + if ${ac_cv_search_fftw_execute+:} false; then : break fi done -if test ${ac_cv_search_fftw_execute+y} -then : +if ${ac_cv_search_fftw_execute+:} false; then : -else case e in #( - e) ac_cv_search_fftw_execute=no ;; -esac +else + ac_cv_search_fftw_execute=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fftw_execute" >&5 -printf "%s\n" "$ac_cv_search_fftw_execute" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fftw_execute" >&5 +$as_echo "$ac_cv_search_fftw_execute" >&6; } ac_res=$ac_cv_search_fftw_execute -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -9530,13 +8822,14 @@ fi fi + if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_FFTW 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_FFTW 1" >>confdefs.h __PLUMED_HAS_FFTW=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_FFTW" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_FFTW" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_FFTW" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_FFTW" >&2;} fi fi @@ -9559,44 +8852,38 @@ if test -z "$PYTHON_BIN" ; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_PYTHON_BIN+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$PYTHON_BIN"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_PYTHON_BIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$PYTHON_BIN"; then ac_cv_prog_PYTHON_BIN="$PYTHON_BIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_PYTHON_BIN="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi ;; -esac +fi fi PYTHON_BIN=$ac_cv_prog_PYTHON_BIN if test -n "$PYTHON_BIN"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_BIN" >&5 -printf "%s\n" "$PYTHON_BIN" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_BIN" >&5 +$as_echo "$PYTHON_BIN" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -9605,11 +8892,11 @@ done fi if test -n "$PYTHON_BIN" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Python executable is $PYTHON_BIN" >&5 -printf "%s\n" "$as_me: Python executable is $PYTHON_BIN" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Python executable is $PYTHON_BIN" >&5 +$as_echo "$as_me: Python executable is $PYTHON_BIN" >&6;} if test $pycv = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pycv: support for required python modules (python3, pybind11, numpy)" >&5 -printf %s "checking pycv: support for required python modules (python3, pybind11, numpy)... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pycv: support for required python modules (python3, pybind11, numpy)" >&5 +$as_echo_n "checking pycv: support for required python modules (python3, pybind11, numpy)... " >&6; } testimport=" import numpy import pybind11 @@ -9621,35 +8908,35 @@ import pybind11 python_config=python${pyver}-config if ${python_config} --ldflags --embed 1>/dev/null 2>/dev/null ;then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } PYBIND11_CFLAGS="$($PYTHON_BIN -m pybind11 --includes) -fvisibility=hidden" PYTHON_CFLAGS=$(${python_config} --cflags --embed) PYTHON_LDFLAGS=$(${python_config} --ldflags --embed) #TODO: conda_fixup PLUMED_CAN_PYCV=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable pycv" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable pycv" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: \"PyCV needs python to be embeddable, please rebuild python\"" >&5 -printf "%s\n" "$as_me: WARNING: \"PyCV needs python to be embeddable, please rebuild python\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable pycv" >&5 +$as_echo "$as_me: WARNING: cannot enable pycv" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"PyCV needs python to be embeddable, please rebuild python\"" >&5 +$as_echo "$as_me: WARNING: \"PyCV needs python to be embeddable, please rebuild python\"" >&2;} fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable pycv" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable pycv" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable pycv" >&5 +$as_echo "$as_me: WARNING: cannot enable pycv" >&2;} fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable pycv" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable pycv" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable pycv" >&5 +$as_echo "$as_me: WARNING: cannot enable pycv" >&2;} fi if test $python = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python wrapper: support for required python modules (python3, setuptools, cython)" >&5 -printf %s "checking python wrapper: support for required python modules (python3, setuptools, cython)... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking python wrapper: support for required python modules (python3, setuptools, cython)" >&5 +$as_echo_n "checking python wrapper: support for required python modules (python3, setuptools, cython)... " >&6; } testimport=" from setuptools import setup from setuptools import Extension @@ -9659,20 +8946,20 @@ if sys.version_info < (3,): raise ImportError('PLUMED>= 2.6 only supports Python 3') " if echo "$testimport" | "$PYTHON_BIN" 1>/dev/null 2>/dev/null; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - printf "%s\n" "#define __PLUMED_HAS_PYTHON 1" >>confdefs.h + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + $as_echo "#define __PLUMED_HAS_PYTHON 1" >>confdefs.h CYTHON_FOUND=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable python interface" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable python interface" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable python interface" >&5 +$as_echo "$as_me: WARNING: cannot enable python interface" >&2;} fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable python interface" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable python interface" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable python interface" >&5 +$as_echo "$as_me: WARNING: cannot enable python interface" >&2;} fi fi @@ -9685,129 +8972,120 @@ if test "$af_ocl" = true ; then found=ko __PLUMED_HAS_ARRAYFIRE=no - ac_fn_cxx_check_header_compile "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" -if test "x$ac_cv_header_arrayfire_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" +if test "x$ac_cv_header_arrayfire_h" = xyes; then : if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -printf %s "checking for library containing af_is_double... " >&6; } -if test ${ac_cv_search_af_is_double+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +$as_echo_n "checking for library containing af_is_double... " >&6; } +if ${ac_cv_search_af_is_double+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int af_is_double (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char af_is_double (); int -main (void) +main () { -return conftest::af_is_double (); +return af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' afopencl -do +for ac_lib in '' afopencl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_af_is_double+y} -then : + if ${ac_cv_search_af_is_double+:} false; then : break fi done -if test ${ac_cv_search_af_is_double+y} -then : +if ${ac_cv_search_af_is_double+:} false; then : -else case e in #( - e) ac_cv_search_af_is_double=no ;; -esac +else + ac_cv_search_af_is_double=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -printf "%s\n" "$ac_cv_search_af_is_double" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +$as_echo "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -printf %s "checking for library containing af_is_double... " >&6; } -if test ${ac_cv_search_af_is_double+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +$as_echo_n "checking for library containing af_is_double... " >&6; } +if ${ac_cv_search_af_is_double+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int af_is_double (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char af_is_double (); int -main (void) +main () { -return conftest::af_is_double (); +return af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_af_is_double+y} -then : + if ${ac_cv_search_af_is_double+:} false; then : break fi done -if test ${ac_cv_search_af_is_double+y} -then : +if ${ac_cv_search_af_is_double+:} false; then : -else case e in #( - e) ac_cv_search_af_is_double=no ;; -esac +else + ac_cv_search_af_is_double=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -printf "%s\n" "$ac_cv_search_af_is_double" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +$as_echo "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -9817,141 +9095,133 @@ fi fi + if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_ARRAYFIRE 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_ARRAYFIRE 1" >>confdefs.h __PLUMED_HAS_ARRAYFIRE=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&2;} fi found=ko __PLUMED_HAS_ARRAYFIRE_OCL=no - ac_fn_cxx_check_header_compile "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" -if test "x$ac_cv_header_arrayfire_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" +if test "x$ac_cv_header_arrayfire_h" = xyes; then : if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -printf %s "checking for library containing af_is_double... " >&6; } -if test ${ac_cv_search_af_is_double+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +$as_echo_n "checking for library containing af_is_double... " >&6; } +if ${ac_cv_search_af_is_double+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int af_is_double (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char af_is_double (); int -main (void) +main () { -return conftest::af_is_double (); +return af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' afopencl -do +for ac_lib in '' afopencl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_af_is_double+y} -then : + if ${ac_cv_search_af_is_double+:} false; then : break fi done -if test ${ac_cv_search_af_is_double+y} -then : +if ${ac_cv_search_af_is_double+:} false; then : -else case e in #( - e) ac_cv_search_af_is_double=no ;; -esac +else + ac_cv_search_af_is_double=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -printf "%s\n" "$ac_cv_search_af_is_double" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +$as_echo "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -printf %s "checking for library containing af_is_double... " >&6; } -if test ${ac_cv_search_af_is_double+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +$as_echo_n "checking for library containing af_is_double... " >&6; } +if ${ac_cv_search_af_is_double+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int af_is_double (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char af_is_double (); int -main (void) +main () { -return conftest::af_is_double (); +return af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_af_is_double+y} -then : + if ${ac_cv_search_af_is_double+:} false; then : break fi done -if test ${ac_cv_search_af_is_double+y} -then : +if ${ac_cv_search_af_is_double+:} false; then : -else case e in #( - e) ac_cv_search_af_is_double=no ;; -esac +else + ac_cv_search_af_is_double=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -printf "%s\n" "$ac_cv_search_af_is_double" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +$as_echo "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -9961,13 +9231,14 @@ fi fi + if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_ARRAYFIRE_OCL 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_ARRAYFIRE_OCL 1" >>confdefs.h __PLUMED_HAS_ARRAYFIRE_OCL=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE_OCL" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE_OCL" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE_OCL" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE_OCL" >&2;} fi fi @@ -9975,129 +9246,120 @@ if test "$af_cuda" = true ; then found=ko __PLUMED_HAS_ARRAYFIRE=no - ac_fn_cxx_check_header_compile "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" -if test "x$ac_cv_header_arrayfire_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" +if test "x$ac_cv_header_arrayfire_h" = xyes; then : if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -printf %s "checking for library containing af_is_double... " >&6; } -if test ${ac_cv_search_af_is_double+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +$as_echo_n "checking for library containing af_is_double... " >&6; } +if ${ac_cv_search_af_is_double+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int af_is_double (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char af_is_double (); int -main (void) +main () { -return conftest::af_is_double (); +return af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' afcuda -do +for ac_lib in '' afcuda; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_af_is_double+y} -then : + if ${ac_cv_search_af_is_double+:} false; then : break fi done -if test ${ac_cv_search_af_is_double+y} -then : +if ${ac_cv_search_af_is_double+:} false; then : -else case e in #( - e) ac_cv_search_af_is_double=no ;; -esac +else + ac_cv_search_af_is_double=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -printf "%s\n" "$ac_cv_search_af_is_double" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +$as_echo "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -printf %s "checking for library containing af_is_double... " >&6; } -if test ${ac_cv_search_af_is_double+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +$as_echo_n "checking for library containing af_is_double... " >&6; } +if ${ac_cv_search_af_is_double+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int af_is_double (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char af_is_double (); int -main (void) +main () { -return conftest::af_is_double (); +return af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_af_is_double+y} -then : + if ${ac_cv_search_af_is_double+:} false; then : break fi done -if test ${ac_cv_search_af_is_double+y} -then : +if ${ac_cv_search_af_is_double+:} false; then : -else case e in #( - e) ac_cv_search_af_is_double=no ;; -esac +else + ac_cv_search_af_is_double=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -printf "%s\n" "$ac_cv_search_af_is_double" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +$as_echo "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -10107,141 +9369,133 @@ fi fi + if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_ARRAYFIRE 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_ARRAYFIRE 1" >>confdefs.h __PLUMED_HAS_ARRAYFIRE=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&2;} fi found=ko __PLUMED_HAS_ARRAYFIRE_CUDA=no - ac_fn_cxx_check_header_compile "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" -if test "x$ac_cv_header_arrayfire_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" +if test "x$ac_cv_header_arrayfire_h" = xyes; then : if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -printf %s "checking for library containing af_is_double... " >&6; } -if test ${ac_cv_search_af_is_double+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +$as_echo_n "checking for library containing af_is_double... " >&6; } +if ${ac_cv_search_af_is_double+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int af_is_double (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char af_is_double (); int -main (void) +main () { -return conftest::af_is_double (); +return af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' afcuda -do +for ac_lib in '' afcuda; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_af_is_double+y} -then : + if ${ac_cv_search_af_is_double+:} false; then : break fi done -if test ${ac_cv_search_af_is_double+y} -then : +if ${ac_cv_search_af_is_double+:} false; then : -else case e in #( - e) ac_cv_search_af_is_double=no ;; -esac +else + ac_cv_search_af_is_double=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -printf "%s\n" "$ac_cv_search_af_is_double" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +$as_echo "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -printf %s "checking for library containing af_is_double... " >&6; } -if test ${ac_cv_search_af_is_double+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +$as_echo_n "checking for library containing af_is_double... " >&6; } +if ${ac_cv_search_af_is_double+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int af_is_double (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char af_is_double (); int -main (void) +main () { -return conftest::af_is_double (); +return af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_af_is_double+y} -then : + if ${ac_cv_search_af_is_double+:} false; then : break fi done -if test ${ac_cv_search_af_is_double+y} -then : +if ${ac_cv_search_af_is_double+:} false; then : -else case e in #( - e) ac_cv_search_af_is_double=no ;; -esac +else + ac_cv_search_af_is_double=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -printf "%s\n" "$ac_cv_search_af_is_double" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +$as_echo "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -10251,13 +9505,14 @@ fi fi + if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_ARRAYFIRE_CUDA 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_ARRAYFIRE_CUDA 1" >>confdefs.h __PLUMED_HAS_ARRAYFIRE_CUDA=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE_CUDA" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE_CUDA" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE_CUDA" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE_CUDA" >&2;} fi fi @@ -10265,129 +9520,120 @@ if test "$af_cpu" = true ; then found=ko __PLUMED_HAS_ARRAYFIRE=no - ac_fn_cxx_check_header_compile "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" -if test "x$ac_cv_header_arrayfire_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "arrayfire.h" "ac_cv_header_arrayfire_h" "$ac_includes_default" +if test "x$ac_cv_header_arrayfire_h" = xyes; then : if test "${libsearch}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -printf %s "checking for library containing af_is_double... " >&6; } -if test ${ac_cv_search_af_is_double+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +$as_echo_n "checking for library containing af_is_double... " >&6; } +if ${ac_cv_search_af_is_double+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int af_is_double (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char af_is_double (); int -main (void) +main () { -return conftest::af_is_double (); +return af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' afcpu -do +for ac_lib in '' afcpu; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_af_is_double+y} -then : + if ${ac_cv_search_af_is_double+:} false; then : break fi done -if test ${ac_cv_search_af_is_double+y} -then : +if ${ac_cv_search_af_is_double+:} false; then : -else case e in #( - e) ac_cv_search_af_is_double=no ;; -esac +else + ac_cv_search_af_is_double=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -printf "%s\n" "$ac_cv_search_af_is_double" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +$as_echo "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 -printf %s "checking for library containing af_is_double... " >&6; } -if test ${ac_cv_search_af_is_double+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing af_is_double" >&5 +$as_echo_n "checking for library containing af_is_double... " >&6; } +if ${ac_cv_search_af_is_double+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int af_is_double (); -} +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char af_is_double (); int -main (void) +main () { -return conftest::af_is_double (); +return af_is_double (); ; return 0; } _ACEOF -for ac_lib in '' -do +for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_cxx_try_link "$LINENO" -then : + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_af_is_double=$ac_res fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test ${ac_cv_search_af_is_double+y} -then : + if ${ac_cv_search_af_is_double+:} false; then : break fi done -if test ${ac_cv_search_af_is_double+y} -then : +if ${ac_cv_search_af_is_double+:} false; then : -else case e in #( - e) ac_cv_search_af_is_double=no ;; -esac +else + ac_cv_search_af_is_double=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 -printf "%s\n" "$ac_cv_search_af_is_double" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_af_is_double" >&5 +$as_echo "$ac_cv_search_af_is_double" >&6; } ac_res=$ac_cv_search_af_is_double -if test "$ac_res" != no -then : +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" found=ok fi @@ -10397,13 +9643,14 @@ fi fi + if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_ARRAYFIRE 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_ARRAYFIRE 1" >>confdefs.h __PLUMED_HAS_ARRAYFIRE=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_ARRAYFIRE" >&2;} fi fi @@ -10419,52 +9666,48 @@ if test $libtorch = true ; then save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wl,--no-as-needed" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wl,--no-as-needed" >&5 -printf %s "checking whether $CXX accepts -Wl,--no-as-needed... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -Wl,--no-as-needed" >&5 +$as_echo_n "checking whether $CXX accepts -Wl,--no-as-needed... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 -printf "%s\n" "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not linking" >&5 +$as_echo "not linking" >&6; }; CXXFLAGS="$save_CXXFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" - ;; -esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CXXFLAGS="$save_CXXFLAGS" + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext LDSHARED="$LDSHARED -Wl,--no-as-needed " @@ -10493,8 +9736,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # check without libraries - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libtorch_cuda without extra libs" >&5 -printf %s "checking libtorch_cuda without extra libs... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking libtorch_cuda without extra libs" >&5 +$as_echo_n "checking libtorch_cuda without extra libs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10511,24 +9754,22 @@ printf %s "checking libtorch_cuda without extra libs... " >&6; } } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$found" = "ko" ; then if test "$multiple" = "yes" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libtorch_cuda with $all_LIBS" >&5 -printf %s "checking libtorch_cuda with $all_LIBS... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking libtorch_cuda with $all_LIBS" >&5 +$as_echo_n "checking libtorch_cuda with $all_LIBS... " >&6; } LIBS="$all_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10546,24 +9787,22 @@ printf %s "checking libtorch_cuda with $all_LIBS... " >&6; } } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext else for testlib in $testlibs do - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libtorch_cuda with -l$testlib" >&5 -printf %s "checking libtorch_cuda with -l$testlib... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking libtorch_cuda with -l$testlib" >&5 +$as_echo_n "checking libtorch_cuda with -l$testlib... " >&6; } LIBS="-l$testlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10581,18 +9820,16 @@ printf %s "checking libtorch_cuda with -l$testlib... " >&6; } } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $found = ok ; then break @@ -10603,12 +9840,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ fi if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_LIBTORCH 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_LIBTORCH 1" >>confdefs.h __PLUMED_HAS_LIBTORCH=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&2;} LIBS="$save_LIBS" fi @@ -10639,8 +9876,8 @@ printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&2;} fi # check without libraries - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libtorch_cpu without extra libs" >&5 -printf %s "checking libtorch_cpu without extra libs... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking libtorch_cpu without extra libs" >&5 +$as_echo_n "checking libtorch_cpu without extra libs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10653,24 +9890,22 @@ printf %s "checking libtorch_cpu without extra libs... " >&6; } } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$found" = "ko" ; then if test "$multiple" = "yes" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libtorch_cpu with $all_LIBS" >&5 -printf %s "checking libtorch_cpu with $all_LIBS... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking libtorch_cpu with $all_LIBS" >&5 +$as_echo_n "checking libtorch_cpu with $all_LIBS... " >&6; } LIBS="$all_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10684,24 +9919,22 @@ printf %s "checking libtorch_cpu with $all_LIBS... " >&6; } } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext else for testlib in $testlibs do - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libtorch_cpu with -l$testlib" >&5 -printf %s "checking libtorch_cpu with -l$testlib... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking libtorch_cpu with -l$testlib" >&5 +$as_echo_n "checking libtorch_cpu with -l$testlib... " >&6; } LIBS="-l$testlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10715,18 +9948,16 @@ printf %s "checking libtorch_cpu with -l$testlib... " >&6; } } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $found = ok ; then break @@ -10737,12 +9968,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ fi if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_LIBTORCH 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_LIBTORCH 1" >>confdefs.h __PLUMED_HAS_LIBTORCH=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_LIBTORCH" >&2;} LIBS="$save_LIBS" fi @@ -10774,8 +10005,8 @@ if test $metatensor = true ; then fi # check without libraries - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking metatensor without extra libs" >&5 -printf %s "checking metatensor without extra libs... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking metatensor without extra libs" >&5 +$as_echo_n "checking metatensor without extra libs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10804,24 +10035,22 @@ printf %s "checking metatensor without extra libs... " >&6; } } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$found" = "ko" ; then if test "$multiple" = "yes" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking metatensor with $all_LIBS" >&5 -printf %s "checking metatensor with $all_LIBS... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking metatensor with $all_LIBS" >&5 +$as_echo_n "checking metatensor with $all_LIBS... " >&6; } LIBS="$all_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10851,24 +10080,22 @@ printf %s "checking metatensor with $all_LIBS... " >&6; } } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext else for testlib in $testlibs do - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking metatensor with -l$testlib" >&5 -printf %s "checking metatensor with -l$testlib... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking metatensor with -l$testlib" >&5 +$as_echo_n "checking metatensor with -l$testlib... " >&6; } LIBS="-l$testlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10898,18 +10125,16 @@ printf %s "checking metatensor with -l$testlib... " >&6; } } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : found=ok - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $found = ok ; then break @@ -10920,12 +10145,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ fi if test $found = ok ; then - printf "%s\n" "#define __PLUMED_HAS_METATENSOR 1" >>confdefs.h + $as_echo "#define __PLUMED_HAS_METATENSOR 1" >>confdefs.h __PLUMED_HAS_METATENSOR=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_METATENSOR" >&5 -printf "%s\n" "$as_me: WARNING: cannot enable __PLUMED_HAS_METATENSOR" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable __PLUMED_HAS_METATENSOR" >&5 +$as_echo "$as_me: WARNING: cannot enable __PLUMED_HAS_METATENSOR" >&2;} LIBS="$save_LIBS" fi @@ -10933,9 +10158,9 @@ fi # in non-debug mode, add -DNDEBUG if test "$debug" = false ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Release mode, adding -DNDEBUG" >&5 -printf "%s\n" "$as_me: Release mode, adding -DNDEBUG" >&6;} - printf "%s\n" "#define NDEBUG 1" >>confdefs.h + { $as_echo "$as_me:${as_lineno-$LINENO}: Release mode, adding -DNDEBUG" >&5 +$as_echo "$as_me: Release mode, adding -DNDEBUG" >&6;} + $as_echo "#define NDEBUG 1" >>confdefs.h fi @@ -10944,16 +10169,16 @@ fi # also take note that we are using this to relax `make nmcheck` use_debug_glibcxx=no if test "$debug_glibcxx" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Check boundaries, adding -D_GLIBCXX_DEBUG" >&5 -printf "%s\n" "$as_me: Check boundaries, adding -D_GLIBCXX_DEBUG" >&6;} - printf "%s\n" "#define _GLIBCXX_DEBUG 1" >>confdefs.h + { $as_echo "$as_me:${as_lineno-$LINENO}: Check boundaries, adding -D_GLIBCXX_DEBUG" >&5 +$as_echo "$as_me: Check boundaries, adding -D_GLIBCXX_DEBUG" >&6;} + $as_echo "#define _GLIBCXX_DEBUG 1" >>confdefs.h use_debug_glibcxx=yes fi # this is necessary in many MPI implementations # I leave it by default, since it seems harmless -printf "%s\n" "#define _REENTRANT 1" >>confdefs.h +$as_echo "#define _REENTRANT 1" >>confdefs.h #### Options for dynamic library to work properly #### @@ -10968,116 +10193,112 @@ printf "%s\n" "#define _REENTRANT 1" >>confdefs.h if test "$shared" = true ; then case `(uname)` in (Darwin) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: *** Special settings for dynamic libraries on OSX ***" >&5 -printf "%s\n" "$as_me: *** Special settings for dynamic libraries on OSX ***" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Dynamic library extension is 'dylib'" >&5 -printf "%s\n" "$as_me: Dynamic library extension is 'dylib'" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: LDSHARED needs special flags" >&5 -printf "%s\n" "$as_me: LDSHARED needs special flags" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: *** Special settings for dynamic libraries on OSX ***" >&5 +$as_echo "$as_me: *** Special settings for dynamic libraries on OSX ***" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Dynamic library extension is 'dylib'" >&5 +$as_echo "$as_me: Dynamic library extension is 'dylib'" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: LDSHARED needs special flags" >&5 +$as_echo "$as_me: LDSHARED needs special flags" >&6;} SOEXT=dylib LDSHARED="$LDSHARED -dynamiclib -Wl,-headerpad_max_install_names" if test "$rpath" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Switching off rpath on OSX" >&5 -printf "%s\n" "$as_me: Switching off rpath on OSX" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Switching off rpath on OSX" >&5 +$as_echo "$as_me: Switching off rpath on OSX" >&6;} rpath=false fi ;; (Linux) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: *** Special settings for dynamic libraries on Linux ***" >&5 -printf "%s\n" "$as_me: *** Special settings for dynamic libraries on Linux ***" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Dynamic library extension is 'so'" >&5 -printf "%s\n" "$as_me: Dynamic library extension is 'so'" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: LDSHARED and LDFLAGS need special flags" >&5 -printf "%s\n" "$as_me: LDSHARED and LDFLAGS need special flags" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: *** Special settings for dynamic libraries on Linux ***" >&5 +$as_echo "$as_me: *** Special settings for dynamic libraries on Linux ***" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Dynamic library extension is 'so'" >&5 +$as_echo "$as_me: Dynamic library extension is 'so'" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: LDSHARED and LDFLAGS need special flags" >&5 +$as_echo "$as_me: LDSHARED and LDFLAGS need special flags" >&6;} SOEXT=so LDSHARED="$LDSHARED -shared" save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -rdynamic" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether LDFLAGS can contain -rdynamic" >&5 -printf %s "checking whether LDFLAGS can contain -rdynamic... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether LDFLAGS can contain -rdynamic" >&5 +$as_echo_n "checking whether LDFLAGS can contain -rdynamic... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; LDFLAGS="$save_LDFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; LDFLAGS="$save_LDFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$bsymbolic" = true ; then save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -Wl,-Bsymbolic" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether LDFLAGS can contain -Wl,-Bsymbolic" >&5 -printf %s "checking whether LDFLAGS can contain -Wl,-Bsymbolic... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether LDFLAGS can contain -Wl,-Bsymbolic" >&5 +$as_echo_n "checking whether LDFLAGS can contain -Wl,-Bsymbolic... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; LDFLAGS="$save_LDFLAGS" ;; -esac +if ac_fn_cxx_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; LDFLAGS="$save_LDFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ;; (*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: *** Dynamic library only enabled on OSX and Linux ***" >&5 -printf "%s\n" "$as_me: *** Dynamic library only enabled on OSX and Linux ***" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: *** Dynamic library only enabled on OSX and Linux ***" >&5 +$as_echo "$as_me: *** Dynamic library only enabled on OSX and Linux ***" >&6;} esac fi # check linking of runtime library if test -n "$SOEXT" then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Using LDSHARED='$LDSHARED'" >&5 -printf "%s\n" "$as_me: Using LDSHARED='$LDSHARED'" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Using LDFLAGS='$LDFLAGS'" >&5 -printf "%s\n" "$as_me: Using LDFLAGS='$LDFLAGS'" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether LDSHARED can create dynamic libraries" >&5 -printf %s "checking whether LDSHARED can create dynamic libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: Using LDSHARED='$LDSHARED'" >&5 +$as_echo "$as_me: Using LDSHARED='$LDSHARED'" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Using LDFLAGS='$LDFLAGS'" >&5 +$as_echo "$as_me: Using LDFLAGS='$LDFLAGS'" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether LDSHARED can create dynamic libraries" >&5 +$as_echo_n "checking whether LDSHARED can create dynamic libraries... " >&6; } rm -f conftest.* echo "void f(void){ return;}" > conftest.cpp $CXX $CXXFLAGS $CPPFLAGS -c conftest.cpp 1>/dev/null 2>/dev/null $LDSHARED $LDFLAGS conftest.o -o conftest.$SOEXT 1>/dev/null 2>/dev/null if test -f conftest.$SOEXT then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: dynamic library will be disabled" >&5 -printf "%s\n" "$as_me: WARNING: dynamic library will be disabled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dynamic library will be disabled" >&5 +$as_echo "$as_me: WARNING: dynamic library will be disabled" >&2;} SOEXT= fi if test -n "$SOEXT" && test "$rpath" = true ; then @@ -11085,44 +10306,38 @@ printf "%s\n" "$as_me: WARNING: dynamic library will be disabled" >&2;} readelf="" # Extract the first word of "readelf", so it can be a program name with args. set dummy readelf; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_readelf+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$readelf"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_readelf+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$readelf"; then ac_cv_prog_readelf="$readelf" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_readelf="found" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi ;; -esac +fi fi readelf=$ac_cv_prog_readelf if test -n "$readelf"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $readelf" >&5 -printf "%s\n" "$readelf" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $readelf" >&5 +$as_echo "$readelf" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -11132,20 +10347,20 @@ fi if readelf -d conftest.$SOEXT | grep RPATH | grep -q /some/random/dir ; then LD_MAIN_RUNPATH="-Wl,-R -Wl,\"$libdir:$LIBRARY_PATH\"" LDSHARED="$LDSHARED $LD_MAIN_RUNPATH" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling RPATH" >&5 -printf "%s\n" "$as_me: Enabling RPATH" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling RPATH" >&5 +$as_echo "$as_me: Enabling RPATH" >&6;} elif readelf -d conftest.$SOEXT | grep RUNPATH | grep -q /some/random/dir ; then LD_MAIN_RUNPATH="-Wl,-R -Wl,\"$libdir:$LIBRARY_PATH\"" LDSHARED="$LDSHARED $LD_MAIN_RUNPATH" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling RUNPATH" >&5 -printf "%s\n" "$as_me: Enabling RUNPATH" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling RUNPATH" >&5 +$as_echo "$as_me: Enabling RUNPATH" >&6;} else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -R option seems not working, disabling rpath" >&5 -printf "%s\n" "$as_me: WARNING: -R option seems not working, disabling rpath" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: -R option seems not working, disabling rpath" >&5 +$as_echo "$as_me: WARNING: -R option seems not working, disabling rpath" >&2;} fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: readelf not available, no way to set rpath" >&5 -printf "%s\n" "$as_me: WARNING: readelf not available, no way to set rpath" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: readelf not available, no way to set rpath" >&5 +$as_echo "$as_me: WARNING: readelf not available, no way to set rpath" >&2;} fi fi rm -f conftest.* @@ -11162,44 +10377,38 @@ make_doc=yes ### Look for doxygen # Extract the first word of "doxygen", so it can be a program name with args. set dummy doxygen; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_doxygen+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$doxygen"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_doxygen+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$doxygen"; then ac_cv_prog_doxygen="$doxygen" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_doxygen="found" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi ;; -esac +fi fi doxygen=$ac_cv_prog_doxygen if test -n "$doxygen"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $doxygen" >&5 -printf "%s\n" "$doxygen" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $doxygen" >&5 +$as_echo "$doxygen" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -11208,60 +10417,54 @@ then doxygen_version=`doxygen --version | awk 'BEGIN{FS="."}{if($1>1 || ($1==1 && $2>=8)) print "ok"}'` if test "$doxygen_version" = ok then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Doxygen version is fine" >&5 -printf "%s\n" "$as_me: Doxygen version is fine" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Doxygen version is fine" >&5 +$as_echo "$as_me: Doxygen version is fine" >&6;} else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Doxygen version is <1.8" >&5 -printf "%s\n" "$as_me: WARNING: Doxygen version is <1.8" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Doxygen version is <1.8" >&5 +$as_echo "$as_me: WARNING: Doxygen version is <1.8" >&2;} make_doc=no fi # Extract the first word of "dot", so it can be a program name with args. set dummy dot; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_dot+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$dot"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_dot+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$dot"; then ac_cv_prog_dot="$dot" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_dot="found" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS -fi ;; -esac +fi fi dot=$ac_cv_prog_dot if test -n "$dot"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dot" >&5 -printf "%s\n" "$dot" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dot" >&5 +$as_echo "$dot" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "$dot" != found then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You will not be able to see diagrams in the manual" >&5 -printf "%s\n" "$as_me: WARNING: You will not be able to see diagrams in the manual" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You will not be able to see diagrams in the manual" >&5 +$as_echo "$as_me: WARNING: You will not be able to see diagrams in the manual" >&2;} fi else make_doc=no @@ -11270,37 +10473,36 @@ fi if test "$make_doc" = yes then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Manuals will be generated" >&5 -printf "%s\n" "$as_me: Manuals will be generated" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Manuals will be generated" >&5 +$as_echo "$as_me: Manuals will be generated" >&6;} else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Manuals will not be generated" >&5 -printf "%s\n" "$as_me: Manuals will not be generated" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Manuals will not be generated" >&5 +$as_echo "$as_me: Manuals will not be generated" >&6;} fi make_pdfdoc="" if test "$pdfdoc" = true && test "$make_doc" = yes then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: A PDF version of the manual will be generated" >&5 -printf "%s\n" "$as_me: A PDF version of the manual will be generated" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: A PDF version of the manual will be generated" >&5 +$as_echo "$as_me: A PDF version of the manual will be generated" >&6;} make_pdfdoc=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: A PDF version of the manual will not be generated" >&5 -printf "%s\n" "$as_me: A PDF version of the manual will not be generated" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: A PDF version of the manual will not be generated" >&5 +$as_echo "$as_me: A PDF version of the manual will not be generated" >&6;} make_pdfdoc=no fi program_can_run="" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can be run on this machine" >&5 -printf %s "checking whether a program can be run on this machine... " >&6; } -if test "$cross_compiling" = yes -then : - program_can_run=no ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (cross compiling)" >&5 -printf "%s\n" "no (cross compiling)" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can be run on this machine" >&5 +$as_echo_n "checking whether a program can be run on this machine... " >&6; } +if test "$cross_compiling" = yes; then : + program_can_run=no ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (cross compiling)" >&5 +$as_echo "no (cross compiling)" >&6; } -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __PLUMED_HAS_MPI @@ -11320,33 +10522,29 @@ int main(int argc,char*argv[]){ } _ACEOF -if ac_fn_cxx_try_run "$LINENO" -then : - program_can_run=yes ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) program_can_run=no ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; -esac +if ac_fn_cxx_try_run "$LINENO"; then : + program_can_run=yes ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + program_can_run=no ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac + conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $mpi_found = ok ; then program_can_run_mpi="" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program compiled with mpi can be run on this machine" >&5 -printf %s "checking whether a program compiled with mpi can be run on this machine... " >&6; } -if test "$cross_compiling" = yes -then : - program_can_run_mpi=no ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (cross compiling)" >&5 -printf "%s\n" "no (cross compiling)" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program compiled with mpi can be run on this machine" >&5 +$as_echo_n "checking whether a program compiled with mpi can be run on this machine... " >&6; } +if test "$cross_compiling" = yes; then : + program_can_run_mpi=no ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (cross compiling)" >&5 +$as_echo "no (cross compiling)" >&6; } -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __PLUMED_HAS_MPI @@ -11362,29 +10560,26 @@ int main(int argc,char*argv[]){ } _ACEOF -if ac_fn_cxx_try_run "$LINENO" -then : - program_can_run_mpi=yes ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) program_can_run_mpi=no ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; -esac +if ac_fn_cxx_try_run "$LINENO"; then : + program_can_run_mpi=yes ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + program_can_run_mpi=no ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac + conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi if test $mpi_found = ok ; then if test -n "$MPIEXEC" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Regtest suite will use $MPIEXEC command to run MPI tests" >&5 -printf "%s\n" "$as_me: Regtest suite will use $MPIEXEC command to run MPI tests" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Regtest suite will use $MPIEXEC command to run MPI tests" >&5 +$as_echo "$as_me: Regtest suite will use $MPIEXEC command to run MPI tests" >&6;} else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Regtest suite will use env var PLUMED_MPIRUN to run MPI tests (default: mpirun)" >&5 -printf "%s\n" "$as_me: Regtest suite will use env var PLUMED_MPIRUN to run MPI tests (default: mpirun)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Regtest suite will use env var PLUMED_MPIRUN to run MPI tests (default: mpirun)" >&5 +$as_echo "$as_me: Regtest suite will use env var PLUMED_MPIRUN to run MPI tests (default: mpirun)" >&6;} fi fi @@ -11397,22 +10592,22 @@ fi if test "$absolute_soname" = true ; then if test "$SOEXT" = "dylib" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --enable-absolute-soname has no effect on OSX" >&5 -printf "%s\n" "$as_me: WARNING: --enable-absolute-soname has no effect on OSX" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-absolute-soname has no effect on OSX" >&5 +$as_echo "$as_me: WARNING: --enable-absolute-soname has no effect on OSX" >&2;} else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: enabling absolute soname. Full path will be hardcoded in plumed library soname" >&5 -printf "%s\n" "$as_me: enabling absolute soname. Full path will be hardcoded in plumed library soname" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: enabling absolute soname. Full path will be hardcoded in plumed library soname" >&5 +$as_echo "$as_me: enabling absolute soname. Full path will be hardcoded in plumed library soname" >&6;} use_absolute_soname=yes fi fi if test "$absolute_install_name" = false ; then if test "$SOEXT" = "so" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --disable-absolute-install-name has no effect on Linux" >&5 -printf "%s\n" "$as_me: WARNING: --disable-absolute-install-name has no effect on Linux" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --disable-absolute-install-name has no effect on Linux" >&5 +$as_echo "$as_me: WARNING: --disable-absolute-install-name has no effect on Linux" >&2;} else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: enabling relative install_name. You will have to set DYLD_LIBRARY_PATH yor plumed libraries to be found at runtime" >&5 -printf "%s\n" "$as_me: enabling relative install_name. You will have to set DYLD_LIBRARY_PATH yor plumed libraries to be found at runtime" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: enabling relative install_name. You will have to set DYLD_LIBRARY_PATH yor plumed libraries to be found at runtime" >&5 +$as_echo "$as_me: enabling relative install_name. You will have to set DYLD_LIBRARY_PATH yor plumed libraries to be found at runtime" >&6;} use_absolute_soname=no fi fi @@ -11429,17 +10624,17 @@ else fi #### This further tests are required to allow linking with non c++ compiler -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: PLUMED seems to be configured properly!" >&5 -printf "%s\n" "$as_me: PLUMED seems to be configured properly!" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **************************" >&5 -printf "%s\n" "$as_me: **************************" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: PLUMED seems to be configured properly!" >&5 +$as_echo "$as_me: PLUMED seems to be configured properly!" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: **************************" >&5 +$as_echo "$as_me: **************************" >&6;} LD_RO= if test "$ld_r" = true ; then for test_LD_RO in "$($CXX --print-prog-name=ld) -r -o" "$CXX -Wl,-r -o" "ld -r -o" do - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ objects can be grouped with $test_LD_RO" >&5 -printf %s "checking whether C++ objects can be grouped with $test_LD_RO... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ objects can be grouped with $test_LD_RO" >&5 +$as_echo_n "checking whether C++ objects can be grouped with $test_LD_RO... " >&6; } rm -f conftest* @@ -11465,13 +10660,13 @@ EOF if test -f conftest.exe then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } LD_RO="$test_LD_RO" break else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi done @@ -11482,8 +10677,8 @@ AR_CR= if test "$ar_cr" = true ; then for test_AR_CR in "$($CXX --print-prog-name=ar) cr" "ar cr" do - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether static libraries can be created with $test_AR_CR" >&5 -printf %s "checking whether static libraries can be created with $test_AR_CR... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether static libraries can be created with $test_AR_CR" >&5 +$as_echo_n "checking whether static libraries can be created with $test_AR_CR... " >&6; } rm -f conftest* @@ -11509,13 +10704,13 @@ EOF if test -f conftest.exe then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } AR_CR="$test_AR_CR" break else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi done @@ -11526,15 +10721,15 @@ make_static_archive=no if test "${static_archive}" = true ; then if test -z "$LD_RO" || test -z "$AR_CR" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: no way to create a static archive if ld -ro or ar cr do not work" >&5 -printf "%s\n" "$as_me: WARNING: no way to create a static archive if ld -ro or ar cr do not work" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no way to create a static archive if ld -ro or ar cr do not work" >&5 +$as_echo "$as_me: WARNING: no way to create a static archive if ld -ro or ar cr do not work" >&2;} static_archive=false fi fi if test "${static_archive}" = true ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether static-object constructors can be linked from a static archive" >&5 -printf %s "checking whether static-object constructors can be linked from a static archive... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether static-object constructors can be linked from a static archive" >&5 +$as_echo_n "checking whether static-object constructors can be linked from a static archive... " >&6; } magic_token=c1bc476d093a3a5c67b4530e6c54c633593fe9aa rm -f conftest-* @@ -11566,21 +10761,21 @@ EOF # $CXX $CXXFLAGS -o conftest.exe conftest-main.o conftest-both.a 1> /dev/null 2> /dev/null if grep -q $magic_token ./conftest.exe ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } make_static_archive=yes else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi fi if test "${static_patch}" = true ; then -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: I will now check if C++ objects can be linked by C/Fortran compilers" >&5 -printf "%s\n" "$as_me: I will now check if C++ objects can be linked by C/Fortran compilers" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: This is relevant if you want to use plumed patch --static on a non-C++ code" >&5 -printf "%s\n" "$as_me: This is relevant if you want to use plumed patch --static on a non-C++ code" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: I will now check if C++ objects can be linked by C/Fortran compilers" >&5 +$as_echo "$as_me: I will now check if C++ objects can be linked by C/Fortran compilers" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: This is relevant if you want to use plumed patch --static on a non-C++ code" >&5 +$as_echo "$as_me: This is relevant if you want to use plumed patch --static on a non-C++ code" >&6;} for compiler in CC FC do @@ -11624,37 +10819,37 @@ EOF for testlib in "" $testlibs ; do comment= test -n "$testlib" && comment=" with library $testlib" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $name can link a C++ object$comment" >&5 -printf %s "checking whether $name can link a C++ object$comment... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $name can link a C++ object$comment" >&5 +$as_echo_n "checking whether $name can link a C++ object$comment... " >&6; } $compexe conftest.o conftest-main.o $LDFLAGS $testlib $LIBS -o conftest.exe 1>/dev/null 2>/dev/null if test -f conftest.exe then found=yes - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } LIBS="$testlib $LIBS" break else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi done if test -z "$found" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You might have problems linking $name programs." >&5 -printf "%s\n" "$as_me: WARNING: You might have problems linking $name programs." >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please add c++ library to LIBS" >&5 -printf "%s\n" "$as_me: WARNING: Please add c++ library to LIBS" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You might have problems linking $name programs." >&5 +$as_echo "$as_me: WARNING: You might have problems linking $name programs." >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please add c++ library to LIBS" >&5 +$as_echo "$as_me: WARNING: Please add c++ library to LIBS" >&2;} fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $compiler compiler not configured" >&5 -printf "%s\n" "$as_me: $compiler compiler not configured" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: $compiler compiler not configured" >&5 +$as_echo "$as_me: $compiler compiler not configured" >&6;} fi rm -f conftest.* conftest-main.* done else -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Static patching is disabled, thus tests required for static patching will be skipped" >&5 -printf "%s\n" "$as_me: Static patching is disabled, thus tests required for static patching will be skipped" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: Static patching is disabled, thus tests required for static patching will be skipped" >&5 +$as_echo "$as_me: Static patching is disabled, thus tests required for static patching will be skipped" >&6;} fi if test "$prefix" = NONE @@ -11668,13 +10863,12 @@ for ac_prog in pkg-config do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_pkgconfig_bin+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $pkgconfig_bin in +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_pkgconfig_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $pkgconfig_bin in [\\/]* | ?:[\\/]*) ac_cv_path_pkgconfig_bin="$pkgconfig_bin" # Let the user override the test with a path. ;; @@ -11683,15 +10877,11 @@ else case e in #( for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_pkgconfig_bin="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_pkgconfig_bin="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -11699,16 +10889,15 @@ done IFS=$as_save_IFS ;; -esac ;; esac fi pkgconfig_bin=$ac_cv_path_pkgconfig_bin if test -n "$pkgconfig_bin"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pkgconfig_bin" >&5 -printf "%s\n" "$pkgconfig_bin" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pkgconfig_bin" >&5 +$as_echo "$pkgconfig_bin" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -11719,25 +10908,25 @@ done if test -z "$BASH_COMPLETION_DIR" && test -n "$pkgconfig_bin"; then if test "$prefix" = "$(pkg-config --variable=prefix bash-completion 2>/dev/null)" then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: bash-completion is installed on the same prefix where plumed will be installed" >&5 -printf "%s\n" "$as_me: bash-completion is installed on the same prefix where plumed will be installed" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: bash-completion is installed on the same prefix where plumed will be installed" >&5 +$as_echo "$as_me: bash-completion is installed on the same prefix where plumed will be installed" >&6;} if pkg-config --variable=completionsdir bash-completion 2>/dev/null >/dev/null ; then BASH_COMPLETION_DIR="$(pkg-config --variable=completionsdir bash-completion 2>/dev/null)" fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: bash-completion is not installed or it is installed on a different prefix" >&5 -printf "%s\n" "$as_me: bash-completion is not installed or it is installed on a different prefix" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: bash-completion is not installed or it is installed on a different prefix" >&5 +$as_echo "$as_me: bash-completion is not installed or it is installed on a different prefix" >&6;} pkgconfig_bin="" fi fi if test -n "$BASH_COMPLETION_DIR" then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: bash completion for plumed will be installed in $BASH_COMPLETION_DIR" >&5 -printf "%s\n" "$as_me: bash completion for plumed will be installed in $BASH_COMPLETION_DIR" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: bash completion for plumed will be installed in $BASH_COMPLETION_DIR" >&5 +$as_echo "$as_me: bash completion for plumed will be installed in $BASH_COMPLETION_DIR" >&6;} else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: bash completion for plumed will not be installed" >&5 -printf "%s\n" "$as_me: bash completion for plumed will not be installed" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: bash completion for plumed will not be installed" >&5 +$as_echo "$as_me: bash completion for plumed will not be installed" >&6;} fi @@ -11748,9 +10937,9 @@ test "$program_prefix" != NONE && test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. -# By default was 's,x,x', remove it if useless. +# By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` @@ -11758,9 +10947,13 @@ program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_scrip program_transform_name_sh=$(echo "${program_transform_name}" | sed 's:\$\$:$:g') program_name=$(echo plumed | sed "$program_transform_name_sh") -printf "%s\n" "#define __PLUMED_PROGRAM_NAME \"$program_name\"" >>confdefs.h +cat >>confdefs.h <<_ACEOF +#define __PLUMED_PROGRAM_NAME "$program_name" +_ACEOF -printf "%s\n" "#define __PLUMED_SOEXT \"$SOEXT\"" >>confdefs.h +cat >>confdefs.h <<_ACEOF +#define __PLUMED_SOEXT "$SOEXT" +_ACEOF if test "$(echo "$program_name" | tr 'A-Z' 'a-z')" != "$(echo "$program_name" | tr 'A-Z' 'a-z' | sed 's/wrapper$//')" ; then @@ -11776,79 +10969,79 @@ if test "$(echo "$program_name" | tr 'A-Z' 'a-z')" != "$(echo "$program_name" | as_fn_error $? "$program_name is not a valid program name (should not terminate with -config)" "$LINENO" 5 fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** PLUMED will be installed using the following paths:" >&5 -printf "%s\n" "$as_me: **** PLUMED will be installed using the following paths:" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** prefix: $prefix" >&5 -printf "%s\n" "$as_me: **** prefix: $prefix" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: **** PLUMED will be installed using the following paths:" >&5 +$as_echo "$as_me: **** PLUMED will be installed using the following paths:" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: **** prefix: $prefix" >&5 +$as_echo "$as_me: **** prefix: $prefix" >&6;} if test "$exec_prefix" = NONE ; then exec_prefix_='${prefix}' else exec_prefix_="${exec_prefix}" fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** exec_prefix: $exec_prefix_" >&5 -printf "%s\n" "$as_me: **** exec_prefix: $exec_prefix_" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** bindir: $bindir" >&5 -printf "%s\n" "$as_me: **** bindir: $bindir" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** libdir: $libdir" >&5 -printf "%s\n" "$as_me: **** libdir: $libdir" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** includedir: $includedir" >&5 -printf "%s\n" "$as_me: **** includedir: $includedir" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** datarootdir: $datarootdir" >&5 -printf "%s\n" "$as_me: **** datarootdir: $datarootdir" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** datadir: $datadir" >&5 -printf "%s\n" "$as_me: **** datadir: $datadir" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** docdir: ${datarootdir}/doc/$program_name" >&5 -printf "%s\n" "$as_me: **** docdir: ${datarootdir}/doc/$program_name" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** htmldir: $htmldir" >&5 -printf "%s\n" "$as_me: **** htmldir: $htmldir" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** Executable will be named $program_name" >&5 -printf "%s\n" "$as_me: **** Executable will be named $program_name" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** As of PLUMED 2.5, you cannot change paths anymore during \"make install\"" >&5 -printf "%s\n" "$as_me: **** As of PLUMED 2.5, you cannot change paths anymore during \"make install\"" >&6;} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** Please configure and make clean to change the prefix" >&5 -printf "%s\n" "$as_me: **** Please configure and make clean to change the prefix" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: **** exec_prefix: $exec_prefix_" >&5 +$as_echo "$as_me: **** exec_prefix: $exec_prefix_" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: **** bindir: $bindir" >&5 +$as_echo "$as_me: **** bindir: $bindir" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: **** libdir: $libdir" >&5 +$as_echo "$as_me: **** libdir: $libdir" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: **** includedir: $includedir" >&5 +$as_echo "$as_me: **** includedir: $includedir" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: **** datarootdir: $datarootdir" >&5 +$as_echo "$as_me: **** datarootdir: $datarootdir" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: **** datadir: $datadir" >&5 +$as_echo "$as_me: **** datadir: $datadir" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: **** docdir: ${datarootdir}/doc/$program_name" >&5 +$as_echo "$as_me: **** docdir: ${datarootdir}/doc/$program_name" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: **** htmldir: $htmldir" >&5 +$as_echo "$as_me: **** htmldir: $htmldir" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: **** Executable will be named $program_name" >&5 +$as_echo "$as_me: **** Executable will be named $program_name" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: **** As of PLUMED 2.5, you cannot change paths anymore during \"make install\"" >&5 +$as_echo "$as_me: **** As of PLUMED 2.5, you cannot change paths anymore during \"make install\"" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: **** Please configure and make clean to change the prefix" >&5 +$as_echo "$as_me: **** Please configure and make clean to change the prefix" >&6;} if test -z "$BASH_COMPLETION_DIR" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: **** Bash completion for plumed will not be installed, please add the following two lines to your bashrc" >&5 -printf "%s\n" "$as_me: WARNING: **** Bash completion for plumed will not be installed, please add the following two lines to your bashrc" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: **** _$program_name() { eval \"\$($program_name --no-mpi completion 2>/dev/null)\";}" >&5 -printf "%s\n" "$as_me: WARNING: **** _$program_name() { eval \"\$($program_name --no-mpi completion 2>/dev/null)\";}" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: **** complete -F _$program_name -o default $program_name" >&5 -printf "%s\n" "$as_me: WARNING: **** complete -F _$program_name -o default $program_name" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: **** Bash completion for plumed will not be installed, please add the following two lines to your bashrc" >&5 +$as_echo "$as_me: WARNING: **** Bash completion for plumed will not be installed, please add the following two lines to your bashrc" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: **** _$program_name() { eval \"\$($program_name --no-mpi completion 2>/dev/null)\";}" >&5 +$as_echo "$as_me: WARNING: **** _$program_name() { eval \"\$($program_name --no-mpi completion 2>/dev/null)\";}" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: **** complete -F _$program_name -o default $program_name" >&5 +$as_echo "$as_me: WARNING: **** complete -F _$program_name -o default $program_name" >&2;} fi if test $mpi = true; then if test $mpi_found = ok; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** PLUMED will be compiled using MPI" >&5 -printf "%s\n" "$as_me: **** PLUMED will be compiled using MPI" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: **** PLUMED will be compiled using MPI" >&5 +$as_echo "$as_me: **** PLUMED will be compiled using MPI" >&6;} else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: **** PLUMED will NOT be compiled using MPI because MPI have not been found!" >&5 -printf "%s\n" "$as_me: WARNING: **** PLUMED will NOT be compiled using MPI because MPI have not been found!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: **** PLUMED will NOT be compiled using MPI because MPI have not been found!" >&5 +$as_echo "$as_me: WARNING: **** PLUMED will NOT be compiled using MPI because MPI have not been found!" >&2;} fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: **** PLUMED will be compiled without MPI" >&5 -printf "%s\n" "$as_me: **** PLUMED will be compiled without MPI" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: **** PLUMED will be compiled without MPI" >&5 +$as_echo "$as_me: **** PLUMED will be compiled without MPI" >&6;} fi if test $program_can_run = no ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: plumed executable will not run on this machine" >&5 -printf "%s\n" "$as_me: WARNING: plumed executable will not run on this machine" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: to patch an MD code use 'plumed-patch'" >&5 -printf "%s\n" "$as_me: WARNING: to patch an MD code use 'plumed-patch'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: plumed executable will not run on this machine" >&5 +$as_echo "$as_me: WARNING: plumed executable will not run on this machine" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: to patch an MD code use 'plumed-patch'" >&5 +$as_echo "$as_me: WARNING: to patch an MD code use 'plumed-patch'" >&2;} elif test $mpi_found = ok ; then if test $program_can_run_mpi = no ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: plumed executable will not run on this machine" >&5 -printf "%s\n" "$as_me: WARNING: plumed executable will not run on this machine" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unless you invoke it as 'plumed --no-mpi'" >&5 -printf "%s\n" "$as_me: WARNING: unless you invoke it as 'plumed --no-mpi'" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: all command line tools are thus available as 'plumed --no-mpi name-of-the-tool'" >&5 -printf "%s\n" "$as_me: WARNING: all command line tools are thus available as 'plumed --no-mpi name-of-the-tool'" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: e.g. 'plumed --no-mpi driver'" >&5 -printf "%s\n" "$as_me: WARNING: e.g. 'plumed --no-mpi driver'" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: to patch an MD code use 'plumed --no-mpi patch'" >&5 -printf "%s\n" "$as_me: WARNING: to patch an MD code use 'plumed --no-mpi patch'" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: (notice that MPI will be available anyway in the patched code)" >&5 -printf "%s\n" "$as_me: WARNING: (notice that MPI will be available anyway in the patched code)" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: plumed executable will not run on this machine" >&5 +$as_echo "$as_me: WARNING: plumed executable will not run on this machine" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unless you invoke it as 'plumed --no-mpi'" >&5 +$as_echo "$as_me: WARNING: unless you invoke it as 'plumed --no-mpi'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: all command line tools are thus available as 'plumed --no-mpi name-of-the-tool'" >&5 +$as_echo "$as_me: WARNING: all command line tools are thus available as 'plumed --no-mpi name-of-the-tool'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: e.g. 'plumed --no-mpi driver'" >&5 +$as_echo "$as_me: WARNING: e.g. 'plumed --no-mpi driver'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: to patch an MD code use 'plumed --no-mpi patch'" >&5 +$as_echo "$as_me: WARNING: to patch an MD code use 'plumed --no-mpi patch'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: (notice that MPI will be available anyway in the patched code)" >&5 +$as_echo "$as_me: WARNING: (notice that MPI will be available anyway in the patched code)" >&2;} fi fi @@ -11875,8 +11068,8 @@ cat >confcache <<\_ACEOF # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # -# 'ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF @@ -11892,8 +11085,8 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -11906,14 +11099,14 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # 'set' does not quote correctly, so add quotes: double-quote + # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) - # 'set' quotes correctly as required by POSIX, so do not add quotes. + # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | @@ -11923,15 +11116,15 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} /^ac_cv_env_/b end t clear :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else @@ -11945,8 +11138,8 @@ printf "%s\n" "$as_me: updating cache $cache_file" >&6;} fi fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -11977,7 +11170,9 @@ s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote -s/[][ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g s/\$/$$/g H :any @@ -11997,7 +11192,7 @@ U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" @@ -12013,8 +11208,8 @@ LTLIBOBJS=$ac_ltlibobjs ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL @@ -12037,65 +11232,63 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else case e in #( - e) case `(set -o) 2>/dev/null` in #( +else + case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; -esac ;; esac fi - -# Reset variables that may have inherited troublesome values from -# the environment. - -# IFS needs to be set, to space, tab, and newline, in precisely that order. -# (If _AS_PATH_WALK were called with IFS unset, it would have the -# side effect of setting IFS to empty, thus disabling word splitting.) -# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -IFS=" "" $as_nl" - -PS1='$ ' -PS2='> ' -PS4='+ ' - -# Ensure predictable behavior from utilities with locale-dependent output. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# We cannot yet rely on "unset" to work, but we need these variables -# to be unset--not just set to an empty or harmless value--now, to -# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct -# also avoids known problems related to "unset" and subshell syntax -# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). -for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH -do eval test \${$as_var+y} \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done - -# Ensure that fds 0, 1, and 2 are open. -if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi -if (exec 3>&2) ; then :; else exec 2>/dev/null; fi +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi # The user is always right. -if ${PATH_SEPARATOR+false} :; then +if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -12104,6 +11297,13 @@ if ${PATH_SEPARATOR+false} :; then fi +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -12112,27 +11312,43 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - test -r "$as_dir$0" && as_myself=$as_dir$0 && break + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as 'sh COMMAND' +# We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] @@ -12145,9 +11361,9 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - printf "%s\n" "$as_me: error: $2" >&2 + $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -12178,25 +11394,22 @@ as_fn_unset () { eval $1=; unset $1;} } as_unset=as_fn_unset - # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null -then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' -else case e in #( - e) as_fn_append () +else + as_fn_append () { eval $1=\$$1\$2 - } ;; -esac + } fi # as_fn_append # as_fn_arith ARG... @@ -12204,18 +11417,16 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null -then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else case e in #( - e) as_fn_arith () +else + as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } ;; -esac + } fi # as_fn_arith @@ -12242,7 +11453,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X/"$0" | +$as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -12264,10 +11475,6 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits - -# Determine whether it's possible to make 'echo' print without a newline. -# These variables are no longer used directly by Autoconf, but are AC_SUBSTed -# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -12281,12 +11488,6 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac -# For backward compatibility with old third-party macros, we provide -# the shell variables $as_echo and $as_echo_n. New code should use -# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. -as_echo='printf %s\n' -as_echo_n='printf %s' - rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -12298,9 +11499,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. - # In both cases, we have to default to 'cp -pR'. + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -12328,7 +11529,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -12337,7 +11538,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_dir" | +$as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -12381,12 +11582,10 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. -as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -as_tr_sh="eval sed '$as_sed_sh'" # deprecated +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 @@ -12402,7 +11601,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by PLUMED $as_me 2, which was -generated by GNU Autoconf 2.72. Invocation command line was +generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -12429,7 +11628,7 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -'$as_me' instantiates files and other configuration actions +\`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. @@ -12451,16 +11650,14 @@ $config_files Report bugs to the package provider." _ACEOF -ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` -ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config='$ac_cs_config_escaped' +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ PLUMED config.status 2 -configured by $0, generated by GNU Autoconf 2.72, +configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" -Copyright (C) 2023 Free Software Foundation, Inc. +Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -12497,28 +11694,28 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - printf "%s\n" "$ac_cs_version"; exit ;; + $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) - printf "%s\n" "$ac_cs_config"; exit ;; + $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) - printf "%s\n" "$ac_cs_usage"; exit ;; + $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) as_fn_error $? "unrecognized option: '$1' -Try '$0 --help' for more information." ;; + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; @@ -12539,7 +11736,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift - \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" @@ -12553,7 +11750,7 @@ exec 5>>config.log sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - printf "%s\n" "$ac_log" + $as_echo "$ac_log" } >&5 _ACEOF @@ -12570,7 +11767,7 @@ do "sourceme.sh") CONFIG_FILES="$CONFIG_FILES sourceme.sh" ;; "stamp-h") CONFIG_FILES="$CONFIG_FILES stamp-h" ;; - *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done @@ -12580,7 +11777,7 @@ done # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then - test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree @@ -12588,7 +11785,7 @@ fi # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to '$tmp'. +# after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= @@ -12612,7 +11809,7 @@ ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. -# This happens for instance with './config.status config.h'. +# This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then @@ -12778,7 +11975,7 @@ do esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -12800,33 +11997,33 @@ do -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain ':'. + # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done - # Let's still pretend it is 'configure' which instantiates (i.e., don't + # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` - printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -printf "%s\n" "$as_me: creating $ac_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) - ac_sed_conf_input=`printf "%s\n" "$configure_input" | + ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac @@ -12843,7 +12040,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$ac_file" | +$as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -12867,9 +12064,9 @@ printf "%s\n" X"$ac_file" | case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -12922,8 +12119,8 @@ ac_sed_dataroot=' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' @@ -12936,7 +12133,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 esac _ACEOF -# Neutralize VPATH when '$srcdir' = '.'. +# Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 @@ -12965,9 +12162,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 -printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" @@ -13019,9 +12216,8 @@ if test "$no_create" != yes; then $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi - From 4f9b9c4dc9523d700a7948b91b7b8b3add4c0d62 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Thu, 23 May 2024 14:22:31 +0200 Subject: [PATCH 28/32] Skip regtests on CI --- regtest/metatensor/rt-basic/config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/regtest/metatensor/rt-basic/config b/regtest/metatensor/rt-basic/config index 13056b660d..acec0ad7d9 100644 --- a/regtest/metatensor/rt-basic/config +++ b/regtest/metatensor/rt-basic/config @@ -4,3 +4,5 @@ type=driver # NOTE: to enable --debug-forces, also change the dtype of the models to float64 arg="--plumed plumed.dat --ixyz structure.xyz --length-units A --dump-forces forces --dump-forces-fmt %8.2f" # --debug-forces forces.num" + +PLUMED_ALLOW_SKIP_ON_TRAVIS=yes From 3b1628780cc2ad2aa3adbc7feb22f75fd0d80bb9 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Mon, 27 May 2024 13:59:44 +0200 Subject: [PATCH 29/32] Declare output for metatensor action --- src/metatensor/metatensor.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index decbfb476a..b6aa295d26 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -950,6 +950,8 @@ namespace PLMD { namespace metatensor { keys.reset_style("SELECTED_ATOMS", "atoms"); keys.add("optional", "SPECIES_TO_TYPES", "mapping from PLUMED SPECIES to metatensor's atomic types"); + + keys.addOutputComponent("outputs", "default", "collective variable created by the model"); } PLUMED_REGISTER_ACTION(MetatensorPlumedAction, "METATENSOR") From 3ef3c8d60ab8d181a0ac887e1d5bebb323369952 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Mon, 27 May 2024 16:07:19 +0200 Subject: [PATCH 30/32] Only one namespace per line --- src/metatensor/metatensor.cpp | 55 ++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index b6aa295d26..bb206d64c6 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -132,7 +132,7 @@ the following: //+ENDPLUMEDOC /*INDENT-OFF*/ -#if !defined(__PLUMED_HAS_LIBTORCH) || !defined(__PLUMED_HAS_METATENSOR) +#if !defined(__PLUMED_HAS_METATENSOR) || !defined(__PLUMED_HAS_LIBTORCH) namespace PLMD { namespace metatensor { class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { @@ -187,7 +187,8 @@ class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { #include "vesin.h" -namespace PLMD { namespace metatensor { +namespace PLMD { +namespace metatensor { // We will cast Vector/Tensor to pointers to arrays and doubles, so let's make // sure this is legal to do @@ -923,36 +924,42 @@ void MetatensorPlumedAction::apply() { this->setForcesOnAtoms(derivatives, index); } -}} // namespace PLMD::metatensor +} // namespace metatensor +} // namespace PLMD + #endif -namespace PLMD { namespace metatensor { - // use the same implementation for both the actual action and the dummy one - // (when libtorch and libmetatensor could not be found). - void MetatensorPlumedAction::registerKeywords(Keywords& keys) { - Action::registerKeywords(keys); - ActionAtomistic::registerKeywords(keys); - ActionWithValue::registerKeywords(keys); +namespace PLMD { +namespace metatensor { - keys.add("compulsory", "MODEL", "path to the exported metatensor model"); - keys.add("optional", "EXTENSIONS_DIRECTORY", "path to the directory containing TorchScript extensions to load"); - keys.add("optional", "DEVICE", "Torch device to use for the calculation"); +// use the same implementation for both the actual action and the dummy one +// (when libtorch and libmetatensor could not be found). +void MetatensorPlumedAction::registerKeywords(Keywords& keys) { + Action::registerKeywords(keys); + ActionAtomistic::registerKeywords(keys); + ActionWithValue::registerKeywords(keys); - // TODO: change the default? - keys.addFlag("NO_CONSISTENCY_CHECK", false, "Should we disable internal consistency of the model"); + keys.add("compulsory", "MODEL", "path to the exported metatensor model"); + keys.add("optional", "EXTENSIONS_DIRECTORY", "path to the directory containing TorchScript extensions to load"); + keys.add("optional", "DEVICE", "Torch device to use for the calculation"); - keys.add("numbered", "SPECIES", "the atoms in each PLUMED species"); - keys.reset_style("SPECIES", "atoms"); + // TODO: change the default? + keys.addFlag("NO_CONSISTENCY_CHECK", false, "Should we disable internal consistency of the model"); - keys.add("optional", "SELECTED_ATOMS", "subset of atoms that should be used for the calculation"); - keys.reset_style("SELECTED_ATOMS", "atoms"); + keys.add("numbered", "SPECIES", "the atoms in each PLUMED species"); + keys.reset_style("SPECIES", "atoms"); - keys.add("optional", "SPECIES_TO_TYPES", "mapping from PLUMED SPECIES to metatensor's atomic types"); + keys.add("optional", "SELECTED_ATOMS", "subset of atoms that should be used for the calculation"); + keys.reset_style("SELECTED_ATOMS", "atoms"); - keys.addOutputComponent("outputs", "default", "collective variable created by the model"); - } + keys.add("optional", "SPECIES_TO_TYPES", "mapping from PLUMED SPECIES to metatensor's atomic types"); + + keys.addOutputComponent("outputs", "default", "collective variable created by the model"); +} + +PLUMED_REGISTER_ACTION(MetatensorPlumedAction, "METATENSOR") - PLUMED_REGISTER_ACTION(MetatensorPlumedAction, "METATENSOR") -}} +} // namespace metatensor +} // namespace PLMD From 63bb8908d2b0171f4575e00d421ad8a543bc1396 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Mon, 27 May 2024 16:43:39 +0200 Subject: [PATCH 31/32] Some more cppcheck fixes --- src/metatensor/metatensor.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index bb206d64c6..081f851d0a 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -539,11 +539,10 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): // Now that we now both n_samples and n_properties, we can setup the // PLUMED-side storage for the computed CV if (output->per_atom) { - auto selected_atoms = this->evaluations_options_->get_selected_atoms(); - if (selected_atoms.has_value()) { - this->n_samples_ = static_cast(selected_atoms.value()->count()); - } else { + if (selected_atoms.empty()) { this->n_samples_ = static_cast(this->atomic_types_.size(0)); + } else { + this->n_samples_ = static_cast(selected_atoms.size()); } } else { this->n_samples_ = 1; @@ -835,7 +834,7 @@ void MetatensorPlumedAction::calculate() { void MetatensorPlumedAction::apply() { - auto* value = this->getPntrToComponent(0); + const auto* value = this->getPntrToComponent(0); if (!value->forcesWereAdded()) { return; } From 3ba18d7dacad6d53b06ead6c9250b6f4d330d564 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Wed, 12 Jun 2024 15:33:52 +0200 Subject: [PATCH 32/32] Use import.sh to vendor code from vesin --- src/metatensor/import.sh | 42 +++++++ src/metatensor/metatensor.cpp | 8 +- .../{vesin_single_build.cpp => vesin.cpp} | 110 ++++++++++++------ src/metatensor/vesin.h | 77 +++++++++--- 4 files changed, 183 insertions(+), 54 deletions(-) create mode 100755 src/metatensor/import.sh rename src/metatensor/{vesin_single_build.cpp => vesin.cpp} (87%) diff --git a/src/metatensor/import.sh b/src/metatensor/import.sh new file mode 100755 index 0000000000..a1a80f9600 --- /dev/null +++ b/src/metatensor/import.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash + +path=$1 + +if (($# != 1)) ; then +echo "usage: $0 /path/to/vesin" +echo +echo "All the commands to run:" +echo " cd /some/dir/" +echo " git clone https://github.com/luthaf/vesin" +echo " cd /your/plumed2/src/metatensor" +echo " ./import.sh /some/dir/vesin" +exit 0 +fi + +bash -c "$path/create-single-cpp.py > /dev/null" + +cp $path/include/vesin.h vesin.h +mv vesin-single-build.cpp vesin.cpp + +# Patch files to follow PLUMED linter +sed 's|#define VESIN_H|#define VESIN_H\n/*INDENT-OFF*/\n| + s|VESIN_H|__PLUMED_metatensor_vesin_h|g + s||| + s||| + s|extern "C" {|namespace PLMD {\nnamespace metatensor {\nnamespace vesin {\nextern "C" {| + s|} // extern "C"|} // extern "C"\n} // namespace vesin\n} // namespace metatensor\n} // namespace PLMD| + ' vesin.h > tmp +mv tmp vesin.h + +sed '1 s|^|/*INDENT-OFF*/\n#include "vesin.h"\n| + s||| + s||| + s|vesin::|PLMD::metatensor::vesin::| + s|namespace vesin {|namespace PLMD {\nnamespace metatensor {\nnamespace vesin {| + s|} // namespace vesin|} // namespace vesin\n} // namespace metatensor\n} // namespace PLMD| + s|using namespace PLMD::metatensor::vesin::cpu;|using namespace PLMD::metatensor::vesin;\nusing namespace PLMD::metatensor::vesin::cpu;| + ' vesin.cpp > tmp +mv tmp vesin.cpp + +cd .. +./header.sh metatensor diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index 081f851d0a..7052d38f08 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -672,15 +672,15 @@ metatensor_torch::TorchTensorBlock MetatensorPlumedAction::computeNeighbors( // use https://github.com/Luthaf/vesin to compute the requested neighbor // lists since we can not get these from PLUMED - VesinOptions options; + vesin::VesinOptions options; options.cutoff = cutoff; options.full = request->full_list(); options.return_shifts = true; options.return_distances = false; options.return_vectors = true; - VesinNeighborList* vesin_neighbor_list = new VesinNeighborList(); - memset(vesin_neighbor_list, 0, sizeof(VesinNeighborList)); + vesin::VesinNeighborList* vesin_neighbor_list = new vesin::VesinNeighborList(); + memset(vesin_neighbor_list, 0, sizeof(vesin::VesinNeighborList)); const char* error_message = NULL; int status = vesin_neighbors( @@ -688,7 +688,7 @@ metatensor_torch::TorchTensorBlock MetatensorPlumedAction::computeNeighbors( positions.size(), reinterpret_cast(&cell(0, 0)), !non_periodic, - VesinCPU, + vesin::VesinCPU, options, vesin_neighbor_list, &error_message diff --git a/src/metatensor/vesin_single_build.cpp b/src/metatensor/vesin.cpp similarity index 87% rename from src/metatensor/vesin_single_build.cpp rename to src/metatensor/vesin.cpp index caf259ba35..a03f950e77 100644 --- a/src/metatensor/vesin_single_build.cpp +++ b/src/metatensor/vesin.cpp @@ -1,4 +1,27 @@ +/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +Copyright (c) 2024 The METATENSOR code team +(see the PEOPLE-METATENSOR file at the root of this folder for a list of names) + +See https://docs.metatensor.org/latest/ for more information about the +metatensor package that this module allows you to call from PLUMED. + +This file is part of METATENSOR-PLUMED module. + +The METATENSOR-PLUMED module is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +The METATENSOR-PLUMED module is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the METATENSOR-PLUMED module. If not, see . ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ /*INDENT-OFF*/ +#include "vesin.h" #include #include #include @@ -24,6 +47,8 @@ #include #include +namespace PLMD { +namespace metatensor { namespace vesin { struct Vector; @@ -129,15 +154,19 @@ inline Vector operator*(Vector vector, Matrix matrix) { }; } -} +} // namespace vesin +} // namespace metatensor +} // namespace PLMD #endif +namespace PLMD { +namespace metatensor { namespace vesin { class BoundingBox { public: - BoundingBox(Matrix matrix, bool periodic): matrix_(std::move(matrix)), periodic_(periodic) { + BoundingBox(Matrix matrix, bool periodic): matrix_(matrix), periodic_(periodic) { if (periodic) { this->inverse_ = matrix_.inverse(); } else { @@ -228,11 +257,14 @@ inline CellShift operator-(CellShift a, CellShift b) { } - -} +} // namespace vesin +} // namespace metatensor +} // namespace PLMD #endif +namespace PLMD { +namespace metatensor { namespace vesin { namespace cpu { void free_neighbors(VesinNeighborList& neighbors); @@ -305,9 +337,9 @@ class GrowableNeighborList { } void set_pair(size_t index, size_t first, size_t second); - void set_shift(size_t index, vesin::CellShift shift); + void set_shift(size_t index, PLMD::metatensor::vesin::CellShift shift); void set_distance(size_t index, double distance); - void set_vector(size_t index, vesin::Vector vector); + void set_vector(size_t index, PLMD::metatensor::vesin::Vector vector); // reset length to 0, and allocate/deallocate members of // `neighbors` according to `options` @@ -317,13 +349,17 @@ class GrowableNeighborList { void grow(); }; -}} +} // namespace vesin +} // namespace metatensor +} // namespace PLMD +} // namespace cpu #endif -using namespace vesin::cpu; +using namespace PLMD::metatensor::vesin; +using namespace PLMD::metatensor::vesin::cpu; -void vesin::cpu::neighbors( +void PLMD::metatensor::vesin::cpu::neighbors( const Vector* points, size_t n_points, BoundingBox cell, @@ -420,7 +456,7 @@ static std::tuple divmod(int32_t a, size_t b) { auto quotient = a / b_32; auto remainder = a % b_32; if (remainder < 0) { - remainder += b; + remainder += b_32; quotient -= 1; } return std::make_tuple(quotient, remainder); @@ -441,7 +477,7 @@ divmod(std::array a, std::array b) { CellList::CellList(BoundingBox box, double cutoff): n_search_({0, 0, 0}), cells_shape_({0, 0, 0}), - box_(std::move(box)) + box_(box) { auto distances_between_faces = box_.distances_between_faces(); @@ -501,9 +537,9 @@ void CellList::add_point(size_t index, Vector position) { // find the cell in which this atom should go auto cell_index = std::array{ - static_cast(std::floor(fractional[0] * cells_shape_[0])), - static_cast(std::floor(fractional[1] * cells_shape_[1])), - static_cast(std::floor(fractional[2] * cells_shape_[2])), + static_cast(std::floor(fractional[0] * static_cast(cells_shape_[0]))), + static_cast(std::floor(fractional[1] * static_cast(cells_shape_[1]))), + static_cast(std::floor(fractional[2] * static_cast(cells_shape_[2]))), }; // deal with pbc by wrapping the atom inside if it was outside of the @@ -512,8 +548,8 @@ void CellList::add_point(size_t index, Vector position) { // auto (shift, cell_index) = if (box_.periodic()) { auto result = divmod(cell_index, cells_shape_); - shift = CellShift{std::move(std::get<0>(result))}; - cell_index = std::move(std::get<1>(result)); + shift = CellShift{std::get<0>(result)}; + cell_index = std::get<1>(result); } else { shift = CellShift({0, 0, 0}); cell_index = std::array{ @@ -532,7 +568,7 @@ void CellList::foreach_pair(Function callback) { for (int32_t cell_i_x=0; cell_i_x(cells_shape_[0]); cell_i_x++) { for (int32_t cell_i_y=0; cell_i_y(cells_shape_[1]); cell_i_y++) { for (int32_t cell_i_z=0; cell_i_z(cells_shape_[2]); cell_i_z++) { - auto& current_cell = this->get_cell({cell_i_x, cell_i_y, cell_i_z}); + const auto& current_cell = this->get_cell({cell_i_x, cell_i_y, cell_i_z}); // look through each neighboring cell for (int32_t delta_x=-n_search_[0]; delta_x<=n_search_[0]; delta_x++) { for (int32_t delta_y=-n_search_[1]; delta_y<=n_search_[1]; delta_y++) { @@ -590,7 +626,7 @@ void GrowableNeighborList::set_pair(size_t index, size_t first, size_t second) { this->neighbors.pairs[index][1] = second; } -void GrowableNeighborList::set_shift(size_t index, vesin::CellShift shift) { +void GrowableNeighborList::set_shift(size_t index, PLMD::metatensor::vesin::CellShift shift) { if (index >= this->capacity) { this->grow(); } @@ -608,7 +644,7 @@ void GrowableNeighborList::set_distance(size_t index, double distance) { this->neighbors.distances[index] = distance; } -void GrowableNeighborList::set_vector(size_t index, vesin::Vector vector) { +void GrowableNeighborList::set_vector(size_t index, PLMD::metatensor::vesin::Vector vector) { if (index >= this->capacity) { this->grow(); } @@ -620,30 +656,30 @@ void GrowableNeighborList::set_vector(size_t index, vesin::Vector vector) { template static scalar_t (*alloc(scalar_t (*ptr)[N], size_t size, size_t new_size))[N] { - ptr = reinterpret_cast(std::realloc(ptr, new_size * sizeof(scalar_t[N]))); + auto* new_ptr = reinterpret_cast(std::realloc(ptr, new_size * sizeof(scalar_t[N]))); - if (ptr == nullptr) { + if (new_ptr == nullptr) { throw std::bad_alloc(); } // initialize with a bit pattern that maps to NaN for double - std::memset(ptr + size, 0b11111111, (new_size - size) * sizeof(scalar_t[N])); + std::memset(new_ptr + size, 0b11111111, (new_size - size) * sizeof(scalar_t[N])); - return ptr; + return new_ptr; } template static scalar_t* alloc(scalar_t* ptr, size_t size, size_t new_size) { - ptr = reinterpret_cast(std::realloc(ptr, new_size * sizeof(scalar_t))); + auto* new_ptr = reinterpret_cast(std::realloc(ptr, new_size * sizeof(scalar_t))); - if (ptr == nullptr) { + if (new_ptr == nullptr) { throw std::bad_alloc(); } // initialize with a bit pattern that maps to NaN for double - std::memset(ptr + size, 0b11111111, (new_size - size) * sizeof(scalar_t)); + std::memset(new_ptr + size, 0b11111111, (new_size - size) * sizeof(scalar_t)); - return ptr; + return new_ptr; } void GrowableNeighborList::grow() { @@ -652,7 +688,7 @@ void GrowableNeighborList::grow() { new_size = 1; } - auto new_pairs = alloc(neighbors.pairs, neighbors.length, new_size); + auto* new_pairs = alloc(neighbors.pairs, neighbors.length, new_size); int32_t (*new_shifts)[3] = nullptr; if (options.return_shifts) { @@ -698,7 +734,7 @@ void GrowableNeighborList::reset() { this->neighbors.length = 0; // allocate/deallocate pointers as required - auto shifts = this->neighbors.shifts; + auto* shifts = this->neighbors.shifts; if (this->options.return_shifts && shifts == nullptr) { shifts = alloc(shifts, 0, capacity); } else if (!this->options.return_shifts && shifts != nullptr) { @@ -706,7 +742,7 @@ void GrowableNeighborList::reset() { shifts = nullptr; } - auto distances = this->neighbors.distances; + auto* distances = this->neighbors.distances; if (this->options.return_distances && distances == nullptr) { distances = alloc(distances, 0, capacity); } else if (!this->options.return_distances && distances != nullptr) { @@ -714,7 +750,7 @@ void GrowableNeighborList::reset() { distances = nullptr; } - auto vectors = this->neighbors.vectors; + auto* vectors = this->neighbors.vectors; if (this->options.return_vectors && vectors == nullptr) { vectors = alloc(vectors, 0, capacity); } else if (!this->options.return_vectors && vectors != nullptr) { @@ -728,7 +764,7 @@ void GrowableNeighborList::reset() { } -void vesin::cpu::free_neighbors(VesinNeighborList& neighbors) { +void PLMD::metatensor::vesin::cpu::free_neighbors(VesinNeighborList& neighbors) { assert(neighbors.device == VesinCPU); std::free(neighbors.pairs); @@ -792,16 +828,16 @@ extern "C" int vesin_neighbors( try { if (device == VesinCPU) { - auto matrix = vesin::Matrix{{{ + auto matrix = PLMD::metatensor::vesin::Matrix{{{ {{box[0][0], box[0][1], box[0][2]}}, {{box[1][0], box[1][1], box[1][2]}}, {{box[2][0], box[2][1], box[2][2]}}, }}}; - vesin::cpu::neighbors( - reinterpret_cast(points), + PLMD::metatensor::vesin::cpu::neighbors( + reinterpret_cast(points), n_points, - vesin::BoundingBox(matrix, periodic), + PLMD::metatensor::vesin::BoundingBox(matrix, periodic), options, *neighbors ); @@ -833,7 +869,7 @@ extern "C" void vesin_free(VesinNeighborList* neighbors) { if (neighbors->device == VesinUnknownDevice) { // nothing to do } else if (neighbors->device == VesinCPU) { - vesin::cpu::free_neighbors(*neighbors); + PLMD::metatensor::vesin::cpu::free_neighbors(*neighbors); } std::memset(neighbors, 0, sizeof(VesinNeighborList)); diff --git a/src/metatensor/vesin.h b/src/metatensor/vesin.h index 6efaaea523..e02231d4ce 100644 --- a/src/metatensor/vesin.h +++ b/src/metatensor/vesin.h @@ -1,20 +1,68 @@ +/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +Copyright (c) 2024 The METATENSOR code team +(see the PEOPLE-METATENSOR file at the root of this folder for a list of names) + +See https://docs.metatensor.org/latest/ for more information about the +metatensor package that this module allows you to call from PLUMED. + +This file is part of METATENSOR-PLUMED module. + +The METATENSOR-PLUMED module is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +The METATENSOR-PLUMED module is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the METATENSOR-PLUMED module. If not, see . ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ +#ifndef __PLUMED_metatensor_vesin_h +#define __PLUMED_metatensor_vesin_h /*INDENT-OFF*/ -#ifndef VESIN_H -#define VESIN_H -#include -#include + +#include +#include + +#if defined(VESIN_SHARED) + #if defined(VESIN_EXPORTS) + #if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #define VESIN_API __attribute__((visibility("default"))) + #elif defined(_MSC_VER) + #define VESIN_API __declspec(dllexport) + #else + #define VESIN_API + #endif + #else + #if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #define VESIN_API __attribute__((visibility("default"))) + #elif defined(_MSC_VER) + #define VESIN_API __declspec(dllimport) + #else + #define VESIN_API + #endif + #endif +#else + #define VESIN_API +#endif #ifdef __cplusplus +namespace PLMD { +namespace metatensor { +namespace vesin { extern "C" { #endif /// Options for a neighbor list calculation -typedef struct VesinOptions { +struct VesinOptions { /// Spherical cutoff, only pairs below this cutoff will be included double cutoff; /// Should the returned neighbor list be a full list (include both `i -> j` - /// and `j -> i` pairs) or a half list (include only `i -> j`). + /// and `j -> i` pairs) or a half list (include only `i -> j`)? bool full; // TODO: sort option? @@ -24,7 +72,7 @@ typedef struct VesinOptions { bool return_distances; /// Should the returned `VesinNeighborList` contain `vector`? bool return_vectors; -} VesinOptions; +}; /// Device on which the data can be enum VesinDevice { @@ -55,7 +103,7 @@ enum VesinDevice { /// /// Under periodic boundary conditions, two atoms can be part of multiple pairs, /// each pair having a different periodic shift. -typedef struct VesinNeighborList { +struct VESIN_API VesinNeighborList { #ifdef __cplusplus VesinNeighborList(): length(0), @@ -87,11 +135,11 @@ typedef struct VesinNeighborList { double (*vectors)[3]; // TODO: custom memory allocators? -} VesinNeighborList; +}; /// Free all allocated memory inside a `VesinNeighborList`, according the it's /// `device`. -void vesin_free(VesinNeighborList* neighbors); +void VESIN_API vesin_free(struct VesinNeighborList* neighbors); /// Compute a neighbor list. /// @@ -114,14 +162,14 @@ void vesin_free(VesinNeighborList* neighbors); /// @param error_message Pointer to a `char*` that wil be set to the error /// message if this function fails. This does not need to be freed when no /// longer needed. -int vesin_neighbors( +int VESIN_API vesin_neighbors( const double (*points)[3], size_t n_points, const double box[3][3], bool periodic, VesinDevice device, - VesinOptions options, - VesinNeighborList* neighbors, + struct VesinOptions options, + struct VesinNeighborList* neighbors, const char** error_message ); @@ -129,6 +177,9 @@ int vesin_neighbors( #ifdef __cplusplus } // extern "C" +} // namespace vesin +} // namespace metatensor +} // namespace PLMD #endif

QQqmCKL3A;dZGYY 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 literal 0 HcmV?d00001 diff --git a/regtest/metatensor/rt-basic/vector_global.reference b/regtest/metatensor/rt-basic/vector_global.reference new file mode 100644 index 0000000000..b51a835f5e --- /dev/null +++ b/regtest/metatensor/rt-basic/vector_global.reference @@ -0,0 +1,2 @@ +#! FIELDS time vector_global.1 vector_global.2 + 0.000000 87.04 7575.59 diff --git a/regtest/metatensor/rt-basic/vector_per_atom.reference b/regtest/metatensor/rt-basic/vector_per_atom.reference new file mode 100644 index 0000000000..755aa2231a --- /dev/null +++ b/regtest/metatensor/rt-basic/vector_per_atom.reference @@ -0,0 +1,2 @@ +#! FIELDS time vector_per_atom.1.1 vector_per_atom.1.2 vector_per_atom.2.1 vector_per_atom.2.2 vector_per_atom.3.1 vector_per_atom.3.2 vector_per_atom.4.1 vector_per_atom.4.2 vector_per_atom.5.1 vector_per_atom.5.2 vector_per_atom.6.1 vector_per_atom.6.2 vector_per_atom.7.1 vector_per_atom.7.2 vector_per_atom.8.1 vector_per_atom.8.2 vector_per_atom.9.1 vector_per_atom.9.2 + 0.000000 9.73 3.95 9.34 3.68 9.93 4.29 9.06 5.04 8.87 3.78 10.28 5.47 9.32 4.34 9.93 4.72 10.58 4.50 diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index e3a3517dfe..5add0dd119 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -461,7 +461,7 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): if (n_samples_ == 1 && n_properties_ == 1) { log.printf(" the output of this model is a scalar\n"); - this->addValue({this->n_samples_, this->n_properties_}); + this->addValue(); } else if (n_samples_ == 1) { log.printf(" the output of this model is 1x%d vector\n", n_properties_); From 8cfce8d10390bc29020e7e5bf50833f7adf1d302 Mon Sep 17 00:00:00 2001 From: Gareth Aneurin Tribello Date: Wed, 1 May 2024 09:49:39 +0100 Subject: [PATCH 20/32] Added copyright file and list of people involved --- src/metatensor/.gitignore | 2 +- src/metatensor/COPYRIGHT | 20 ++++++++++++++++++++ src/metatensor/PEOPLE-METATENSOR | 11 +++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 src/metatensor/COPYRIGHT create mode 100644 src/metatensor/PEOPLE-METATENSOR diff --git a/src/metatensor/.gitignore b/src/metatensor/.gitignore index 10af78cac2..fc96bbfc5f 100644 --- a/src/metatensor/.gitignore +++ b/src/metatensor/.gitignore @@ -6,7 +6,7 @@ !/*.h !/*.sh !/Makefile -!/README !/README.md !/module.type !/COPYRIGHT +!/PEOPLE-METATENSOR diff --git a/src/metatensor/COPYRIGHT b/src/metatensor/COPYRIGHT new file mode 100644 index 0000000000..14a8de0de8 --- /dev/null +++ b/src/metatensor/COPYRIGHT @@ -0,0 +1,20 @@ +Copyright (c) 2024 The METATENSOR code team +(see the PEOPLE-METATENSOR file at the root of this folder for a list of names) + +See https://lab-cosmo.github.io/metatensor/latest/ for more information about the +metatensor package that this module allows you to call from PLUMED. + +This file is part of METATENSOR-PLUMED module. + +The METATENSOR-PLUMED module is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +The METATENSOR-PLUMED module is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the METATENSOR-PLUMED module. If not, see . diff --git a/src/metatensor/PEOPLE-METATENSOR b/src/metatensor/PEOPLE-METATENSOR new file mode 100644 index 0000000000..f9a903c94f --- /dev/null +++ b/src/metatensor/PEOPLE-METATENSOR @@ -0,0 +1,11 @@ +METATENSOR-PLUMED module is covered under the GNU LESSER GENERAL PUBLIC LICENSE +(see COPYING.LESSER in PLUMED2 root directory). This license applies to all the +source code in this directory, except from where explicitly indicated. + +Authors of this software are: + +- Guillaume Fraux (Github: @Luthaf) + +The following people have contributed to this software: + +- Gareth Tribello (Github: @gtribello) From 2a59711cbd21828e4ec790e44bbcf052ee1aa8d3 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Mon, 6 May 2024 16:19:34 +0200 Subject: [PATCH 21/32] Update to metatensor-torch v0.5 --- configure | 54 ++++++++++++++++++ configure.ac | 18 ++++++ regtest/metatensor/rt-basic/cv.py | 8 +-- regtest/metatensor/rt-basic/scalar-global.pt | Bin 30107 -> 29979 bytes .../metatensor/rt-basic/scalar-per-atom.pt | Bin 30147 -> 30019 bytes regtest/metatensor/rt-basic/vector-global.pt | Bin 30107 -> 29979 bytes .../metatensor/rt-basic/vector-per-atom.pt | Bin 30147 -> 30019 bytes src/metatensor/.gitignore | 1 + src/metatensor/metatensor.cpp | 35 ++++++++---- src/metatensor/vesin.h | 30 +++++----- src/metatensor/vesin_single_build.cpp | 18 +++--- user-doc/METATENSORMOD.md | 4 +- 12 files changed, 127 insertions(+), 41 deletions(-) diff --git a/configure b/configure index 952b900b1e..cab5b86a63 100755 --- a/configure +++ b/configure @@ -10779,7 +10779,25 @@ printf %s "checking metatensor without extra libs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + // torch header creates a lot a pedantic warnings, which we can't do anything about + // we disable them to make finding the relevant part in the config.log easier + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpedantic" + #pragma GCC diagnostic ignored "-Wunused-parameter" + #pragma GCC diagnostic ignored "-Wfloat-equal" + #pragma GCC diagnostic ignored "-Wfloat-conversion" + #pragma GCC diagnostic ignored "-Wimplicit-float-conversion" + #pragma GCC diagnostic ignored "-Wimplicit-int-conversion" + #pragma GCC diagnostic ignored "-Wshorten-64-to-32" + #pragma GCC diagnostic ignored "-Wsign-conversion" + #pragma GCC diagnostic ignored "-Wold-style-cast" + #include + #include + #pragma GCC diagnostic pop #include + #if METATENSOR_TORCH_VERSION_MAJOR != 0 || METATENSOR_TORCH_VERSION_MINOR != 5 + #error "this code is only compatible with metatensor-torch >=0.5.1,<0.6" + #endif int main() { metatensor_torch::version(); return 0; @@ -10808,7 +10826,25 @@ printf %s "checking metatensor with $all_LIBS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + // torch header creates a lot a pedantic warnings, which we can't do anything about + // we disable them to make finding the relevant part in the config.log easier + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpedantic" + #pragma GCC diagnostic ignored "-Wunused-parameter" + #pragma GCC diagnostic ignored "-Wfloat-equal" + #pragma GCC diagnostic ignored "-Wfloat-conversion" + #pragma GCC diagnostic ignored "-Wimplicit-float-conversion" + #pragma GCC diagnostic ignored "-Wimplicit-int-conversion" + #pragma GCC diagnostic ignored "-Wshorten-64-to-32" + #pragma GCC diagnostic ignored "-Wsign-conversion" + #pragma GCC diagnostic ignored "-Wold-style-cast" + #include + #include + #pragma GCC diagnostic pop #include + #if METATENSOR_TORCH_VERSION_MAJOR != 0 || METATENSOR_TORCH_VERSION_MINOR != 5 + #error "this code is only compatible with metatensor-torch >=0.5.1,<0.6" + #endif int main() { metatensor_torch::version(); return 0; @@ -10837,7 +10873,25 @@ printf %s "checking metatensor with -l$testlib... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + // torch header creates a lot a pedantic warnings, which we can't do anything about + // we disable them to make finding the relevant part in the config.log easier + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpedantic" + #pragma GCC diagnostic ignored "-Wunused-parameter" + #pragma GCC diagnostic ignored "-Wfloat-equal" + #pragma GCC diagnostic ignored "-Wfloat-conversion" + #pragma GCC diagnostic ignored "-Wimplicit-float-conversion" + #pragma GCC diagnostic ignored "-Wimplicit-int-conversion" + #pragma GCC diagnostic ignored "-Wshorten-64-to-32" + #pragma GCC diagnostic ignored "-Wsign-conversion" + #pragma GCC diagnostic ignored "-Wold-style-cast" + #include + #include + #pragma GCC diagnostic pop #include + #if METATENSOR_TORCH_VERSION_MAJOR != 0 || METATENSOR_TORCH_VERSION_MINOR != 5 + #error "this code is only compatible with metatensor-torch >=0.5.1,<0.6" + #endif int main() { metatensor_torch::version(); return 0; diff --git a/configure.ac b/configure.ac index 66fc4a0f2f..fd035c6c63 100644 --- a/configure.ac +++ b/configure.ac @@ -972,7 +972,25 @@ fi if test $metatensor = true ; then # find metatensor and metatensor_torch PLUMED_CHECK_CXX_PACKAGE([metatensor],[ + // torch header creates a lot a pedantic warnings, which we can't do anything about + // we disable them to make finding the relevant part in the config.log easier + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpedantic" + #pragma GCC diagnostic ignored "-Wunused-parameter" + #pragma GCC diagnostic ignored "-Wfloat-equal" + #pragma GCC diagnostic ignored "-Wfloat-conversion" + #pragma GCC diagnostic ignored "-Wimplicit-float-conversion" + #pragma GCC diagnostic ignored "-Wimplicit-int-conversion" + #pragma GCC diagnostic ignored "-Wshorten-64-to-32" + #pragma GCC diagnostic ignored "-Wsign-conversion" + #pragma GCC diagnostic ignored "-Wold-style-cast" + #include + #include + #pragma GCC diagnostic pop #include + #if METATENSOR_TORCH_VERSION_MAJOR != 0 || METATENSOR_TORCH_VERSION_MINOR != 5 + #error "this code is only compatible with metatensor-torch >=0.5.1,<0.6" + #endif int main() { metatensor_torch::version(); return 0; diff --git a/regtest/metatensor/rt-basic/cv.py b/regtest/metatensor/rt-basic/cv.py index 4895c2b4a6..192343d375 100644 --- a/regtest/metatensor/rt-basic/cv.py +++ b/regtest/metatensor/rt-basic/cv.py @@ -7,7 +7,7 @@ ModelCapabilities, ModelMetadata, ModelOutput, - NeighborsListOptions, + NeighborListOptions, System, ) @@ -34,7 +34,7 @@ class TestCollectiveVariable(torch.nn.Module): def __init__(self, cutoff, multiple_properties): super().__init__() - self._nl_request = NeighborsListOptions(cutoff=cutoff, full_list=True) + self._nl_request = NeighborListOptions(cutoff=cutoff, full_list=True) self._multiple_properties = multiple_properties def forward( @@ -84,7 +84,7 @@ def forward( for system_i, system in enumerate(systems): system_stop = system_start + len(system) - neighbors = system.get_neighbors_list(self._nl_request) + neighbors = system.get_neighbor_list(self._nl_request) atom_index = neighbors.samples.column("first_atom") distances = torch.linalg.vector_norm(neighbors.values.reshape(-1, 3), dim=1) @@ -119,7 +119,7 @@ def forward( return {"plumed::cv": cv} - def requested_neighbors_lists(self) -> List[NeighborsListOptions]: + def requested_neighbor_lists(self) -> List[NeighborListOptions]: return [self._nl_request] diff --git a/regtest/metatensor/rt-basic/scalar-global.pt b/regtest/metatensor/rt-basic/scalar-global.pt index bccc002572155b2438b1255964546e329653cf0a..6009bf96b2cc1937f0ff72c922ad4153febdba71 100644 GIT binary patch delta 19828 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 TyKR%)8nwicljBvl{k{A@Hk0;b delta 19959 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 R5#95w6G$6qC6Rx_{{=#OI>`V4 diff --git a/regtest/metatensor/rt-basic/scalar-per-atom.pt b/regtest/metatensor/rt-basic/scalar-per-atom.pt index 9079e9865399fee0166f0a593c3e603a0fabfcb2..a8075e77f6b2ec817de18457c9b144e0692c6497 100644 GIT binary patch delta 19833 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 SZj;>_wIond6E(N}v;2SjP4?&j delta 19960 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