blob: 8815e1e14ee0c787bcef1d567248c5cd2b1c5584 (
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
|
#!/bin/sh
# Make our prerequisites.
make busybox.links include/bb_config.h
# Adding "libbb/libbb.a" to the previous line doesn't work, nor does going
# "make libbb.a" in the libb directory. The busybox makefile has layers and
# layers of overcomplicated brokenness...
cd libbb
make
cd ..
cd archival/libunarchive
make
cd ../..
# 146 applets build without any extra stuff. The applet is one C file with
# the same name as the corresponding applet, and all it needs to link against
# is libbb.a. However, 104 of them need more than that.
# dpkg_deb gzip
function extra_libraries()
{
archival="ar bunzip2 unlzma cpio dpkg gunzip rpm2cpio rpm tar uncompress unzip dpkg_deb gzip "
if [ "${archival/$1 //}" != "${archival}" ]
then
echo "archival/libunarchive/libunarchive.a"
fi
}
# Here are a few that build in a standard way. Others are easy to get to
# build, for example miscutils/dc needs -lm and most of loginutils/* needs
# -lcrypt...
rm -rf build
mkdir build
for APPLET in `sed 's .*/ ' busybox.links`
do
APPFILT=${APPLET/-/_}
j=`find . -name "${APPLET/-/?}.c"` # Because ether-wake.c is broken.
if [ -z "$j" ]
then
echo no file for $APPLET
else
echo "Building $APPLET..."
gcc -Os -o build/$APPLET applets/individual.c $j \
`extra_libraries $APPFILT` libbb/libbb.a -Iinclude \
-DBUILD_INDIVIDUAL \
"-Drun_applet_by_name(...)" "-Dfind_applet_by_name(...) 0" \
-DAPPLET_main=${APPFILT}_main -DAPPLET_full_usage=${APPFILT}_full_usage
if [ $? -ne 0 ];
then
echo "Failed."
fi
fi
done
strip build/*
|