diff options
author | John Bowler <jbowler@nslu2-linux.org> | 2005-08-11 20:03:56 +0000 |
---|---|---|
committer | OpenEmbedded Project <openembedded-devel@lists.openembedded.org> | 2005-08-11 20:03:56 +0000 |
commit | 122c43cb0589c423749b9f046ceed1ab53bee9f6 (patch) | |
tree | f4381920fc7e84bf5eabd3cd37bf6adeee33fbec /packages/gcc/gcc3-build.inc | |
parent | 5f016dabf20ee6196f7e141e7f499a09b7342f91 (diff) |
This set of changes ensures that TARGET_CC_ARCH is passed reliably to all
packages in a build. The change fixes problems in the following packages:
binutils{,-cross}_2.15.94.0.1
HOST_CC_ARCH was not being passed to HOST_CC. The problem does
not seem to be present in binutils* 2.16, however this version
is still used for uClibc builds.
gcc{,-cross,-cross-initial}_3.4.4
HOST/TARGET_CC_ARCH was not used in the appropriate places, plus
this was not sufficient - FLAGS_FOR_TARGET (a gcc make variable)
is now preloaded with the target CC_ARCH values, which causes all
the builds (gcc, g++, gcj, fortran) to get the correct values.
gcc OTHER
*NOT* fixed - other versions of gcc will still need the _CC_ARCH
fix in the same lines (CC_FOR_TARGET, GCC_FOR_TARGET, CXX_FOR_TARGET),
however so long as these builds use gcc3-*.inc the FLAGS_FOR_TARGET
fixx will be there.
uclibc{,-initial}_0.9.27
TARGET_CC_ARCH added to the do_compile. For the do_stage step the
build actually compiles target code (make utils), but this will not
accept a CC with whitespace. The TARGET_CC_ARCH flags have therefore
been added to CFLAGS (a bit ugly, but it works).
These changes have been tested for both cross and target builds, the changes
should be fine on self-hosted (i.e. target-hosted) builds, if anyone actually
does these, but note that the gcc build specifically tests for build==host and
does *not* do certain _FOR_TARGET settings in this case (this was the case
before this change too) - if you are seeing strange settings on self-hosted
gcc builds (before and after this change) check the do_compile environment
variable settings.
Diffstat (limited to 'packages/gcc/gcc3-build.inc')
-rw-r--r-- | packages/gcc/gcc3-build.inc | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/packages/gcc/gcc3-build.inc b/packages/gcc/gcc3-build.inc index 09e0b31910..a09c6cf1f5 100644 --- a/packages/gcc/gcc3-build.inc +++ b/packages/gcc/gcc3-build.inc @@ -44,6 +44,12 @@ EXTRA_OECONF_glibc = "--enable-__cxa_atexit" EXTRA_OECONF += "${@get_gcc_fpu_setting(bb, d)}" CPPFLAGS = "" +# Used by configure to define additional values for FLAGS_FOR_TARGET - +# passed to all the compilers. +ARCH_FLAGS_FOR_TARGET = "" +ARCH_FLAGS_FOR_TARGET_nslu2 = "${TARGET_CC_ARCH}" +EXTRA_OEMAKE += "ARCH_FLAGS_FOR_TARGET='${ARCH_FLAGS_FOR_TARGET}'" + def get_gcc_fpu_setting(bb, d): if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: return "--with-float=soft" @@ -59,10 +65,14 @@ python __anonymous () { do_configure () { # Setup these vars for cross building only + # ... because foo_FOR_TARGET apparently gets misinterpreted inside the + # gcc build stuff when the build is producing a cross compiler - i.e. + # when the 'current' target is the 'host' system, and the host is not + # the target (because the build is actually making a cross compiler!) if [ "${BUILD_SYS}" != "${HOST_SYS}" ]; then - export CC_FOR_TARGET="${CCACHE} ${HOST_PREFIX}gcc" - export GCC_FOR_TARGET="${CCACHE} ${HOST_PREFIX}gcc" - export CXX_FOR_TARGET="${CCACHE} ${HOST_PREFIX}g++" + export CC_FOR_TARGET="${CC}" + export GCC_FOR_TARGET="${CC}" + export CXX_FOR_TARGET="${CXX}" export AS_FOR_TARGET="${HOST_PREFIX}as" export LD_FOR_TARGET="${HOST_PREFIX}ld" export NM_FOR_TARGET="${HOST_PREFIX}nm" @@ -75,6 +85,7 @@ do_configure () { export CPPFLAGS_FOR_BUILD="${BUILD_CPPFLAGS}" export CXXFLAGS_FOR_BUILD="${BUILD_CXXFLAGS}" export LDFLAGS_FOR_BUILD="${BUILD_LDFLAGS}" + export ARCH_FLAGS_FOR_TARGET="${ARCH_FLAGS_FOR_TARGET}" (cd ${S} && gnu-configize) || die "failure running gnu-configize" oe_runconf } |