comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:13d2b8934445
1 #!/bin/sh
2 # subdir-rules.sh - generate make rules for subdir.mk
3 # usage: subdir-rules.sh "targets" "subdirs" "moresubdirs" > rules.mk
4
5 if [ $# != 3 ]; then
6 echo "$0: usage: $0 'targets' 'subdirs' 'moresubdirs'" 1>&2
7 exit 1
8 fi
9
10 TARGETS="$1"
11 SUBDIRS="$2"
12 MORESUBDIRS="$3"
13
14 # Remove anything from MORESUBDIRS that's already in DIRS
15 MORESUBDIRS=`(echo 1 $SUBDIRS; echo 2 $MORESUBDIRS) | awk '
16 /^1 / { for (i=2;i<=NF;i++) seen[$i] = 1; }
17 /^2 / { for (i=2;i<=NF;i++) if (!seen[$i]) print $i; }
18 '`
19
20 for T in $TARGETS; do
21 if [ "$T" != rules -a "$T" != distclean ]; then
22 echo "${T}: ${T}-subdirs"
23 fi
24 done
25
26 for T in $TARGETS; do
27 echo "${T}-subdirs:"
28
29 if [ "$T" = rules -o "$T" = distclean ]; then
30 DIRS="$SUBDIRS $MORESUBDIRS"
31 else
32 DIRS="$SUBDIRS"
33 fi
34
35 for D in $DIRS; do
36 echo $D | awk '{
37 printf "\t@echo \"%s ===> $(_SUBDIR_)%s\"\n", t, $1;
38 printf "\t@cd %s && $(MAKE) %s _SUBDIR_=$(_SUBDIR_)%s/\n", $1,t,$1;
39 }' "t=$T"
40 done
41 done
42
43 for T in $TARGETS; do
44 echo ".PHONY: $T ${T}-subdirs"
45 done
46
47 echo 'distclean-here:'
48 for D in $SUBDIRS $MORESUBDIRS; do
49 echo $D | awk '
50 {
51 printf "\t@echo \" [RMDIR] %s\"\n", $1;
52 printf "\t@-rm -f %s/Makefile %s/rules.mk %s/depend.mk\n",$1,$1,$1;
53 printf "\t@-rmdir %s\n", $1;
54 }
55 '
56 done