+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.
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
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}.
struct deps *d;
const char *tgt;
{
- char *o, *suffix;
-
/* Only if we have no targets. */
if (d->ntargets)
return;
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);
}
}