djdelorie / rpms / make

Forked from rpms/make 3 years ago
Clone
Petr Machata e8bdb89
Petr Machata e8bdb89
This patch add the support for --debug=c and --debug=e to make
Petr Machata e8bdb89
this option when activated will trace in stdout the activity of $(call and $(eval in the Makefile
Petr Machata e8bdb89
Petr Machata e8bdb89
The trace use the format:
Petr Machata e8bdb89
 ### xxx -->
Petr Machata e8bdb89
 ### xxx <--
Petr Machata e8bdb89
the number of space before ### is at least 1 and increase with the nesting of eval/call
Petr Machata e8bdb89
Petr Machata e8bdb89
usage: make --debug=c,e
Petr Machata e8bdb89
Petr Machata e8bdb89
diff -r -u make-3.82/debug.h make-3.82-lo_trace/debug.h
Petr Machata e8bdb89
--- make-3.82/debug.h	2010-07-12 20:20:38.000000000 -0500
Petr Machata e8bdb89
+++ make-3.82-lo_trace/debug.h	2011-06-22 12:06:37.000000000 -0500
Petr Machata e8bdb89
@@ -21,6 +21,8 @@
Petr Machata e8bdb89
 #define DB_JOBS         (0x004)
Petr Machata e8bdb89
 #define DB_IMPLICIT     (0x008)
Petr Machata e8bdb89
 #define DB_MAKEFILES    (0x100)
Petr Machata e8bdb89
+#define DB_CALL       (0x01000)
Petr Machata e8bdb89
+#define DB_EVAL       (0x02000)
Petr Machata e8bdb89
 
Petr Machata e8bdb89
 #define DB_ALL          (0xfff)
Petr Machata e8bdb89
 
Petr Machata e8bdb89
diff -r -u make-3.82/function.c make-3.82-lo_trace/function.c
Petr Machata e8bdb89
--- make-3.82/function.c	2011-06-23 01:01:35.000000000 -0500
Petr Machata e8bdb89
+++ make-3.82-lo_trace/function.c	2011-06-23 01:40:05.000000000 -0500
Petr Machata e8bdb89
@@ -28,6 +28,8 @@
Petr Machata e8bdb89
 #include "amiga.h"
Petr Machata e8bdb89
 #endif
Petr Machata e8bdb89
 
Petr Machata e8bdb89
+static int depth = 0;
Petr Machata e8bdb89
+
Petr Machata e8bdb89
 
Petr Machata e8bdb89
 struct function_table_entry
Petr Machata e8bdb89
   {
Petr Machata e8bdb89
@@ -1371,7 +1373,12 @@
Petr Machata e8bdb89
 
Petr Machata e8bdb89
   install_variable_buffer (&buf, &len;;
Petr Machata e8bdb89
 
Petr Machata e8bdb89
+  depth += 1;
Petr Machata e8bdb89
+  DBS( DB_EVAL, ("### eval -->\n"));
Petr Machata e8bdb89
+  DB( DB_EVAL, ("%s\n", argv[0]));
Petr Machata e8bdb89
   eval_buffer (argv[0]);
Petr Machata e8bdb89
+  DBS( DB_EVAL, ("### eval <--\n"));
Petr Machata e8bdb89
+  depth -= 1;
Petr Machata e8bdb89
 
Petr Machata e8bdb89
   restore_variable_buffer (buf, len);
Petr Machata e8bdb89
 
Petr Machata e8bdb89
@@ -2338,6 +2345,7 @@
Petr Machata e8bdb89
   if (v == 0 || *v->value == '\0')
Petr Machata e8bdb89
     return o;
Petr Machata e8bdb89
 
Petr Machata e8bdb89
+  depth += 1;
Petr Machata e8bdb89
   body = alloca (flen + 4);
Petr Machata e8bdb89
   body[0] = '$';
Petr Machata e8bdb89
   body[1] = '(';
Petr Machata e8bdb89
@@ -2345,6 +2353,7 @@
Petr Machata e8bdb89
   body[flen+2] = ')';
Petr Machata e8bdb89
   body[flen+3] = '\0';
Petr Machata e8bdb89
 
Petr Machata e8bdb89
+  DBS(DB_CALL, ("### call %s -->\n", body));
Petr Machata e8bdb89
   /* Set up arguments $(1) .. $(N).  $(0) is the function name.  */
Petr Machata e8bdb89
 
Petr Machata e8bdb89
   push_new_variable_scope ();
Petr Machata e8bdb89
@@ -2354,6 +2363,7 @@
Petr Machata e8bdb89
       char num[11];
Petr Machata e8bdb89
 
Petr Machata e8bdb89
       sprintf (num, "%d", i);
Petr Machata e8bdb89
+      DBS(DB_CALL, ("### arg %i for call %s is '%s'\n", i, body, *argv));
Petr Machata e8bdb89
       define_variable (num, strlen (num), *argv, o_automatic, 0);
Petr Machata e8bdb89
     }
Petr Machata e8bdb89
 
Petr Machata e8bdb89
@@ -2367,6 +2377,7 @@
Petr Machata e8bdb89
       char num[11];
Petr Machata e8bdb89
 
Petr Machata e8bdb89
       sprintf (num, "%d", i);
Petr Machata e8bdb89
+      DBS(DB_CALL, ("### arg %i for call %s is implicit\n", i, body));
Petr Machata e8bdb89
       define_variable (num, strlen (num), "", o_automatic, 0);
Petr Machata e8bdb89
     }
Petr Machata e8bdb89
 
Petr Machata e8bdb89
@@ -2377,7 +2388,14 @@
Petr Machata e8bdb89
 
Petr Machata e8bdb89
   saved_args = max_args;
Petr Machata e8bdb89
   max_args = i;
Petr Machata e8bdb89
+
Petr Machata e8bdb89
   o = variable_expand_string (o, body, flen+3);
Petr Machata e8bdb89
+  DBS(DB_CALL, ("### call to %s expended into\n", body));
Petr Machata e8bdb89
+  DB(DB_CALL, ("%s\n", o));
Petr Machata e8bdb89
+  DBS(DB_CALL, ("### call %s <--\n", body));
Petr Machata e8bdb89
+
Petr Machata e8bdb89
+  depth -= 1;
Petr Machata e8bdb89
+
Petr Machata e8bdb89
   max_args = saved_args;
Petr Machata e8bdb89
 
Petr Machata e8bdb89
   v->exp_count = 0;
Petr Machata e8bdb89
diff -r -u make-3.82/main.c make-3.82-lo_trace/main.c
Petr Machata e8bdb89
--- make-3.82/main.c	2010-07-19 02:10:53.000000000 -0500
Petr Machata e8bdb89
+++ make-3.82-lo_trace/main.c	2011-06-22 11:46:39.000000000 -0500
Petr Machata e8bdb89
@@ -634,6 +634,12 @@
Petr Machata e8bdb89
             case 'b':
Petr Machata e8bdb89
               db_level |= DB_BASIC;
Petr Machata e8bdb89
               break;
Petr Machata e8bdb89
+            case 'c':
Petr Machata e8bdb89
+              db_level |= DB_CALL;
Petr Machata e8bdb89
+              break;
Petr Machata e8bdb89
+            case 'e':
Petr Machata e8bdb89
+              db_level |= DB_EVAL;
Petr Machata e8bdb89
+              break;
Petr Machata e8bdb89
             case 'i':
Petr Machata e8bdb89
               db_level |= DB_BASIC | DB_IMPLICIT;
Petr Machata e8bdb89
               break;