summaryrefslogtreecommitdiff
path: root/mk/wrapper/cmd-sink-hpux-ld
diff options
context:
space:
mode:
Diffstat (limited to 'mk/wrapper/cmd-sink-hpux-ld')
-rw-r--r--mk/wrapper/cmd-sink-hpux-ld51
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