The attached patch moves the basic installation of the compiler drivers from gcc/*/Make-lang.in to gcc/Makefile.in. The Make-lang.in has only to inform the driver's name.
Additional setup like setting the c++ -> g++ links remains in the Make-lang.in Ok for trunk when stage1 starts? :ADDPATCH build: Best Regards, Rafael 2006-07-13 Rafael Ávila de Espíndola <[EMAIL PROTECTED]> * gcc/java/Make-lang.in (DRIVERS): New (java.install-common): Don't Install the driver * gcc/cp/Make-lang.in (DRIVERS): New (c++.install-common): Don't install the driver * gcc/fortran/Make-lang.in (DRIVERS): New (fortran.install-common): Don't install the driver * gcc/treelang/Make-lang.in (DRIVERS): New (treelang.install.common.done): Don't install the driver * gcc/Makefile.in (DRIVERS): New (LANG_INSTALL_COMMONS): New (install-drivers): New
Index: gcc/java/Make-lang.in =================================================================== --- gcc/java/Make-lang.in (revision 115296) +++ gcc/java/Make-lang.in (working copy) @@ -40,6 +40,8 @@ # - the compiler proper (eg: jc1) # - define the names for selecting the language in LANGUAGES. +DRIVERS += gcj + # Actual names to use when installing a native compiler. JAVA_INSTALL_NAME := $(shell echo gcj|sed '$(program_transform_name)') JAVA_TARGET_INSTALL_NAME := $(target_noncanonical)-$(shell echo gcj|sed '$(program_transform_name)') @@ -199,19 +201,7 @@ check-java : # portable makefiles for both cross builds (where gcjh *must* # be explicitly prefixed) and native builds. java.install-common: installdirs - -if [ -f $(GCJ)$(exeext) ]; then \ - rm -f $(DESTDIR)$(bindir)/$(JAVA_INSTALL_NAME)$(exeext); \ - $(INSTALL_PROGRAM) $(GCJ)$(exeext) $(DESTDIR)$(bindir)/$(JAVA_INSTALL_NAME)$(exeext); \ - chmod a+x $(DESTDIR)$(bindir)/$(JAVA_INSTALL_NAME)$(exeext); \ - if [ -f $(GCJ)-cross$(exeext) ]; then \ - true; \ - else \ - rm -f $(DESTDIR)$(bindir)/$(JAVA_TARGET_INSTALL_NAME)$(exeext); \ - ( cd $(DESTDIR)$(bindir) && \ - $(LN) $(JAVA_INSTALL_NAME)$(exeext) $(JAVA_TARGET_INSTALL_NAME)$(exeext) ); \ - fi ; \ - fi ; \ - for tool in $(JAVA_TARGET_INDEPENDENT_BIN_TOOLS); do \ + for tool in $(JAVA_TARGET_INDEPENDENT_BIN_TOOLS); do \ tool_transformed_name=`echo $$tool|sed '$(program_transform_name)'`; \ if [ -f $$tool$(exeext) ]; then \ rm -f $(DESTDIR)$(bindir)/$$tool_transformed_name$(exeext); \ Index: gcc/cp/Make-lang.in =================================================================== --- gcc/cp/Make-lang.in (revision 115296) +++ gcc/cp/Make-lang.in (working copy) @@ -37,6 +37,8 @@ # - the compiler proper (eg: cc1plus) # - define the names for selecting the language in LANGUAGES. +DRIVERS += g++ + # Actual names to use when installing a native compiler. CXX_INSTALL_NAME := $(shell echo c++|sed '$(program_transform_name)') GXX_INSTALL_NAME := $(shell echo g++|sed '$(program_transform_name)') @@ -146,25 +148,17 @@ lang_checks += check-g++ # Install the driver program as $(target)-g++ # and also as either g++ (if native) or $(tooldir)/bin/g++. c++.install-common: installdirs - -rm -f $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext) - -$(INSTALL_PROGRAM) g++$(exeext) $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext) - -chmod a+x $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext) -rm -f $(DESTDIR)$(bindir)/$(CXX_INSTALL_NAME)$(exeext) -( cd $(DESTDIR)$(bindir) && \ $(LN) $(GXX_INSTALL_NAME)$(exeext) $(CXX_INSTALL_NAME)$(exeext) ) -if [ -f cc1plus$(exeext) ] ; then \ if [ -f g++-cross$(exeext) ] ; then \ if [ -d $(DESTDIR)$(gcc_tooldir)/bin/. ] ; then \ - rm -f $(DESTDIR)$(gcc_tooldir)/bin/g++$(exeext); \ - $(INSTALL_PROGRAM) g++-cross$(exeext) $(DESTDIR)$(gcc_tooldir)/bin/g++$(exeext); \ rm -f $(DESTDIR)$(gcc_tooldir)/bin/c++$(exeext); \ ( cd $(DESTDIR)$(gcc_tooldir)/bin && \ $(LN) g++$(exeext) c++$(exeext) ); \ else true; fi; \ else \ - rm -f $(DESTDIR)$(bindir)/$(GXX_TARGET_INSTALL_NAME)$(exeext); \ - ( cd $(DESTDIR)$(bindir) && \ - $(LN) $(GXX_INSTALL_NAME)$(exeext) $(GXX_TARGET_INSTALL_NAME)$(exeext) ); \ rm -f $(DESTDIR)$(bindir)/$(CXX_TARGET_INSTALL_NAME)$(exeext); \ ( cd $(DESTDIR)$(bindir) && \ $(LN) $(CXX_INSTALL_NAME)$(exeext) $(CXX_TARGET_INSTALL_NAME)$(exeext) ); \ Index: gcc/fortran/Make-lang.in =================================================================== --- gcc/fortran/Make-lang.in (revision 115296) +++ gcc/fortran/Make-lang.in (working copy) @@ -40,6 +40,8 @@ # - define the names for selecting the language in LANGUAGES. # $(srcdir) must be set to the gcc/ source directory (*not* gcc/fortran/). +DRIVERS += gfortran + # Actual name to use when installing a native compiler. GFORTRAN_INSTALL_NAME := $(shell echo gfortran|sed '$(program_transform_name)') GFORTRAN_TARGET_INSTALL_NAME := $(target_noncanonical)-$(shell echo gfortran|sed '$(program_transform_name)') @@ -184,20 +186,6 @@ install-finclude-dir: installdirs # Install the driver program as $(target)-gfortran # and also as either gfortran (if native) or $(tooldir)/bin/gfortran. fortran.install-common: install-finclude-dir installdirs - -if [ -f f951$(exeext) ] ; then \ - rm -f $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \ - $(INSTALL_PROGRAM) gfortran$(exeext) $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \ - chmod a+x $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \ - if [ -f gfortran-cross$(exeext) ] ; then \ - if [ -d $(DESTDIR)$(gcc_tooldir)/bin/. ] ; then \ - rm -f $(DESTDIR)$(gcc_tooldir)/bin/gfortran$(exeext); \ - $(INSTALL_PROGRAM) gfortran-cross$(exeext) $(DESTDIR)$(gcc_tooldir)/bin/gfortran$(exeext); \ - else true; fi; \ - else \ - rm -f $(DESTDIR)$(bindir)/$(GFORTRAN_TARGET_INSTALL_NAME)$(exeext); \ - $(LN) $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext) $(DESTDIR)$(bindir)/$(GFORTRAN_TARGET_INSTALL_NAME)$(exeext); \ - fi ; \ - fi fortran.install-info: $(DESTDIR)$(infodir)/gfortran.info Index: gcc/treelang/Make-lang.in =================================================================== --- gcc/treelang/Make-lang.in (revision 115296) +++ gcc/treelang/Make-lang.in (working copy) @@ -38,6 +38,8 @@ # - define the names for selecting the language in LANGUAGES. # +DRIVERS += gtreelang + ## note program-prefix and program-suffix options are not supported ## just program_transform_name which is a sed script to transform the ## names @@ -190,16 +192,6 @@ $(build_htmldir)/treelang/index.html: $( treelang.install treelang.install.common treelang.install-common: treelang.install.common.done treelang.install.common.done: installdirs treelang.done - for name in $(TREE_EXES); \ - do \ - if [ -f $$name ] ; then \ - name2="`echo \`basename $$name\` | sed -e '$(program_transform_name)' `"; \ - rm -f $(DESTDIR)$(bindir)/$$name2$(exeext); \ - echo $(INSTALL_PROGRAM) $$name$(exeext) $(DESTDIR)$(bindir)/$$name2$(exeext); \ - $(INSTALL_PROGRAM) $$name$(exeext) $(DESTDIR)$(bindir)/$$name2$(exeext); \ - chmod a+x $(DESTDIR)$(bindir)/$$name2$(exeext); \ - fi ; \ - done $(STAMP) treelang.install.common.done # We might not be able to build the info files Index: gcc/Makefile.in =================================================================== --- gcc/Makefile.in (revision 115296) +++ gcc/Makefile.in (working copy) @@ -1116,11 +1116,37 @@ LIB2_DIVMOD_FUNCS = _divdi3 _moddi3 _udi # language hooks, generated by configure @language_hooks@ +DRIVERS := + # per-language makefile fragments ifneq ($(LANG_MAKEFRAGS),) include $(LANG_MAKEFRAGS) endif +LANG_INSTALL_COMMONS := $(patsubst %,%.install-common,$(CONFIG_LANGUAGES)) + +$(LANG_INSTALL_COMMONS): install-drivers + +install-drivers: installdirs + -for driver in $(DRIVERS); do \ + driver_install_name="`echo $$driver | sed '$(program_transform_name)'`"; \ + driver_target_install_name=$(target_noncanonical)-$$driver_install_name; \ + driver_install_path=$(DESTDIR)$(bindir)/$$driver_install_name$(exeext); \ + driver_target_install_path=$(DESTDIR)$(bindir)/$$driver_target_install_name$(exeext); \ + rm -f $$driver_install_path; \ + $(INSTALL_PROGRAM) $$driver$(exeext) $$driver_install_path; \ + chmod a+x $$driver_install_path; \ + if [ -f $$driver-cross$(exeext) ] ; then \ + if [ -d $(DESTDIR)$(gcc_tooldir)/bin/. ] ; then \ + rm -f $(DESTDIR)$(gcc_tooldir)/bin/$$driver$(exeext); \ + $(INSTALL_PROGRAM) $$driver-cross$(exeext) $(DESTDIR)$(gcc_tooldir)/bin/$$driver$(exeext); \ + else true; fi; \ + else \ + rm -f $$driver_target_install_path; \ + $(LN) $$driver_install_path $$driver_target_install_path; \ + fi \ + done + # target and host overrides must follow the per-language makefile fragments # so they can override or augment language-specific variables