* Add new debugging output level selection feature.
authorPaul Smith <psmith@gnu.org>
Mon, 22 Nov 1999 06:15:35 +0000 (06:15 +0000)
committerPaul Smith <psmith@gnu.org>
Mon, 22 Nov 1999 06:15:35 +0000 (06:15 +0000)
12 files changed:
ChangeLog
NEWS
function.c
implicit.c
job.c
main.c
make.h
misc.c
read.c
remake.c
remote-cstms.c
vmsfunctions.c

index 956009b..b79d6f3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+1999-11-21  Paul D. Smith  <psmith@gnu.org>
+
+       Rework GNU make debugging to provide different levels of output.
+
+       * NEWS: mention it.
+       * debug.h: New file.  Define various debugging levels and macros.
+       * function.c, implicit.c, job.c, main.c, misc.c, read.c, remake.c
+       * remote-cstms.c, vmsfunctions.c: Replace all code depending on
+       debug_flag with invocations of debugging macros.
+       * make.h: Remove debug_flag and DEBUGPR, add db_level.
+
 1999-11-17  Paul D. Smith  <psmith@gnu.org>
 
        * function.c (func_if): Find the end of the arg list by testing
diff --git a/NEWS b/NEWS
index b0dfe48..ec49770 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,6 @@
 GNU make NEWS                                               -*-indented-text-*-
   History of user-visible changes.
-  10 Nov 1999
+  21 Nov 1999
 
 Copyright (C) 1992,93,94,95,96,97,98,1999 Free Software Foundation, Inc.
 See the end for copying conditions.
@@ -31,6 +31,12 @@ Version 3.79
 * A new psuedo-target, .NOTPARALLEL, is defined.  If set the current
   makefile is always run serially regardless of the value of -j.  Any
   submakes will still be run in parallel if -j was specified.
+
+* The -d (--debug) option has changed: it now takes an optional numeric
+  argument.  By default only a minimal set of debugging output is
+  generated, displaying information about what "normal" files (not
+  makefiles) were deemed out of date and in need of being rebuilt.
+  Various values control the amount of detail in the debugging output.
 \f
 Version 3.78
 
index 237214e..5ce56b5 100644 (file)
@@ -23,6 +23,7 @@ Boston, MA 02111-1307, USA.  */
 #include "dep.h"
 #include "job.h"
 #include "commands.h"
+#include "debug.h"
 
 #ifdef _AMIGA
 #include "amiga.h"
@@ -1454,8 +1455,8 @@ func_shell (o, argv, funcname)
        reap_children (1, 0);
 
       if (batch_filename) {
-       if (debug_flag)
-         printf(_("Cleaning up temporary batch file %s\n"), batch_filename);
+       DB (DB_EXTRA, (_("Cleaning up temporary batch file %s\n"),
+                       batch_filename));
        remove(batch_filename);
        free(batch_filename);
       }
index c60cbe3..88bce9e 100644 (file)
@@ -21,6 +21,7 @@ Boston, MA 02111-1307, USA.  */
 #include "rule.h"
 #include "dep.h"
 #include "filedef.h"
+#include "debug.h"
 
 static int pattern_search PARAMS ((struct file *file, int archive, unsigned int depth,
                unsigned int recursions));
@@ -36,7 +37,7 @@ try_implicit_rule (file, depth)
      struct file *file;
      unsigned int depth;
 {
-  DEBUGPR (_("Looking for an implicit rule for `%s'.\n"));
+  DBF (DB_IMPLICIT, _("Looking for an implicit rule for `%s'.\n"));
 
   /* The order of these searches was previously reversed.  My logic now is
      that since the non-archive search uses more information in the target
@@ -51,7 +52,8 @@ try_implicit_rule (file, depth)
      archive member name to search for implicit rules.  */
   if (ar_name (file->name))
     {
-      DEBUGPR (_("Looking for archive-member implicit rule for `%s'.\n"));
+      DBF (DB_IMPLICIT,
+           _("Looking for archive-member implicit rule for `%s'.\n"));
       if (pattern_search (file, 1, depth, 0))
        return 1;
     }
@@ -60,11 +62,6 @@ try_implicit_rule (file, depth)
   return 0;
 }
 \f
-#define DEBUGP2(msg, a1, a2)                                                 \
-  do {                                                                       \
-    if (debug_flag)                                                          \
-      { print_spaces (depth); printf (msg, a1, a2); fflush (stdout); }       \
-  } while (0)
 
 /* Search the pattern rules for a rule with an existing dependency to make
    FILE.  If a rule is found, the appropriate commands and deps are put in FILE
@@ -199,7 +196,7 @@ pattern_search (file, archive, depth, recursions)
         don't use it here.  */
       if (rule->in_use)
        {
-         DEBUGP2 (_("Avoiding implicit rule recursion.%s%s\n"), "", "");
+         DBS (DB_IMPLICIT, (_("Avoiding implicit rule recursion.\n")));
          continue;
        }
 
@@ -335,8 +332,8 @@ pattern_search (file, archive, depth, recursions)
              stemlen -= (lastslash - filename) + 1;
            }
 
-         DEBUGP2 (_("Trying pattern rule with stem `%.*s'.\n"),
-                  (int) stemlen, stem);
+         DBS (DB_IMPLICIT, (_("Trying pattern rule with stem `%.*s'.\n"),
+                             (int) stemlen, stem));
 
          /* Try each dependency; see if it "exists".  */
 
@@ -376,16 +373,21 @@ pattern_search (file, archive, depth, recursions)
                     "impossible", then the rule fails and don't
                     bother trying it on the second pass either
                     since we know that will fail too.  */
-                 DEBUGP2 (_("Rejecting impossible %s prerequisite `%s'.\n"),
-                          p == depname ? _("implicit") : _("rule"), p);
+                 DBS (DB_IMPLICIT,
+                       (p == depname
+                        ? _("Rejecting impossible implicit prerequisite `%s'.\n")
+                        : _("Rejecting impossible rule prerequisite `%s'.\n"),
+                        p));
                  tryrules[i] = 0;
                  break;
                }
 
              intermediate_files[deps_found] = 0;
 
-             DEBUGP2 (_("Trying %s prerequisite `%s'.\n"),
-                      p == depname ? _("implicit") : _("rule"), p);
+             DBS (DB_IMPLICIT,
+                   (p == depname
+                    ? _("Trying implicit prerequisite `%s'.\n")
+                    : _("Trying rule prerequisite `%s'.\n"), p));
 
              /* The DEP->changed flag says that this dependency resides in a
                 nonexistent directory.  So we normally can skip looking for
@@ -408,8 +410,8 @@ pattern_search (file, archive, depth, recursions)
              vp = p;
              if (vpath_search (&vp, (FILE_TIMESTAMP *) 0))
                {
-                 DEBUGP2 (_("Found prerequisite `%s' as VPATH `%s'\n"),
-                           p, vp);
+                 DBS (DB_IMPLICIT,
+                       (_("Found prerequisite `%s' as VPATH `%s'\n"), p, vp));
                  strcpy (vp, p);
                  found_files[deps_found++] = vp;
                  continue;
@@ -425,8 +427,9 @@ pattern_search (file, archive, depth, recursions)
                    intermediate_file
                      = (struct file *) alloca (sizeof (struct file));
 
-                 DEBUGP2 (_("Looking for a rule with %s file `%s'.\n"),
-                          _("intermediate"), p);
+                 DBS (DB_IMPLICIT,
+                       (_("Looking for a rule with intermediate file `%s'.\n"),
+                        p));
 
                  bzero ((char *) intermediate_file, sizeof (struct file));
                  intermediate_file->name = p;
diff --git a/job.c b/job.c
index ba79b30..e79b6a7 100644 (file)
--- a/job.c
+++ b/job.c
@@ -17,12 +17,17 @@ along with GNU Make; see the file COPYING.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 Boston, MA 02111-1307, USA.  */
 
+#include <assert.h>
+
 #include "make.h"
 #include "job.h"
+#include "debug.h"
 #include "filedef.h"
 #include "commands.h"
 #include "variable.h"
-#include <assert.h>
+#include "debug.h"
+
+#include <string.h>
 
 /* Default shell to use.  */
 #ifdef WINDOWS32
@@ -210,8 +215,6 @@ static struct child *waiting_jobs = 0;
 
 int unixy_shell = 1;
 
-/* #define debug_flag 1 */
-
 \f
 #ifdef WINDOWS32
 /*
@@ -296,8 +299,7 @@ child_handler (sig)
       job_rfd = -1;
     }
 
-  if (debug_flag)
-    printf (_("Got a SIGCHLD; %u unreaped children.\n"), dead_children);
+  DB (DB_JOBS, (_("Got a SIGCHLD; %u unreaped children.\n"), dead_children));
 }
 
 
@@ -375,10 +377,9 @@ reap_children (block, err)
        {
          any_remote |= c->remote;
          any_local |= ! c->remote;
-         if (debug_flag)
-           printf (_("Live child 0x%08lx (%s) PID %ld %s\n"),
-                   (unsigned long int) c, c->file->name,
-                    (long) c->pid, c->remote ? _(" (remote)") : "");
+         DB (DB_JOBS, (_("Live child 0x%08lx (%s) PID %ld %s\n"),
+                        (unsigned long int) c, c->file->name,
+                        (long) c->pid, c->remote ? _(" (remote)") : ""));
 #ifdef VMS
          break;
 #endif
@@ -534,15 +535,15 @@ reap_children (block, err)
            Ignore it; it was inherited from our invoker.  */
         continue;
 
-      if (debug_flag)
-        printf (_("Reaping %s child 0x%08lx PID %ld %s\n"),
-                child_failed ? _("losing") : _("winning"),
-                (unsigned long int) c, (long) c->pid,
-                c->remote ? _(" (remote)") : "");
+      DB (DB_JOBS, (child_failed
+                    ? _("Reaping losing child 0x%08lx PID %ld %s\n")
+                    : _("Reaping winning child 0x%08lx PID %ld %s\n"),
+                    (unsigned long int) c, (long) c->pid,
+                    c->remote ? _(" (remote)") : ""));
 
       if (c->sh_batch_file) {
-        if (debug_flag)
-          printf (_("Cleaning up temp batch file %s\n"), c->sh_batch_file);
+        DB (DB_JOBS, (_("Cleaning up temp batch file %s\n"),
+                      c->sh_batch_file));
 
         /* just try and remove, don't care if this fails */
         remove (c->sh_batch_file);
@@ -634,10 +635,9 @@ reap_children (block, err)
            update_status to its also_make files.  */
         notice_finished_file (c->file);
 
-      if (debug_flag)
-        printf (_("Removing child 0x%08lx PID %ld %s from chain.\n"),
-                (unsigned long int) c, (long) c->pid,
-                c->remote ? _(" (remote)") : "");
+      DB (DB_JOBS, (_("Removing child 0x%08lx PID %ld %s from chain.\n"),
+                    (unsigned long int) c, (long) c->pid,
+                    c->remote ? _(" (remote)") : ""));
 
       /* Block fatal signals while frobnicating the list, so that
          children and job_slots_used are always consistent.  Otherwise
@@ -694,9 +694,8 @@ free_child (child)
         if (!EINTR_SET)
           pfatal_with_name (_("write jobserver"));
 
-      if (debug_flag)
-        printf (_("Released token for child 0x%08lx (%s).\n"),
-                (unsigned long int) child, child->file->name);
+      DB (DB_JOBS, (_("Released token for child 0x%08lx (%s).\n"),
+                    (unsigned long int) child, child->file->name));
     }
 
   if (handling_fatal_signal) /* Don't bother free'ing if about to die.  */
@@ -1189,10 +1188,9 @@ start_waiting_job (c)
     {
     case cs_running:
       c->next = children;
-      if (debug_flag)
-       printf (_("Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"),
-               (unsigned long int) c, c->file->name,
-                (long) c->pid, c->remote ? _(" (remote)") : "");
+      DB (DB_JOBS, (_("Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"),
+                    (unsigned long int) c, c->file->name,
+                    (long) c->pid, c->remote ? _(" (remote)") : ""));
       children = c;
       /* One more job slot is in use.  */
       ++job_slots_used;
@@ -1389,9 +1387,8 @@ new_job (file)
 
         if (read (job_rfd, &token, 1) == 1)
           {
-            if (debug_flag)
-              printf (_("Obtained token for child 0x%08lx (%s).\n"),
-                      (unsigned long int) c, c->file->name);
+            DB (DB_JOBS, (_("Obtained token for child 0x%08lx (%s).\n"),
+                          (unsigned long int) c, c->file->name));
             break;
           }
 
@@ -1675,8 +1672,7 @@ child_execute_job (argv, child)
 
       sprintf (cmd, "$ @%s", comname);
 
-      if (debug_flag)
-       printf (_("Executing %s instead\n"), cmd);
+      DB (DB_JOBS, (_("Executing %s instead\n"), cmd));
     }
 
   cmddsc.dsc$w_length = strlen(cmd);
@@ -2436,8 +2432,8 @@ construct_command_argv_internal (line, restp, shell, ifs, batch_filename_ptr)
         strcat(*batch_filename_ptr, ".sh");
       }
 
-      if (debug_flag)
-        printf(_("Creating temporary batch file %s\n"), *batch_filename_ptr);
+      DB (DB_JOBS, (_("Creating temporary batch file %s\n"),
+                    *batch_filename_ptr));
 
       /* create batch file to execute command */
       batch = fopen (*batch_filename_ptr, "w");
diff --git a/main.c b/main.c
index a1b3d74..96bab63 100644 (file)
--- a/main.c
+++ b/main.c
@@ -24,7 +24,9 @@ MA 02111-1307, USA.  */
 #include "job.h"
 #include "commands.h"
 #include "rule.h"
+#include "debug.h"
 #include "getopt.h"
+
 #include <assert.h>
 #ifdef _AMIGA
 # include <dos/dos.h>
@@ -137,9 +139,11 @@ int touch_flag;
 
 int just_print_flag;
 
-/* Print debugging trace info (-d).  */
+/* Print debugging info (--debug).  */
 
-int debug_flag = 0;
+int db_level = 0;
+int noarg_db_level = 1;
+int default_db_level = 0;
 
 #ifdef WINDOWS32
 /* Suspend make in main for a short time to allow debugger to attach */
@@ -256,9 +260,10 @@ static const struct command_switch switches[] =
     { 'C', string, (char *) &directories, 0, 0, 0, 0, 0,
        "directory", _("DIRECTORY"),
        _("Change to DIRECTORY before doing anything") },
-    { 'd', flag, (char *) &debug_flag, 1, 1, 0, 0, 0,
-       "debug", 0,
-       _("Print lots of debugging information") },
+    { 'd', positive_int, (char *) &db_level, 1, 1, 0,
+        (char *) &noarg_db_level, (char *) &default_db_level,
+       "debug", "L",
+       _("Print different types of debugging information") },
 #ifdef WINDOWS32
     { 'D', flag, (char *) &suspend_flag, 1, 1, 0, 0, 0,
         "suspend-for-debug", 0,
@@ -484,7 +489,7 @@ static RETSIGTYPE
 debug_signal_handler (sig)
      int sig;
 {
-  debug_flag = ! debug_flag;
+  db_level = DB_NONE;
 }
 
 #ifdef WINDOWS32
@@ -492,8 +497,8 @@ debug_signal_handler (sig)
  * HANDLE runtime exceptions by avoiding a requestor on the GUI. Capture
  * exception and print it to stderr instead.
  *
- * If debug_flag not set, just print a simple message and exit.
- * If debug_flag set, print a more verbose message.
+ * If ! DB_EXTRA, just print a simple message and exit.
+ * If DB_EXTRA, print a more verbose message.
  * If compiled for DEBUG, let exception pass through to GUI so that
  *   debuggers can attach.
  */
@@ -509,7 +514,7 @@ handle_runtime_exceptions( struct _EXCEPTION_POINTERS *exinfo )
   LPTSTR lpszStrings[1];
 #endif
 
-  if (!debug_flag)
+  if (! ISDB (DB_EXTRA))
     {
       sprintf(errmsg, _("%s: Interrupt/Exception caught "), prg);
       sprintf(&errmsg[strlen(errmsg)],
@@ -596,8 +601,8 @@ find_and_set_default_shell(char *token)
     /* search token path was found */
     sprintf(sh_path, "%s", search_token);
     default_shell = xstrdup(w32ify(sh_path,0));
-    if (debug_flag)
-      printf(_("find_and_set_shell setting default_shell = %s\n"), default_shell);
+    DB (DB_EXTRA,
+        (_("find_and_set_shell setting default_shell = %s\n"), default_shell));
     sh_found = 1;
   } else {
     char *p;
@@ -638,8 +643,10 @@ find_and_set_default_shell(char *token)
           sh_found = 1;
       }
 
-      if (debug_flag && sh_found)
-        printf(_("find_and_set_shell path search set default_shell = %s\n"), default_shell);
+      if (sh_found)
+        DB (DB_EXTRA,
+            (_("find_and_set_shell path search set default_shell = %s\n"),
+             default_shell));
     }
   }
 
@@ -942,9 +949,14 @@ int main (int argc, char ** argv)
   }
 #endif
 
+  /* If we have the "extra" level, force the basic level too.  */
+
+  if (ISDB (DB_EXTRA))
+    db_level |= DB_BASIC;
+
   /* Print version information.  */
 
-  if (print_version_flag || print_data_base_flag || debug_flag)
+  if (print_version_flag || print_data_base_flag || db_level)
     print_version ();
 
   /* `make --version' is supposed to just print the version and exit.  */
@@ -1473,9 +1485,12 @@ int main (int argc, char ** argv)
       unsigned int mm_idx = 0;
       char **nargv = argv;
       int nargc = argc;
+      int orig_db_level = db_level;
 
-      if (debug_flag)
-       puts (_("Updating makefiles...."));
+      if (! ISDB (DB_MAKEFILES))
+        db_level = DB_NONE;
+
+      DB (DB_BASIC, (_("Updating makefiles....\n")));
 
       /* Remove any makefiles we don't want to try to update.
         Also record the current modtimes so we can compare them later.  */
@@ -1499,9 +1514,9 @@ int main (int argc, char ** argv)
                         stupidly; but if you work for Athena, that's how
                         you write your makefiles.)  */
 
-                     if (debug_flag)
-                       printf (_("Makefile `%s' might loop; not remaking it.\n"),
-                               f->name);
+                     DB (DB_EXTRA,
+                          (_("Makefile `%s' might loop; not remaking it.\n"),
+                           f->name));
 
                      if (last == 0)
                        read_makefiles = d->next;
@@ -1694,13 +1709,13 @@ int main (int argc, char ** argv)
          }
 #endif
 
-         if (debug_flag)
+         if (ISDB (DB_BASIC))
            {
              char **p;
              fputs (_("Re-executing:"), stdout);
              for (p = nargv; *p != 0; ++p)
                printf (" %s", *p);
-             puts ("");
+             putchar ('\n');
            }
 
          fflush (stdout);
@@ -1718,6 +1733,8 @@ int main (int argc, char ** argv)
 #endif
          /* NOTREACHED */
        }
+
+      db_level = orig_db_level;
     }
 
   /* Set up `MAKEFLAGS' again for the normal targets.  */
@@ -1755,8 +1772,7 @@ int main (int argc, char ** argv)
 
     /* Update the goals.  */
 
-    if (debug_flag)
-      puts (_("Updating goal targets...."));
+    DB (DB_BASIC, (_("Updating goal targets....\n")));
 
     switch (update_goal_chain (goals, 0))
     {
diff --git a/make.h b/make.h
index 7ecfcd2..8f1b057 100644 (file)
--- a/make.h
+++ b/make.h
@@ -175,11 +175,9 @@ extern unsigned int get_path_max PARAMS ((void));
 #endif
 
 #ifdef VMS
-# include <stdio.h>
 # include <types.h>
 # include <unixlib.h>
 # include <unixio.h>
-# include <errno.h>
 # include <perror.h>
 #endif
 
@@ -465,7 +463,7 @@ extern const struct floc *reading_file;
 extern char **environ;
 
 extern int just_print_flag, silent_flag, ignore_errors_flag, keep_going_flag;
-extern int debug_flag, print_data_base_flag, question_flag, touch_flag;
+extern int print_data_base_flag, question_flag, touch_flag;
 extern int env_overrides, no_builtin_rules_flag, no_builtin_variables_flag;
 extern int print_version_flag, print_directory_flag;
 extern int warn_undefined_variables_flag, posix_pedantic, not_parallel;
@@ -500,10 +498,6 @@ extern int handling_fatal_signal;
 #define MAX(_a,_b) ((_a)>(_b)?(_a):(_b))
 #endif
 
-#define DEBUGPR(msg) \
-  do if (debug_flag) { print_spaces (depth); printf (msg, file->name); \
-                       fflush (stdout); } while (0)
-
 #ifdef VMS
 # ifndef EXIT_FAILURE
 #  define EXIT_FAILURE 3
diff --git a/misc.c b/misc.c
index 2447bc5..6310f28 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -19,7 +19,7 @@ Boston, MA 02111-1307, USA.  */
 
 #include "make.h"
 #include "dep.h"
-
+#include "debug.h"
 
 /* Variadic functions.  We go through contortions to allow proper function
    prototypes for both ANSI and pre-ANSI C compilers, and also for those
@@ -168,7 +168,7 @@ remove_comments (line)
     *comment = '\0';
 }
 \f
-/* Print N spaces (used by DEBUGPR for target-depth).  */
+/* Print N spaces (used in debug for target-depth).  */
 
 void
 print_spaces (n)
@@ -643,7 +643,7 @@ static void
 log_access (flavor)
      char *flavor;
 {
-  if (! debug_flag)
+  if (! ISDB (DB_JOBS))
     return;
 
   /* All the other debugging messages go to stdout,
diff --git a/read.c b/read.c
index 9d043ce..1072bda 100644 (file)
--- a/read.c
+++ b/read.c
@@ -29,6 +29,7 @@ Boston, MA 02111-1307, USA.  */
 #include "commands.h"
 #include "variable.h"
 #include "rule.h"
+#include "debug.h"
 
 
 #ifndef WINDOWS32
@@ -149,8 +150,7 @@ read_all_makefiles (makefiles)
 {
   unsigned int num_makefiles = 0;
 
-  if (debug_flag)
-    puts (_("Reading makefiles..."));
+  DB (DB_BASIC, (_("Reading makefiles...\n")));
 
   /* If there's a non-null variable MAKEFILES, its value is a list of
      files to read first thing.  But don't let it prevent reading the
@@ -329,7 +329,7 @@ read_makefile (filename, flags)
   pattern_percent = 0;
   cmds_started = fileinfo.lineno;
 
-  if (debug_flag)
+  if (ISDB (DB_EXTRA))
     {
       printf (_("Reading makefile `%s'"), fileinfo.filenm);
       if (flags & RM_NO_DEFAULT_GOAL)
index a3653f3..cd2b09f 100644 (file)
--- a/remake.c
+++ b/remake.c
@@ -23,6 +23,7 @@ Boston, MA 02111-1307, USA.  */
 #include "commands.h"
 #include "dep.h"
 #include "variable.h"
+#include "debug.h"
 
 #include <assert.h>
 
@@ -318,7 +319,7 @@ update_file (file, depth)
          change is possible below here until then.  */
       if (f->considered == considered)
         {
-          DEBUGPR (_("Pruning file `%s'.\n"));
+          DBF (DB_EXTRA, _("Pruning file `%s'.\n"));
           continue;
         }
       f->considered = considered;
@@ -363,18 +364,19 @@ update_file_1 (file, depth)
   register struct dep *d, *lastd;
   int running = 0;
 
-  DEBUGPR (_("Considering target file `%s'.\n"));
+  DBF (DB_EXTRA, _("Considering target file `%s'.\n"));
 
   if (file->updated)
     {
       if (file->update_status > 0)
        {
-         DEBUGPR (_("Recently tried and failed to update file `%s'.\n"));
+         DBF (DB_EXTRA,
+               _("Recently tried and failed to update file `%s'.\n"));
           no_rule_error(file);
          return file->update_status;
        }
 
-      DEBUGPR (_("File `%s' was considered already.\n"));
+      DBF (DB_EXTRA, _("File `%s' was considered already.\n"));
       return 0;
     }
 
@@ -384,10 +386,10 @@ update_file_1 (file, depth)
     case cs_deps_running:
       break;
     case cs_running:
-      DEBUGPR (_("Still updating file `%s'.\n"));
+      DBF (DB_EXTRA, _("Still updating file `%s'.\n"));
       return 0;
     case cs_finished:
-      DEBUGPR (_("Finished updating file `%s'.\n"));
+      DBF (DB_EXTRA, _("Finished updating file `%s'.\n"));
       return file->update_status;
     default:
       abort ();
@@ -408,7 +410,7 @@ update_file_1 (file, depth)
   check_renamed (file);
   noexist = this_mtime == (FILE_TIMESTAMP) -1;
   if (noexist)
-    DEBUGPR (_("File `%s' does not exist.\n"));
+    DBF (DB_BASIC, _("File `%s' does not exist.\n"));
 
   must_make = noexist;
 
@@ -418,15 +420,15 @@ update_file_1 (file, depth)
   if (!file->phony && file->cmds == 0 && !file->tried_implicit)
     {
       if (try_implicit_rule (file, depth))
-       DEBUGPR (_("Found an implicit rule for `%s'.\n"));
+       DBF (DB_IMPLICIT, _("Found an implicit rule for `%s'.\n"));
       else
-       DEBUGPR (_("No implicit rule found for `%s'.\n"));
+       DBF (DB_IMPLICIT, _("No implicit rule found for `%s'.\n"));
       file->tried_implicit = 1;
     }
   if (file->cmds == 0 && !file->is_target
       && default_file != 0 && default_file->cmds != 0)
     {
-      DEBUGPR (_("Using default commands for `%s'.\n"));
+      DBF (DB_IMPLICIT, _("Using default commands for `%s'.\n"));
       file->cmds = default_file->cmds;
     }
 
@@ -524,13 +526,13 @@ update_file_1 (file, depth)
 
   file->updating = 0;
 
-  DEBUGPR (_("Finished prerequisites of target file `%s'.\n"));
+  DBF (DB_EXTRA, _("Finished prerequisites of target file `%s'.\n"));
 
   if (running)
     {
       set_command_state (file, cs_deps_running);
       --depth;
-      DEBUGPR (_("The prerequisites of `%s' are being made.\n"));
+      DBF (DB_EXTRA, _("The prerequisites of `%s' are being made.\n"));
       return 0;
     }
 
@@ -543,7 +545,7 @@ update_file_1 (file, depth)
 
       depth--;
 
-      DEBUGPR (_("Giving up on target file `%s'.\n"));
+      DBF (DB_EXTRA, _("Giving up on target file `%s'.\n"));
 
       if (depth == 0 && keep_going_flag
          && !just_print_flag && !question_flag)
@@ -589,15 +591,29 @@ update_file_1 (file, depth)
         or its dependent, FILE, is older or does not exist.  */
       d->changed |= noexist || d_mtime > this_mtime;
 
-      if (debug_flag && !noexist)
+      if (!noexist && ISDB (DB_BASIC|DB_EXTRA))
        {
-         print_spaces (depth);
+          const char *fmt = 0;
+
          if (d_mtime == (FILE_TIMESTAMP) -1)
-           printf (_("Prerequisite `%s' does not exist.\n"), dep_name (d));
-         else
-           printf (_("Prerequisite `%s' is %s than target `%s'.\n"),
-                   dep_name (d), d->changed ? _("newer") : _("older"), file->name);
-         fflush (stdout);
+            {
+              if (ISDB (DB_BASIC))
+                fmt = _("Prerequisite `%s' of target `%s' does not exist.\n");
+            }
+         else if (d->changed)
+            {
+              if (ISDB (DB_BASIC))
+                fmt = _("Prerequisite `%s' is newer than target `%s'.\n");
+            }
+          else if (ISDB (DB_EXTRA))
+            fmt = _("Prerequisite `%s' is older than target `%s'.\n");
+
+          if (fmt)
+            {
+              print_spaces (depth);
+              printf (fmt, dep_name (d), file->name);
+              fflush (stdout);
+            }
        }
     }
 
@@ -607,24 +623,26 @@ update_file_1 (file, depth)
   if (file->double_colon && file->deps == 0)
     {
       must_make = 1;
-      DEBUGPR (_("Target `%s' is double-colon and has no prerequisites.\n"));
+      DBF (DB_BASIC,
+           _("Target `%s' is double-colon and has no prerequisites.\n"));
     }
   else if (!noexist && file->is_target && !deps_changed && file->cmds == 0)
     {
       must_make = 0;
-      DEBUGPR (_("No commands for `%s' and no prerequisites actually changed.\n"));
+      DBF (DB_EXTRA,
+           _("No commands for `%s' and no prerequisites actually changed.\n"));
     }
 
   if (!must_make)
     {
-      if (debug_flag)
+      if (ISDB (DB_EXTRA))
         {
-          print_spaces(depth);
-          printf(_("No need to remake target `%s'"), file->name);
-          if (!streq(file->name, file->hname))
-              printf(_("; using VPATH name `%s'"), file->hname);
-          printf(".\n");
-          fflush(stdout);
+          print_spaces (depth);
+          printf (_("No need to remake target `%s'"), file->name);
+          if (!streq (file->name, file->hname))
+              printf (_("; using VPATH name `%s'"), file->hname);
+          puts (".");
+          fflush (stdout);
         }
 
       notice_finished_file (file);
@@ -642,18 +660,13 @@ update_file_1 (file, depth)
       return 0;
     }
 
-  DEBUGPR (_("Must remake target `%s'.\n"));
+  DBF (DB_BASIC, _("Must remake target `%s'.\n"));
 
   /* It needs to be remade.  If it's VPATH and not reset via GPATH, toss the
      VPATH.  */
   if (!streq(file->name, file->hname))
     {
-      if (debug_flag)
-        {
-          print_spaces (depth);
-          printf(_("  Ignoring VPATH name `%s'.\n"), file->hname);
-          fflush(stdout);
-        }
+      DB (DB_BASIC, (_("  Ignoring VPATH name `%s'.\n"), file->hname));
       file->ignore_vpath = 1;
     }
 
@@ -662,20 +675,20 @@ update_file_1 (file, depth)
 
   if (file->command_state != cs_finished)
     {
-      DEBUGPR (_("Commands of `%s' are being run.\n"));
+      DBF (DB_EXTRA, _("Commands of `%s' are being run.\n"));
       return 0;
     }
 
   switch (file->update_status)
     {
     case 2:
-      DEBUGPR (_("Failed to remake target file `%s'.\n"));
+      DBF (DB_BASIC, _("Failed to remake target file `%s'.\n"));
       break;
     case 0:
-      DEBUGPR (_("Successfully remade target file `%s'.\n"));
+      DBF (DB_BASIC, _("Successfully remade target file `%s'.\n"));
       break;
     case 1:
-      DEBUGPR (_("Target file `%s' needs remade under -q.\n"));
+      DBF (DB_BASIC, _("Target file `%s' needs remade under -q.\n"));
       break;
     default:
       assert (file->update_status >= 0 && file->update_status <= 2);
@@ -827,15 +840,15 @@ check_dep (file, depth, this_mtime, must_make_ptr)
       if (!file->phony && file->cmds == 0 && !file->tried_implicit)
        {
          if (try_implicit_rule (file, depth))
-           DEBUGPR (_("Found an implicit rule for `%s'.\n"));
+           DBF (DB_IMPLICIT, _("Found an implicit rule for `%s'.\n"));
          else
-           DEBUGPR (_("No implicit rule found for `%s'.\n"));
+           DBF (DB_IMPLICIT, _("No implicit rule found for `%s'.\n"));
          file->tried_implicit = 1;
        }
       if (file->cmds == 0 && !file->is_target
          && default_file != 0 && default_file->cmds != 0)
        {
-         DEBUGPR (_("Using default commands for `%s'.\n"));
+         DBF (DB_IMPLICIT, _("Using default commands for `%s'.\n"));
          file->cmds = default_file->cmds;
        }
 
index 18d4ed6..057e50a 100644 (file)
@@ -26,6 +26,8 @@ Boston, MA 02111-1307, USA.  */
 #include "filedef.h"
 #include "commands.h"
 #include "job.h"
+#include "debug.h"
+
 #include <sys/time.h>
 #include <netdb.h>
 
@@ -81,7 +83,7 @@ start_remote_job_p (first_p)
         Customs requires a privileged source port be used.  */
       make_access ();
 
-      if (debug_flag)
+      if (ISDB (DB_EXTRA))
         Rpc_Debug(1);
 
       /* Ping the daemon once to see if it is there.  */
@@ -122,8 +124,8 @@ start_remote_job_p (first_p)
   status = Customs_Host (EXPORT_SAME, &permit);
   if (status != RPC_SUCCESS)
     {
-      if (debug_flag)
-       printf ("Customs won't export: %s\n", Rpc_ErrorMessage (status));
+      DB (DB_EXTRA, (_("Customs won't export: %s\n"),
+                     Rpc_ErrorMessage (status)));
       return 0;
     }
 
index 8356165..4e0cb34 100644 (file)
@@ -2,9 +2,9 @@
 
 #define KDEBUG 0
 
-#include <stdio.h>
-#include <ctype.h>
 #include "make.h"
+#include "debug.h"
+
 #ifdef __DECC
 #include <starlet.h>
 #endif
@@ -99,13 +99,11 @@ readdir (dfd)
   dfd->fab$l_nam->nam$l_rsa = resultspec;
   dfd->fab$l_nam->nam$b_rss = MAXNAMLEN;
 
-  if (debug_flag)
-    printf (".");
+  DB (DB_EXTRA, ("."));
 
   if (!((i = sys$search (dfd)) & 1))
     {
-      if (debug_flag)
-       printf ("sys$search failed with %d\n", i);
+      DB (DB_EXTRA, ("sys$search failed with %d\n", i));
       free (dentry);
       return (NULL);
     }