From patchwork Mon Dec 17 19:20:24 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: PATCH: Remove AM_MAKEFLAGS from libsanitizer Date: Mon, 17 Dec 2012 09:20:24 -0000 From: "H.J. Lu" X-Patchwork-Id: 206975 Message-Id: To: Paolo Bonzini Cc: DJ Delorie , neroden@gcc.gnu.org, Alexandre Oliva , Ralf Wildenhues , gcc-patches@gcc.gnu.org On Wed, Dec 12, 2012 at 11:32 PM, Paolo Bonzini wrote: > Il 13/12/2012 00:23, H.J. Lu ha scritto: >> On Wed, Dec 12, 2012 at 3:01 PM, H.J. Lu wrote: >>> On Wed, Dec 12, 2012 at 2:13 PM, Paolo Bonzini wrote: >>>> Il 12/12/2012 19:11, H.J. Lu ha scritto: >>>>>>>>> >>>>>>>>> in RAW_CXX_TARGET_EXPORTS. There is no need to do anything. >>>>>>> >>>>>>> Nope, if you remove this you get the wrong definition of CC and CXX from >>>>>>> EXTRA_TARGET_FLAGS. Instead, you need to add RAW_CXX_FOR_TARGET to >>>>>>> AM_MAKEFLAGS and EXTRA_TARGET_FLAGS. >>>>>>> >>>>> We have set CXX and CXX_FOR_TARGET before EXTRA_TARGET_FLAGS >>>>> is used: >>>>> >>>>> RAW_CXX_TARGET_EXPORTS = \ >>>>> $(BASE_TARGET_EXPORTS) \ >>>>> CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \ >>>>> CXX="$(RAW_CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; >>>>> export CXX; >>>>> >>>>> Shouldn't we the right CXX and CXX_FOR_TARGET? >>>> >>>> The purpose of EXTRA_TARGET_FLAGS is to forward any *_FOR_TARGET >>>> variable passed on the command line to the toplevel Makefile. >>>> >>> >>> We don't pass down RAW_CXX_FOR_TARGET from toplevel >>> Makefile. If one wants to change RAW_CXX_FOR_TARGET >>> from command line, he/she should do >>> >>> # make RAW_CXX_FOR_TARGET=xxx >>> >>> and RAW_CXX_TARGET_EXPORTS should handle it properly. > > NORMAL_TARGET_EXPORTS and RAW_CXX_TARGET_EXPORTS is (mostly) for > configure time. Makefiles do not use the environment variables, so you > need EXTRA_TARGET_FLAGS (and more generally the args argument to the > "all" macro) instead. > >> >> Also there are: >> >> # ------------------------------ >> # Special directives to GNU Make >> # ------------------------------ >> >> # Don't pass command-line variables to submakes. >> .NOEXPORT: >> MAKEOVERRIDES= >> >> in toplevel Makefile. How does >> >> # make *_FOR_TARGET=xxxx >> >> work at toplevel? > > That's what I'm trying to say: the purpose of EXTRA_TARGET_FLAGS is to > forward any *_FOR_TARGET>> variable passed on the command line to the > toplevel Makefile. > > Paolo This patch allows me to override RAW_CXX_FOR_TARGET from command-line at toplevel. diff --git a/Makefile.tpl b/Makefile.tpl index 5cdc119..c0e0106 100644 --- a/Makefile.tpl +++ b/Makefile.tpl @@ -574,6 +574,7 @@ CXX_FOR_TARGET_FLAG_TO_PASS = \ # really work, for C++ host programs can't depend on the current-stage # C++ target library. CXX_FOR_TARGET_FLAG_TO_PASS = \ + "RAW_CXX_FOR_TARGET=$(RAW_CXX_FOR_TARGET)" \ $(shell if echo "$(CXX_FOR_TARGET)" | grep " -funconfigured-" > /dev/null; then :; else echo '"CXX_FOR_TARGET=$(CXX_FOR_TARGET)"'; fi) @endif target-libstdc++-v3