diff --git a/applets/individual.c b/applets/individual.c index 0af256c6c..c6d263b47 100644 --- a/applets/individual.c +++ b/applets/individual.c @@ -9,6 +9,7 @@ const char *bb_applet_name; #include #include +#include "bb_config.h" #include "usage.h" int main(int argc, char *argv[]) diff --git a/include/applets.h b/include/applets.h index 07f9aabf2..42758a58f 100644 --- a/include/applets.h +++ b/include/applets.h @@ -105,7 +105,7 @@ USE_ED(APPLET(ed, _BB_DIR_BIN, _BB_SUID_NEVER)) USE_FEATURE_GREP_EGREP_ALIAS(APPLET_NOUSAGE(egrep, grep, _BB_DIR_BIN, _BB_SUID_NEVER)) USE_EJECT(APPLET(eject, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) USE_ENV(APPLET(env, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) -USE_ETHER_WAKE(APPLET_ODDNAME(ether-wake, etherwake, _BB_DIR_USR_BIN, _BB_SUID_NEVER, ether_wake)) +USE_ETHER_WAKE(APPLET_ODDNAME(ether-wake, ether_wake, _BB_DIR_USR_BIN, _BB_SUID_NEVER, ether_wake)) USE_EXPR(APPLET(expr, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) USE_FAKEIDENTD(APPLET(fakeidentd, _BB_DIR_USR_SBIN, _BB_SUID_NEVER)) USE_FALSE(APPLET(false, _BB_DIR_BIN, _BB_SUID_NEVER)) diff --git a/networking/ether-wake.c b/networking/ether-wake.c index 75f065cdc..f4ca889fa 100644 --- a/networking/ether-wake.c +++ b/networking/ether-wake.c @@ -105,7 +105,7 @@ static inline void get_dest_addr(const char *arg, struct ether_addr *eaddr); static inline int get_fill(unsigned char *pkt, struct ether_addr *eaddr, int broadcast); static inline int get_wol_pw(const char *ethoptarg, unsigned char *wol_passwd); -int etherwake_main(int argc, char *argv[]) +int ether_wake_main(int argc, char *argv[]) { char *ifname = "eth0", *pass = NULL; unsigned long flags; diff --git a/scripts/individual b/scripts/individual index a4e433ca8..8815e1e14 100755 --- a/scripts/individual +++ b/scripts/individual @@ -12,21 +12,47 @@ 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 - j=`find . -name "$APPLET.c"` + 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 libbb/libbb.a -Iinclude -DAPPLET_main=${APPLET}_main -DAPPLET_full_usage=${APPLET}_full_usage + 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."