mirror of
https://git.yoctoproject.org/poky
synced 2026-06-12 04:40:24 +00:00
gcc: Enable SPE & AltiVec generation on powepc*linux target.
[ADT bug #5761] -- https://bugzilla.yoctoproject.org/show_bug.cgi?id=5761 Also this patch adds symlinks to libgcc such that a GCC configured by passing the target parameter without LIBCEXTENSION and ABIEXTENSION specifiers to find the correct startup files from a libgcc configured with these variables. (From OE-Core rev: 97f2a81d6796ddaf7bbaab86c2ab9039673c732c) Signed-off-by: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
9744e0fb0a
commit
83b20f8508
@@ -69,6 +69,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
|
||||
file://0046-libatomic-deptracking.patch \
|
||||
file://0047-repomembug.patch \
|
||||
file://0048-PR58854_fix_arm_apcs_epilogue.patch \
|
||||
file://0049-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch \
|
||||
"
|
||||
SRC_URI[md5sum] = "a3d7d63b9cb6b6ea049469a0c4a43c9d"
|
||||
SRC_URI[sha256sum] = "09dc2276c73424bbbfda1dbddc62bbbf900c9f185acf7f3e1d773ce2d7e3cdc8"
|
||||
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
From 9e0e19eac2562f73858602fe26e2044eb8b20c47 Mon Sep 17 00:00:00 2001
|
||||
From: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com>
|
||||
Date: Wed, 5 Feb 2014 16:52:31 +0200
|
||||
Subject: [PATCH] Enable SPE & AltiVec generation on powepc*linux target
|
||||
|
||||
When is configured with --target=powerpc-linux, the resulting GCC will
|
||||
not be able to generate code for SPE targets (e500v1/v2).
|
||||
GCC configured with --target=powerpc-linuxspe will not be able to
|
||||
generate AltiVec instructions (for e6500).
|
||||
This patch modifies the configured file such that SPE or AltiVec code
|
||||
can be generated when gcc is configured with --target=powerpc-linux.
|
||||
The ABI and speciffic instructions can be selected through the
|
||||
"-mabi=spe or -mabi=altivec" and the "-mspe or -maltivec" parameters.
|
||||
|
||||
Upstream-Status: Inappropriate [configuration]
|
||||
|
||||
Signed-off-by: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com>
|
||||
---
|
||||
gcc/config.gcc | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/gcc/config.gcc b/gcc/config.gcc
|
||||
index cb7a94e..d392c2b 100644
|
||||
--- a/gcc/config.gcc
|
||||
+++ b/gcc/config.gcc
|
||||
@@ -2068,7 +2068,12 @@ powerpc-*-rtems*)
|
||||
tmake_file="rs6000/t-fprules rs6000/t-rtems t-rtems rs6000/t-ppccomm"
|
||||
;;
|
||||
powerpc*-*-linux*)
|
||||
- tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h rs6000/sysv4.h"
|
||||
+ case ${target} in
|
||||
+ powerpc*-*-linux*spe* | powerpc*-*-linux*altivec*)
|
||||
+ tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h rs6000/sysv4.h" ;;
|
||||
+ *)
|
||||
+ tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h rs6000/sysv4.h rs6000/linuxaltivec.h rs6000/linuxspe.h rs6000/e500.h" ;;
|
||||
+ esac
|
||||
extra_options="${extra_options} rs6000/sysv4.opt"
|
||||
tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
|
||||
case ${target} in
|
||||
--
|
||||
1.7.9.5
|
||||
|
||||
@@ -17,7 +17,8 @@ FILES_${PN}-dev = " \
|
||||
${libdir}/${TARGET_SYS}/${BINV}/32 \
|
||||
${libdir}/${TARGET_SYS}/${BINV}/x32 \
|
||||
${libdir}/${TARGET_SYS}/${BINV}/n32 \
|
||||
${libdir}/${TARGET_SYS}/${BINV}/libgcc*"
|
||||
${libdir}/${TARGET_SYS}/${BINV}/libgcc* \
|
||||
${@base_conditional('TARGET_SYS_NO_EXTENSION', '${TARGET_SYS}', '', '${libdir}/${TARGET_SYS_NO_EXTENSION}', d)}"
|
||||
FILES_libgcov-dev = " \
|
||||
${libdir}/${TARGET_SYS}/${BINV}/libgcov.a \
|
||||
"
|
||||
@@ -141,3 +142,24 @@ python do_multilib_install() {
|
||||
os.unlink(dest)
|
||||
os.symlink(src, dest)
|
||||
}
|
||||
|
||||
addtask extra_symlinks after do_multilib_install before do_package do_populate_sysroot
|
||||
python do_extra_symlinks() {
|
||||
targetsysnoext = d.getVar('TARGET_SYS_NO_EXTENSION', True)
|
||||
|
||||
if targetsysnoext != d.getVar('TARGET_SYS', True):
|
||||
dest = d.getVar('D', True) + d.getVar('libdir', True) + '/' + targetsysnoext
|
||||
src = d.getVar('TARGET_SYS', True)
|
||||
if not os.path.lexists(dest):
|
||||
os.symlink(src, dest)
|
||||
}
|
||||
|
||||
python () {
|
||||
targetsysnoext = d.getVar('TARGET_SYS', True)
|
||||
|
||||
for suffix in [d.getVar('ABIEXTENSION', True), d.getVar('LIBCEXTENSION', True)]:
|
||||
if suffix and targetsysnoext.endswith(suffix):
|
||||
targetsysnoext = targetsysnoext[:-len(suffix)]
|
||||
|
||||
d.setVar('TARGET_SYS_NO_EXTENSION', targetsysnoext)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user