aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2006-08-04 21:05:33 +0000
committerRob Landley <rob@landley.net>2006-08-04 21:05:33 +0000
commitcb376eebf096964d300706a21451a5cfd9c5b31a (patch)
treee7aa7b112f6213b6d3796a968523f01087aabe67
parente6a3fef08c87c4755eb2ad1460b3ac0e9a411461 (diff)
downloadbusybox-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.
-rw-r--r--applets/individual.c26
-rwxr-xr-xscripts/individual37
2 files changed, 63 insertions, 0 deletions
diff --git a/applets/individual.c b/applets/individual.c
new file mode 100644
index 000000000..0af256c6c
--- /dev/null
+++ b/applets/individual.c
@@ -0,0 +1,26 @@
1/* Minimal wrapper to build an individual busybox applet.
2 *
3 * Copyright 2005 Rob Landley <rob@landley.net
4 *
5 * Licensed under GPLv2 or later, see file License in this tarball for details
6 */
7
8const char *bb_applet_name;
9
10#include <stdio.h>
11#include <stdlib.h>
12#include "usage.h"
13
14int main(int argc, char *argv[])
15{
16 bb_applet_name=argv[0];
17
18 return APPLET_main(argc,argv);
19}
20
21void bb_show_usage(void)
22{
23 printf(APPLET_full_usage "\n");
24
25 exit(1);
26}
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
5make 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
11cd libbb
12make
13cd ..
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
19rm -rf build
20mkdir build
21for APPLET in `sed 's .*/ ' busybox.links`
22do
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
35done
36
37strip build/*