1# Subroutines required by packages which build on top of buildrump.sh
2#
3# WARNING!  These interfaces are not guaranteed to be stable.  If you
4# want to depend on their continued semantics, copypaste.
5#
6
7# the parrot routine
8die ()
9{
10
11	echo '>> ERROR:' >&2
12	echo ">> $*" >&2
13	exit 1
14}
15
16_checkrumpmake ()
17{
18
19	[ -n "${RUMPMAKE}" ] || die 'routine requires $RUMPMAKE to be set'
20	[ -e "${RUMPMAKE}" ] || die ${RUMPMAKE} is not an executable
21}
22
23# adhoc "mtree" required for installaling a subset of userspace
24# headers and libraries.  maybe we can migrate to a proper use of
25# NetBSD's mtree at some point?
26usermtree ()
27{
28
29	destbase=$1
30
31	INCSDIRS='adosfs altq arpa c++ c++/experimental c++/ext crypto
32	    dev filecorefs fs i386 isofs miscfs
33	    msdosfs net net80211 netatalk netbt netinet netinet6 netipsec
34	    netisdn netkey netmpls netnatm netsmb nfs ntfs openssl pcap
35	    ppath prop protocols rpc rpcsvc rumprun ssp sys ufs uvm x86'
36	for dir in ${INCSDIRS}; do
37		mkdir -p ${destbase}/include/$dir
38	done
39	mkdir -p ${destbase}/lib/pkgconfig
40}
41
42# echo names of normal libs (including optional prefix)
43stdlibs ()
44{
45
46	prefix=${1:+${1}/}
47	liblibs='libc libcrypt libipsec libkvm libm libnpf libpci libprop
48	    libpthread librmt libutil liby libz'
49	extralibs='external/bsd/flex/lib
50	    external/bsd/libpcap/lib'
51	for lib in ${liblibs}; do
52		echo ${prefix}lib/${lib}
53	done
54	for lib in ${extralibs}; do
55		echo ${prefix}${lib}
56	done
57}
58
59stdlibsxx ()
60{
61	prefix=${1:+${1}/}
62	echo ${prefix}external/bsd/libc++
63}
64
65makeuserlib ()
66{
67
68	_checkrumpmake
69
70	lib=$1
71	objarg=${2:+MAKEOBJDIR=${2}}
72
73	( cd ${lib}
74		${RUMPMAKE} ${objarg} obj
75		${RUMPMAKE} MKMAN=no MKLINT=no MKPROFILE=no MKYP=no	\
76		    MKNLS=no NOGCCERROR=1 HAVE_LIBGCC_EH=yes		\
77		    ${objarg} ${STDJ} dependall
78		${RUMPMAKE} MKMAN=no MKLINT=no MKPROFILE=no MKYP=no	\
79		    ${objarg} ${STDJ} install
80	)
81}
82
83userincludes ()
84{
85
86	_checkrumpmake
87
88	rumpsrc=$1
89	shift
90
91	echo '>> installing userspace headers'
92	( cd ${rumpsrc}/include && ${RUMPMAKE} obj && ${RUMPMAKE} includes )
93	for lib in $*; do
94		( cd ${lib} && ${RUMPMAKE} obj )
95		( cd ${lib} && ${RUMPMAKE} includes )
96	done
97	echo '>> done installing headers'
98}
99