diff options
| author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-10-20 21:19:29 +0000 |
|---|---|---|
| committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-10-20 21:19:29 +0000 |
| commit | fecb951e63d3b75accbb4264d618f9f5db740377 (patch) | |
| tree | 4eede965e0e3fec6ff244f7ac3b8432688b7e248 /gcc/java/lang.c | |
| parent | d56a34e9d5fba7a04160fdebd52d5a06299fdcb1 (diff) | |
| download | ppe42-gcc-fecb951e63d3b75accbb4264d618f9f5db740377.tar.gz ppe42-gcc-fecb951e63d3b75accbb4264d618f9f5db740377.zip | |
* jvspec.c (lang_specific_driver): Recognize -MF and -MT.
* lang-specs.h: Added %{MA}, %{MF*}, %{MT*}.
* lang-options.h: Added -MA, -MT, -MF..
* lang.c (lang_decode_option): Recognize -MA, -MT, -MF.
(DEPEND_TARGET_SET): New macro.
(DEPEND_FILE_ALREADY_SET): Likewise.
(init_parse): Handle new flags.
* jcf.h (jcf_dependency_print_dummies): Declare.
* Make-lang.in (s-java): Added mkdeps.o.
* Makefile.in (BACKEND): Added mkdeps.o.
(../gcjh$(exeext)): Added mkdeps.o.
(../jcf-dump$(exeext)): Added mkdeps.o.
* jcf-depend.c: Include mkdeps.h.
(struct entry, dependencies, targets, MAX_OUTPUT_COLUMNS,
add_entry): Removed.
(jcf_dependency_reset): Rewrote.
(dependencies): New global.
(jcf_dependency_set_target): Rewrote.
(jcf_dependency_add_target): Likewise.
(jcf_dependency_add_file): Likewise.
(munge): Removed.
(print_ents): Removed.
(jcf_dependency_write): Rewrote.
(print_dummies): New global.
(jcf_dependency_print_dummies): New function
(jcf_dependency_write): Call deps_dummy_targets if required.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36981 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/java/lang.c')
| -rw-r--r-- | gcc/java/lang.c | 83 |
1 files changed, 57 insertions, 26 deletions
diff --git a/gcc/java/lang.c b/gcc/java/lang.c index 32150b28f24..8065fc767fe 100644 --- a/gcc/java/lang.c +++ b/gcc/java/lang.c @@ -159,6 +159,8 @@ static int dependency_tracking = 0; /* Flag values for DEPENDENCY_TRACKING. */ #define DEPEND_SET_FILE 1 #define DEPEND_ENABLE 2 +#define DEPEND_TARGET_SET 4 +#define DEPEND_FILE_ALREADY_SET 8 /* * process java-specific compiler command-line options @@ -316,6 +318,23 @@ lang_decode_option (argc, argv) dependency_tracking |= DEPEND_ENABLE; return 1; } + else if (strcmp (p, "-MA") == 0) + { + jcf_dependency_print_dummies (); + return 1; + } + else if (strcmp (p, "-MT") == 0) + { + jcf_dependency_set_target (argv[1]); + dependency_tracking |= DEPEND_TARGET_SET; + return 2; + } + else if (strcmp (p, "-MF") == 0) + { + jcf_dependency_set_dep_file (argv[1]); + dependency_tracking |= DEPEND_FILE_ALREADY_SET; + return 2; + } return 0; } @@ -342,36 +361,48 @@ init_parse (filename) if (dependency_tracking) { char *dot; - dot = strrchr (filename, '.'); - if (dot == NULL) - error ("couldn't determine target name for dependency tracking"); - else + + /* If the target is set and the output filename is set, then + there's no processing to do here. Otherwise we must + compute one or the other. */ + if (! ((dependency_tracking & DEPEND_TARGET_SET) + && (dependency_tracking & DEPEND_FILE_ALREADY_SET))) { - char *buf = (char *) xmalloc (dot - filename + - 3 + sizeof (OBJECT_SUFFIX)); - strncpy (buf, filename, dot - filename); - - /* If emitting class files, we might have multiple - targets. The class generation code takes care of - registering them. Otherwise we compute the target - name here. */ - if (flag_emit_class_files) - jcf_dependency_set_target (NULL); + dot = strrchr (filename, '.'); + if (dot == NULL) + error ("couldn't determine target name for dependency tracking"); else { - strcpy (buf + (dot - filename), OBJECT_SUFFIX); - jcf_dependency_set_target (buf); - } - - if ((dependency_tracking & DEPEND_SET_FILE)) - { - strcpy (buf + (dot - filename), ".d"); - jcf_dependency_set_dep_file (buf); + char *buf = (char *) xmalloc (dot - filename + + 3 + sizeof (OBJECT_SUFFIX)); + strncpy (buf, filename, dot - filename); + + /* If emitting class files, we might have multiple + targets. The class generation code takes care of + registering them. Otherwise we compute the + target name here. */ + if ((dependency_tracking & DEPEND_TARGET_SET)) + ; /* Nothing. */ + else if (flag_emit_class_files) + jcf_dependency_set_target (NULL); + else + { + strcpy (buf + (dot - filename), OBJECT_SUFFIX); + jcf_dependency_set_target (buf); + } + + if ((dependency_tracking & DEPEND_FILE_ALREADY_SET)) + ; /* Nothing. */ + else if ((dependency_tracking & DEPEND_SET_FILE)) + { + strcpy (buf + (dot - filename), ".d"); + jcf_dependency_set_dep_file (buf); + } + else + jcf_dependency_set_dep_file ("-"); + + free (buf); } - else - jcf_dependency_set_dep_file ("-"); - - free (buf); } } } |

