summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Landley2005-07-27 06:55:36 +0000
committerRob Landley2005-07-27 06:55:36 +0000
commit193c8c73834b701f93c421fc88a2ecb715fd6fe5 (patch)
tree8467a696b1990e665391d4fcde21c8f176f27cd1
parent77804ce53d2a83d89e272a20763f2e6f5fc25d8c (diff)
downloadbusybox-193c8c73834b701f93c421fc88a2ecb715fd6fe5.zip
busybox-193c8c73834b701f93c421fc88a2ecb715fd6fe5.tar.gz
#ifdef reduction infrastructure, based on an argument between Shaun Jackman,
Rob Landley, and others. Currently CONFIG options are defined or undefined, so we chop out code with #ifdefs, ala: #ifdef CONFIG_THING stuff(); #endif This creates a new header file, bb_config.h, which sets the CONFIG entry to 1 or 0, and lets us do: if(CONFIG_THING) stuff(); And let the compiler do dead code elimination to get rid of it. (Note: #ifdef will still work because for the 1 case it's a static const int, not a #define.)
-rw-r--r--Makefile9
-rw-r--r--include/busybox.h2
-rw-r--r--include/libbb.h2
-rw-r--r--networking/ifconfig.c2
4 files changed, 11 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index d205bb1..807ab50 100644
--- a/Makefile
+++ b/Makefile
@@ -122,7 +122,7 @@ $(ALL_MAKEFILES): %/Makefile: $(top_srcdir)/%/Makefile
include $(patsubst %,%/Makefile.in, $(SRC_DIRS))
-include $(top_builddir)/.depend
-busybox: $(ALL_MAKEFILES) .depend include/config.h $(libraries-y)
+busybox: $(ALL_MAKEFILES) .depend include/bb_config.h $(libraries-y)
$(CC) $(LDFLAGS) -o $@ -Wl,--start-group $(libraries-y) $(LIBRARIES) -Wl,--end-group
$(STRIPCMD) $@
@@ -212,6 +212,11 @@ include/config.h: .config
fi;
@$(top_builddir)/scripts/config/conf -o $(CONFIG_CONFIG_IN)
+include/bb_config.h: include/config.h
+ echo "#ifndef AUTOCONF_INCLUDED" > $@
+ sed -e 's/#undef \(.*\)/static const int \1 = 0;/' < $< >> $@
+ echo "#endif" >> $@
+
finished2:
@echo
@echo Finished installing...
@@ -279,7 +284,7 @@ clean:
distclean: clean
- rm -f scripts/split-include scripts/mkdep
- - rm -rf include/config include/config.h
+ - rm -rf include/config include/config.h include/bb_config.h
- find . -name .depend -exec rm -f {} \;
rm -f .config .config.old .config.cmd
- $(MAKE) -C scripts/config clean
diff --git a/include/busybox.h b/include/busybox.h
index 3ff3d8a..e7ed135 100644
--- a/include/busybox.h
+++ b/include/busybox.h
@@ -24,7 +24,7 @@
#ifndef _BB_INTERNAL_H_
#define _BB_INTERNAL_H_ 1
-#include "config.h"
+#include "bb_config.h"
#include <stdio.h>
#include <stdlib.h>
diff --git a/include/libbb.h b/include/libbb.h
index 1aa7b41..a544465 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -41,7 +41,7 @@
#include <features.h>
-#include "config.h"
+#include "bb_config.h"
#ifdef CONFIG_SELINUX
#include <selinux/selinux.h>
#endif
diff --git a/networking/ifconfig.c b/networking/ifconfig.c
index fc7798f..1b43a08 100644
--- a/networking/ifconfig.c
+++ b/networking/ifconfig.c
@@ -37,6 +37,7 @@
#include <string.h> /* strcmp and friends */
#include <ctype.h> /* isdigit and friends */
#include <stddef.h> /* offsetof */
+#include <unistd.h>
#include <netdb.h>
#include <sys/ioctl.h>
#include <net/if.h>
@@ -558,6 +559,7 @@ int ifconfig_main(int argc, char **argv)
continue;
} /* end of while-loop */
+ if (CONFIG_FEATURE_CLEAN_UP) close(sockfd);
return goterr;
}