svn commit: r250498 - projects/bmake/share/mk
Simon J. Gerraty
sjg at FreeBSD.org
Sat May 11 05:10:32 UTC 2013
Author: sjg
Date: Sat May 11 05:10:31 2013
New Revision: 250498
URL: http://svnweb.freebsd.org/changeset/base/250498
Log:
Bring meta2deps.sh closer to par with meta2deps.py
Modified:
projects/bmake/share/mk/gendirdeps.mk
projects/bmake/share/mk/meta2deps.sh
Modified: projects/bmake/share/mk/gendirdeps.mk
==============================================================================
--- projects/bmake/share/mk/gendirdeps.mk Sat May 11 02:48:40 2013 (r250497)
+++ projects/bmake/share/mk/gendirdeps.mk Sat May 11 05:10:31 2013 (r250498)
@@ -111,16 +111,24 @@ _py_d =
.if ${META2DEPS:E} == "py"
# we can afford to do this all the time.
DPDEPS ?= no
-META2DEPS_CMD = ${_time} ${PYTHON} ${META2DEPS} ${_py_d} \
- -R ${RELDIR} -H ${HOST_TARGET} \
- ${M2D_OBJROOTS:O:u:@o at -O $o@}
+META2DEPS_CMD = ${_time} ${PYTHON} ${META2DEPS} ${_py_d}
+.if ${DPDEPS:tl} != "no"
+META2DEPS_CMD += -D ${DPDEPS}
+.endif
+META2DEPS_FILTER = sed 's,^src:,${SRCTOP}/,;s,^\([^/]\),${OBJTOP}/\1,' |
+.elif ${META2DEPS:E} == "sh"
+META2DEPS_CMD = ${_time} ${_sh_x} ${META2DEPS} OBJTOP=${_OBJTOP}
+.else
+META2DEPS_CMD ?= ${META2DEPS}
+.endif
.if ${TARGET_OBJ_SPEC:U${MACHINE}} != ${MACHINE}
META2DEPS_CMD += -T ${TARGET_OBJ_SPEC}
.endif
-.if ${DPDEPS:tl} != "no"
-META2DEPS_CMD += -D ${DPDEPS}
-.endif
+META2DEPS_CMD += \
+ -R ${RELDIR} -H ${HOST_TARGET} \
+ ${M2D_OBJROOTS:O:u:@o at -O $o@}
+
M2D_OBJROOTS += ${OBJTOP} ${_OBJROOT} ${_objroot}
.if defined(SB_OBJROOT)
@@ -136,13 +144,6 @@ META2DEPS_ARGS += MACHINE=none
META2DEPS_CMD += -S ${SB_BACKING_SB}/src
M2D_OBJROOTS += ${SB_BACKING_SB}/${SB_OBJPREFIX}
.endif
-META2DEPS_FILTER = sed 's,^src:,${SRCTOP}/,;s,^\([^/]\),${OBJTOP}/\1,' |
-.elif ${META2DEPS:E} == "sh"
-META2DEPS_CMD = ${_time} ${_sh_x} ${META2DEPS} \
- OBJTOP=${_objtop} SB_OBJROOT=${_objroot}
-.else
-META2DEPS_CMD ?= ${META2DEPS}
-.endif
# we are only interested in the dirs
# sepecifically those we read something from.
Modified: projects/bmake/share/mk/meta2deps.sh
==============================================================================
--- projects/bmake/share/mk/meta2deps.sh Sat May 11 02:48:40 2013 (r250497)
+++ projects/bmake/share/mk/meta2deps.sh Sat May 11 05:10:31 2013 (r250498)
@@ -114,16 +114,89 @@ meta2dirs() {
sort -u
}
+add_list() {
+ sep=' '
+ suffix=
+ while :
+ do
+ case "$1" in
+ "|") sep="$1"; shift;;
+ -s) suffix="$2"; shift 2;;
+ *) break;;
+ esac
+ done
+ name=$1
+ shift
+ eval list="\$$name"
+ for top in "$@"
+ do
+ case "$sep$list$sep" in
+ *"$sep$top$suffix$sep"*) continue;;
+ esac
+ list="${list:+$list$sep}$top$suffix"
+ done
+ eval "$name=\"$list\""
+}
+
meta2deps() {
DPDEPS=
+ SRCTOPS=$SRCTOP
+ OBJROOTS=
while :
do
case "$1" in
*=*) eval export "$1"; shift;;
+ -a) MACHINE_ARCH=$2; shift 2;;
+ -m) MACHINE=$2; shift 2;;
+ -C) CURDIR=$2; shift 2;;
+ -H) HOST_TARGET=$2; shift 2;;
+ -S) add_list SRCTOPS $2; shift 2;;
+ -O) add_list OBJROOTS $2; shift 2;;
+ -R) RELDIR=$2; shift 2;;
+ -T) TARGET_SPEC=$2; shift 2;;
*) break;;
esac
done
+ _th= _o=
+ case "$MACHINE" in
+ host) _ht=$HOST_TARGET;;
+ esac
+
+ for o in $OBJROOTS
+ do
+ case "$MACHINE,/$o/" in
+ host,*$HOST_TARGET*) ;;
+ *$MACHINE*|*${TARGET_SPEC:-$MACHINE}*) ;;
+ *) add_list _o $o; continue;;
+ esac
+ for x in $_ht $TARGET_SPEC $MACHINE
+ do
+ case "$o" in
+ "") continue;;
+ */$x/) add_list _o ${o%$x/}; o=;;
+ */$x) add_list _o ${o%$x}; o=;;
+ *$x/) add_list _o ${o%$x/}; o=;;
+ *$x) add_list _o ${o%$x}; o=;;
+ esac
+ done
+ done
+ OBJROOTS="$_o"
+
+ case "$OBJTOP" in
+ "")
+ for o in $OBJROOTS
+ do
+ OBJTOP=$o${TARGET_SPEC:-$MACHINE}
+ break
+ done
+ ;;
+ esac
+ src_re=
+ obj_re=
+ add_list '|' -s '/*' src_re $SRCTOPS
+ add_list '|' -s '*' obj_re $OBJROOTS
+
[ -z "$RELDIR" ] && unset DPDEPS
tf=/tmp/m2d$$-$USER
rm -f $tf.*
@@ -165,7 +238,7 @@ meta2deps() {
esac
case "$op,$path" in
- W,*srcrel) continue;;
+ W,*srcrel|*.dirdep) continue;;
C,*)
case "$path" in
/*) cwd=$path;;
@@ -180,8 +253,7 @@ meta2deps() {
;;
*) dir=${path%/*}
case "$path" in
- $SB/*|${SB_BACKING_SB:-$SB}/*) ;;
- $SB_OBJROOT*) ;;
+ $src_re|$obj_re) ;;
/*/stage/*) ;;
/*) continue;;
*) for path in $ldir/$path $cwd/$path
@@ -213,7 +285,7 @@ meta2deps() {
esac
case "$dir" in
${CURDIR:-.}|${CURDIR:-.}/*|"") continue;;
- $SRCTOP/*|${SB_BACKING_SB:-$SB}/src/*)
+ $src_re)
# avoid repeating ourselves...
case "$DPDEPS,$seensrc," in
,*)
@@ -239,7 +311,7 @@ meta2deps() {
[ -f $path ] || continue
case "$dir" in
$CWD) continue;; # ignore
- $SRCTOP/*|${SB_BACKING_SB:-$SB}/src/*)
+ $src_re)
seenit="$seenit,$seen"
echo $dir >> $tf.srcdep
case "$DPDEPS,$reldir,$seensrc," in
@@ -265,7 +337,7 @@ meta2deps() {
fi
seenit="$seenit,$seen"
case "$dir" in
- $SB/*|${SB_OBJROOT:-$SB/}*|${SB_BACKING_SB:-$SB}/*)
+ $obj_re)
echo $dir;;
esac
done > $tf.dirdep
@@ -281,7 +353,7 @@ meta2deps() {
# qualified with .<machine> as needed.
# We strip .$MACHINE though
xargs cat < $f | sort -u |
- sed "s,^# ,,;s,^,$OBJTOP/,;s,\.$MACHINE\$,,"
+ sed "s,^# ,,;s,^,$OBJTOP/,;s,\.${TARGET_SPEC:-$MACHINE}\$,,;s,\.$MACHINE\$,,"
;;
*) sort -u $f;;
esac
More information about the svn-src-projects
mailing list