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