diff options
-rw-r--r-- | mk/buildlink3/bsd.buildlink3.mk | 34 | ||||
-rw-r--r-- | mk/buildlink3/buildcmd | 45 | ||||
-rw-r--r-- | mk/buildlink3/libtool-do-install | 25 | ||||
-rw-r--r-- | mk/buildlink3/libtool.sh | 49 | ||||
-rw-r--r-- | mk/buildlink3/logic | 19 | ||||
-rw-r--r-- | mk/buildlink3/quotearg | 20 | ||||
-rw-r--r-- | mk/buildlink3/wrapper.sh | 35 |
7 files changed, 116 insertions, 111 deletions
diff --git a/mk/buildlink3/bsd.buildlink3.mk b/mk/buildlink3/bsd.buildlink3.mk index ce2f87c6c9e..bf9a7b4d281 100644 --- a/mk/buildlink3/bsd.buildlink3.mk +++ b/mk/buildlink3/bsd.buildlink3.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.buildlink3.mk,v 1.22 2003/09/30 10:17:30 jlam Exp $ +# $NetBSD: bsd.buildlink3.mk,v 1.23 2003/10/03 19:39:19 jlam Exp $ # # An example package buildlink3.mk file: # @@ -841,6 +841,8 @@ _BLNK_SANITIZED_PATH!= ${ECHO} ${PATH} | ${SED} \ _BLNK_WRAP_SANITIZE_PATH= PATH="${_BLNK_SANITIZED_PATH}" _BLNK_EMPTY_FILE?= ${BUILDLINK_DIR}/bin/.empty _BLNK_WRAP_ENV?= ${BUILDLINK_WRAPPER_ENV} +_BLNK_WRAP_BUILDCMD= ${BUILDLINK_DIR}/bin/.buildcmd +_BLNK_WRAP_QUOTEARG= ${BUILDLINK_DIR}/bin/.quotearg _BLNK_WRAP_MARSHALL= ${BUILDLINK_DIR}/bin/.marshall _BLNK_WRAP_PRE_CACHE= ${BUILDLINK_DIR}/bin/.pre-cache _BLNK_WRAP_CACHE_ADD= ${BUILDLINK_DIR}/bin/.cache-add @@ -851,7 +853,6 @@ _BLNK_WRAP_POST_CACHE= ${BUILDLINK_DIR}/bin/.post-cache _BLNK_WRAP_LOGIC= ${BUILDLINK_DIR}/bin/.logic _BLNK_WRAP_LOGIC_TRANSFORM= ${BUILDLINK_DIR}/bin/.logic-trans _BLNK_WRAP_LOG= ${WRKLOG} -_BLNK_LIBTOOL_DO_INSTALL= ${BUILDLINK_DIR}/bin/.libtool-do-install _BLNK_LIBTOOL_FIX_LA= ${BUILDLINK_DIR}/bin/.libtool-fix-la _BLNK_FAKE_LA= ${BUILDLINK_DIR}/bin/.fake-la _BLNK_GEN_TRANSFORM= ${BUILDLINK_DIR}/bin/.gen-transform @@ -868,6 +869,8 @@ _BLNK_WRAP_SETENV.${_wrappee_}= ${_wrappee_}="${BUILDLINK_${_wrappee_}:T}" _BLNK_WRAP_SANITIZE_PATH.${_wrappee_}= ${_BLNK_WRAP_SANITIZE_PATH} _BLNK_WRAP_EXTRA_FLAGS.${_wrappee_}= # empty _BLNK_WRAP_ENV.${_wrappee_}= ${_BLNK_WRAP_ENV} +_BLNK_WRAP_BUILDCMD.${_wrappee_}= ${_BLNK_WRAP_BUILDCMD} +_BLNK_WRAP_QUOTEARG.${_wrappee_}= ${_BLNK_WRAP_QUOTEARG} _BLNK_WRAP_MARSHALL.${_wrappee_}= ${_BLNK_WRAP_MARSHALL} _BLNK_WRAP_PRIVATE_PRE_CACHE.${_wrappee_}= ${_BLNK_EMPTY_FILE} _BLNK_WRAP_PRIVATE_CACHE_ADD.${_wrappee_}= ${_BLNK_EMPTY_FILE} @@ -974,7 +977,6 @@ _BLNK_WRAP_EXTRA_FLAGS.SHLIBTOOL= ${_BLNK_WRAP_EXTRA_FLAGS.LIBTOOL} .PHONY: buildlink-wrappers -buildlink-wrappers: ${_BLNK_LIBTOOL_DO_INSTALL} buildlink-wrappers: ${_BLNK_LIBTOOL_FIX_LA} .for _wrappee_ in ${_BLNK_WRAPPEES} @@ -996,13 +998,15 @@ _BLNK_WRAPPER_TRANSFORM_SED.${_wrappee_}= \ -e "s|@WRKSRC@|${WRKSRC}|g" \ -e "s|@CAT@|${CAT:Q}|g" \ -e "s|@ECHO@|${ECHO:Q}|g" \ + -e "s|@EXPR@|${EXPR:Q}|g" \ -e "s|@SED@|${SED:Q}|g" \ -e "s|@TEST@|${TEST:Q}|g" \ -e "s|@TOUCH@|${TOUCH:Q}|g" \ - -e "s|@_BLNK_LIBTOOL_DO_INSTALL@|${_BLNK_LIBTOOL_DO_INSTALL:Q}|g" \ -e "s|@_BLNK_LIBTOOL_FIX_LA@|${_BLNK_LIBTOOL_FIX_LA:Q}|g" \ -e "s|@_BLNK_WRAP_LOG@|${_BLNK_WRAP_LOG:Q}|g" \ -e "s|@_BLNK_WRAP_EXTRA_FLAGS@|${_BLNK_WRAP_EXTRA_FLAGS.${_wrappee_}:Q}|g" \ + -e "s|@_BLNK_WRAP_BUILDCMD@|${_BLNK_WRAP_BUILDCMD.${_wrappee_}:Q}|g" \ + -e "s|@_BLNK_WRAP_QUOTEARG@|${_BLNK_WRAP_QUOTEARG.${_wrappee_}:Q}|g" \ -e "s|@_BLNK_WRAP_MARSHALL@|${_BLNK_WRAP_MARSHALL.${_wrappee_}:Q}|g" \ -e "s|@_BLNK_WRAP_PRIVATE_PRE_CACHE@|${_BLNK_WRAP_PRIVATE_PRE_CACHE.${_wrappee_}:Q}|g" \ -e "s|@_BLNK_WRAP_PRIVATE_CACHE_ADD@|${_BLNK_WRAP_PRIVATE_CACHE_ADD.${_wrappee_}:Q}|g" \ @@ -1021,6 +1025,8 @@ buildlink-wrappers: ${BUILDLINK_${_wrappee_}} .if !target(${BUILDLINK_${_wrappee_}}) ${BUILDLINK_${_wrappee_}}: \ ${_BLNK_WRAPPER_SH.${_wrappee_}} \ + ${_BLNK_WRAP_BUILDCMD.${_wrappee_}} \ + ${_BLNK_WRAP_QUOTEARG.${_wrappee_}} \ ${_BLNK_WRAP_MARSHALL.${_wrappee_}} \ ${_BLNK_WRAP_PRIVATE_CACHE.${_wrappee_}} \ ${_BLNK_WRAP_CACHE.${_wrappee_}} \ @@ -1122,6 +1128,20 @@ ${_BLNK_EMPTY_FILE}: ${_PKG_SILENT}${_PKG_DEBUG}${TOUCH} ${TOUCH_ARGS} ${.TARGET} .endif +.if !target(${_BLNK_WRAP_BUILDCMD}) +${_BLNK_WRAP_BUILDCMD}: ${.CURDIR}/../../mk/buildlink3/buildcmd + ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${.TARGET:H} + ${_PKG_SILENT}${_PKG_DEBUG}${CAT} ${.ALLSRC} \ + | ${_BLNK_SH_CRUNCH_FILTER} > ${.TARGET} +.endif + +.if !target(${_BLNK_WRAP_QUOTEARG}) +${_BLNK_WRAP_QUOTEARG}: ${.CURDIR}/../../mk/buildlink3/quotearg + ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${.TARGET:H} + ${_PKG_SILENT}${_PKG_DEBUG}${CAT} ${.ALLSRC} \ + | ${_BLNK_SH_CRUNCH_FILTER} > ${.TARGET} +.endif + .if !target(${_BLNK_WRAP_MARSHALL}) ${_BLNK_WRAP_MARSHALL}: ${.CURDIR}/../../mk/buildlink3/marshall ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${.TARGET:H} @@ -1268,12 +1288,6 @@ ${_BLNK_WRAP_PRIVATE_POST_LOGIC.${_wrappee_}}: . endif .endfor -${BUILDLINK_DIR}/bin/.libtool-do-install: \ - ${.CURDIR}/../../mk/buildlink3/libtool-do-install - ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${.TARGET:H} - ${_PKG_SILENT}${_PKG_DEBUG}${CAT} ${.ALLSRC} \ - | ${_BLNK_SH_CRUNCH_FILTER} > ${.TARGET} - ${BUILDLINK_DIR}/bin/.libtool-fix-la: \ ${.CURDIR}/../../mk/buildlink3/libtool-fix-la \ ${_BLNK_UNTRANSFORM_SEDFILE} diff --git a/mk/buildlink3/buildcmd b/mk/buildlink3/buildcmd new file mode 100644 index 00000000000..2a1bb6814a4 --- /dev/null +++ b/mk/buildlink3/buildcmd @@ -0,0 +1,45 @@ +# $NetBSD: buildcmd,v 1.1 2003/10/03 19:39:19 jlam Exp $ +# +# Append $arg to $cmd to build up the command line to be executed, but +# directly add the next few arguments to $cmd if $skipargs > 0. + +if $test $skipargs -gt 0; then + cmd="$cmd $arg" + while $test $skipargs -gt 0; do + arg=$1; shift + . $quotearg + arg="$qarg" + cmd="$cmd $arg" + skipargs=`$expr $skipargs - 1` + done +else + # + # Reduce command length by not appending options that we've + # already seen to the command. + # + case $arg in + -[DILR]*|-Wl,-R*|-Wl,-*,/*) + # + # These options are only ever useful the first time + # they're given. All other instances are redundant. + # + case "$cmd" in + *" "$arg|*" "$arg" "*) ;; + *) cmd="$cmd $arg" ;; + esac + ;; + -l*) + # + # Extra libraries are suppressed only if they're + # repeated, e.g. "-lm -lm -lm -lm" -> "-lm". + # + case "$cmd" in + *" "$arg) ;; + *) cmd="$cmd $arg" ;; + esac + ;; + *) + cmd="$cmd $arg" + ;; + esac +fi diff --git a/mk/buildlink3/libtool-do-install b/mk/buildlink3/libtool-do-install deleted file mode 100644 index dc851a5e339..00000000000 --- a/mk/buildlink3/libtool-do-install +++ /dev/null @@ -1,25 +0,0 @@ -# $NetBSD: libtool-do-install,v 1.2 2003/09/02 06:59:56 jlam Exp $ -# -# This file is called directly by the libtool wrapper when it has -# figured out that the libtool invocation is meant to do a file -# installation. We simply quote the remaining command-line arguments -# properly to build a correct libtool command line. The libtool -# wrapper will perform the actual execution. We don't worry about -# caching or speed, since installation is not a bottleneck for package -# creation. - -cmd="$cmd $arg" -while $test $# -gt 0; do - arg="$1"; shift - case $arg in - *[\`\"\$\\]*) - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - ;; - esac - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - cmd="$cmd $arg" -done diff --git a/mk/buildlink3/libtool.sh b/mk/buildlink3/libtool.sh index f6057eb58e9..8008999eafc 100644 --- a/mk/buildlink3/libtool.sh +++ b/mk/buildlink3/libtool.sh @@ -1,10 +1,12 @@ #!@BUILDLINK_SHELL@ # -# $NetBSD: libtool.sh,v 1.4 2003/09/23 19:48:23 jlam Exp $ +# $NetBSD: libtool.sh,v 1.5 2003/10/03 19:39:19 jlam Exp $ Xsed='@SED@ -e 1s/^X//' sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' +buildcmd="@_BLNK_WRAP_BUILDCMD@" +quotearg="@_BLNK_WRAP_QUOTEARG@" marshall="@_BLNK_WRAP_MARSHALL@" private_pre_cache="@_BLNK_WRAP_PRIVATE_PRE_CACHE@" private_cache_add="@_BLNK_WRAP_PRIVATE_CACHE_ADD@" @@ -20,7 +22,6 @@ post_logic="@_BLNK_WRAP_POST_LOGIC@" wrapperlog="${BUILDLINK_WRAPPER_LOG-@_BLNK_WRAP_LOG@}" libtool_fix_la="@_BLNK_LIBTOOL_FIX_LA@" -libtool_do_install="@_BLNK_LIBTOOL_DO_INSTALL@" fixlibpath=${BUILDLINK_FIX_IMPROPER_LIBTOOL_LIBPATH-yes} updatecache=${BUILDLINK_UPDATE_CACHE-yes} @@ -86,12 +87,23 @@ done cmd="@WRAPPEE@" case $mode in install) - arg="$1"; shift - . $libtool_do_install + # + # We're doing libtool installation, so just quote all of the + # command-line arguments and append them to $cmd. We don't worry + # about caching or speed, since installation is not a bottleneck + # for package creation. + # + while $test $# -gt 0; do + arg="$1"; shift + . $quotearg + arg="$qarg" + cmd="$cmd $arg" + done ;; *) while $test $# -gt 0; do arg="$1"; shift + skipargs=0 case $arg in --fix-la) . $libtool_fix_la @@ -137,34 +149,9 @@ install) ;; esac # - # Reduce command length by not appending options that we've - # already seen to the command. + # Build up the command-line. # - case "$arg" in - -[DILR]*|-Wl,-R*|-Wl,-*,/*) - # - # These options are only ever useful the first time - # they're given. All other instances are redundant. - # - case "$cmd" in - *" "$arg|*" "$arg" "*) ;; - *) cmd="$cmd $arg" ;; - esac - ;; - -l*) - # - # Extra libraries are suppressed only if they're - # repeated, e.g. "-lm -lm -lm -lm" -> "-lm". - # - case "$cmd" in - *" "$arg) ;; - *) cmd="$cmd $arg" ;; - esac - ;; - *) - cmd="$cmd $arg" - ;; - esac + . $buildcmd done ;; esac diff --git a/mk/buildlink3/logic b/mk/buildlink3/logic index c62c25ceaf6..75b9b2909ff 100644 --- a/mk/buildlink3/logic +++ b/mk/buildlink3/logic @@ -1,26 +1,11 @@ -# $NetBSD: logic,v 1.3 2003/09/19 22:47:34 jlam Exp $ +# $NetBSD: logic,v 1.4 2003/10/03 19:39:19 jlam Exp $ quotedarg=no addtocache=no addtoprivatecache=no cachesettings='arg="$cachearg"; cachehit=yes' -# $qarg contains a correctly-quoted $arg -case $arg in -*[\`\"\$\\]*) - qarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - quotedarg=yes - ;; -*) - qarg="$arg" - ;; -esac -case $qarg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - qarg="\"$qarg\"" - quotedarg=yes - ;; -esac +. $quotearg searcharg="$qarg" case $arg in diff --git a/mk/buildlink3/quotearg b/mk/buildlink3/quotearg new file mode 100644 index 00000000000..ea37c7df37c --- /dev/null +++ b/mk/buildlink3/quotearg @@ -0,0 +1,20 @@ +# $NetBSD: quotearg,v 1.1 2003/10/03 19:39:19 jlam Exp $ +# +# Returns $qarg, which contains a correctly-quoted $arg. Also sets +# $quotedarg to "yes" if the $arg needed to be quoted. +# +case $arg in +*[\`\"\$\\]*) + qarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + quotedarg=yes + ;; +*) + qarg="$arg" + ;; +esac +case $qarg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg="\"$qarg\"" + quotedarg=yes + ;; +esac diff --git a/mk/buildlink3/wrapper.sh b/mk/buildlink3/wrapper.sh index c95f4968f67..4a611fc2fd1 100644 --- a/mk/buildlink3/wrapper.sh +++ b/mk/buildlink3/wrapper.sh @@ -1,10 +1,12 @@ #!@BUILDLINK_SHELL@ # -# $NetBSD: wrapper.sh,v 1.3 2003/09/08 21:10:26 jlam Exp $ +# $NetBSD: wrapper.sh,v 1.4 2003/10/03 19:39:19 jlam Exp $ Xsed='@SED@ -e 1s/^X//' sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' +buildcmd="@_BLNK_WRAP_BUILDCMD@" +quotearg="@_BLNK_WRAP_QUOTEARG@" marshall="@_BLNK_WRAP_MARSHALL@" private_pre_cache="@_BLNK_WRAP_PRIVATE_PRE_CACHE@" private_cache_add="@_BLNK_WRAP_PRIVATE_CACHE_ADD@" @@ -24,6 +26,7 @@ cacheall="${BUILDLINK_CACHE_ALL-no}" cat="@CAT@" echo="@ECHO@" +expr="@EXPR@" test="@TEST@" BUILDLINK_DIR="@BUILDLINK_DIR@" @@ -35,6 +38,7 @@ while $test $# -gt 0; do arg="$1"; shift cachehit=no skipcache=no + skipargs=0 # # Marshall any group of consecutive arguments into a single # $arg to be checked in the cache and logic files. @@ -58,34 +62,9 @@ while $test $# -gt 0; do no) . $logic ;; esac # - # Reduce command length by not appending options that we've - # already seen to the command. + # Build up the command-line. # - case $arg in - -[DILR]*|-Wl,-R*|-Wl,-*,/*) - # - # These options are only ever useful the first time - # they're given. All other instances are redundant. - # - case "$cmd" in - *" "$arg|*" "$arg" "*) ;; - *) cmd="$cmd $arg" ;; - esac - ;; - -l*) - # - # Extra libraries are suppressed only if they're - # repeated, e.g. "-lm -lm -lm -lm" -> "-lm". - # - case "$cmd" in - *" "$arg) ;; - *) cmd="$cmd $arg" ;; - esac - ;; - *) - cmd="$cmd $arg" - ;; - esac + . $buildcmd done @_BLNK_WRAP_ENV@ |