On Mon, Nov 19, 2012 at 12:09 AM, Jakub Jelinek <ja...@redhat.com> wrote:
> On Sun, Nov 18, 2012 at 09:07:07PM -0800, H.J. Lu wrote:
>> This patch adds explicit -I for libstdc++-v3 header files when building
>> libsanitizer so that it can be used for bootstrapping GCC.  Othewise,
>> -funconfigured-libstcd++-v3 will be used to compile multilib
>> libsanitizer.  OK to install?
>
> Ugh, this is wrong.  libstdc++ has scripts/testsuite_flags --build-includes
> and similar for a reason.  You should use that script, instead of hardcoding
> it.
>

It doesn't work with bootstrap=true for libsanitizer due to
-funconfigured-libstcd++-v3 is used to compile multilib
libsanitizer:

# CXX_FOR_TARGET is tricky to get right for target libs that require a
# functional C++ compiler.  When we recurse, if we expand
# CXX_FOR_TARGET before configuring libstdc++-v3, we won't get
# libstdc++ include flags from the script.  Instead, we get an
# -funconfigured-* word, so that we'll get errors if this invalid C++
# command line is used for anything, but also so that we can use the
# word to decide whether or not to pass on this CXX_FOR_TARGET.  If we
# don't pass it on, sub-make will use the default definition, that
# re-expands it at the time of use, so we'll get it right when we need
# it.  One potential exception is the expansion of CXX_FOR_TARGET
# passed down as part of CXX within TARGET_FLAGS, but this wouldn't
# really work, for C++ host programs can't depend on the current-stage
# C++ target library.

RAW_CXX_TARGET_EXPORTS is used to work around it:

target_modules = { module= libsanitizer;
                   bootstrap=true;
                   lib_path=.libs;
                   raw_cxx=true; };

That is why I need to explicit -I for libstdc++-v3 header files.

-- 
H.J.

Reply via email to