svn commit: trunk/busybox: applets scripts

landley at busybox.net landley at busybox.net
Fri Aug 4 21:05:33 UTC 2006


Author: landley
Date: 2006-08-04 14:05:33 -0700 (Fri, 04 Aug 2006)
New Revision: 15781

Log:
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.


Added:
   trunk/busybox/applets/individual.c
   trunk/busybox/scripts/individual


Changeset:
Added: trunk/busybox/applets/individual.c
===================================================================
--- trunk/busybox/applets/individual.c	2006-08-04 20:39:56 UTC (rev 15780)
+++ trunk/busybox/applets/individual.c	2006-08-04 21:05:33 UTC (rev 15781)
@@ -0,0 +1,26 @@
+/* Minimal wrapper to build an individual busybox applet.
+ *
+ * Copyright 2005 Rob Landley <rob at 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);
+}

Added: trunk/busybox/scripts/individual
===================================================================
--- trunk/busybox/scripts/individual	2006-08-04 20:39:56 UTC (rev 15780)
+++ trunk/busybox/scripts/individual	2006-08-04 21:05:33 UTC (rev 15781)
@@ -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/*


Property changes on: trunk/busybox/scripts/individual
___________________________________________________________________
Name: svn:executable
   + *




More information about the busybox-cvs mailing list