Changeset 29946


Ignore:
Timestamp:
2012-01-29T19:53:12+01:00 (6 years ago)
Author:
jow
Message:

[scripts] ext-toolchain.sh: rework generated gcc wrapper
Only append -L and -Wl,-rpath-link flags if the command line contains -l, -L, -shared or -static flags;
this is needed to suppress "-rpath-link: linker input file unused because linking not done" on each cc invocation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/scripts/ext-toolchain.sh

    r29944 r29946  
    198198 
    199199 
     200wrap_bin_cc() { 
     201        local out="$1" 
     202        local bin="$2" 
     203 
     204        echo    '#!/bin/sh'                                                > "$out" 
     205        echo    'for arg in "$@"; do'                                     >> "$out" 
     206        echo    ' case "$arg" in -l*|-L*|-shared|-static)'                >> "$out" 
     207        echo -n '  exec "'"$bin"'" '"$CFLAGS"' ${STAGING_DIR:+'           >> "$out" 
     208        echo -n '-idirafter "$STAGING_DIR/usr/include" '                  >> "$out" 
     209        echo -n '-L "$STAGING_DIR/usr/lib" '                              >> "$out" 
     210        echo    '-Wl,-rpath-link,"$STAGING_DIR/usr/lib"} "$@" ;;'         >> "$out" 
     211        echo    ' esac'                                                   >> "$out" 
     212        echo    'done'                                                    >> "$out" 
     213        echo -n 'exec "'"$bin"'" '"$CFLAGS"' ${STAGING_DIR:+'             >> "$out" 
     214        echo    '-idirafter "$STAGING_DIR/usr/include"} "$@"'             >> "$out" 
     215 
     216        chmod +x "$out" 
     217} 
     218 
     219wrap_bin_ld() { 
     220        local out="$1" 
     221        local bin="$2" 
     222 
     223        echo    '#!/bin/sh'                                                > "$out" 
     224        echo -n 'exec "'"$bin"'" '"$CFLAGS"' ${STAGING_DIR:+'             >> "$out" 
     225        echo -n '-L "$STAGING_DIR/usr/lib" '                              >> "$out" 
     226        echo    '-rpath-link "$STAGING_DIR/usr/lib"} "$@"'                >> "$out" 
     227 
     228        chmod +x "$out" 
     229} 
     230 
     231wrap_bin_other() { 
     232        local out="$1" 
     233        local bin="$2" 
     234 
     235        echo    '#!/bin/sh'                                                > "$out" 
     236        echo    'exec "'"$bin"'" "$@"'                                    >> "$out" 
     237 
     238        chmod +x "$out" 
     239} 
     240 
    200241wrap_bins() { 
    201242        if probe_cc; then 
     
    213254                                fi 
    214255 
    215                                 echo '#!/bin/sh' > "$out" 
    216256                                case "${cmd##*/}" in 
    217257                                        *-*cc|*-*cc-*|*-*++|*-*++-*|*-cpp) 
    218                                                 echo -n 'exec "'"$bin"'" '"$CFLAGS"' '         >> "$out" 
    219                                                 echo -n '${STAGING_DIR:+-idirafter '           >> "$out" 
    220                                                 echo -n '"$STAGING_DIR/usr/include" '          >> "$out" 
    221                                                 echo -n '-L "$STAGING_DIR/usr/lib" '           >> "$out" 
    222                                                 echo -n '-Wl,-rpath-link,'                     >> "$out" 
    223                                                 echo    '"$STAGING_DIR/usr/lib"} "$@"'         >> "$out" 
     258                                                wrap_bin_cc "$out" "$bin" 
    224259                                        ;; 
    225260                                        *-ld) 
    226                                                 echo -n 'exec "'"$bin"'" ${STAGING_DIR:+'      >> "$out" 
    227                                                 echo -n '-L "$STAGING_DIR/usr/lib" '           >> "$out" 
    228                                                 echo -n '-rpath-link '                         >> "$out" 
    229                                                 echo    '"$STAGING_DIR/usr/lib"} "$@"'         >> "$out" 
     261                                                wrap_bin_ld "$out" "$bin" 
    230262                                        ;; 
    231263                                        *) 
    232                                                 echo    'exec "'"$bin"'" "$@"'                 >> "$out" 
     264                                                wrap_bin_other "$out" "$bin" 
    233265                                        ;; 
    234266                                esac 
    235                                 chmod +x "$out" 
    236267                        fi 
    237268                done 
Note: See TracChangeset for help on using the changeset viewer.