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/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: +#