summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-03-23 00:08:26 (GMT)
committer Denys Vlasenko <vda.linux@googlemail.com>2010-03-23 00:08:26 (GMT)
commit1497484839efd4c57d63c07e2b92413193a3977f (patch)
tree5287750a4c55b433f73c3636d8aa8cffe6ecc71b
parent85dbf190c69f747cea3f8cdabecb3464ab1351be (diff)
downloadbusybox-1497484839efd4c57d63c07e2b92413193a3977f.tar.gz
busybox-1497484839efd4c57d63c07e2b92413193a3977f.tar.bz2
ash,hush: make it possible to build them individually
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--applets/applet_tables.c6
-rw-r--r--shell/ash.c9
-rw-r--r--shell/hush.c8
3 files changed, 15 insertions, 8 deletions
diff --git a/applets/applet_tables.c b/applets/applet_tables.c
index e67f017..e48be46 100644
--- a/applets/applet_tables.c
+++ b/applets/applet_tables.c
@@ -79,6 +79,7 @@ int main(int argc, char **argv)
}
printf("\n");
+ printf("#ifndef SKIP_definitions\n");
printf("const char applet_names[] ALIGN1 = \"\"\n");
for (i = 0; i < NUM_APPLETS; i++) {
printf("\"%s\" \"\\0\"\n", applets[i].name);
@@ -120,9 +121,10 @@ int main(int argc, char **argv)
printf("0x%02x,\n", v);
i++;
}
- printf("};\n\n");
+ printf("};\n");
#endif
-
+ printf("#endif /* SKIP_definitions */\n");
+ printf("\n");
printf("#define MAX_APPLET_NAME_LEN %u\n", MAX_APPLET_NAME_LEN);
return 0;
diff --git a/shell/ash.c b/shell/ash.c
index ce82a96..e285130 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -43,8 +43,6 @@
#endif
#include "busybox.h" /* for applet_names */
-//TODO: pull in some .h and find out do we have SINGLE_APPLET_MAIN?
-//#include "applet_tables.h" doesn't work
#include <paths.h>
#include <setjmp.h>
#include <fnmatch.h>
@@ -59,12 +57,15 @@
# define CLEAR_RANDOM_T(rnd) ((void)0)
#endif
-#if defined SINGLE_APPLET_MAIN
+#define SKIP_definitions 1
+#include "applet_tables.h"
+#undef SKIP_definitions
+#if NUM_APPLETS == 1
/* STANDALONE does not make sense, and won't compile */
# undef CONFIG_FEATURE_SH_STANDALONE
# undef ENABLE_FEATURE_SH_STANDALONE
# undef IF_FEATURE_SH_STANDALONE
-# undef IF_NOT_FEATURE_SH_STANDALONE(...)
+# undef IF_NOT_FEATURE_SH_STANDALONE
# define ENABLE_FEATURE_SH_STANDALONE 0
# define IF_FEATURE_SH_STANDALONE(...)
# define IF_NOT_FEATURE_SH_STANDALONE(...) __VA_ARGS__
diff --git a/shell/hush.c b/shell/hush.c
index 6f391b8..048085b 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -125,14 +125,18 @@
# define USE_FOR_MMU(...)
#endif
-#if defined SINGLE_APPLET_MAIN
+#define SKIP_definitions 1
+#include "applet_tables.h"
+#undef SKIP_definitions
+#if NUM_APPLETS == 1
/* STANDALONE does not make sense, and won't compile */
# undef CONFIG_FEATURE_SH_STANDALONE
# undef ENABLE_FEATURE_SH_STANDALONE
# undef IF_FEATURE_SH_STANDALONE
+# undef IF_NOT_FEATURE_SH_STANDALONE
+# define ENABLE_FEATURE_SH_STANDALONE 0
# define IF_FEATURE_SH_STANDALONE(...)
# define IF_NOT_FEATURE_SH_STANDALONE(...) __VA_ARGS__
-# define ENABLE_FEATURE_SH_STANDALONE 0
#endif
#if !ENABLE_HUSH_INTERACTIVE