diff options
Diffstat (limited to 'mk/wrapper/cmd-sink-hpux-ld')
-rw-r--r-- | mk/wrapper/cmd-sink-hpux-ld | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/mk/wrapper/cmd-sink-hpux-ld b/mk/wrapper/cmd-sink-hpux-ld new file mode 100644 index 00000000000..ad40d43a242 --- /dev/null +++ b/mk/wrapper/cmd-sink-hpux-ld @@ -0,0 +1,51 @@ +# $NetBSD: cmd-sink-hpux-ld,v 1.1 2007/04/14 14:17:50 tnn Exp $ + +# Empty out the command buffer and build up the command line in $cmd. +hprunpath= +while ! queue_is_empty cmdbuf; do + pop_queue cmdbuf arg + $debug_log $wrapperlog " (cmd-sink-hpux-ld) pop: $arg" + case $arg in + ############################################################## + # HP-UX ld doesn't support multiple rpath parameters, accumulate + # them into a single +b /path1:/path2:...:pathn + ############################################################## + +b|-Wl,+b|-rpath) + pop_queue cmdbuf dir + dir="${dir#-Wl,}" + case $hprunpath in + "") hprunpath="$dir" ;; + *) hprunpath="$hprunpath:$dir" ;; + esac + $debug_log $wrapperlog " (cmd-sink-hpux-ld) drop: $dir [adding to hprunpath]" + ;; + -Wl,+b,*|-R*|-Wl,-R*|-Wl,-rpath,*|-Wl,-rpath-link,*|-Wl,--rpath,*) + case $arg in + -Wl,+b,*) R="-Wl,+b," ;; + -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 $hprunpath in + "") hprunpath="$dir" ;; + *) hprunpath="$hprunpath:$dir" ;; + esac + $debug_log $wrapperlog " (cmd-sink-hpux-ld) drop: $dir [adding to hprunpath]" + ;; + *) + . $buildcmd + ;; + esac +done + +if $test -n "$hprunpath"; then + arg=+b + $debug_log $wrapperlog " (cmd-sink-hpux-ld) pop: $arg" + . $buildcmd + arg=$hprunpath + $debug_log $wrapperlog " (cmd-sink-hpux-ld) pop: $arg [aggregate]" + . $buildcmd +fi |