#! /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://swprojects.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://swprojects.dkrz.de/redmine/projects/yaxt"
# license-default: "bsd"
# End:
#
