diff options
author | Tom Tromey <tromey@cygnus.com> | 2000-10-20 21:19:29 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2000-10-20 21:19:29 +0000 |
commit | 316a06a103ac4064f94377b8a4a4c1b91f6a5afe (patch) | |
tree | 4eede965e0e3fec6ff244f7ac3b8432688b7e248 /gcc/java/lang.c | |
parent | 3f568531d04baeb2dc6a3eaf3e18d5a219c3e841 (diff) | |
download | gcc-316a06a103ac4064f94377b8a4a4c1b91f6a5afe.zip gcc-316a06a103ac4064f94377b8a4a4c1b91f6a5afe.tar.gz gcc-316a06a103ac4064f94377b8a4a4c1b91f6a5afe.tar.bz2 |
jvspec.c (lang_specific_driver): Recognize -MF and -MT.
* 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.
From-SVN: r36981
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 32150b2..8065fc7 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); } } } |