diff --git a/configure b/configure index 99448d1ab46ab9766cdc5ff68d39c669ea688c44..e5042e793f738b65c77101c994043cfddb15ec26 100755 --- a/configure +++ b/configure @@ -10881,17 +10881,20 @@ ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu - - acx_Comp=$FC - $as_echo "$as_me:${as_lineno-$LINENO}: testing if $acx_Comp cannot build working shared objects" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: testing if $FC cannot build working shared objects" >&5 case $host in #( *-ibm-aix*) : - if $acx_Comp -G -v 2>&1 | grep ' -binitfini:poe_remote_main ' >/dev/null; then : + if $FC -G -v 2>&1 | grep ' -binitfini:poe_remote_main ' >/dev/null; then : acx_cv_disable_shared=yes fi ;; #( x86_64-*-linux-*|i*86-*-linux-*|*-apple-darwin*|ia64-*-linux-*|x86_64-*-freebsd*|i*86-*-freebsd*) : - if $acx_Comp -V 2>&1 | grep '^Intel(R).*Fortran.*Compiler.*Version 15.0.[123]' >/dev/null; then : - acx_cv_disable_shared=yes + if $FC -V 2>&1 | grep '^Intel(R).*Fortran.*Compiler.*Version 15.0.[123]' >/dev/null; then : + case " $FCFLAGS $LDFLAGS " in #( + *\ -Qlocation,ld,*\ *) : + acx_cv_disable_shared=yes ;; #( + *) : + FCFLAGS="$FCFLAGS -Qlocation,ld,$ac_abs_confdir/util/icomp15" ;; +esac fi ;; #( *) : ;; @@ -10908,17 +10911,20 @@ ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu - - acx_Comp=$F77 - $as_echo "$as_me:${as_lineno-$LINENO}: testing if $acx_Comp cannot build working shared objects" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: testing if $F77 cannot build working shared objects" >&5 case $host in #( *-ibm-aix*) : - if $acx_Comp -G -v 2>&1 | grep ' -binitfini:poe_remote_main ' >/dev/null; then : + if $F77 -G -v 2>&1 | grep ' -binitfini:poe_remote_main ' >/dev/null; then : acx_cv_disable_shared=yes fi ;; #( x86_64-*-linux-*|i*86-*-linux-*|*-apple-darwin*|ia64-*-linux-*|x86_64-*-freebsd*|i*86-*-freebsd*) : - if $acx_Comp -V 2>&1 | grep '^Intel(R).*Fortran.*Compiler.*Version 15.0.[123]' >/dev/null; then : - acx_cv_disable_shared=yes + if $F77 -V 2>&1 | grep '^Intel(R).*Fortran.*Compiler.*Version 15.0.[123]' >/dev/null; then : + case " $FFLAGS $LDFLAGS " in #( + *\ -Qlocation,ld,*\ *) : + acx_cv_disable_shared=yes ;; #( + *) : + FFLAGS="$FFLAGS -Qlocation,ld,$ac_abs_confdir/util/icomp15" ;; +esac fi ;; #( *) : ;; @@ -10936,17 +10942,20 @@ 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 - - acx_Comp=$CC - $as_echo "$as_me:${as_lineno-$LINENO}: testing if $acx_Comp cannot build working shared objects" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: testing if $CC cannot build working shared objects" >&5 case $host in #( *-ibm-aix*) : - if $acx_Comp -G -v 2>&1 | grep ' -binitfini:poe_remote_main ' >/dev/null; then : + if $CC -G -v 2>&1 | grep ' -binitfini:poe_remote_main ' >/dev/null; then : acx_cv_disable_shared=yes fi ;; #( x86_64-*-linux-*|i*86-*-linux-*|*-apple-darwin*|ia64-*-linux-*|x86_64-*-freebsd*|i*86-*-freebsd*) : - if $acx_Comp -V 2>&1 | grep '^Intel(R).*Fortran.*Compiler.*Version 15.0.[123]' >/dev/null; then : - acx_cv_disable_shared=yes + if $CC -V 2>&1 | grep '^Intel(R).*Fortran.*Compiler.*Version 15.0.[123]' >/dev/null; then : + case " $CFLAGS $LDFLAGS " in #( + *\ -Qlocation,ld,*\ *) : + acx_cv_disable_shared=yes ;; #( + *) : + CFLAGS="$CFLAGS -Qlocation,ld,$ac_abs_confdir/util/icomp15" ;; +esac fi ;; #( *) : ;; diff --git a/m4/acx_lt_problems.m4 b/m4/acx_lt_problems.m4 index c775ff873744b2b0290826d8c65ab74537f02c61..99da19b3aaa8d256f77cb617a266f262fdf863bc 100644 --- a/m4/acx_lt_problems.m4 +++ b/m4/acx_lt_problems.m4 @@ -54,10 +54,10 @@ dnl causes a duplicate exit handler that fails and clobbers the dnl programs exit status (set to 128). dnl AC_DEFUN([_ACX_LT_PROBLEMS], - [AC_REQUIRE([AC_CANONICAL_HOST]) - AC_LANG_CASE([Fortran],[acx_Comp=$FC], - [Fortran 77],[acx_Comp=$F77], - [C],[acx_Comp=$CC]) + [AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_LANG_CASE([Fortran],[m4_pushdef([acx_Comp],[FC])m4_pushdef([acx_flags_var],[FCFLAGS])], + [Fortran 77],[m4_pushdef([acx_Comp],[F77])m4_pushdef([acx_flags_var],[FFLAGS])], + [C],[m4_pushdef([acx_Comp],[CC])m4_pushdef([acx_flags_var],[CFLAGS])])dnl _AS_ECHO_LOG([testing if $acx_Comp cannot build working shared objects]) AS_CASE([$host], [*-ibm-aix*], @@ -65,8 +65,11 @@ AC_DEFUN([_ACX_LT_PROBLEMS], [acx_cv_disable_shared=yes])], [x86_64-*-linux-*|i*86-*-linux-*|*-apple-darwin*|ia64-*-linux-*|x86_64-*-freebsd*|i*86-*-freebsd*], [AS_IF([$acx_Comp -V 2>&1 | grep '^Intel(R).*Fortran.*Compiler.*Version 15.0.@<:@123@:>@' >/dev/null], - [acx_cv_disable_shared=yes])]) - _AS_ECHO_LOG([result: $acx_cv_disable_shared])]) + [AS_CASE([" $acx_flags_var $LDFLAGS "], + [*\ -Qlocation,ld,*\ *], + [acx_cv_disable_shared=yes], + [acx_flags_var="$acx_flags_var -Qlocation,ld,$ac_abs_confdir/util/icomp15"])])]) + _AS_ECHO_LOG([result: $acx_cv_disable_shared])m4_popdef([acx_Comp])m4_popdef([acx_flags_var])]) dnl dnl run test for C and Fortran compilers AC_DEFUN([ACX_LT_PROBLEMS], diff --git a/src/cdi.inc b/src/cdi.inc index d469d2c60f31d95d3e1be619062b3a85a57685d9..98db0576cc7a1e29c8ec44462df749864c3c658c 100644 --- a/src/cdi.inc +++ b/src/cdi.inc @@ -4,7 +4,7 @@ ! ! Author: ! ------- -! Uwe Schulzweida, MPI-MET, Hamburg, March 2022 +! Uwe Schulzweida, MPI-MET, Hamburg, April 2022 ! INTEGER CDI_MAX_NAME diff --git a/src/cdipio.inc b/src/cdipio.inc index f73c9dfd7ac33ca390a8267919f6bc294d625012..7160d4dc05438e465454d851c533951a812b6f4d 100644 --- a/src/cdipio.inc +++ b/src/cdipio.inc @@ -4,7 +4,7 @@ ! ! Author: ! ------- -! Uwe Schulzweida, MPI-MET, Hamburg, March 2022 +! Uwe Schulzweida, MPI-MET, Hamburg, April 2022 ! ! diff --git a/util/icomp15/ld b/util/icomp15/ld new file mode 100755 index 0000000000000000000000000000000000000000..a2a4dc217bae934ad01c302b39ae23a91e198598 --- /dev/null +++ b/util/icomp15/ld @@ -0,0 +1,79 @@ +#! /bin/bash +# +# +# ld --- wrapper of ld to work around a bug in ifort 15.0.1-15.0.3 +# +# Copyright (C) 2022 Thomas Jahns <jahns@dkrz.de> +# +# Version: 1.0 +# Author: Thomas Jahns <jahns@dkrz.de> +# Keywords: +# Maintainer: Thomas Jahns <jahns@dkrz.de> +# URL: https://www.dkrz.de/redmine/projects/yaxt +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# Neither the name of the DKRZ GmbH nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +declare -a args=("$@") +case " $* " in + # are we building a shared object? + (*\ -shared\ *) + # establish whether the user intended the inclusion of static intel + # libraries into shared object? + shared_intel=1 + while IFS= read -r -d '' arg; do + case $arg in + (-shared-intel|-i-dynamic) + shared_intel=1 + ;; + (-static-intel|-i-static|-fast) + shared_intel=0 + ;; + esac + done <"/proc/$PPID/cmdline" + if ((shared_intel==1)); then + # if so, prevent core routines from being linked into the DSO + # directly. + declare -i i + for ((i=0; i<$#; ++i)); do + case ${args[i]} in + (-lifcoremt_pic|-lifcore_pic) + args[i]=${args[i]%_pic} + ;; + esac + done + fi + ;; +esac +exec ld "${args[@]}" +# +# Local Variables: +# mode: sh +# license-project-url: "https://www.dkrz.de/redmine/projects/yaxt" +# license-default: "bsd" +# End: +#