* RFC only, because it maybe doesn't fix any real issue (I've noticed
  only because I was comparing 2 sysroots debuging some other issues and
  was wondering why we have so many dangling symlinks).

* first symlink is bypassing sstate (created in
  ${STAGING_DIR_NATIVE} instead of ${D}${STAGING_DIR_NATIVE}) this is
  maybe worth fixing

* was g++ omitted intentionally from symlinks?

* should binutils provided tools be created by binutils recipes? Or was
  it simplified like this, so that binutils don't need to know gcc's BINV?

* the same does apply to gcc-cross-initial and gcc-cross-canadian, so if
  we decide to implement this or something similar it should cover all 3

* g77 and gfortran aren't created by default, so it was creating dangling
  symlinks, which probably doesn't hurt

* I've tested that resulting image/ looks the same before and after this
  patch with exception of g++ link (and possibly gfortran one when
  enabled).

Signed-off-by: Martin Jansa <[email protected]>
---
 meta/recipes-devtools/gcc/gcc-cross.inc | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/meta/recipes-devtools/gcc/gcc-cross.inc 
b/meta/recipes-devtools/gcc/gcc-cross.inc
index 777c970..c99923f 100644
--- a/meta/recipes-devtools/gcc/gcc-cross.inc
+++ b/meta/recipes-devtools/gcc/gcc-cross.inc
@@ -148,14 +148,22 @@ do_install () {
     
        # Link gfortran to g77 to satisfy not-so-smart configure or hard coded 
g77
        # gfortran is fully backwards compatible. This is a safe and practical 
solution. 
-       ln -sf 
${STAGING_DIR_NATIVE}${prefix_native}/bin/${TARGET_PREFIX}gfortran 
${STAGING_DIR_NATIVE}${prefix_native}/bin/${TARGET_PREFIX}g77 || true
-
+       if [ -f 
${D}${STAGING_DIR_NATIVE}${prefix_native}/bin/${MULTIMACH_TARGET_SYS}/${TARGET_PREFIX}gfortran
 ] ; then
+               ln -sf 
${STAGING_DIR_NATIVE}${prefix_native}/bin/${TARGET_PREFIX}gfortran 
${D}${STAGING_DIR_NATIVE}${prefix_native}/bin/${TARGET_PREFIX}g77 || true
+       fi
        
        # Insert symlinks into libexec so when tools without a prefix are 
searched for, the correct ones are
        # found. These need to be relative paths so they work in different 
locations.
        dest=${D}${libexecdir}/gcc/${TARGET_SYS}/${BINV}/
        install -d $dest
-       for t in ar as ld nm objcopy objdump ranlib strip g77 gcc cpp gfortran; 
do
+       for t in g77 gcc g++ cpp gfortran; do
+               if [ -f 
${D}${STAGING_DIR_NATIVE}${prefix_native}/bin/${MULTIMACH_TARGET_SYS}/${TARGET_PREFIX}$t
 ] ; then
+                       ln -sf ${BINRELPATH}/${TARGET_PREFIX}$t $dest$t
+                       ln -sf ${BINRELPATH}/${TARGET_PREFIX}$t 
${dest}${TARGET_PREFIX}$t
+               fi
+       done
+       # these aren't provided by gcc, so add them without existence check
+       for t in ar as ld nm objcopy objdump ranlib strip; do
                ln -sf ${BINRELPATH}/${TARGET_PREFIX}$t $dest$t
                ln -sf ${BINRELPATH}/${TARGET_PREFIX}$t 
${dest}${TARGET_PREFIX}$t
        done
-- 
1.9.1

-- 
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to