full removed config.h, use bb_config.h only
author"Vladimir N. Oleynik" <dzo@simtreas.ru>
Wed, 15 Feb 2006 12:29:37 +0000 (12:29 -0000)
committer"Vladimir N. Oleynik" <dzo@simtreas.ru>
Wed, 15 Feb 2006 12:29:37 +0000 (12:29 -0000)
Makefile
include/.cvsignore
scripts/bb_mkdep.c
scripts/config/confdata.c

index 1e48bc5001ceb22731a273d5bf43cf32e531de24..c816c9de97be4de2b4a9008afc758e1f777263a0 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -386,7 +386,7 @@ docs/busybox.net/BusyBox.html: docs/busybox.pod
 scripts/bb_mkdep: $(top_srcdir)/scripts/bb_mkdep.c
        $(HOSTCC) $(HOSTCFLAGS) -o $@ $<
 
-DEP_INCLUDES := include/config.h include/bb_config.h
+DEP_INCLUDES := include/bb_config.h
 
 ifeq ($(strip $(CONFIG_BBCONFIG)),y)
 DEP_INCLUDES += include/bbconfigopts.h
@@ -401,25 +401,15 @@ depend dep: .depend
        $(disp_gen)
        $(Q)$(RM_F) .depend
        $(Q)mkdir -p include/config
-       $(Q)scripts/bb_mkdep -c include/config.h -c include/bb_config.h \
-                       -I $(top_srcdir)/include $(top_srcdir) > $@.tmp
+       $(Q)scripts/bb_mkdep -I $(top_srcdir)/include $(top_srcdir) > $@.tmp
        $(Q)mv $@.tmp $@
 
-include/config.h: .config
+include/bb_config.h: .config
        @if [ ! -x $(top_builddir)/scripts/config/conf ] ; then \
            $(MAKE) -C scripts/config conf; \
        fi;
        @$(top_builddir)/scripts/config/conf -o $(CONFIG_CONFIG_IN)
 
-include/bb_config.h: include/config.h
-       @echo -e "#ifndef BB_CONFIG_H\n#define BB_CONFIG_H" > $@
-       @sed -e h -e 's/#undef CONFIG_\(.*\)/#define ENABLE_\1 0/p' -e g \
-          -e 's/#undef CONFIG_\(.*\)/#define USE_\1(...)/p' -e g \
-          -e 's/#define CONFIG_\([^ ]*\).*/#define ENABLE_\1 1/p' -e g -e \
-          's/#define CONFIG_\([^ ]*\).*/#define USE_\1(...) __VA_ARGS__/p' \
-          -e g $< >> $@
-       @echo "#endif" >> $@
-
 clean:
        - $(MAKE) -C scripts/config $@
        - $(RM_F) docs/busybox.dvi docs/busybox.ps \
index 9c68c957603dc01bfb3194c0c04b123fac0439b7..0bdc57ded8ad413ff608200401bda9c10959fade 100644 (file)
@@ -1,2 +1,3 @@
 config
-config.h
+bb_config.h
+bbconfigopts.h
index ca48c6a2891a2c56caf36d21a88e3adb4a4b075f..a4f97c211cc3c0636ce6198c7bdb777bd5964919 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Another fast dependencies generator for Makefiles, Version 4.0
+ * Another fast dependencies generator for Makefiles, Version 4.1
  *
  * Copyright (C) 2005,2006 by Vladimir Oleynik <dzo@simtreas.ru>
  *
@@ -26,7 +26,7 @@
  *  - more verbose --help output.
  *
  * This program does:
- * 1) find #define KEY VALUE or #undef KEY from include/config.h
+ * 1) find #define KEY VALUE or #undef KEY from include/bb_config.h
  * 2) recursive find and scan *.[ch] files, but skips scan of include/config/
  * 3) find #include "*.h" and KEYs using, if not as #define and #undef
  * 4) generate dependencies to stdout
@@ -39,7 +39,7 @@
 
 #define LOCAL_INCLUDE_PATH          "include"
 #define INCLUDE_CONFIG_PATH         LOCAL_INCLUDE_PATH"/config"
-#define INCLUDE_CONFIG_KEYS_PATH    LOCAL_INCLUDE_PATH"/config.h"
+#define INCLUDE_CONFIG_KEYS_PATH    LOCAL_INCLUDE_PATH"/bb_config.h"
 
 #define bb_mkdep_full_options \
 "\nOptions:" \
@@ -308,7 +308,7 @@ typedef unsigned char operator;
 #define TOK_UMINUS tok_decl(UNARYPREC+1,0)
 #define TOK_UPLUS tok_decl(UNARYPREC+1,1)
 
-#define SPEC_PREC (UNARYPREC+1)
+#define SPEC_PREC (UNARYPREC+2)
 
 #define TOK_NUM tok_decl(SPEC_PREC, 0)
 #define TOK_RPAREN tok_decl(SPEC_PREC, 1)
@@ -521,13 +521,6 @@ endofname(const char *name)
 }
 
 
-/* Like strncpy but make sure the resulting string is always 0 terminated. */
-static inline char * safe_strncpy(char *dst, const char *src, size_t size)
-{
-       dst[size-1] = '\0';
-       return strncpy(dst, src, size-1);
-}
-
 static arith_t arith (const char *expr, int *perrcode)
 {
     char arithval;          /* Current character under analysis */
@@ -1400,7 +1393,10 @@ static void store_keys(void)
                if(*val == '\0') {
                    recordsz = sprintf(record_buf, "#define %s\n", k);
                } else {
-                   recordsz = sprintf(record_buf, "#define %s %s\n", k, val);
+                   if(val[0] != '(')
+                       recordsz = sprintf(record_buf, "#define %s %s\n", k, val);
+                   else
+                       recordsz = sprintf(record_buf, "#define %s%s\n", k, val);
                }
            }
            /* size_t -> ssize_t :( */
index c4087fd73b54c86287f6e7f2b5a494248301dbdd..fa262930f5cff84c66c9afa7e33121391f432b7b 100644 (file)
@@ -279,6 +279,7 @@ int conf_write(const char *name)
        char dirname[128], tmpname[128], newname[128];
        int type, l;
        const char *str;
+       const char *opt_name;
 
        dirname[0] = 0;
        if (name && name[0]) {
@@ -316,6 +317,7 @@ int conf_write(const char *name)
                     "# Automatically generated make config: don't edit\n"
                     "#\n");
        if (out_h) {
+               fprintf(out_h, "#ifndef BB_CONFIG_H\n#define BB_CONFIG_H\n");
                fprintf(out_h, "/*\n"
                             " * Automatically generated header file: don't edit\n"
                             " */\n\n"
@@ -367,14 +369,23 @@ int conf_write(const char *name)
                                if (modules_sym->curr.tri == no)
                                        type = S_BOOLEAN;
                        }
+                       opt_name = strchr(sym->name, '_');
+                       if(opt_name == NULL)
+                               opt_name = sym->name;
+                       else
+                               opt_name++;
                        switch (type) {
                        case S_BOOLEAN:
                        case S_TRISTATE:
                                switch (sym_get_tristate_value(sym)) {
                                case no:
                                        fprintf(out, "# %s is not set\n", sym->name);
-                                       if (out_h)
+                                       if (out_h) {
                                                fprintf(out_h, "#undef %s\n", sym->name);
+                                               fprintf(out_h, "#define ENABLE_%s 0\n", opt_name);
+                                               fprintf(out_h, "#define USE_%s(...)\n", opt_name);
+                                               fprintf(out_h, "#define UNUSE_%s(...)  __VA_ARGS__\n", opt_name);
+                                       }
                                        break;
                                case mod:
 #if 0
@@ -385,8 +396,12 @@ int conf_write(const char *name)
                                        break;
                                case yes:
                                        fprintf(out, "%s=y\n", sym->name);
-                                       if (out_h)
+                                       if (out_h) {
                                                fprintf(out_h, "#define %s 1\n", sym->name);
+                                               fprintf(out_h, "#define ENABLE_%s 1\n", opt_name);
+                                               fprintf(out_h, "#define USE_%s(...)  __VA_ARGS__\n", opt_name);
+                                               fprintf(out_h, "#define UNUSE_%s(...)\n", opt_name);
+                                       }
                                        break;
                                }
                                break;
@@ -412,32 +427,47 @@ int conf_write(const char *name)
                                        }
                                } while (*str);
                                fputs("\"\n", out);
-                               if (out_h)
+                               if (out_h) {
                                        fputs("\"\n", out_h);
+                                       fprintf(out_h, "#define ENABLE_%s 1\n", opt_name);
+                                       fprintf(out_h, "#define USE_%s(...)  __VA_ARGS__\n", opt_name);
+                                       fprintf(out_h, "#define UNUSE_%s(...)\n", opt_name);
+                               }
                                break;
                        case S_HEX:
                                str = sym_get_string_value(sym);
                                if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) {
                                        fprintf(out, "%s=%s\n", sym->name, *str ? str : "0");
-                                       if (out_h)
+                                       if (out_h) {
                                                fprintf(out_h, "#define %s 0x%s\n", sym->name, str);
+                                               fprintf(out_h, "#define ENABLE_%s 1\n", opt_name);
+                                               fprintf(out_h, "#define USE_%s(...)  __VA_ARGS__\n", opt_name);
+                                               fprintf(out_h, "#define UNUSE_%s(...)\n", opt_name);
+                                       }
                                        break;
                                }
                        case S_INT:
                                str = sym_get_string_value(sym);
                                fprintf(out, "%s=%s\n", sym->name, *str ? str : "0");
-                               if (out_h)
+                               if (out_h) {
                                        fprintf(out_h, "#define %s %s\n", sym->name, str);
+                                       fprintf(out_h, "#define ENABLE_%s 1\n", opt_name);
+                                       fprintf(out_h, "#define USE_%s(...)  __VA_ARGS__\n", opt_name);
+                                       fprintf(out_h, "#define UNUSE_%s(...)\n", opt_name);
+                               }
                                break;
                        }
+                       if (out_h)
+                               fprintf(out_h, "\n");
                }
 next:
                menu = next_menu(menu);
        }
        fclose(out);
        if (out_h) {
+               fprintf(out_h, "#endif /* BB_CONFIG_H */\n");
                fclose(out_h);
-               rename(".tmpconfig.h", "include/config.h");
+               rename(".tmpconfig.h", "include/bb_config.h");
                file_write_dep(NULL);
        }
        if (!name || basename != conf_def_filename) {