diff options
author | Rob Landley <rob@landley.net> | 2006-08-04 21:05:33 +0000 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2006-08-04 21:05:33 +0000 |
commit | cb376eebf096964d300706a21451a5cfd9c5b31a (patch) | |
tree | e7aa7b112f6213b6d3796a968523f01087aabe67 /scripts | |
parent | e6a3fef08c87c4755eb2ad1460b3ac0e9a411461 (diff) | |
download | busybox-w32-cb376eebf096964d300706a21451a5cfd9c5b31a.tar.gz busybox-w32-cb376eebf096964d300706a21451a5cfd9c5b31a.tar.bz2 busybox-w32-cb376eebf096964d300706a21451a5cfd9c5b31a.zip |
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.
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/individual | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/scripts/individual b/scripts/individual new file mode 100755 index 000000000..a4e433ca8 --- /dev/null +++ b/scripts/individual | |||
@@ -0,0 +1,37 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | # Make our prerequisites. | ||
4 | |||
5 | make busybox.links include/bb_config.h | ||
6 | |||
7 | # Adding "libbb/libbb.a" to the previous line doesn't work, nor does going | ||
8 | # "make libbb.a" in the libb directory. The busybox makefile has layers and | ||
9 | # layers of overcomplicated brokenness... | ||
10 | |||
11 | cd libbb | ||
12 | make | ||
13 | cd .. | ||
14 | |||
15 | # Here are a few that build in a standard way. Others are easy to get to | ||
16 | # build, for example miscutils/dc needs -lm and most of loginutils/* needs | ||
17 | # -lcrypt... | ||
18 | |||
19 | rm -rf build | ||
20 | mkdir build | ||
21 | for APPLET in `sed 's .*/ ' busybox.links` | ||
22 | do | ||
23 | j=`find . -name "$APPLET.c"` | ||
24 | if [ -z "$j" ] | ||
25 | then | ||
26 | echo no file for $APPLET | ||
27 | else | ||
28 | echo "Building $APPLET..." | ||
29 | gcc -Os -o build/$APPLET applets/individual.c $j libbb/libbb.a -Iinclude -DAPPLET_main=${APPLET}_main -DAPPLET_full_usage=${APPLET}_full_usage | ||
30 | if [ $? -ne 0 ]; | ||
31 | then | ||
32 | echo "Failed." | ||
33 | fi | ||
34 | fi | ||
35 | done | ||
36 | |||
37 | strip build/* | ||