From 193c8c73834b701f93c421fc88a2ecb715fd6fe5 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Wed, 27 Jul 2005 06:55:36 +0000 Subject: #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.) --- Makefile | 9 +++++++-- include/busybox.h | 2 +- include/libbb.h | 2 +- networking/ifconfig.c | 2 ++ 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index d205bb1b6..807ab5058 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 3ff3d8a37..e7ed135c0 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 #include diff --git a/include/libbb.h b/include/libbb.h index 1aa7b41bd..a544465fe 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -41,7 +41,7 @@ #include -#include "config.h" +#include "bb_config.h" #ifdef CONFIG_SELINUX #include #endif diff --git a/networking/ifconfig.c b/networking/ifconfig.c index fc7798f2d..1b43a0825 100644 --- a/networking/ifconfig.c +++ b/networking/ifconfig.c @@ -37,6 +37,7 @@ #include /* strcmp and friends */ #include /* isdigit and friends */ #include /* offsetof */ +#include #include #include #include @@ -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; } -- cgit v1.2.3