Hi to all,

I tried to compile firefox on my system, but makedepend took
several hours for 'nsIconChannel.cpp'.
This delay is caused by the gdk/gtk header files which include
each other.
I made some changes in 'parse.c' to speed up the operation.
This might be useful for others, so I'm attaching the details.

diff -urN makedepend-1.0.2/parse.c makedepend-1.0.2-new/parse.c
--- makedepend-1.0.2/parse.c    2009-10-11 06:02:44.000000000 +0200
+++ makedepend-1.0.2-new/parse.c        2010-02-01 18:05:54.000000000 +0100
@@ -257,13 +257,26 @@
        return(ret);
 }
 
+/******************************************************************************/
+static void CleanFlag(struct inclist *file)
+{
+       if(file->i_flags & DEFCHECKED) {
+               struct inclist  **ip = file->i_list ;
+               int                             i ;
+
+               file->i_flags &= ~DEFCHECKED ;
+               for(i = 0 ; i < file->i_listlen ; i++) {
+                       CleanFlag(ip[i]) ;
+               }
+       }
+}
+
 struct symtab **
 fdefined(char *symbol, struct inclist *file, struct inclist **srcfile)
 {
        struct inclist  **ip;
        struct symtab   **val;
        int     i;
-       static int      recurse_lvl = 0;
 
        if (file->i_flags & DEFCHECKED)
                return(NULL);
@@ -282,8 +295,6 @@
                        }
        }
        else if (val != NULL && srcfile != NULL) *srcfile = file;
-       recurse_lvl--;
-       file->i_flags &= ~DEFCHECKED;
 
        return(val);
 }
@@ -298,6 +309,7 @@
                if (srcfile != NULL) *srcfile = &maininclist;
                return(val);
        }
+       CleanFlag(file) ;
        if ((val = fdefined(symbol, file, srcfile)))
                return(val);
        debug(1,("%s not defined in %s\n", symbol, file->i_file));
_______________________________________________
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg

Reply via email to