3 # Copyright (c) 2002 Ruslan Ermilov, The FreeBSD Project
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions
9 # 1. Redistributions of source code must retain the above copyright
10 # notice, this list of conditions and the following disclaimer.
11 # 2. Redistributions in binary form must reproduce the above copyright
12 # notice, this list of conditions and the following disclaimer in the
13 # documentation and/or other materials provided with the distribution.
15 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 export PATH=/bin:/usr/bin
32 LC_ALL=C # make sort deterministic
33 FS=': ' # internal field separator
34 LIBDEPENDS=./_libdeps # intermediate output file
35 LIBDIRS=./_libdirs # intermediate output file
36 USRSRC=${1:-/usr/src} # source root
45 " # where to scan for libraries
48 # convert -lfoo to foo
51 sed -e "s/\-l//g" -e "s/pthread/thr/g" -e "s/ncurses.*/ncurses/g"
54 # find library build directory given library name
57 while read NAME && read DIR
59 if [ "$NAME" = "$1" ]; then
66 echo lib_not_found/lib$1
69 # find library build directories given one or more library names
74 cat $LIBDIRS | tr ' ' '\n' | findlibdir "$LIBNAME"
78 # Generate interdependencies between libraries.
86 # First pass - generate list of directories
88 find -s ${LIBS} -name Makefile |
89 xargs grep -l 'bsd\.lib\.mk' |
90 while read makefile; do
91 libdir=$(dirname ${makefile})
94 make -m ${USRSRC}/share/mk WITH_OFED=YES -V LIB
96 if [ "${libname}" ]; then
97 echo "${libname} ${libdir}" >> $LIBDIRS
101 # Second pass - generate dependencies
102 find -s ${LIBS} -name Makefile |
103 xargs grep -l 'bsd\.lib\.mk' |
104 while read makefile; do
105 libdir=$(dirname ${makefile})
108 make -m ${USRSRC}/share/mk WITH_OFED=YES -V LDADD
110 if [ "${deps}" ]; then
111 echo ${libdir}"${FS}"$(echo ${deps} | tr ' ' '\n' | convert | resolvelibdirs)
119 if [ ! -f ${LIBDEPENDS} ]; then
120 genlibdepends >${LIBDEPENDS}
124 awk -F"${FS}" '{ print $2 }' ${LIBDEPENDS} | tr ' ' '\n' |
127 echo "Libraries with dependents:"
129 echo ${prebuild_libs} | tr ' ' '\n'
132 echo "List of interdependencies:"
134 for lib in ${prebuild_libs}; do
135 grep "^${lib}${FS}" ${LIBDEPENDS} || true
138 if ($2 in dependents)
139 dependents[$2]=dependents[$2]" "$1
144 for (lib in dependents)
145 print dependents[lib]": " lib