view build-aux/reloc-ldflags @ 37215:e6179db74803

selinux-h: really build without selinux when library is missing * m4/selinux-selinux-h.m4: When the selinux library is missing, really continue without selinux, as already told in the warning message. This is necessary for when the 64bit selinux development package is installed only, but the package (tar-1.27 fex) is built as 32bit, causing the header files to be found while the library already wasn't found earlier.
author Michael Haubenwallner <michael.haubenwallner@salomon.at>
date Mon, 21 Oct 2013 20:39:15 +0100
parents c741bc27922a
children 344018b6e5d7
line wrap: on
line source

#! /bin/sh
# Output a system dependent linker command for putting a relocatable library
# search path into an executable.
#
#   Copyright 2003-2013 Free Software Foundation, Inc.
#   Written by Bruno Haible <bruno@clisp.org>, 2003.
#
#   This program is free software: you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation; either version 3 of the License, or
#   (at your option) any later version.
#
#   This program 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 General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
#   As a special exception to the GNU General Public License, if you
#   distribute this file as part of a program that contains a
#   configuration script generated by Autoconf, you may include it under
#   the same distribution terms that you use for the rest of that program.
#
# The first argument passed to this file is the canonical host specification,
#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
# or
#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# The environment variable LD should be set by the caller.
#
# The second argument is a colon separated list of directories that contain
# the libraries at installation time.
#
# The third argument is the directory into which the executable is going to be
# installed.

host="$1"
host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`

library_path_value=$2

installdir=$3

# Verify that installdir is absolute.
case "$installdir" in
  /*) ;;
  *)
    echo "installdir is not absolute: $installdir" 1>&2
    exit 1
    ;;
esac

case "$host_os" in
  linux* | kfreebsd*)
    rpath=
    save_IFS="$IFS"; IFS=":"
    for dir in $library_path_value; do
      IFS="$save_IFS"
      case "$dir" in
        /*)
          # Make dir relative to installdir. (Works only if dir is absolute.)
          idir="$installdir"
          while true; do
            dfirst=`echo "$dir" | sed -n -e 's,^//*\([^/]*\).*$,/\1,p'`
            ifirst=`echo "$idir" | sed -n -e 's,^//*\([^/]*\).*$,/\1,p'`
            if test -z "$dfirst" || test -z "$ifirst"; then
              break
            fi
            if test "$dfirst" != "$ifirst"; then
              break
            fi
            dir=`echo "$dir" | sed -e 's,^//*[^/]*,,'`
            idir=`echo "$idir" | sed -e 's,^//*[^/]*,,'`
          done
          dir="\$ORIGIN"`echo "$idir" | sed -e 's,//*[^/]*,/..,g'`"$dir"
          # Add dir to rpath.
          rpath="${rpath}${rpath:+ }$dir"
          ;;
        *)
          if test -n "$dir"; then
            echo "libdir is not absolute: $dir" 1>&2
          fi
          ;;
      esac
    done
    IFS="$save_IFS"
    # Output it.
    if test -n "$rpath"; then
      echo "-Wl,-rpath,$rpath"
    fi
    ;;
  *)
    echo "relocation via rpath not supported on this system: $host" 1>&2
    exit 1
    ;;
esac

exit 0