From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27495 invoked by alias); 3 Jun 2003 20:40:24 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 27446 invoked from network); 3 Jun 2003 20:40:23 -0000 Received: from unknown (HELO ms-smtp-03.nyroc.rr.com) (24.92.226.153) by sources.redhat.com with SMTP; 3 Jun 2003 20:40:23 -0000 Received: from doctormoo (syr-24-24-19-190.twcny.rr.com [24.24.19.190]) by ms-smtp-03.nyroc.rr.com (8.12.5/8.12.2) with ESMTP id h53KeLik026079; Tue, 3 Jun 2003 16:40:21 -0400 (EDT) Received: from neroden by doctormoo with local (Exim 3.36 #1 (Debian)) id 19NIZu-0001vg-00; Tue, 03 Jun 2003 16:40:18 -0400 Date: Tue, 03 Jun 2003 20:40:00 -0000 To: gcc-patches@gcc.gnu.org, gdb-patches@sources.redhat.com, binutils@sources.redhat.com, dj@redhat.com Subject: Re: [toplevel patch] Revised autogenification omnibus patch Message-ID: <20030603204018.GA7225@doctormoo> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.4i From: Nathanael Nerode X-SW-Source: 2003-06/txt/msg00137.txt.bz2 Somehow, the version I sent was outdated and had a stupid bug in it. Again. Aaargh. Here's the correct version of the Makefile.tpl patch, which I actually tested, and which I'm committing (the other two patches are the same). --Nathanael Index: Makefile.tpl =================================================================== RCS file: /cvs/gcc/gcc/Makefile.tpl,v retrieving revision 1.52 diff -c -3 -r1.52 Makefile.tpl *** Makefile.tpl 3 Jun 2003 16:35:42 -0000 1.52 --- Makefile.tpl 3 Jun 2003 20:37:54 -0000 *************** *** 475,481 **** # Flags to pass down to most sub-makes, in which we're building with # the host environment. - # If any variables are added here, they must be added to do-*, below. EXTRA_HOST_FLAGS = \ 'AR=$(AR)' \ 'AS=$(AS)' \ --- 475,480 ---- *************** *** 504,510 **** # Flags to pass down to makes which are built with the target environment. # The double $ decreases the length of the command line; the variables # are set in BASE_FLAGS_TO_PASS, and the sub-make will expand them. - # If any variables are added here, they must be added to do-*, below. EXTRA_TARGET_FLAGS = \ 'AR=$$(AR_FOR_TARGET)' \ 'AS=$$(AS_FOR_TARGET)' \ --- 503,508 ---- *************** *** 526,532 **** # unfortunately needs the native compiler and the target ar and # ranlib. # If any variables are added here, they must be added to do-*, below. ! # The HOST_* variables are a special case, which are used for the gcc # cross-building scheme. EXTRA_GCC_FLAGS = \ 'AR=$(AR)' \ --- 524,530 ---- # unfortunately needs the native compiler and the target ar and # ranlib. # If any variables are added here, they must be added to do-*, below. ! # The BUILD_* variables are a special case, which are used for the gcc # cross-building scheme. EXTRA_GCC_FLAGS = \ 'AR=$(AR)' \ *************** *** 565,590 **** maybe-configure-target-[+module+][+ ENDFOR target_modules +] - # This is a list of the targets for which we can do a clean-{target}. - CLEAN_MODULES =[+ - FOR host_modules +][+ - IF (not (or (exist? "no_clean") (exist? "with_x"))) +] \ - clean-[+module+][+ - ENDIF no_clean +][+ - ENDFOR host_modules +] - - # All of the target modules that can be cleaned - CLEAN_TARGET_MODULES =[+ - FOR target_modules +][+ - IF (not (exist? "no_clean")) +] \ - clean-target-[+module+][+ - ENDIF no_clean +][+ - ENDFOR target_modules +] - - # All of the x11 modules that can be cleaned - CLEAN_X11_MODULES = [+ FOR host_modules +][+ IF with_x +]\ - clean-[+module+] [+ ENDIF with_x +][+ ENDFOR host_modules +] - # The target built for a native build. .PHONY: all.normal all.normal: @all_build_modules@ all-host all-target --- 563,568 ---- *************** *** 604,662 **** # ``make X'' in all subdirectories (because, in general, there is a # dependency (below) of X upon do-X, a ``make X'' will also do this, # but it may do additional work as well). - # This target ensures that $(BASE_FLAGS_TO_PASS) appears only once, - # because it is so large that it can easily overflow the command line - # length limit on some systems. [+ FOR recursive_targets +] .PHONY: do-[+make_target+] ! do-[+make_target+]: ! @r=`${PWD}`; export r; \ s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ ! for i in $(SUBDIRS) -dummy-; do \ ! if [ -f ./$$i/Makefile ]; then \ ! case $$i in \ ! gcc) \ ! for flag in $(EXTRA_GCC_FLAGS); do \ ! eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ! done; \ ! ;; \ ! *) \ ! for flag in $(EXTRA_HOST_FLAGS); do \ ! eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ! done; \ ! ;; \ ! esac ; \ ! (cd ./$$i && \ ! $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ! "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ! "RANLIB=$${RANLIB}" \ ! "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ ! [+make_target+]) \ ! || exit 1; \ ! else true; fi; \ ! done ! # Break into two pieces r=`${PWD}`; export r; \ s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ ! for i in $(TARGET_CONFIGDIRS) -dummy-; do \ ! if [ -f $(TARGET_SUBDIR)/$$i/Makefile ]; then \ ! for flag in $(EXTRA_TARGET_FLAGS); do \ ! eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ! done; \ ! (cd $(TARGET_SUBDIR)/$$i && \ ! $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ! "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ! "RANLIB=$${RANLIB}" \ ! "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ ! [+make_target+]) \ ! || exit 1; \ ! else true; fi; \ ! done [+ ENDFOR recursive_targets +] - # Here are the targets which correspond to the do-X targets. .PHONY: info installcheck dvi install-info --- 582,687 ---- # ``make X'' in all subdirectories (because, in general, there is a # dependency (below) of X upon do-X, a ``make X'' will also do this, # but it may do additional work as well). [+ FOR recursive_targets +] .PHONY: do-[+make_target+] ! do-[+make_target+]: [+make_target+]-host [+make_target+]-target ! ! .PHONY: [+make_target+]-host ! [+make_target+]-host: maybe-[+make_target+]-gcc [+ ! FOR host_modules +] \ ! maybe-[+make_target+]-[+module+][+ ! ENDFOR host_modules +] ! ! .PHONY: [+make_target+]-target ! [+make_target+]-target: [+ ! FOR target_modules +] \ ! maybe-[+make_target+]-target-[+module+][+ ! ENDFOR target_modules +] ! ! # GCC, the eternal special case ! .PHONY: maybe-[+make_target+]-gcc [+make_target+]-gcc ! maybe-[+make_target+]-gcc: ! [+make_target+]-gcc: [+ ! FOR depend +]\ ! [+depend+]-gcc [+ ! ENDFOR depend +] ! @[ -f ./gcc/Makefile ] || exit 0; \ ! r=`${PWD}`; export r; \ ! s=`cd $(srcdir); ${PWD}`; export s; \ ! $(SET_LIB_PATH) \ ! for flag in $(EXTRA_GCC_FLAGS); do \ ! eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ! done; \ ! echo "Doing [+make_target+] in gcc" ; \ ! (cd gcc && \ ! $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ! "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ! "RANLIB=$${RANLIB}" \ ! "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ ! [+make_target+]) \ ! || exit 1 ! ! # Host modules. ! [+ FOR host_modules +] ! .PHONY: maybe-[+make_target+]-[+module+] [+make_target+]-[+module+] ! maybe-[+make_target+]-[+module+]: ! [+ IF (match-value? = "missing" (get "make_target") ) +] ! # [+module+] doesn't support [+make_target+]. ! [+make_target+]-[+module+]: ! [+ ELSE +] ! [+make_target+]-[+module+]: [+ ! FOR depend +]\ ! [+depend+]-[+module+] [+ ! ENDFOR depend +] ! @[ -f ./[+module+]/Makefile ] || exit 0; \ ! r=`${PWD}`; export r; \ s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ ! for flag in $(EXTRA_HOST_FLAGS); do \ ! eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ! done; \ ! echo "Doing [+make_target+] in [+module+]" ; \ ! (cd [+module+] && \ ! $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ! "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ! "RANLIB=$${RANLIB}" \ ! "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ ! [+make_target+]) \ ! || exit 1 ! [+ ENDIF +] ! [+ ENDFOR host_modules +] ! ! # Target modules. ! [+ FOR target_modules +] ! .PHONY: maybe-[+make_target+]-target-[+module+] [+make_target+]-target-[+module+] ! maybe-[+make_target+]-target-[+module+]: ! [+ IF (match-value? = "missing" (get "make_target") ) +] ! # [+module+] doesn't support [+make_target+]. ! [+make_target+]-[+module+]: ! [+ ELSE +] ! [+make_target+]-target-[+module+]: [+ ! FOR depend +]\ ! [+depend+]-target-[+module+] [+ ! ENDFOR depend +] ! @[ -f $(TARGET_SUBDIR)/[+module+]/Makefile ] || exit 0 ; \ r=`${PWD}`; export r; \ s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ ! echo "Doing [+make_target+] in $(TARGET_SUBDIR)/[+module+]" ; \ ! for flag in $(EXTRA_TARGET_FLAGS); do \ ! eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ! done; \ ! (cd $(TARGET_SUBDIR)/[+module+] && \ ! $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ! "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ! "RANLIB=$${RANLIB}" \ ! "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ ! [+make_target+]) \ ! || exit 1 ! [+ ENDIF +] ! [+ ENDFOR target_modules +] [+ ENDFOR recursive_targets +] # Here are the targets which correspond to the do-X targets. .PHONY: info installcheck dvi install-info *************** *** 703,735 **** maintainer-clean: local-distclean realclean: maintainer-clean ! # This rule is used to clean specific modules. ! .PHONY: $(CLEAN_MODULES) $(CLEAN_X11_MODULES) clean-gcc ! $(CLEAN_MODULES) $(CLEAN_X11_MODULES) clean-gcc: ! @dir=`echo $@ | sed -e 's/clean-//'`; \ ! if [ -f ./$${dir}/Makefile ] ; then \ ! r=`${PWD}`; export r; \ ! s=`cd $(srcdir); ${PWD}`; export s; \ ! $(SET_LIB_PATH) \ ! (cd $${dir} && $(MAKE) $(FLAGS_TO_PASS) clean); \ ! else \ ! true; \ ! fi ! ! .PHONY: $(CLEAN_TARGET_MODULES) ! $(CLEAN_TARGET_MODULES): ! @dir=`echo $@ | sed -e 's/clean-target-//'`; \ ! rm -f $(TARGET_SUBDIR)/$${dir}/multilib.out $(TARGET_SUBDIR)/$${dir}/tmpmulti.out; \ ! if [ -f $(TARGET_SUBDIR)/$${dir}/Makefile ] ; then \ ! r=`${PWD}`; export r; \ ! s=`cd $(srcdir); ${PWD}`; export s; \ ! $(SET_LIB_PATH) \ ! (cd $(TARGET_SUBDIR)/$${dir} && $(MAKE) $(TARGET_FLAGS_TO_PASS) clean); \ ! else \ ! true; \ ! fi ! ! clean-target: $(CLEAN_TARGET_MODULES) clean-target-libgcc clean-target-libgcc: test ! -d gcc/libgcc || \ (cd gcc/libgcc && find . -type d -print) | \ --- 728,735 ---- maintainer-clean: local-distclean realclean: maintainer-clean ! # Extra dependency for clean-target, owing to the mixed nature of gcc ! clean-target: clean-target-libgcc clean-target-libgcc: test ! -d gcc/libgcc || \ (cd gcc/libgcc && find . -type d -print) | \