blob: 054c579f15c148c7ece74f851c36dc9fbff229a3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# has is the same as which, except it handles cross environments
has() {
if [ -z "$CROSS_COMPILE" ]; then
command which "$@"
return $?
fi
check_sys_root || return 1
# subshell to prevent pollution of caller's IFS
(
IFS=:
for p in $PATH; do
if [ -x "$CROSS_SYS_ROOT/$p/$1" ]; then
echo "$CROSS_SYS_ROOT/$p/$1"
return 0
fi
done
return 1
)
}
has_or_fail() {
has "$1" >/dev/null || fail "can't find $1"
}
has_header() {
check_sys_root || return 1
case $1 in
/*) ;;
*)
if [ -r "$CROSS_SYS_ROOT/usr/include/$1" ]; then
return 0
fi
for path in ${CHECK_INCLUDES}; do
if [ -r "$CROSS_SYS_ROOT${path}/$1" ]; then
return 0
fi
done
;;
esac
return 1
}
has_lib() {
check_sys_root || return 1
# subshell to prevent pollution of caller's environment
(
PATH=/sbin:$PATH # for ldconfig
LIBRARIES="$CHECK_LIB /usr/lib"
# This relatively common in a sys-root; libs are installed but
# ldconfig hasn't run there, so ldconfig -p won't work.
if [ "$OS" = Linux -a ! -f "$CROSS_SYS_ROOT/etc/ld.so.cache" ]; then
echo "Please run ldconfig -r \"$CROSS_SYS_ROOT\" to generate ld.so.cache"
# fall through; ldconfig test below should fail
fi
if [ "${OS}" = "Linux" ]; then
ldconfig -p ${CROSS_SYS_ROOT+-r "$CROSS_SYS_ROOT"} | grep -Fq "$1"
return $?
fi
if [ "${OS}" = "NetBSD" ]; then
ls -1 ${LIBRARIES} | grep -Fq "$1"
return $?
fi
return 1
)
}
test_link() {
# subshell to trap removal of tmpfile
(
unset tmpfile
trap 'rm -f "$tmpfile"; exit' 0 1 2 15
tmpfile=`mktemp` || return 1
ld "$@" -o "$tmpfile" >/dev/null 2>&1
return $?
)
}
# this function is used commonly above
check_sys_root() {
[ -z "$CROSS_COMPILE" ] && return 0
if [ -z "$CROSS_SYS_ROOT" ]; then
echo "please set CROSS_SYS_ROOT in the environment"
return 1
fi
if [ ! -d "$CROSS_SYS_ROOT" ]; then
echo "no sys-root found at $CROSS_SYS_ROOT"
return 1
fi
}
warning() {
echo
echo " *** `basename "$0"` FAILED${*+: $*}"
}
fail() {
echo
echo " *** `basename "$0"` FAILED${*+: $*}"
exit 1
}
|