This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix c++ include file path (proposal)


Yann, All,

I have attached a proposed patch to correctly install the c++ headers inside the sys-root/usr/include folder. I know there has been quite some discussion about this on the mailing list and that a number of changes have been made including adding/removing symlinks, using the --with-gxx-include-dir configuration switch and so on.

To my mind, now that the prefix/tuple/include symlink has been removed (revision 96082aa6459f), the use of --with-gxx-include-dir is not in itself necessarily incorrect: just previously pointed to the wrong location. In the proposed patch below, I've put this switch back in, but given the full path where the c++ include files should (traditionally at least) reside. This ensures that, for example, the use of buildroot later on will still pick up and copy all the include files to the target filesystem.

I have only tested this with a "simple" cross-compiler generation, not with any "complex" canadian-cross generation, so I don't know how it works in those scenarios. Perhaps someone on this list can test it? However, this patch does at least fix the current "head" of crosstool to correctly place the include files in the "simple" cross scenario.

Thoughts?

Andy


---


# HG changeset patch
# User "Andy Gibbs" <andyg1001@hotmail.co.uk>
# Date 1288715160 -3600
# Node ID 208017ed0288bd70384a0d3a6e9d4acda8842b87
# Parent  c2541d3f2f56d732d01e29bf6d52f9680e102afe
Ensure that the C++ include files appear inside the sys-root/usr/include
folder, and not at prefix/tuple/include, now that the old symlink is not
generated.  The include files are placed inside a sub-folder structure
inside sys-root/usr/include of the form c++/{gcc_version}, as would
traditionally have been the case.

diff -r c2541d3f2f56 -r 208017ed0288 scripts/build/cc/gcc.sh
--- a/scripts/build/cc/gcc.sh Mon Nov 01 16:59:39 2010 +0100
+++ b/scripts/build/cc/gcc.sh Tue Nov 02 17:26:00 2010 +0100
@@ -332,6 +332,12 @@
CT_Test "Building ${CT_CC_LANG_OTHERS//,/ } language(s) is not yet supported. Will try..." -n "${CT_CC_LANG_OTHERS}"
lang_opt=$(echo "${lang_opt},${CT_CC_LANG_OTHERS}" |sed -r -e 's/,+/,/g; s/,*$//;')


+ # In case we build the C++ compiler, we have to tell gcc where to put the
+ # C++ headers, or else it will try to put it in prefix/tuple/include
+ if [ "${CT_CC_LANG_CXX}" = "y" ]; then
+ extra_config+=("--with-gxx-include-dir=${CT_SYSROOT_DIR}/usr/include/c++/${CT_CC_VERSION}")
+ fi
+
extra_config+=("--enable-languages=${lang_opt}")
extra_config+=("--disable-multilib")
for tmp in ARCH ABI CPU TUNE FPU FLOAT; do



-- For unsubscribe information see http://sourceware.org/lists.html#faq


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]