#ifdef reduction infrastructure, based on an argument between Shaun Jackman,
authorRob Landley <rob@landley.net>
Wed, 27 Jul 2005 06:55:36 +0000 (06:55 -0000)
committerRob Landley <rob@landley.net>
Wed, 27 Jul 2005 06:55:36 +0000 (06:55 -0000)
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
include/busybox.h
include/libbb.h
networking/ifconfig.c

index d205bb1b6b35a5a3d0bc2f577fdceac422c663e5..807ab50580c75b723bd9b03a57627476711451f1 100644 (file)
--- 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
index 3ff3d8a37ac0f005a3ba32cfb3dc3c6ae52ff584..e7ed135c06e1bac14bfdbae36fc266fab816e2e9 100644 (file)
@@ -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>
index 1aa7b41bd9358bcca54bd8f541f49c11b932773e..a544465fe359f520164794d253244ee7a5006631 100644 (file)
@@ -41,7 +41,7 @@
 
 #include <features.h>
 
-#include "config.h"
+#include "bb_config.h"
 #ifdef CONFIG_SELINUX
 #include <selinux/selinux.h>  
 #endif
index fc7798f2d04ac19da5e7277870cf33416609ed0f..1b43a082571272c251e34645a21a566831e36f4c 100644 (file)
@@ -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;
 }