mkdeps.c (deps_add_default_target): Robustify.
authorNathan Sidwell <nathan@codesourcery.com>
Mon, 12 Feb 2001 14:06:22 +0000 (14:06 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Mon, 12 Feb 2001 14:06:22 +0000 (14:06 +0000)
* mkdeps.c (deps_add_default_target): Robustify. Add
basename component only.
* cpp.texi (-M): Describe how default target is generated.
* invoke.texi (-M): Likewise.

From-SVN: r39602

gcc/ChangeLog
gcc/cpp.texi
gcc/invoke.texi
gcc/mkdeps.c

index c63b610..5838071 100644 (file)
@@ -1,3 +1,10 @@
+2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * mkdeps.c (deps_add_default_target): Robustify. Add
+       basename component only.
+       * cpp.texi (-M): Describe how default target is generated.
+       * invoke.texi (-M): Likewise.
+
 2001-02-12  Kazu Hirata  <kazu@hxi.com>
 
        * toplev.c (push_float_handler): Remove.
index 363b84c..756f50a 100644 (file)
@@ -3495,7 +3495,10 @@ suitable for @code{make} describing the dependencies of the main source
 file.  The preprocessor outputs one @code{make} rule containing the
 object file name for that source file, a colon, and the names of all the
 included files, including those coming from @samp{-include} or
-@samp{-imacros} command line options.  If there are many included files
+@samp{-imacros} command line options.  Unless specified explicitly (with
+@samp{-MT} or @samp{-MQ}), the object file name consists of the basename
+of the source file with any suffix replaced with object file suffix.
+If there are many included files
 then the rule is split into several lines using @samp{\}-newline.
 
 @item -MM
index 8052be1..e77d4c7 100644 (file)
@@ -3364,8 +3364,10 @@ Instead of outputting the result of preprocessing, output a rule
 suitable for @code{make} describing the dependencies of the main source
 file.  The preprocessor outputs one @code{make} rule containing the
 object file name for that source file, a colon, and the names of all the
-included files.  If there are many included files then the rule is split
-into several lines using @samp{\}-newline.
+included files.  Unless overridden explicitly, the object file name
+consists of the basename of the source file with any suffix replaced with
+object file suffix. If there are many included files then the
+rule is split into several lines using @samp{\}-newline.
 
 @samp{-M} implies @samp{-E}.
 
index b0c62c5..14935b3 100644 (file)
@@ -180,8 +180,6 @@ deps_add_default_target (d, tgt)
      struct deps *d;
      const char *tgt;
 {
-  char *o, *suffix;
-
   /* Only if we have no targets.  */
   if (d->ntargets)
     return;
@@ -190,19 +188,20 @@ deps_add_default_target (d, tgt)
     deps_add_target (d, "-", 1);
   else
     {
-      o = (char *) alloca (strlen (tgt) + 8);
-
-      strcpy (o, tgt);
-      suffix = strrchr (o, '.');
-
 #ifndef OBJECT_SUFFIX
 # define OBJECT_SUFFIX ".o"
 #endif
+      char *start = basename (tgt);
+      char *o = (char *) alloca (strlen (start) + strlen (OBJECT_SUFFIX) + 1);
+      char *suffix;
 
-      if (suffix)
-       strcpy (suffix, OBJECT_SUFFIX);
-      else
-       strcat (o, OBJECT_SUFFIX);
+      strcpy (o, start);
+      
+      suffix = strrchr (o, '.');
+      if (!suffix)
+        suffix = o + strlen (o);
+      strcpy (suffix, OBJECT_SUFFIX);
+      
       deps_add_target (d, o, 1);
     }
 }