diff options
Diffstat (limited to 'gcc/cp/Make-lang.in')
-rw-r--r-- | gcc/cp/Make-lang.in | 63 |
1 files changed, 30 insertions, 33 deletions
diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in index 320ffc3e7f2..c877417de47 100644 --- a/gcc/cp/Make-lang.in +++ b/gcc/cp/Make-lang.in @@ -1,5 +1,5 @@ # Top level makefile fragment for GNU C++. -# Copyright (C) 1994, 1995, 1997 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1997, 1998, 1999 Free Software Foundation, Inc. #This file is part of GNU CC. @@ -75,43 +75,38 @@ 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 -# 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) multilib.h config.status $(lang_specs_files) g++.c \ - system.h - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ - $(DRIVER_DEFINES) \ - -DLANG_SPECIFIC_DRIVER \ - -c g++.c +$(INTL_TARGETS): $(srcdir)/cp/parse.c +$(srcdir)/cp/parse.c: $(srcdir)/cp/parse.y + @cp_srcdir=`sed -n 's/^srcdir[ ]*=[ ]*//p' cp/Makefile` && \ + echo "cd cp && $(MAKE) $$cp_srcdir/parse.c" && \ + cd cp && \ + $(MAKE) $(SUBDIR_FLAGS_TO_PASS) $(CXX_FLAGS_TO_PASS) \ + $$cp_srcdir/parse.c # Create the compiler driver for g++. -g++$(exeext): g++.o g++spec.o version.o choose-temp.o pexecute.o prefix.o mkstemp.o $(LIBDEPS) $(EXTRA_GCC_OBJS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ g++.o g++spec.o prefix.o \ - version.o choose-temp.o pexecute.o mkstemp.o $(EXTRA_GCC_OBJS) $(LIBS) +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) # Create a version of the g++ driver which calls the cross-compiler. g++-cross$(exeext): g++$(exeext) -rm -f g++-cross$(exeext) cp g++$(exeext) g++-cross$(exeext) -cxxmain.o: $(srcdir)/../libiberty/cplus-dem.c demangle.h +cxxmain.o: $(srcdir)/../libiberty/cplus-dem.c $(DEMANGLE_H) rm -f cxxmain.c $(LN_S) $(srcdir)/../libiberty/cplus-dem.c cxxmain.c $(CC) -c -DMAIN $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ -DVERSION=\"$(version)\" cxxmain.c -$(DEMANGLER_PROG): cxxmain.o underscore.o getopt.o getopt1.o $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ - cxxmain.o underscore.o getopt.o getopt1.o $(LIBS) +# Apparently OpenVM needs the -o to be at the beginning of the link line. +$(DEMANGLER_PROG): cxxmain.o underscore.o $(LIBDEPS) + $(CC) -o $@ $(ALL_CFLAGS) $(LDFLAGS) \ + cxxmain.o underscore.o $(LIBS) CXX_SRCS = $(srcdir)/cp/call.c $(srcdir)/cp/decl2.c \ $(srcdir)/cp/except.c $(srcdir)/cp/input.c $(srcdir)/cp/pt.c \ @@ -125,7 +120,7 @@ CXX_SRCS = $(srcdir)/cp/call.c $(srcdir)/cp/decl2.c \ $(srcdir)/cp/repo.c $(srcdir)/cp/semantics.c cc1plus$(exeext): $(P) $(CXX_SRCS) $(LIBDEPS) stamp-objlist c-common.o c-pragma.o \ - $(srcdir)/cp/cp-tree.h $(srcdir)/cp/cp-tree.def + $(srcdir)/cp/cp-tree.h $(srcdir)/cp/cp-tree.def hash.o cd cp; $(MAKE) $(FLAGS_TO_PASS) $(CXX_FLAGS_TO_PASS) ../cc1plus$(exeext) # # Build hooks: @@ -187,8 +182,11 @@ cplib2.txt: $(CXX_LIB2SRCS) $(CXX_EXTRA_HEADERS) cplib2.ready mv -f cplib2.new cplib2.txt # Or if it would be different. +# Don't try to do write if `.' is not writable; +# in that case, we're installing from someone else's directory. +# But go ahead and fail if that directory hasn't been properly built. cplib2.ready: $(GCC_PASSES) $(LANGUAGES) $(LIBGCC2_DEPS) stmp-int-hdrs - @if [ -r cplib2.txt ]; then \ + @if [ -r cplib2.txt -a -w . ]; then \ case " $(LANGUAGES) " in \ *" "[cC]"++ "*) \ echo $(CXX_LIB2FUNCS) > cplib2.new;; \ @@ -246,13 +244,13 @@ c++.install-info: c++.install-man: $(srcdir)/cp/g++.1 -if [ -f cc1plus$(exeext) ] ; then \ if [ -f g++-cross$(exeext) ] ; then \ - rm -f $(mandir)/$(GXX_CROSS_NAME)$(manext); \ - $(INSTALL_DATA) $(srcdir)/cp/g++.1 $(mandir)/$(GXX_CROSS_NAME)$(manext); \ - chmod a-x $(mandir)/$(GXX_CROSS_NAME)$(manext); \ + rm -f $(man1dir)/$(GXX_CROSS_NAME)$(manext); \ + $(INSTALL_DATA) $(srcdir)/cp/g++.1 $(man1dir)/$(GXX_CROSS_NAME)$(manext); \ + chmod a-x $(man1dir)/$(GXX_CROSS_NAME)$(manext); \ else \ - rm -f $(mandir)/$(GXX_INSTALL_NAME)$(manext); \ - $(INSTALL_DATA) $(srcdir)/cp/g++.1 $(mandir)/$(GXX_INSTALL_NAME)$(manext); \ - chmod a-x $(mandir)/$(GXX_INSTALL_NAME)$(manext); \ + rm -f $(man1dir)/$(GXX_INSTALL_NAME)$(manext); \ + $(INSTALL_DATA) $(srcdir)/cp/g++.1 $(man1dir)/$(GXX_INSTALL_NAME)$(manext); \ + chmod a-x $(man1dir)/$(GXX_INSTALL_NAME)$(manext); \ fi; \ else true; fi @@ -263,8 +261,8 @@ c++.uninstall: -rm -rf $(bindir)/$(GXX_CROSS_NAME)$(exeext) -rm -rf $(bindir)/$(DEMANGLER_INSTALL_NAME)$(exeext) -rm -rf $(bindir)/$(DEMANGLER_CROSS_NAME)$(exeext) - -rm -rf $(mandir)/$(GXX_INSTALL_NAME)$(manext) - -rm -rf $(mandir)/$(GXX_CROSS_NAME)$(manext) + -rm -rf $(man1dir)/$(GXX_INSTALL_NAME)$(manext) + -rm -rf $(man1dir)/$(GXX_CROSS_NAME)$(manext) # # Clean hooks: # A lot of the ancillary files are deleted by the main makefile. @@ -277,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 |