Mercurial > ~dholland > hg > ag > index.cgi
diff mk/subdir-rules.sh @ 0:13d2b8934445
Import AnaGram (near-)release tree into Mercurial.
author | David A. Holland |
---|---|
date | Sat, 22 Dec 2007 17:52:45 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mk/subdir-rules.sh Sat Dec 22 17:52:45 2007 -0500 @@ -0,0 +1,56 @@ +#!/bin/sh +# subdir-rules.sh - generate make rules for subdir.mk +# usage: subdir-rules.sh "targets" "subdirs" "moresubdirs" > rules.mk + +if [ $# != 3 ]; then + echo "$0: usage: $0 'targets' 'subdirs' 'moresubdirs'" 1>&2 + exit 1 +fi + +TARGETS="$1" +SUBDIRS="$2" +MORESUBDIRS="$3" + +# Remove anything from MORESUBDIRS that's already in DIRS +MORESUBDIRS=`(echo 1 $SUBDIRS; echo 2 $MORESUBDIRS) | awk ' + /^1 / { for (i=2;i<=NF;i++) seen[$i] = 1; } + /^2 / { for (i=2;i<=NF;i++) if (!seen[$i]) print $i; } +'` + +for T in $TARGETS; do + if [ "$T" != rules -a "$T" != distclean ]; then + echo "${T}: ${T}-subdirs" + fi +done + +for T in $TARGETS; do + echo "${T}-subdirs:" + + if [ "$T" = rules -o "$T" = distclean ]; then + DIRS="$SUBDIRS $MORESUBDIRS" + else + DIRS="$SUBDIRS" + fi + + for D in $DIRS; do + echo $D | awk '{ + printf "\t@echo \"%s ===> $(_SUBDIR_)%s\"\n", t, $1; + printf "\t@cd %s && $(MAKE) %s _SUBDIR_=$(_SUBDIR_)%s/\n", $1,t,$1; + }' "t=$T" + done +done + +for T in $TARGETS; do + echo ".PHONY: $T ${T}-subdirs" +done + +echo 'distclean-here:' +for D in $SUBDIRS $MORESUBDIRS; do + echo $D | awk ' + { + printf "\t@echo \" [RMDIR] %s\"\n", $1; + printf "\t@-rm -f %s/Makefile %s/rules.mk %s/depend.mk\n",$1,$1,$1; + printf "\t@-rmdir %s\n", $1; + } + ' +done