154 lines
4.5 KiB
Text
154 lines
4.5 KiB
Text
# $NetBSD: cmd-sink-aix-xlc,v 1.13 2009/06/11 10:38:28 sno Exp $
|
|
#
|
|
# Copyright (c) 2004 The NetBSD Foundation, Inc.
|
|
# All rights reserved.
|
|
#
|
|
# This code is derived from software contributed to The NetBSD Foundation
|
|
# by Johnny C. Lam.
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without
|
|
# modification, are permitted provided that the following conditions
|
|
# are met:
|
|
# 1. Redistributions of source code must retain the above copyright
|
|
# notice, this list of conditions and the following disclaimer.
|
|
# 2. 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.
|
|
# 3. All advertising materials mentioning features or use of this software
|
|
# must display the following acknowledgement:
|
|
# This product includes software developed by the NetBSD
|
|
# Foundation, Inc. and its contributors.
|
|
# 4. Neither the name of The NetBSD Foundation 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
|
|
|
|
# Empty out the command buffer and build up the command line in $cmd.
|
|
blibpath=
|
|
orig_blibpath=
|
|
while ! queue_is_empty cmdbuf; do
|
|
pop_queue cmdbuf arg
|
|
$debug_log $wrapperlog " (cmd-sink-aix-xlc) pop: $arg"
|
|
case $arg in
|
|
-blibpath:*)
|
|
orig_blibpath=${arg#-blibpath:}
|
|
$debug_log $wrapperlog " (cmd-sink-aix-xlc) drop: $dir [setting orig_blibpath]"
|
|
;;
|
|
-Wl,-blibpath:*)
|
|
orig_blibpath=${arg#-Wl,-blibpath:}
|
|
$debug_log $wrapperlog " (cmd-sink-aix-xlc) drop: $dir [setting orig_blibpath]"
|
|
;;
|
|
##############################################################
|
|
# AIX xlC doesn't support -Wl,-rpath,* but accumulate them
|
|
# into a path collection we can later append to command line
|
|
# using -blibpath.
|
|
##############################################################
|
|
-R*|-Wl,-R*|-Wl,-rpath,*|-Wl,-rpath-link,*|-Wl,--rpath,*)
|
|
case $arg in
|
|
-R*) R="-R" ;;
|
|
-Wl,-R*) R="-Wl,-R" ;;
|
|
-Wl,-rpath,*) R="-Wl,-rpath," ;;
|
|
-Wl,-rpath-link,*) R="-Wl,-rpath-link," ;;
|
|
-Wl,--rpath,*) R="-Wl,--rpath," ;;
|
|
esac
|
|
dir="${arg#$R}"
|
|
case $blibpath in
|
|
"") blibpath="$dir" ;;
|
|
*) blibpath="$blibpath:$dir" ;;
|
|
esac
|
|
$debug_log $wrapperlog " (cmd-sink-aix-xlc) drop: $dir [adding to blibpath]"
|
|
;;
|
|
# GCC and xlC allow -rpath directly, so keep this behavior.
|
|
-rpath)
|
|
pop_queue cmdbuf dir
|
|
case $blibpath in
|
|
"") blibpath="$dir" ;;
|
|
*) blibpath="$blibpath:$dir" ;;
|
|
esac
|
|
$debug_log $wrapperlog " (cmd-sink-aix-xlc) drop: $dir [adding to blibpath]"
|
|
;;
|
|
-pthread)
|
|
arg=-qthreaded
|
|
. $buildcmd
|
|
;;
|
|
-fexceptions)
|
|
arg=-qstrict=exceptions
|
|
. $buildcmd
|
|
;;
|
|
-fpic|-fPIC)
|
|
arg=-qpic=large
|
|
. $buildcmd
|
|
;;
|
|
-Os)
|
|
arg=-O2
|
|
. $buildcmd
|
|
arg=-qnounroll
|
|
. $buildcmd
|
|
arg=-qnoinline
|
|
. $buildcmd
|
|
;;
|
|
-shared)
|
|
arg=-qmkshrobj
|
|
. $buildcmd
|
|
arg=-bshared
|
|
. $buildcmd
|
|
;;
|
|
-Wl,-soname*)
|
|
arg=-brtl
|
|
. $buildcmd
|
|
arg=-Wl,-G
|
|
. $buildcmd
|
|
arg=-Wl,-bexpall
|
|
. $buildcmd
|
|
;;
|
|
-Wall)
|
|
arg=-qflag=w:w
|
|
. $buildcmd
|
|
arg=-qinfo
|
|
. $buildcmd
|
|
;;
|
|
-W|-Wextra)
|
|
arg=-qformat
|
|
. $buildcmd
|
|
arg=-qwarn64
|
|
. $buildcmd
|
|
;;
|
|
-Werror)
|
|
arg=-qhalt=w
|
|
. $buildcmd
|
|
;;
|
|
*)
|
|
. $buildcmd
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# AIX xlc uses -blibpath to set the runtime library search path.
|
|
arg="-Wl,-blibpath:/usr/lib:/lib"
|
|
if $test -n "$orig_blibpath"; then
|
|
arg="$arg:$orig_blibpath"
|
|
fi
|
|
if $test -n "$blibpath"; then
|
|
arg="$arg:$blibpath"
|
|
fi
|
|
$debug_log $wrapperlog " (cmd-sink-aix-xlc) pop: $arg"
|
|
. $buildcmd
|
|
|
|
# Force dynamic linkage on AIX to get preference of dynamic libraries
|
|
# over library archives.
|
|
if $test "$dont_link" != "yes"; then
|
|
arg="-Wl,-brtl"
|
|
$debug_log $wrapperlog " (cmd-sink-aix-xlc) pop: $arg"
|
|
. $buildcmd
|
|
fi
|