diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2001-02-12 14:06:22 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2001-02-12 14:06:22 +0000 |
commit | 48ce6bbbe6c22735efd1e8fe6b6fbf4d8453642e (patch) | |
tree | 484bc05f164378c9dbb5ea022669b86655e63b43 /gcc | |
parent | 823a99190da6b3498f94ab042597b53dc44636b8 (diff) | |
download | gcc-48ce6bbbe6c22735efd1e8fe6b6fbf4d8453642e.zip gcc-48ce6bbbe6c22735efd1e8fe6b6fbf4d8453642e.tar.gz gcc-48ce6bbbe6c22735efd1e8fe6b6fbf4d8453642e.tar.bz2 |
mkdeps.c (deps_add_default_target): Robustify.
* 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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cpp.texi | 5 | ||||
-rw-r--r-- | gcc/invoke.texi | 6 | ||||
-rw-r--r-- | gcc/mkdeps.c | 21 |
4 files changed, 25 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c63b610..5838071 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/cpp.texi b/gcc/cpp.texi index 363b84c..756f50a 100644 --- a/gcc/cpp.texi +++ b/gcc/cpp.texi @@ -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 diff --git a/gcc/invoke.texi b/gcc/invoke.texi index 8052be1..e77d4c7 100644 --- a/gcc/invoke.texi +++ b/gcc/invoke.texi @@ -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}. diff --git a/gcc/mkdeps.c b/gcc/mkdeps.c index b0c62c5..14935b3 100644 --- a/gcc/mkdeps.c +++ b/gcc/mkdeps.c @@ -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); } } |