diff options
author | Rob Landley | 2006-08-04 21:05:33 +0000 |
---|---|---|
committer | Rob Landley | 2006-08-04 21:05:33 +0000 |
commit | cb376eebf096964d300706a21451a5cfd9c5b31a (patch) | |
tree | e7aa7b112f6213b6d3796a968523f01087aabe67 | |
parent | e6a3fef08c87c4755eb2ad1460b3ac0e9a411461 (diff) | |
download | busybox-cb376eebf096964d300706a21451a5cfd9c5b31a.zip busybox-cb376eebf096964d300706a21451a5cfd9c5b31a.tar.gz |
Digging up my old "make standalone" stuff from a year ago:
http://busybox.net/lists/busybox/2005-September/015766.html
I renamed it "individual" to not confuse it with the standalone shell. (Which
it isn't compatible with for obvious reasons.) Configure busybox (I did
make defconfig), then run scripts/individual and it'll build an individual
version of each applet in the "build" subdirectory.
Currently it builds 146 and fails to build 104 applets out of "make defconfig".
I haven't taught it about multi-file applets yet (like tar), or the ones where
two applets get built from the same source (for example, zcat is a trivial
variant of gunzip so there is no zcat.c). But here's a start.
-rw-r--r-- | applets/individual.c | 26 | ||||
-rwxr-xr-x | scripts/individual | 37 |
2 files changed, 63 insertions, 0 deletions
diff --git a/applets/individual.c b/applets/individual.c new file mode 100644 index 0000000..0af256c --- /dev/null +++ b/applets/individual.c @@ -0,0 +1,26 @@ +/* Minimal wrapper to build an individual busybox applet. + * + * Copyright 2005 Rob Landley <rob@landley.net + * + * Licensed under GPLv2 or later, see file License in this tarball for details + */ + +const char *bb_applet_name; + +#include <stdio.h> +#include <stdlib.h> +#include "usage.h" + +int main(int argc, char *argv[]) +{ + bb_applet_name=argv[0]; + + return APPLET_main(argc,argv); +} + +void bb_show_usage(void) +{ + printf(APPLET_full_usage "\n"); + + exit(1); +} diff --git a/scripts/individual b/scripts/individual new file mode 100755 index 0000000..a4e433c --- /dev/null +++ b/scripts/individual @@ -0,0 +1,37 @@ +#!/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 .. + +# 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"` + 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 + if [ $? -ne 0 ]; + then + echo "Failed." + fi + fi +done + +strip build/* |