gcc.c: Compile unconditionally all code formerly dependent on #ifdef LANG_SPECIFIC_DR...
authorZack Weinberg <zack@rabi.columbia.edu>
Thu, 25 Mar 1999 23:36:47 +0000 (23:36 +0000)
committerJeff Law <law@gcc.gnu.org>
Thu, 25 Mar 1999 23:36:47 +0000 (16:36 -0700)
* gcc.c: Compile unconditionally all code formerly dependent
on #ifdef LANG_SPECIFIC_DRIVER.
* gccspec.c: New file with stub lang_specific_driver,
lang_specific_pre_link.
* Makefile.in: Link gccspec.o into xgcc.  Add rule to compile
gccspec.c.
* cp/Make-lang.in: Remove all references to g++.o/g++.c.
Link g++ from gcc.o.
* f/Make-lang.in: Remove all references to g77.o/g77.c.
Link g77 from gcc.o.
* java/Make-lang.in: Remove all references to gcj.o/gcj.c.
Link gcj from gcc.o.

From-SVN: r25989

gcc/ChangeLog
gcc/Makefile.in
gcc/cp/ChangeLog
gcc/cp/Make-lang.in
gcc/f/ChangeLog
gcc/f/Make-lang.in
gcc/gcc.c
gcc/gccspec.c [new file with mode: 0644]
gcc/java/ChangeLog
gcc/java/Make-lang.in

index 7753d2fa5bd7d45d3689f4eccde6b8c6d32cbae5..514f0d7ebc484497e755334c8235dd6c11ed300a 100644 (file)
@@ -1,3 +1,11 @@
+999-03-25 Zack Weinberg  <zack@rabi.columbia.edu>
+
+       * gcc.c: Compile unconditionally all code formerly dependent
+       on #ifdef LANG_SPECIFIC_DRIVER.
+       * gccspec.c: New file with stub lang_specific_driver,
+       lang_specific_pre_link.
+       * Makefile.in: Link gccspec.o into xgcc.  Add rule to compile
+
 Thu Mar 25 21:08:02 1999  Jason Merrill  <jason@yorick.cygnus.com>
 
        * gcc.texi (Temporaries): Update.
index 478163bf6cb7a4a5cc84e8eb1c0a3ec96c0691fd..50128b9e98c178225d2f2290ec544e75fe7687ad 100644 (file)
@@ -878,10 +878,10 @@ stamp-objlist: $(OBJS)
 # We call this executable `xgcc' rather than `gcc'
 # to avoid confusion if the current directory is in the path
 # and CC is `gcc'.  It is renamed to `gcc' when it is installed.
-xgcc$(exeext): gcc.o version.o intl.o prefix.o \
+xgcc$(exeext): gcc.o gccspec.o version.o intl.o prefix.o \
    version.o $(LIBDEPS) $(EXTRA_GCC_OBJS)
-       $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ gcc.o intl.o prefix.o version.o \
-         $(EXTRA_GCC_OBJS) $(LIBS)
+       $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ gcc.o gccspec.o intl.o \
+         prefix.o version.o $(EXTRA_GCC_OBJS) $(LIBS)
 
 # Dump a specs file to make -B./ read these specs over installed ones.
 specs: xgcc$(exeext)
@@ -1397,6 +1397,8 @@ gcc.o: gcc.c $(CONFIG_H) system.h intl.h multilib.h \
   $(DRIVER_DEFINES) \
   -c `echo $(srcdir)/gcc.c | sed 's,^\./,,'`
 
+gccspec.o: gccspec.c $(CONFIG_H) system.h
+
 tree-check.h: s-check ; @true
 s-check : gencheck $(srcdir)/move-if-change
        ./gencheck > tmp-check.h
index 187378eccf72f1902863adb6e2ee1301370213bb..cd15852adbf7bf9eb2b44e1c7187d468aaf13c1a 100644 (file)
@@ -1,3 +1,8 @@
+1999-03-25  Zack Weinberg  <zack@rabi.columbia.edu>
+
+       * Make-lang.in: Remove all references to g++.o/g++.c.
+       Link g++ from gcc.o.
+
 1999-03-25  Jason Merrill  <jason@yorick.cygnus.com>
 
        * decl2.c (comdat_linkage): Treat vtables like functions.
index b98246a4bc941f802b8edd5f5c1d4c14870b8210..c877417de47b39f005e6bc7635d65ee6d16dfbe2 100644 (file)
@@ -75,10 +75,6 @@ C++ c++: cc1plus$(exeext)
 # Tell GNU make to ignore these if they exist.
 .PHONY: C++ c++
 
-g++.c: $(srcdir)/gcc.c
-       -rm -f $@
-       $(LN_S) $(srcdir)/gcc.c $@
-
 g++spec.o: $(srcdir)/cp/g++spec.c
        $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/cp/g++spec.c
 
@@ -90,19 +86,8 @@ $(srcdir)/cp/parse.c: $(srcdir)/cp/parse.y
          $(MAKE) $(SUBDIR_FLAGS_TO_PASS) $(CXX_FLAGS_TO_PASS) \
            $$cp_srcdir/parse.c
 
-# N.B.: This is a copy of the gcc.o rule, with -DLANG_SPECIFIC_DRIVER added.
-# It'd be nice if we could find an easier way to do this---rather than have
-# to track changes to the toplevel gcc Makefile as well.
-# We depend on g++.c last, to make it obvious where it came from.
-g++.o: $(CONFIG_H) intl.h multilib.h config.status system.h \
-    Makefile $(lang_specs_files) g++.c prefix.h
-       $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
-       $(DRIVER_DEFINES) \
-       -DLANG_SPECIFIC_DRIVER \
-  -c g++.c
-
 # Create the compiler driver for g++.
-GXX_OBJS = g++.o g++spec.o intl.o prefix.o version.o 
+GXX_OBJS = gcc.o g++spec.o intl.o prefix.o version.o 
 g++$(exeext): $(GXX_OBJS) $(EXTRA_GCC_OBJS) $(LIBDEPS)
        $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \
          $(GXX_OBJS) $(EXTRA_GCC_OBJS) $(LIBS)
@@ -290,7 +275,6 @@ c++.clean:
 c++.distclean:
        -rm -f cp/config.status cp/Makefile
        -rm -f cp/parse.output
-       -rm -f g++.c
 c++.extraclean:
 c++.maintainer-clean:
        -rm -f cp/parse.c cp/parse.h
index 4332c8b34657d927390a67a28def6a8454105a10..0137b91de6bc670eb1b51ea140c28c5629462371 100644 (file)
@@ -1,3 +1,8 @@
+1999-03-25  Zack Weinberg  <zack@rabi.columbia.edu>
+
+       * Make-lang.in: Remove all references to g77.o/g77.c.
+       Link g77 from gcc.o.
+
 1999-03-21  Manfred Hollstein  <manfred@s-direktnet.de>
 
        * Makefile.in (g77$(exeext)): Depend on intl.o.  Link in intl.o.
index 75b6a450ae3ae74b8c40fa2e9cce0082c7b22dcf..c1a2814cd1876ca812ebfc152e5d734ccbe6064e 100644 (file)
@@ -59,16 +59,6 @@ F77 f77: f771$(exeext)
   f77.extraclean f77.maintainer-clean f77.distdir f77.rebuilt \
   f77.stage1 f77.stage2 f77.stage3 f77.stage4
 
-g77.c: $(srcdir)/gcc.c
-       case "$(LANGUAGES)" in \
-         *[fF]77*) touch lang-f77;; \
-         *) rm -f lang-f77;; \
-       esac
-       if [ -f lang-f77 ]; then \
-         rm -f g77.c; \
-         $(LN_S) $(srcdir)/gcc.c g77.c; \
-       else true; fi
-
 g77spec.o: $(srcdir)/f/g77spec.c $(srcdir)/f/version.h
        case "$(LANGUAGES)" in \
          *[fF]77*) touch lang-f77;; \
@@ -88,25 +78,11 @@ g77version.o: $(srcdir)/f/version.c
            $(srcdir)/f/version.c; \
        else true; fi
 
-# N.B.: This is a copy of the gcc.o rule, with -DLANG_SPECIFIC_DRIVER added.
-# It'd be nice if we could find an easier way to do this---rather than have
-# to track changes to the toplevel gcc Makefile as well.
-# We depend on g77.c last, to make it obvious where it came from.
-g77.o: $(CONFIG_H) multilib.h config.status $(lang_specs_files) g77.c prefix.h
-       case "$(LANGUAGES)" in \
-         *[fF]77*) touch lang-f77;; \
-         *) rm -f lang-f77;; \
-       esac
-       if [ -f lang-f77 ]; then \
-         $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(DRIVER_DEFINES) \
-          -DLANG_SPECIFIC_DRIVER -c g77.c; \
-       else true; fi
-
 # Create the compiler driver for g77.
-g77$(exeext): g77.o g77spec.o g77version.o version.o prefix.o intl.o \
+g77$(exeext): gcc.o g77spec.o g77version.o version.o prefix.o intl.o \
   $(LIBDEPS) $(EXTRA_GCC_OBJS)
        if [ -f lang-f77 ]; then \
-         $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ g77.o g77spec.o g77version.o \
+         $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ gcc.o g77spec.o g77version.o \
           version.o prefix.o intl.o $(EXTRA_GCC_OBJS) $(LIBS); \
        else true; fi
 
@@ -428,7 +404,7 @@ f77.mostlyclean:
        -rm -f g77.aux g77.cps g77.ky g77.toc g77.vr g77.fn g77.kys \
               g77.pg g77.tp g77.vrs g77.cp g77.fns g77.log g77.pgs g77.tps 
 f77.clean:
-       -rm -f g77.c g77.o g77spec.o g77version.o
+       -rm -f g77spec.o g77version.o
 f77.distclean:
        -rm -f lang-f77 f/Makefile
 f77.extraclean:
@@ -439,7 +415,7 @@ f77.maintainer-clean:
 # The main makefile has already created stage?/f.
 
 G77STAGESTUFF = f/*$(objext) f/fini f/stamp-str f/str-*.h f/str-*.j \
-  lang-f77 g77.c g77.o g77spec.o g77version.o
+  lang-f77 g77spec.o g77version.o
 
 f77.stage1: stage1-start
        -if [ -f lang-f77 ]; then \
index 5a9f37bc6f060006680489582a8be6e80bb7f6ad..a56cf11450550edd874eccba47116a022385e1dd 100644 (file)
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -214,16 +214,15 @@ static void fatal_error                   PROTO ((int));
 
 void fancy_abort               PROTO((void)) ATTRIBUTE_NORETURN;
 
-#ifdef LANG_SPECIFIC_DRIVER
 /* Called before processing to change/add/remove arguments. */
-extern void lang_specific_driver PROTO ((void (*) PVPROTO((const char *, ...)), int *, char ***, int *));
+extern void lang_specific_driver PROTO ((void (*) PVPROTO((const char *, ...)),
+                                        int *, char ***, int *));
 
 /* Called before linking.  Returns 0 on success and -1 on failure. */
 extern int lang_specific_pre_link ();
 
 /* Number of extra output files that lang_specific_pre_link may generate. */
 extern int lang_specific_extra_outfiles;
-#endif
 \f
 /* Specs are strings containing lines, each of which (if not blank)
 is made up of a program name, and arguments separated by spaces.
@@ -2379,7 +2378,7 @@ static struct infile *infiles;
 
 static int n_infiles;
 
-/* This counts the number of libraries added by LANG_SPECIFIC_DRIVER, so that
+/* This counts the number of libraries added by lang_specific_driver, so that
    we can tell if there were any user supplied any files or libraries.  */
 
 static int added_libraries;
@@ -2719,10 +2718,8 @@ process_command (argc, argv)
   /* Convert new-style -- options to old-style.  */
   translate_options (&argc, &argv);
 
-#ifdef LANG_SPECIFIC_DRIVER
   /* Do language-specific adjustment/addition of flags.  */
   lang_specific_driver (fatal, &argc, &argv, &added_libraries);
-#endif
 
   /* Scan argv twice.  Here, the first time, just count how many switches
      there will be in their vector, and how many input files in theirs.
@@ -3747,9 +3744,8 @@ do_spec_1 (spec, inswitch, soft_matched_part)
          case 'o':
            {
              int max = n_infiles;
-#ifdef LANG_SPECIFIC_DRIVER
              max += lang_specific_extra_outfiles;
-#endif
+
              for (i = 0; i < max; i++)
                if (outfiles[i])
                  store_arg (outfiles[i], 0, 0);
@@ -5008,9 +5004,7 @@ main (argc, argv)
      that correspond to the input files.  */
 
   i = n_infiles;
-#ifdef LANG_SPECIFIC_DRIVER
   i += lang_specific_extra_outfiles;
-#endif
   outfiles = (const char **) xmalloc (i * sizeof (char *));
   bzero ((char *) outfiles, i * sizeof (char *));
 
@@ -5109,7 +5103,6 @@ main (argc, argv)
       clear_failure_queue ();
     }
 
-#ifdef LANG_SPECIFIC_DRIVER
   if (error_count == 0)
     {
       /* Make sure INPUT_FILE_NUMBER points to first available open
@@ -5118,7 +5111,6 @@ main (argc, argv)
       if (lang_specific_pre_link ())
        error_count++;
     }
-#endif
 
   /* Run ld to link all the compiler output files.  */
 
diff --git a/gcc/gccspec.c b/gcc/gccspec.c
new file mode 100644 (file)
index 0000000..78c67d2
--- /dev/null
@@ -0,0 +1,43 @@
+/* Specific flags and argument handling of the C front-end.
+   Copyright (C) 1999 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING.  If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include "config.h"
+#include "system.h"
+
+/* Filter argc and argv before processing by the gcc driver proper. */
+void
+lang_specific_driver (fn, in_argc, in_argv, in_added_libraries)
+     void (*fn)() ATTRIBUTE_UNUSED;
+     int *in_argc ATTRIBUTE_UNUSED;
+     char ***in_argv ATTRIBUTE_UNUSED;
+     int *in_added_libraries ATTRIBUTE_UNUSED;
+{
+  return;  /* Not used for C. */
+}
+
+/* Called before linking.  Returns 0 on success and -1 on failure. */
+int
+lang_specific_pre_link ()
+{
+  return 0;  /* Not used for C. */
+}
+
+/* Number of extra output files that lang_specific_pre_link may generate. */
+int lang_specific_extra_outfiles = 0;  /* Not used for C. */
index 917b40313eb7896a08db291700bc4a79e5c05527..d24206b3fb56d5c9bca7f227327524376e547834 100644 (file)
@@ -1,3 +1,8 @@
+1999-03-25  Zack Weinberg  <zack@rabi.columbia.edu>
+
+       * java/Make-lang.in: Remove all references to gcj.o/gcj.c.
+       Link gcj from gcc.o.
+
 Tue Mar 23 10:48:24 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
 
        * parse.y (find_applicable_accessible_methods_list): When dealing
index 8e06958cf528fbefc5bae4a8c7dbe598aaefe0e9..787319e3c0903d1e1f0566adfcc91b3f8f77976a 100644 (file)
@@ -79,30 +79,15 @@ JAVA_SRCS = $(srcdir)/java/parse.y $(srcdir)/java/class.c \
 jc1$(exeext): $(P) $(JAVA_SRCS) $(LIBDEPS) stamp-objlist
        cd java; $(MAKE) $(FLAGS_TO_PASS) $(JAVA_FLAGS_TO_PASS) ../jc1$(exeext)
 
-$(GCJ).c: $(srcdir)/gcc.c
-       -rm -f $@
-       $(LN_S) $(srcdir)/gcc.c $@
-
 jvspec.o: $(srcdir)/java/jvspec.c
        $(CC) -c -DWITH_THREAD_$(GCC_THREAD_FILE) -DWITH_GC_$(JAVAGC) \
                $(ALL_CFLAGS) $(ALL_CPPFLAGS) \
                $(INCLUDES) $(srcdir)/java/jvspec.c
 
-# N.B.: This is a copy of the gcc.o rule, with -DLANG_SPECIFIC_DRIVER added.
-# It'd be nice if we could find an easier way to do this---rather than have
-# to track changes to the toplevel gcc Makefile as well.
-# We depend on $(GCJ).c last, to make it obvious where it came from.
-$(GCJ).o: $(CONFIG_H) multilib.h config.status $(lang_specs_files) $(GCJ).c \
-       system.h prefix.h
-       $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
-       $(DRIVER_DEFINES) \
-       -DLANG_SPECIFIC_DRIVER \
-  -c $(GCJ).c
-
 # Create the compiler driver for $(GCJ).
-$(GCJ)$(exeext): $(GCJ).o jvspec.o version.o \
+$(GCJ)$(exeext): gcc.o jvspec.o version.o \
           prefix.o intl.o $(LIBDEPS) $(EXTRA_GCC_OBJS)
-       $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(GCJ).o jvspec.o prefix.o intl.o \
+       $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ gcc.o jvspec.o prefix.o intl.o \
          version.o $(EXTRA_GCC_OBJS) $(LIBS)
 
 # Create a version of the $(GCJ) driver which calls the cross-compiler.