makeplist revision 1.9
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
8for x in $(
9${MAKE:-make} -f- all <<EOF
10.include <bsd.own.mk>
11all:
12	@echo machine=\${MACHINE}
13	@echo machine_arch=\${MACHINE_ARCH}
14	@echo machine_cpu=\${MACHINE_CPU}
15	@echo object_fmt=\${OBJECT_FMT}
16	@echo toolchain_missing=\${TOOLCHAIN_MISSING}
17	@echo use_tools_toolchain=\${USE_TOOLS_TOOLCHAIN}
18.if defined(USE_XF86_4) && (\${USE_XF86_4} != no)
19	@echo x11_version=4
20.else
21	@echo x11_version=3
22.endif
23
24EOF
25); do
26	eval $x
27done
28
29. ./sets.subr
30setd=`dirname $0`
31prefix=/
32
33usage() {
34exec 1>&2
35
36echo "Usage: $0 [-a arch] [-m machine] [-s setsdir] [-p prefix] setname pkgname"
37echo "	-a arch		set arch (e.g, m68k, mips, powerpc)	[$machine_arch]"
38echo "	-m machine	set machine (e.g, amiga, i386, macppc)	[$machine]"
39echo "	-s setsdir	directory to find sets			[$setd]"
40echo "	-p prefix	prefix for created plist		[$prefix]"
41echo "	setname pkgname	set and package to build plist for"
42
43exit 1
44}
45
46# handle args
47while : ; do
48	case $1 in
49	-a*)
50		machine_arch=$2; shift
51		;;
52	-m*)
53		machine=$2; shift
54		;;
55	-s*)
56		setd=$2; shift
57		;;
58	-p*)
59		prefix=$2; shift
60		;;
61	-*)
62		usage
63		;;
64	*)
65		break
66		;;
67	esac
68	shift
69done
70if [ -n "$1" ]; then
71	setname="$1"
72else
73	usage
74fi
75if [ -n "$2" ]; then
76	pkgname=$2
77else
78	usage
79fi
80
81# Determine lib type.
82if [ "$object_fmt" = "ELF" ]; then
83	shlib=elf
84else
85	shlib=aout
86fi
87stlib=$shlib
88
89# Turn off shlibs for some ports.
90if [ "$machine_cpu" = "sh3" -o "$machine_arch" = "m68000" ]; then
91	shlib=no
92fi
93lkm=yes
94# Turn off LKMs for some ports.
95if [ "$machine" = "evbppc" ]; then
96	lkm=no
97fi
98
99filename=/tmp/makeplist.$$ 
100ffilename=/tmp/makeplist.files.$$ 
101dfilename=/tmp/makeplist.dirs.$$ 
102
103list_set_files $setname | \
104env PLISTPKG=$pkgname awk -- '/^#/ { next } $2 == ENVIRON["PLISTPKG"] {sub("^\./", "", $1); print $1}' | sort -u > $filename
105
106SELECTDIRS="-maxdepth 0 -type d"
107SELECTNONDIRS="-maxdepth 0 ! -type d"
108
109cd $prefix
110#
111# match the directories
112#
113xargs echo $SELECTDIRS < $filename | \
114while read ignore ignore ignore ignore args; do
115	[ -z "$args" ] && break 
116	find $args $SELECTDIRS
117done | awk '{ print "@dirrm " $1; }' > $dfilename
118
119#
120# match the non-directories
121#
122xargs echo $SELECTNONDIRS < $filename | \
123while read ignore ignore ignore ignore ignore args; do
124	[ -z "$args" ] && break 
125	find $args $SELECTNONDIRS
126done > $ffilename
127
128cd -
129
130echo "@cwd $prefix"
131if [ -s $ffilename ]; then
132	cat $ffilename
133fi
134if [ -s $dfilename ]; then
135        sort -r $dfilename
136fi
137
138rm -f $filename $ffilename $dfilename
139
140exit 0
141
142