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.
This commit is contained in:
parent
e6a3fef08c
commit
cb376eebf0
26
applets/individual.c
Normal file
26
applets/individual.c
Normal file
@ -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);
|
||||||
|
}
|
37
scripts/individual
Executable file
37
scripts/individual
Executable file
@ -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/*
|
Loading…
Reference in New Issue
Block a user