hush/scripts/individual

64 lines
1.5 KiB
Bash
Executable File

#!/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/*