pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/mk/wrapper Split out the argument pre-processing logic...
details: https://anonhg.NetBSD.org/pkgsrc/rev/d35de540ed52
branches: trunk
changeset: 487677:d35de540ed52
user: jlam <jlam%pkgsrc.org@localhost>
date: Tue Jan 18 17:25:13 2005 +0000
description:
Split out the argument pre-processing logic into its own script
arg-pp-main, and allow for wrapper-specific hooks to extend the
pre-processing through _WRAP_ARG_PP.<wrappee>. Move the Darwin
GCC-related preprocessing into arg-pp-darwin-gcc, and create a
arg-pp-mipspro-cc that understands -LANG:<feature> and -LIST:<feature>
so that they're not confused with the usual -Ldir options.
diffstat:
mk/wrapper/NOTES | 34 ++++----
mk/wrapper/arg-pp-darwin-gcc | 55 ++++++++++++++
mk/wrapper/arg-pp-main | 159 +++++++++++++++++++++++++++++++++++++++++++
mk/wrapper/arg-pp-mipspro-cc | 48 ++++++++++++
mk/wrapper/bsd.wrapper.mk | 39 +++++++++-
mk/wrapper/logic | 154 ++--------------------------------------
mk/wrapper/wrapper.sh | 4 +-
7 files changed, 329 insertions(+), 164 deletions(-)
diffs (truncated from 624 to 300 lines):
diff -r 7d66c501165c -r d35de540ed52 mk/wrapper/NOTES
--- a/mk/wrapper/NOTES Tue Jan 18 17:05:21 2005 +0000
+++ b/mk/wrapper/NOTES Tue Jan 18 17:25:13 2005 +0000
@@ -1,4 +1,4 @@
-$NetBSD: NOTES,v 1.1 2004/09/21 15:01:41 jlam Exp $
+$NetBSD: NOTES,v 1.2 2005/01/18 17:25:13 jlam Exp $
==> {"$@"} ,--> {argbuf} ,--> {cmdbuf}
@@ -8,24 +8,24 @@
| | | | | |
v v | | | |
| |
- [scan] [arg-source] `--> [logic] `--> [cmd-sink]
+ [scan] [arg-source] `--> [logic] `--------> [cmd-sink]
- ^ ^ ^ ^
- | | | |
- ,-----------------' | | |
- | ,-------' `---. |
- | | | |
- v v v v
+ ^ ^ ^ ^ ^ ^
+ ,-----------------------------' | | | | |
+ | ,-------------------' | | | |
+ | | ,-------------' | | |
+ | | | ,---' `-------. |
+ v v v v v v
- [cache] [transform.sed] [transform] [buildcmd]
+ [arg-pp-main] [arg-pp] [cache] [transform.sed] [transform] [buildcmd]
- |
- ,-- {cmd} <--|
- {cmd} <===| |
- `-- {libs} <--'
+ |
+ ,-- {cmd} <--|
+ {cmd} <===| |
+ `-- {libs} <--'
- ^
- |
- v
+ ^
+ |
+ v
- [reorderlibs]
+ [reorderlibs]
diff -r 7d66c501165c -r d35de540ed52 mk/wrapper/arg-pp-darwin-gcc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mk/wrapper/arg-pp-darwin-gcc Tue Jan 18 17:25:13 2005 +0000
@@ -0,0 +1,55 @@
+# $NetBSD: arg-pp-darwin-gcc,v 1.1 2005/01/18 17:25:13 jlam Exp $
+#
+# Copyright (c) 2005 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.
+
+case $arg in
+######################################################################
+# Darwin's linker uses:
+#
+# -dylib_file /path/shlib:/path2/shlib
+# -dylib_install_name /path/shlib
+# -install_name /path/shlib
+#
+# to pass the installed locations for the shared libraries to the
+# linker, and we need to pass the extra argument unmodified. The
+# purpose of -seg_addr_table_filename is more obscure, but Darwin's
+# imake rules use it.
+######################################################################
+-dylib_file|-dylib_install_name|-install_name|-seg_addr_table_filename)
+ skipargs=1
+ argok=yes
+ argmatch=yes
+ ;;
+esac
diff -r 7d66c501165c -r d35de540ed52 mk/wrapper/arg-pp-main
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mk/wrapper/arg-pp-main Tue Jan 18 17:25:13 2005 +0000
@@ -0,0 +1,159 @@
+# $NetBSD: arg-pp-main,v 1.1 2005/01/18 17:25:13 jlam Exp $
+#
+# Copyright (c) 2005 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.
+
+case $arg in
+######################################################################
+# Split direct paths to shared libraries into the "-Ldir -llib"
+# equivalent.
+######################################################################
+/*/lib*.so|/*/lib*.so.[0-9]*)
+ dir="${arg%/lib*}"
+ lib="${arg#$dir/lib}"
+ case $lib in
+ */*) argok=yes; argmatch=yes ;;
+ *.so) lib="${lib%.so}" ;;
+ *.so.[0-9]*) lib="${lib%.so.[0-9]*}" ;;
+ esac
+ prepend_queue argbuf "-l$lib"
+ $debug_log $wrapperlog " (arg-pp-main) pre: -l$lib"
+ prepend_queue argbuf "-L$dir"
+ $debug_log $wrapperlog " (arg-pp-main) pre: -L$dir"
+ ;;
+/*/lib*.sl|/*/lib*.sl.[0-9]*) # HP-UX
+ dir="${arg%/lib*}"
+ lib="${arg#$dir/lib}"
+ case $lib in
+ */*) argok=yes; argmatch=yes ;;
+ *.sl) lib="${lib%.sl}" ;;
+ *.sl.[0-9]*) lib="${lib%.sl.[0-9]*}" ;;
+ esac
+ prepend_queue argbuf "-l$lib"
+ $debug_log $wrapperlog " (arg-pp-main) pre: -l$lib"
+ prepend_queue argbuf "-L$dir"
+ $debug_log $wrapperlog " (arg-pp-main) pre: -L$dir"
+ ;;
+/*/lib*.dylib) # Darwin
+ dir="${arg%/lib*.dylib}"
+ lib="${arg#$dir/lib}"
+ case $lib in
+ */*) argok=yes; argmatch=yes ;;
+ *.dylib) lib="${lib%.dylib}" ;;
+ esac
+ prepend_queue argbuf "-l$lib"
+ $debug_log $wrapperlog " (arg-pp-main) pre: -l$lib"
+ prepend_queue argbuf "-L$dir"
+ $debug_log $wrapperlog " (arg-pp-main) pre: -L$dir"
+ ;;
+######################################################################
+# Remove extraneous comma in "-Wl,-R,/dir" and in "-Wl,-L,/dir".
+######################################################################
+-Wl,-L,*)
+ arg="-Wl,-L${arg#-Wl,-L,}"
+ $debug_log $wrapperlog " (arg-pp-main) pre: $arg"
+ prepend_queue argbuf "$arg"
+ argmatch=yes
+ ;;
+-Wl,-R,*)
+ arg="-Wl,-R${arg#-Wl,-R,}"
+ $debug_log $wrapperlog " (arg-pp-main) pre: $arg"
+ prepend_queue argbuf "$arg"
+ argmatch=yes
+ ;;
+######################################################################
+# Merge "-Wl,-R -Wl,/dir" into a single "-Wl,-R/dir". Same for -Wl,-L,
+# -Wl,-rpath and -Wl,-rpath-link.
+######################################################################
+-Wl,-[LR])
+ pop_queue argbuf nextarg
+ $debug_log $wrapperlog " (arg-pp-main) pop: $nextarg"
+ shquote "${nextarg#-Wl,}"; nextarg="$shquoted"
+ $debug_log $wrapperlog " (arg-pp-main) pre: $arg$nextarg"
+ prepend_queue argbuf "$arg$nextarg"
+ argmatch=yes
+ ;;
+-Wl,-rpath|-Wl,-rpath-link|-Wl,--rpath)
+ pop_queue argbuf nextarg
+ $debug_log $wrapperlog " (arg-pp-main) pop: $nextarg"
+ shquote "${nextarg#-Wl,}"; nextarg="$shquoted"
+ $debug_log $wrapperlog " (arg-pp-main) pre: $arg,$nextarg"
+ prepend_queue argbuf "$arg,$nextarg"
+ argmatch=yes
+ ;;
+######################################################################
+# Remove rpath options that try to add relative paths to the runtime
+# library search path. This basically cleans up after lazy programmers
+# who can't write Makefiles.
+######################################################################
+-R[!/]*|-Wl,-R[!/]*|\
+-Wl,-rpath,[!/]*|-Wl,-rpath-link,[!/]*|-Wl,--rpath,[!/]*)
+ $debug_log $wrapperlog " (arg-pp-main) drop: $arg"
+ argmatch=yes
+ ;;
+######################################################################
+# Remove consecutive, repeated library options.
+######################################################################
+-l*)
+ head_queue argbuf nextarg
+ while $test "$nextarg" = "$arg"; do
+ pop_queue argbuf nextarg
+ $debug_log $wrapperlog " (arg-pp-main) drop: $nextarg"
+ if queue_is_empty argbuf; then
+ break
+ else
+ head_queue argbuf nextarg
+ fi
+ done
+ argok=yes
+ argmatch=yes
+ ;;
+#######################################################################
+# The -o option takes an extra argument that should be passed unmodified.
+#######################################################################
+-o)
+ skipargs=1
+ argok=yes
+ argmatch=yes
+ ;;
+#######################################################################
+# GNU ld uses "--dynamic-linker /path/to/shared/object" to set the
+# dynamic linker code for ELF executables.
+#######################################################################
+--dynamic-linker)
+ skipargs=1
+ argok=yes
+ argmatch=yes
+ ;;
+esac
diff -r 7d66c501165c -r d35de540ed52 mk/wrapper/arg-pp-mipspro-cc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mk/wrapper/arg-pp-mipspro-cc Tue Jan 18 17:25:13 2005 +0000
@@ -0,0 +1,48 @@
+# $NetBSD: arg-pp-mipspro-cc,v 1.1 2005/01/18 17:25:13 jlam Exp $
+#
+# Copyright (c) 2005 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.
+#
Home |
Main Index |
Thread Index |
Old Index