ct-ng.comp
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jun 13 23:38:37 2010 +0200 (2010-06-13)
changeset 1983 198a5a6e5239
parent 1829 bf1f86bdd79f
child 2053 2238f1167eaa
permissions -rw-r--r--
cc/gcc: baremetal requires a two-pass process

Here, we implement a highly ugly hack. I'm not proud of that one...

To build the libstdc++ library, the compiler requires the C library. In
case we build for non-baremetal, this is normally handled by the final
step, later.

But in the case of bare-metal, we never go through the final step (because
it does not work, and it seems complex enough to make it work), so the
baremetal compilers are issued out of the core step.
     1 # To be sourced
     2 
     3 _ct-ng () {
     4     local cur prev samples show_samples actions steps start_steps stop_steps ct_ng_opts vars
     5     COMPREPLY=()
     6     cur=$(_get_cword)
     7     prev=${COMP_WORDS[COMP_CWORD-1]}
     8 
     9     samples=$( "${COMP_WORDS[0]}" list-samples 2>/dev/null  \
    10                |tail -n +2 |sed -e '/^ /d; s/ .*//;'        \
    11              )
    12     show_samples=$(echo "${samples}" |sed -r -e 's/(^| )/\1show-/g;')
    13     build_samples=$(echo "${samples}" |sed -r -e 's/(^| )/\1build-/g;')
    14 
    15     steps=$(${COMP_WORDS[0]} list-steps 2>/dev/null |awk '$1 == "-" { print $2; }')
    16     start_steps=$(echo "${steps}" |sed -r -e 's/($| )/\1+/;')
    17     stop_steps=$(echo "${steps}" |sed -r -e 's/(^| )/+\1/;')
    18 
    19     actions='help menuconfig oldconfig saveconfig extractconfig
    20              build build. build-all build-all.
    21              list-samples list-steps show-tuple show-all show-config
    22              clean distclean wiki-samples updatetools
    23              tarball version'
    24 
    25     vars="RESTART= STOP= PREFIX= V="
    26 
    27     ct_ng_opts="${samples} ${show_samples} ${build_samples}
    28                 ${steps} ${start_steps} ${stop_steps}
    29                 ${actions} ${vars}"
    30 
    31     COMPREPLY=($(compgen -W "${ct_ng_opts}" -- "${cur}"))
    32     return 0
    33 }
    34 complete -F _ct-ng ct-ng