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
29 export PATH=/bin:/usr/bin
33 LC_ALL=C # make sort deterministic
34 FS=': ' # internal field separator
35 LIBDEPENDS=./_libdeps # intermediate output file
36 LIBDIRS=./_libdirs # intermediate output file
37 USRSRC=${1:-/usr/src} # source root
46 " # where to scan for libraries
49 # convert -lfoo to foo
52 sed -e "s/\-l//g" -e "s/pthread/thr/g" -e "s/ncurses.*/ncurses/g"
55 # find library build directory given library name
58 while read NAME && read DIR
60 if [ "$NAME" = "$1" ]; then
67 echo lib_not_found/lib$1
70 # find library build directories given one or more library names
75 cat $LIBDIRS | tr ' ' '\n' | findlibdir "$LIBNAME"
79 # Generate interdependencies between libraries.
87 # First pass - generate list of directories
89 find -s ${LIBS} -name Makefile |
90 xargs grep -l 'bsd\.lib\.mk' |
91 while read makefile; do
92 libdir=$(dirname ${makefile})
95 make -m ${USRSRC}/share/mk WITH_OFED=YES -V LIB
97 if [ "${libname}" ]; then
98 echo "${libname} ${libdir}" >> $LIBDIRS
102 # Second pass - generate dependencies
103 find -s ${LIBS} -name Makefile |
104 xargs grep -l 'bsd\.lib\.mk' |
105 while read makefile; do
106 libdir=$(dirname ${makefile})
109 make -m ${USRSRC}/share/mk WITH_OFED=YES -V LDADD
111 if [ "${deps}" ]; then
112 echo ${libdir}"${FS}"$(echo ${deps} | tr ' ' '\n' | convert | resolvelibdirs)
120 if [ ! -f ${LIBDEPENDS} ]; then
121 genlibdepends >${LIBDEPENDS}
125 awk -F"${FS}" '{ print $2 }' ${LIBDEPENDS} | tr ' ' '\n' |
128 echo "Libraries with dependents:"
130 echo ${prebuild_libs} | tr ' ' '\n'
133 echo "List of interdependencies:"
135 for lib in ${prebuild_libs}; do
136 grep "^${lib}${FS}" ${LIBDEPENDS} || true
139 if ($2 in dependents)
140 dependents[$2]=dependents[$2]" "$1
145 for (lib in dependents)
146 print dependents[lib]": " lib