diff options
author | Ken Werner <ken.werner@linaro.org> | 2012-05-30 13:07:14 +0200 |
---|---|---|
committer | Ken Werner <ken.werner@linaro.org> | 2012-05-30 13:07:14 +0200 |
commit | 561a0deb6b96f10261570d33b1ec8ece991bf166 (patch) | |
tree | 076b37e82641d2aeb79b46ccc8d8762651e10ec9 | |
parent | a936325862a143f39ccdcbd6a6468856b5493e64 (diff) |
Add patches that allows to build the Linaro GCC the OE-Core way
The 64bithack.patch causes the GCC to install libssp and libstdc++-v3 into
lib as opposed to lib64 on X86_64 Linux targets. Usually the libstdc++ will
be placed in lib64 during the install step. Because that's where 64bit libs
go for linux targets according to the FHS. If you don't like this but want
to use linux as a target you have to patch the toolchain which is what the
64bithack.patch does.
The gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch changes the compiler to respect OEs
ARCH_FLAGS_FOR_TARGET environment variable when building libgcc and friends.
This variable contains things like -march= and -mfloat-abi=. This change
fixes a build failure when using the Linaro GCC in conjunction with a hard
float configuration.
Signed-off-by: Ken Werner <ken.werner@linaro.org>
6 files changed, 127 insertions, 2 deletions
diff --git a/recipes-devtools/gcc/gcc-linaro-4.6.inc b/recipes-devtools/gcc/gcc-linaro-4.6.inc index b673bfd9..1277d15e 100644 --- a/recipes-devtools/gcc/gcc-linaro-4.6.inc +++ b/recipes-devtools/gcc/gcc-linaro-4.6.inc @@ -1,13 +1,15 @@ require recipes-devtools/gcc/gcc-4.6.inc require gcc-linaro-common-4.6.inc -PR = "r1" +PR = "r2" RELEASE = "2012.05" BINV = "4.6.4" FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/gcc-${PV}' ], d)}" SRC_URI = "https://launchpad.net/gcc-linaro/4.6/4.6-${RELEASE}/+download/gcc-${PV}-${RELEASE}.tar.bz2 \ + file://gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \ + file://64bithack.patch \ file://optional_libstdc.patch \ file://use-defaults.h-and-t-oe-in-B.patch \ " diff --git a/recipes-devtools/gcc/gcc-linaro-4.6/64bithack.patch b/recipes-devtools/gcc/gcc-linaro-4.6/64bithack.patch new file mode 100644 index 00000000..be6a2689 --- /dev/null +++ b/recipes-devtools/gcc/gcc-linaro-4.6/64bithack.patch @@ -0,0 +1,28 @@ +This patch causes the GCC to install the libstc++ into lib as opposed to +lib64 on X86_64 Linux targets. Usually the libstdc++ will be placed in lib64 +during the install step. Because that's where 64bit libs go for linux targets +according to the FHS. If you don't like this but want to use linux as a target +you have to patch the toolchain which is what 64bithack.patch attempts to do. +One solution would be to have a distinctive OE target that doesn't support +multilib and has 64bit libs under lib. The advantage over the current +meta/recipes-devtools/gcc/gcc-4.6/64bithack.patch provided by oe-core is that +multilib upport is entirely disabled and MULTILIB_OSDIRNAMES is empty. This +prevents a broken toolchain in case --enable-multilib gets used. + +Upstream-Status: Inappropriate + +Signed-off-by: Ken Werner <ken.werner@linaro.org> + +Index: gcc-linaro-4.6-2012.04/gcc/config.gcc +=================================================================== +--- gcc-linaro-4.6-2012.04.orig/gcc/config.gcc ++++ gcc-linaro-4.6-2012.04/gcc/config.gcc +@@ -1310,7 +1310,7 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu + tm_file="${tm_file} knetbsd-gnu.h" + ;; + esac +- tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules" ++ tmake_file="${tmake_file} i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules" + ;; + i[34567]86-pc-msdosdjgpp*) + xm_file=i386/xm-djgpp.h diff --git a/recipes-devtools/gcc/gcc-linaro-4.6/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch b/recipes-devtools/gcc/gcc-linaro-4.6/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch new file mode 100644 index 00000000..ce827400 --- /dev/null +++ b/recipes-devtools/gcc/gcc-linaro-4.6/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch @@ -0,0 +1,33 @@ +Upstream-Status: Inappropriate [embedded specific] + +--- + configure | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +Index: gcc-4.6.0/configure.ac +=================================================================== +--- gcc-4.6.0.orig/configure.ac ++++ gcc-4.6.0/configure.ac +@@ -3073,7 +3073,7 @@ fi + # for target_alias and gcc doesn't manage it consistently. + target_configargs="--cache-file=./config.cache ${target_configargs}" + +-FLAGS_FOR_TARGET= ++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET" + case " $target_configdirs " in + *" newlib "*) + case " $target_configargs " in +Index: gcc-4.6.0/configure +=================================================================== +--- gcc-4.6.0.orig/configure ++++ gcc-4.6.0/configure +@@ -7594,7 +7594,7 @@ fi + # for target_alias and gcc doesn't manage it consistently. + target_configargs="--cache-file=./config.cache ${target_configargs}" + +-FLAGS_FOR_TARGET= ++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET" + case " $target_configdirs " in + *" newlib "*) + case " $target_configargs " in diff --git a/recipes-devtools/gcc/gcc-linaro-4.7.inc b/recipes-devtools/gcc/gcc-linaro-4.7.inc index bbd11df7..ae509949 100644 --- a/recipes-devtools/gcc/gcc-linaro-4.7.inc +++ b/recipes-devtools/gcc/gcc-linaro-4.7.inc @@ -1,13 +1,15 @@ require recipes-devtools/gcc/gcc-4.7.inc require gcc-linaro-common-4.7.inc -PR = "r1" +PR = "r2" RELEASE = "2012.05" BINV = "4.7.1" FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/gcc-${PV}-${RELEASE}' ], d)}" SRC_URI = "http://launchpad.net/gcc-linaro/${BASEPV}/${BASEPV}-${RELEASE}/+download/gcc-${PV}-${RELEASE}.tar.bz2 \ + file://gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \ + file://64bithack.patch \ file://optional_libstdc.patch \ file://use-defaults.h-and-t-oe-in-B.patch \ " diff --git a/recipes-devtools/gcc/gcc-linaro-4.7/64bithack.patch b/recipes-devtools/gcc/gcc-linaro-4.7/64bithack.patch new file mode 100644 index 00000000..7a4ba4c1 --- /dev/null +++ b/recipes-devtools/gcc/gcc-linaro-4.7/64bithack.patch @@ -0,0 +1,27 @@ +This patch causes the GCC to install the libstc++ into lib as opposed to +lib64 on X86_64 Linux targets. Usually the libstdc++ will be placed in lib64 +during the install step. Because that's where 64bit libs go for linux targets +according to the FHS. If you don't like this but want to use linux as a target +you have to patch the toolchain which is what 64bithack.patch attempts to do. +One solution would be to have a distinctive OE target that doesn't support +multilib and has 64bit libs under lib. The advantage over the current +meta/recipes-devtools/gcc/gcc-4.7/64bithack.patch provided by oe-core is that +multilib upport is entirely disabled and MULTILIB_OSDIRNAMES is empty. This +prevents a broken toolchain in case --enable-multilib gets used. + +Upstream-Status: Inappropriate + +Signed-off-by: Ken Werner <ken.werner@linaro.org> + +Index: gcc-linaro-4.7-2012.05/gcc/config.gcc +=================================================================== +--- gcc-linaro-4.7-2012.05.orig/gcc/config.gcc ++++ gcc-linaro-4.7-2012.05/gcc/config.gcc +@@ -1303,7 +1303,6 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu + tm_file="${tm_file} knetbsd-gnu.h" + ;; + esac +- tmake_file="${tmake_file} i386/t-linux64" + x86_multilibs="${with_multilib_list}" + if test "$x86_multilibs" = "default"; then + x86_multilibs="m64,m32" diff --git a/recipes-devtools/gcc/gcc-linaro-4.7/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch b/recipes-devtools/gcc/gcc-linaro-4.7/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch new file mode 100644 index 00000000..964c4bbb --- /dev/null +++ b/recipes-devtools/gcc/gcc-linaro-4.7/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch @@ -0,0 +1,33 @@ +Upstream-Status: Inappropriate [embedded specific] + +--- + configure | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +Index: gcc-4_7-branch/configure.ac +=================================================================== +--- gcc-4_7-branch.orig/configure.ac 2012-04-10 10:19:50.923337154 -0700 ++++ gcc-4_7-branch/configure.ac 2012-04-10 10:19:54.911337344 -0700 +@@ -2825,7 +2825,7 @@ + # for target_alias and gcc doesn't manage it consistently. + target_configargs="--cache-file=./config.cache ${target_configargs}" + +-FLAGS_FOR_TARGET= ++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET" + case " $target_configdirs " in + *" newlib "*) + case " $target_configargs " in +Index: gcc-4_7-branch/configure +=================================================================== +--- gcc-4_7-branch.orig/configure 2012-04-10 10:19:50.911337153 -0700 ++++ gcc-4_7-branch/configure 2012-04-10 10:19:54.915337349 -0700 +@@ -7368,7 +7368,7 @@ + # for target_alias and gcc doesn't manage it consistently. + target_configargs="--cache-file=./config.cache ${target_configargs}" + +-FLAGS_FOR_TARGET= ++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET" + case " $target_configdirs " in + *" newlib "*) + case " $target_configargs " in |