makeplist revision 1.7
1#!/bin/sh
2#
3# Print out the files in some or all lists.
4# Usage: makeplist [-a arch] [-m machine] [-s setsdir] [-p prefix] setname pkgname
5#
6
7# set defaults
8MAKE="${MAKE:-make} -j 1"
9machine=${MACHINE:-`printf 'xxx:\n\techo ${MACHINE}' | ${MAKE} -s -f-`}
10arch=${MACHINE_ARCH:-`printf 'xxx:\n\techo ${MACHINE_ARCH}' | ${MAKE} -s -f-`}
11setd=`dirname $0`
12prefix=/
13
14usage() {
15exec 1>&2
16
17echo "Usage: $0 [-a arch] [-m machine] [-s setsdir] [-p prefix] setname pkgname"
18echo "	-a arch		set arch (e.g, m68k, mips, powerpc)	[$arch]"
19echo "	-m machine	set machine (e.g, amiga, i386, macppc)	[$machine]"
20echo "	-s setsdir	directory to find sets			[$setd]"
21echo "	-p prefix	prefix for created plist		[$prefix]"
22echo "	setname pkgname	set and package to build plist for"
23
24exit 1
25}
26
27# handle args
28while : ; do
29	case $1 in
30	-a*)
31		arch=$2; shift
32		;;
33	-m*)
34		machine=$2; shift
35		;;
36	-s*)
37		setd=$2; shift
38		;;
39	-p*)
40		prefix=$2; shift
41		;;
42	-*)
43		usage
44		exit 1
45		;;
46	*)
47		break
48		;;
49	esac
50	shift
51done
52if [ -n "$1" ]; then
53	setname="$1"
54else
55	usage
56	exit 1
57fi
58if [ -n "$2" ]; then
59	pkgname=$2
60else
61	usage
62	exit 1
63fi
64
65# Convert mipse[lb] to mips after processing command line arguments.
66arch=`echo $arch | sed s,^mipse.,mips, | sed s,^sh3e.,sh3,`
67
68# Compute toolchain  used on target cpu.
69case "$machine" in
70ns32k)	shlib=aout ;;
71*)	case "$arch" in
72	sh3)	shlib="" ;;
73	*)	shlib=elf ;;
74	esac
75esac
76
77filename=/tmp/makeplist.$$ 
78ffilename=/tmp/makeplist.files.$$ 
79dfilename=/tmp/makeplist.dirs.$$ 
80
81echo "@cwd $prefix" > $filename 
82( 
83	cat $setd/lists/$setname/mi 
84# where does cpu get set? XXX - agc
85	if [ "$machine" != "$cpu" -a -f $setd/lists/$setname/ad.${arch} ]; then 
86		cat $setd/lists/$setname/ad.${arch} 
87	fi 
88	if [ -f $setd/lists/$setname/md.${machine} ]; then 
89		cat $setd/lists/$setname/md.${machine} 
90	fi 
91	if [ "$shlib" != "" ]; then 
92		if [ -f $setd/lists/$setname/shl.mi ]; then 
93			cat $setd/lists/$setname/shl.mi 
94		fi 
95		if [ -f $setd/lists/$setname/shl.${shlib} ]; then 
96			cat $setd/lists/$setname/shl.${shlib} 
97		fi 
98	fi 
99)| env PLISTPKG=$pkgname awk -- '/^#/ { next } $2 == ENVIRON["PLISTPKG"] {sub("^\./", "", $1); print $1}' | sort -u >> $filename
100
101env FFILENAME=$ffilename DFILENAME=$dfilename awk ' 
102/^@cwd/ { prefix = $2; next } 
103{ 
104        s = sprintf("if [ -d %s%s ]; then echo @dirrm %s >> %s; else echo %s >> %s; fi", prefix, $0, $0, ENVIRON["DFILENAME"], $0, ENVIRON["FFILENAME"]); 
105        system(s); 
106}' $filename
107
108echo "@cwd $prefix"
109if [ -s $ffilename ]; then
110	cat $ffilename
111fi
112if [ -s $dfilename ]; then
113        sort -r $dfilename
114fi
115
116rm -f $filename $ffilename $dfilename
117
118exit 0
119
120