summaryrefslogtreecommitdiff
path: root/gcc/mkdeps.c
diff options
context:
space:
mode:
authorneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>2001-01-04 10:25:55 +0000
committerneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>2001-01-04 10:25:55 +0000
commit3d7dca394304cc5e71689271b2586b20735dc42f (patch)
tree67432f300752f9afae72f10ea36c5d29f16a9ff0 /gcc/mkdeps.c
parent2c80e8fe428a110f0d40e87c0c7efebb70162938 (diff)
downloadgcc-3d7dca394304cc5e71689271b2586b20735dc42f.tar.gz
* cpp.texi: Update for -MT.
* cppinit.c (initialize_dependency_output): Add a default target if none has been given already. (no_tgt, OPT_MT): New. (cpp_handle_option): Handle -MT. Update -M etc. * cpplib.h (struct cpp_options): Remove deps_target. * gcc.c (cpp_options): Handle -MT. * mkdeps.c (struct deps): Move from mkdeps.h. (deps_calc_target): Rename deps_add_default_target. Add a default target if none has been specified already. * mkdeps.h (struct deps): Move to mkdeps.c. (deps_calc_target): Rename deps_add_default_target. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38681 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/mkdeps.c')
-rw-r--r--gcc/mkdeps.c54
1 files changed, 39 insertions, 15 deletions
diff --git a/gcc/mkdeps.c b/gcc/mkdeps.c
index 66417d00fee..8d3e0bfce89 100644
--- a/gcc/mkdeps.c
+++ b/gcc/mkdeps.c
@@ -1,5 +1,5 @@
/* Dependency generator for Makefile fragments.
- Copyright (C) 2000 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
Contributed by Zack Weinberg, Mar 2000
This program is free software; you can redistribute it and/or modify it
@@ -24,13 +24,22 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "system.h"
#include "mkdeps.h"
+/* Keep this structure local to this file, so clients don't find it
+ easy to start making assumptions. */
+struct deps
+{
+ const char **targetv;
+ unsigned int ntargets; /* number of slots actually occupied */
+ unsigned int targets_size; /* amt of allocated space - in words */
+
+ const char **depv;
+ unsigned int ndeps;
+ unsigned int deps_size;
+};
+
static const char *munge PARAMS ((const char *));
static const char *base_name PARAMS ((const char *));
-#ifndef OBJECT_SUFFIX
-# define OBJECT_SUFFIX ".o"
-#endif
-
/* Given a filename, quote characters in that filename which are
significant to Make. Note that it's not possible to quote all such
characters - e.g. \n, %, *, ?, [, \ (in some contexts), and ~ are
@@ -180,24 +189,39 @@ deps_add_target (d, t)
d->targetv[d->ntargets++] = t;
}
+/* Sets the default target if none has been given already. An empty
+ string as the default target in interpreted as stdin. */
void
-deps_calc_target (d, t)
+deps_add_default_target (d, tgt)
struct deps *d;
- const char *t;
+ const char *tgt;
{
char *o, *suffix;
- t = base_name (t);
- o = (char *) alloca (strlen (t) + 8);
+ /* Only if we have no targets. */
+ if (d->ntargets)
+ return;
- strcpy (o, t);
- suffix = strrchr (o, '.');
- if (suffix)
- strcpy (suffix, OBJECT_SUFFIX);
+ if (tgt[0] == '\0')
+ deps_add_target (d, "-");
else
- strcat (o, OBJECT_SUFFIX);
+ {
+ tgt = base_name (tgt);
+ o = (char *) alloca (strlen (tgt) + 8);
+
+ strcpy (o, tgt);
+ suffix = strrchr (o, '.');
- deps_add_target (d, o);
+#ifndef OBJECT_SUFFIX
+# define OBJECT_SUFFIX ".o"
+#endif
+
+ if (suffix)
+ strcpy (suffix, OBJECT_SUFFIX);
+ else
+ strcat (o, OBJECT_SUFFIX);
+ deps_add_target (d, o);
+ }
}
void