Il 13/12/2012 00:23, H.J. Lu ha scritto: > On Wed, Dec 12, 2012 at 3:01 PM, H.J. Lu <hjl.to...@gmail.com> wrote: >> On Wed, Dec 12, 2012 at 2:13 PM, Paolo Bonzini <bonz...@gnu.org> 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