-
Notifications
You must be signed in to change notification settings - Fork 883
/
functions
161 lines (137 loc) · 4.45 KB
/
functions
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
setup_toolchain() {
if [ "$1" = "--optimize" ]; then
OPTIMIZE=yes
shift
fi
if [ "$1" = target ]; then
export DESTIMAGE="target"
export CC=$TARGET_CC
export CXX=$TARGET_CXX
export LD=$TARGET_LD
export AS=$TARGET_AS
export AR=$TARGET_AR
export NM=$TARGET_NM
export RANLIB=$TARGET_RANLIB
export OBJCOPY=$TARGET_OBJCOPY
export STRIP=$TARGET_STRIP
export CPPFLAGS="$TARGET_CPPFLAGS"
export CFLAGS="$TARGET_CFLAGS"
export CXXFLAGS="$TARGET_CXXFLAGS"
export LDFLAGS="$TARGET_LDFLAGS"
export PKG_CONFIG_PATH="$TARGET_PKG_CONFIG_PATH"
export PKG_CONFIG_LIBDIR="$TARGET_PKG_CONFIG_LIBDIR"
export PKG_CONFIG_SYSROOT_DIR="$TARGET_PKG_CONFIG_SYSROOT_DIR"
# set CMAKE configfile for target
export CMAKE_CONF=$ROOT/$TOOLCHAIN/etc/cmake-$TARGET_NAME.conf
elif [ "$1" = host ]; then
export DESTIMAGE="host"
export AWK=$HOST_AWK
export CC=$HOST_CC
export CXX=$HOST_CXX
export LD=$HOST_LD
export AS=$HOST_AS
export AR=$HOST_AR
export NM=$HOST_NM
export RANLIB=$HOST_RANLIB
export OBJCOPY=$HOST_OBJCOPY
export STRIP=$HOST_STRIP
export CPPFLAGS="$HOST_CPPFLAGS"
export CFLAGS="$HOST_CFLAGS"
export CXXFLAGS="$HOST_CXXFLAGS"
export LDFLAGS="$HOST_LDFLAGS"
export PKG_CONFIG_PATH="$HOST_PKG_CONFIG_PATH"
export PKG_CONFIG_LIBDIR="$HOST_PKG_CONFIG_LIBDIR"
export PKG_CONFIG_SYSROOT_DIR="$HOST_PKG_CONFIG_SYSROOT_DIR"
# set CMAKE configfile for host
export CMAKE_CONF=$ROOT/$TOOLCHAIN/etc/cmake-$HOST_NAME.conf
fi
}
kernel_path() {
ls -d $ROOT/$BUILD/linux-[0-9]*
}
tolower(){
echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
}
require_eglibc() {
if [ "$TARGET_LIBC" != eglibc ]; then
echo "$1 requires eglibc, aborting."
exit 1
fi
}
require_cxx() {
if [ "$TOOLCHAIN_CXX" != yes ]; then
echo "$1 requires C++ toolchain support, aborting."
exit 1
fi
}
xorg_drv_configure_prepend() {
incdir=${SYSROOT_PREFIX}/usr/include/xorg
for f in dri.h sarea.h dristruct.h exa.h damage.h xf86Module.h; do
incfile="$incdir/$f"
if [ -f "$incfile" ]; then
p=`echo "$incfile" | sed 'y%*+%pp%;s%[^_[:alnum:]]%_%g'`
eval "export ac_cv_file_$p=yes"
fi
done
}
add_user() {
# Usage: add_user "username" "password" "userid" "groupid" "description" "home" "shell"
mkdir -p ${INSTALL}/etc
touch ${INSTALL}/etc/passwd
if [ -z "`grep "$1:" ${INSTALL}/etc/passwd`" ]; then
echo "$1:$2:$3:$4:$5:$6:$7" >> ${INSTALL}/etc/passwd
fi
}
add_group() {
# Usage: add_group "groupname" "groupid" ("members")
mkdir -p ${INSTALL}/etc
touch ${INSTALL}/etc/group
if [ -z "`grep "$1:" ${INSTALL}/etc/group`" ]; then
echo "$1:x:$2:$3" >> ${INSTALL}/etc/group
fi
}
get_version() {
BUILD_DATE=`date +%Y%m%d`
if [ "$OPENELEC_VERSION" = devel -o "$OPENELEC_VERSION" = debug ]; then
GIT_BUILD=`git log --pretty=format:'' | wc -l`
GIT_HASH=`git log -n1 --format=%H`
OPENELEC_VERSION=$OPENELEC_VERSION-$BUILD_DATE-r$GIT_BUILD
fi
TARGET_VERSION="$PROJECT.$TARGET_ARCH-$OPENELEC_VERSION"
}
do_autoreconf() {
if [ -e $ROOT/$TOOLCHAIN/bin/autoreconf ] &&
[ -e $ROOT/$TOOLCHAIN/bin/autoconf ] &&
[ -e $ROOT/$TOOLCHAIN/bin/automake ] &&
[ -e $ROOT/$TOOLCHAIN/bin/libtoolize ] &&
[ -e $ROOT/$TOOLCHAIN/bin/intltoolize ]; then
export LIBTOOL=$ROOT/$TOOLCHAIN/bin/libtool
export LIBTOOLIZE=$ROOT/$TOOLCHAIN/bin/libtoolize
export AUTOMAKE=$ROOT/$TOOLCHAIN/bin/automake
export ACLOCAL_DIR=$SYSROOT_PREFIX/usr/share/aclocal
export ACLOCAL="$ROOT/$TOOLCHAIN/bin/aclocal -I $ACLOCAL_DIR"
export AUTOCONF=$ROOT/$TOOLCHAIN/bin/autoconf
export AUTOHEADER=$ROOT/$TOOLCHAIN/bin/autoheader
export AUTORECONF="$ROOT/$TOOLCHAIN/bin/autoreconf -v -f -i -I $ACLOCAL_DIR"
mkdir -p $ACLOCAL_DIR
autoreconf --force --install -I $ACLOCAL_DIR $@
fi
}
strip_lto() {
# strip out LTO optimization from *FLAGS
CFLAGS=`echo $CFLAGS | sed -e "s|-flto||"`
CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-flto||"`
LDFLAGS=`echo $LDFLAGS | sed -e "s|-flto||"`
}
strip_gold() {
# strip out usage from GOLD linker
LDFLAGS=`echo $LDFLAGS | sed -e "s|-fuse-ld=gold||" -e "s|-fuse-linker-plugin||"`
}
strip_linker_plugin() {
# strip out usage from linker plugin
LDFLAGS=`echo $LDFLAGS | sed -e "s|-fuse-linker-plugin||"`
}
strip_kmod() {
[ -z $1 ] && echo "usage strip_kmod <dir>" && exit 1
find $1 -type f -name '*.ko' | xargs -r $STRIP --strip-debug
}