aboutsummaryrefslogtreecommitdiff
path: root/scripts/individual
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/*