scripts/build/cc/gcc.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Aug 31 23:24:40 2010 +0200 (2010-08-31)
changeset 2107 f5ab0a80e466
parent 2045 fdaa6c7f6dea
child 2122 eb837be50f8f
child 2150 f97a8ad2b172
permissions -rw-r--r--
binutils/binutils: remove faulty patch

The added code should be conditinal to the target system
being !MIPS, but is based on the host system being !MIPS.

This is plain wrong, and had not been noticed until now
as I never used those binutils versions on MIPS.

See:
http://sourceware.org/ml/crossgcc/2010-08/msg00192.html

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
     1 # This file adds the function to build the gcc C compiler
     2 # Copyright 2007 Yann E. MORIN
     3 # Licensed under the GPL v2. See COPYING in the root of this package
     4 
     5 # Download gcc
     6 do_cc_get() {
     7     # Ah! gcc folks are kind of 'different': they store the tarballs in
     8     # subdirectories of the same name! That's because gcc is such /crap/ that
     9     # it is such /big/ that it needs being splitted for distribution! Sad. :-(
    10     # Arrgghh! Some of those versions does not follow this convention:
    11     # gcc-3.3.3 lives in releases/gcc-3.3.3, while gcc-2.95.* isn't in a
    12     # subdirectory! You bastard!
    13     CT_GetFile "gcc-${CT_CC_VERSION}"                                                       \
    14                {ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${CT_CC_VERSION}}         \
    15                ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${CT_CC_VERSION} \
    16                ftp://ftp.uvsq.fr/pub/gcc/snapshots/${CT_CC_VERSION}
    17 
    18     # Starting with GCC 4.3, ecj is used for Java, and will only be
    19     # built if the configure script finds ecj.jar at the top of the
    20     # GCC source tree, which will not be there unless we get it and
    21     # put it there ourselves
    22     if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" ]; then
    23         CT_GetFile ecj-latest .jar ftp://gcc.gnu.org/pub/java   \
    24                                    ftp://sourceware.org/pub/java
    25     fi
    26 }
    27 
    28 # Extract gcc
    29 do_cc_extract() {
    30     CT_Extract "gcc-${CT_CC_VERSION}"
    31     CT_Patch "gcc" "${CT_CC_VERSION}"
    32 
    33     # Copy ecj-latest.jar to ecj.jar at the top of the GCC source tree
    34     if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y"                     \
    35          -a ! -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar"   \
    36        ]; then
    37         CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar"
    38     fi
    39 }
    40 
    41 #------------------------------------------------------------------------------
    42 # Core gcc pass 1
    43 do_cc_core_pass_1() {
    44     # If we're building for bare metal, build the static core gcc,
    45     # with libgcc.
    46     # In case we're not bare metal and building a canadian compiler, do nothing
    47     # In case we're not bare metal, and we're NPTL, build the static core gcc.
    48     # In any other case, do nothing.
    49     case "${CT_BARE_METAL},${CT_CANADIAN},${CT_THREADS}" in
    50         y,*,*)  do_cc_core mode=static;;
    51         ,y,*)   ;;
    52         ,,nptl) do_cc_core mode=static;;
    53         *)      ;;
    54     esac
    55 }
    56 
    57 # Core gcc pass 2
    58 do_cc_core_pass_2() {
    59     # In case we're building for bare metal, do nothing, we already have
    60     # our compiler.
    61     # In case we're not bare metal and building a canadian compiler, do nothing
    62     # In case we're NPTL, build the shared core gcc and the target libgcc.
    63     # In any other case, build the static core gcc and, if using gcc-4.3+,
    64     # also build the target libgcc.
    65     case "${CT_BARE_METAL},${CT_CANADIAN},${CT_THREADS}" in
    66         y,*,*)  do_cc_core mode=baremetal build_libgcc=yes build_libstdcxx=yes;;
    67         ,y,*)   ;;
    68         ,,nptl)
    69             do_cc_core mode=shared build_libgcc=yes
    70             ;;
    71         ,,win32) do_cc_core mode=static build_libgcc=yes
    72             ;;
    73         *)  if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then
    74                 do_cc_core mode=static build_libgcc=yes
    75             else
    76                 do_cc_core mode=static
    77             fi
    78             ;;
    79     esac
    80 }
    81 
    82 #------------------------------------------------------------------------------
    83 # Build core gcc
    84 # This function is used to build both the static and the shared core C conpiler,
    85 # with or without the target libgcc. We need to know wether:
    86 #  - we're building static, shared or bare metal: mode=[static|shared|baremetal]
    87 #  - we need to build libgcc or not             : build_libgcc=[yes|no]     (default: no)
    88 #  - we need to build libstdc++ or not          : build_libstdcxx=[yes|no]  (default: no)
    89 # Usage: do_cc_core_static mode=[static|shared|baremetal] build_libgcc=[yes|no]
    90 do_cc_core() {
    91     local mode
    92     local build_libgcc=no
    93     local build_libstdcxx=no
    94     local core_prefix_dir
    95     local lang_opt
    96     local tmp
    97     local -a extra_config
    98     local core_LDFLAGS
    99     local -a core_targets
   100 
   101     while [ $# -ne 0 ]; do
   102         eval "${1}"
   103         shift
   104     done
   105 
   106     lang_opt=c
   107     case "${mode}" in
   108         static)
   109             core_prefix_dir="${CT_CC_CORE_STATIC_PREFIX_DIR}"
   110             extra_config+=("--with-newlib")
   111             extra_config+=("--enable-threads=no")
   112             extra_config+=("--disable-shared")
   113             copy_headers=y  # For baremetal, as there's no headers to copy,
   114                             # we copy an empty directory. So, who cares?
   115             ;;
   116         shared)
   117             core_prefix_dir="${CT_CC_CORE_SHARED_PREFIX_DIR}"
   118             extra_config+=("--enable-shared")
   119             copy_headers=y
   120             ;;
   121         baremetal)
   122             core_prefix_dir="${CT_PREFIX_DIR}"
   123             extra_config+=("--with-newlib")
   124             extra_config+=("--enable-threads=no")
   125             extra_config+=("--disable-shared")
   126             [ "${CT_CC_LANG_CXX}" = "y" ] && lang_opt="${lang_opt},c++"
   127             copy_headers=n
   128             ;;
   129         *)
   130             CT_Abort "Internal Error: 'mode' must be one of: 'static', 'shared' or 'baremetal', not '${mode:-(empty)}'"
   131             ;;
   132     esac
   133 
   134     CT_DoStep INFO "Installing ${mode} core C compiler"
   135     mkdir -p "${CT_BUILD_DIR}/build-cc-core-${mode}"
   136     cd "${CT_BUILD_DIR}/build-cc-core-${mode}"
   137 
   138     # Bare metal delivers the core compiler as final compiler, so add version info and bugurl
   139     [ -n "${CT_CC_BUGURL}" ]     && extra_config+=("--with-bugurl=${CT_CC_BUGURL}")
   140     [ -n "${CT_CC_PKGVERSION}" ] && extra_config+=("--with-pkgversion=${CT_CC_PKGVERSION}")
   141 
   142     if [ "${copy_headers}" = "y" ]; then
   143         CT_DoLog DEBUG "Copying headers to install area of bootstrap gcc, so it can build libgcc2"
   144         CT_DoExecLog ALL cp -a "${CT_HEADERS_DIR}" "${core_prefix_dir}/${CT_TARGET}/include"
   145     fi
   146 
   147     CT_DoLog EXTRA "Configuring ${mode} core C compiler"
   148 
   149     for tmp in ARCH ABI CPU TUNE FPU FLOAT; do
   150         eval tmp="\${CT_ARCH_WITH_${tmp}}"
   151         if [ -n "${tmp}" ]; then
   152             extra_config+=("${tmp}")
   153         fi
   154     done
   155     if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then
   156         extra_config+=("--enable-__cxa_atexit")
   157     else
   158         extra_config+=("--disable-__cxa_atexit")
   159     fi
   160 
   161     # When companion libraries are build static (eg !shared),
   162     # the libstdc++ is not pulled automatically, although it
   163     # is needed. Shoe-horn it in our LDFLAGS
   164     # Ditto libm on some Fedora boxen
   165     if [ "${CT_COMPLIBS_SHARED}" != "y" ]; then
   166         core_LDFLAGS='-lstdc++ -lm'
   167     fi
   168     if [ "${CT_CC_GCC_USE_GMP_MPFR}" = "y" ]; then
   169         extra_config+=("--with-gmp=${CT_COMPLIBS_DIR}")
   170         extra_config+=("--with-mpfr=${CT_COMPLIBS_DIR}")
   171     fi
   172     if [ "${CT_CC_GCC_USE_PPL_CLOOG}" = "y" ]; then
   173         extra_config+=("--with-ppl=${CT_COMPLIBS_DIR}")
   174         extra_config+=("--with-cloog=${CT_COMPLIBS_DIR}")
   175     fi
   176     if [ "${CT_CC_GCC_USE_MPC_LIBELF}" = "y" ]; then
   177         extra_config+=("--with-mpc=${CT_COMPLIBS_DIR}")
   178         extra_config+=("--with-libelf=${CT_COMPLIBS_DIR}")
   179     fi
   180 
   181     if [ "${CT_CC_GCC_ENABLE_TARGET_OPTSPACE}" = "y" ]; then
   182         extra_config+=("--enable-target-optspace")
   183     fi
   184 
   185     CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'"
   186 
   187     # Use --with-local-prefix so older gccs don't look in /usr/local (http://gcc.gnu.org/PR10532)
   188     CC_FOR_BUILD="${CT_BUILD}-gcc"                  \
   189     CFLAGS="${CT_CFLAGS_FOR_HOST}"                  \
   190     LDFLAGS="${core_LDFLAGS}"                       \
   191     CT_DoExecLog ALL                                \
   192     "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure"  \
   193         --build=${CT_BUILD}                         \
   194         --host=${CT_HOST}                           \
   195         --target=${CT_TARGET}                       \
   196         --prefix="${core_prefix_dir}"               \
   197         --with-local-prefix="${CT_SYSROOT_DIR}"     \
   198         --disable-multilib                          \
   199         --disable-libmudflap                        \
   200         ${CC_CORE_SYSROOT_ARG}                      \
   201         "${extra_config[@]}"                        \
   202         --disable-nls                               \
   203         --enable-symvers=gnu                        \
   204         --enable-languages="${lang_opt}"            \
   205         ${CT_CC_CORE_EXTRA_CONFIG}
   206 
   207     if [ "${build_libgcc}" = "yes" ]; then
   208         # HACK: we need to override SHLIB_LC from gcc/config/t-slibgcc-elf-ver or
   209         # gcc/config/t-libunwind so -lc is removed from the link for
   210         # libgcc_s.so, as we do not have a target -lc yet.
   211         # This is not as ugly as it appears to be ;-) All symbols get resolved
   212         # during the glibc build, and we provide a proper libgcc_s.so for the
   213         # cross toolchain during the final gcc build.
   214         #
   215         # As we cannot modify the source tree, nor override SHLIB_LC itself
   216         # during configure or make, we have to edit the resultant
   217         # gcc/libgcc.mk itself to remove -lc from the link.
   218         # This causes us to have to jump through some hoops...
   219         #
   220         # To produce libgcc.mk to edit we firstly require libiberty.a,
   221         # so we configure then build it.
   222         # Next we have to configure gcc, create libgcc.mk then edit it...
   223         # So much easier if we just edit the source tree, but hey...
   224         if [ ! -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then
   225             CT_DoExecLog ALL make configure-libiberty
   226             CT_DoExecLog ALL make ${PARALLELMFLAGS} -C libiberty libiberty.a
   227             CT_DoExecLog ALL make configure-gcc configure-libcpp
   228             CT_DoExecLog ALL make ${PARALLELMFLAGS} all-libcpp
   229         else
   230             CT_DoExecLog ALL make configure-gcc configure-libcpp configure-build-libiberty
   231             CT_DoExecLog ALL make ${PARALLELMFLAGS} all-libcpp all-build-libiberty
   232         fi
   233         # HACK: gcc-4.2 uses libdecnumber to build libgcc.mk, so build it here.
   234         if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/libdecnumber" ]; then
   235             CT_DoExecLog ALL make configure-libdecnumber
   236             CT_DoExecLog ALL make ${PARALLELMFLAGS} -C libdecnumber libdecnumber.a
   237         fi
   238 
   239         # Starting with GCC 4.3, libgcc.mk is no longer built,
   240         # and libgcc.mvars is used instead.
   241 
   242         if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then
   243             libgcc_rule="libgcc.mvars"
   244             core_targets=( gcc target-libgcc )
   245         else
   246             libgcc_rule="libgcc.mk"
   247             core_targets=( gcc )
   248         fi
   249 
   250         # On bare metal and canadian build the host-compiler is used when
   251         # actually the build-system compiler is required. Choose the correct
   252         # compilers for canadian build and use the defaults on other
   253         # configurations.
   254         if [ "${CT_BARE_METAL},${CT_CANADIAN}" = "y,y" ]; then
   255             repair_cc="CC_FOR_BUILD=${CT_BUILD}-gcc \
   256                        GCC_FOR_TARGET=${CT_TARGET}-gcc"
   257         else
   258             repair_cc=""
   259         fi
   260 
   261         CT_DoExecLog ALL make ${PARALLELMFLAGS} -C gcc ${libgcc_rule} \
   262                               ${repair_cc}
   263         sed -r -i -e 's@-lc@@g' gcc/${libgcc_rule}
   264     else # build_libgcc
   265         core_targets=( gcc )
   266     fi   # ! build libgcc
   267     if [    "${build_libstdcxx}" = "yes"    \
   268          -a "${CT_CC_LANG_CXX}"  = "y"      \
   269        ]; then
   270         core_targets+=( target-libstdc++-v3 )
   271     fi
   272 
   273     CT_DoLog EXTRA "Building ${mode} core C compiler"
   274     CT_DoExecLog ALL make ${PARALLELMFLAGS} "${core_targets[@]/#/all-}"
   275 
   276     CT_DoLog EXTRA "Installing ${mode} core C compiler"
   277     CT_DoExecLog ALL make "${core_targets[@]/#/install-}"
   278 
   279     # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able
   280     # to call the C compiler with the same, somewhat canonical name.
   281     # check whether compiler has an extension
   282     file="$( ls -1 "${core_prefix_dir}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )"
   283     [ -z "${file}" ] || ext=".${file##*.}"
   284     CT_DoExecLog ALL ln -sv "${CT_TARGET}-gcc${ext}" "${core_prefix_dir}/bin/${CT_TARGET}-cc${ext}"
   285 
   286     CT_EndStep
   287 }
   288 
   289 #------------------------------------------------------------------------------
   290 # Build final gcc
   291 do_cc() {
   292     local -a extra_config
   293     local tmp
   294     local final_LDFLAGS
   295 
   296     # If building for bare metal, nothing to be done here, the static core conpiler is enough!
   297     [ "${CT_BARE_METAL}" = "y" ] && return 0
   298 
   299     CT_DoStep INFO "Installing final compiler"
   300 
   301     mkdir -p "${CT_BUILD_DIR}/build-cc"
   302     cd "${CT_BUILD_DIR}/build-cc"
   303 
   304     CT_DoLog EXTRA "Configuring final compiler"
   305 
   306     # Enable selected languages
   307     lang_opt="c"
   308     [ "${CT_CC_LANG_CXX}" = "y"      ] && lang_opt="${lang_opt},c++"
   309     [ "${CT_CC_LANG_FORTRAN}" = "y"  ] && lang_opt="${lang_opt},fortran"
   310     [ "${CT_CC_LANG_ADA}" = "y"      ] && lang_opt="${lang_opt},ada"
   311     [ "${CT_CC_LANG_JAVA}" = "y"     ] && lang_opt="${lang_opt},java"
   312     [ "${CT_CC_LANG_OBJC}" = "y"     ] && lang_opt="${lang_opt},objc"
   313     [ "${CT_CC_LANG_OBJCXX}" = "y"   ] && lang_opt="${lang_opt},obj-c++"
   314     CT_Test "Building ADA language is not yet supported. Will try..." "${CT_CC_LANG_ADA}" = "y"
   315     CT_Test "Building Objective-C language is not yet supported. Will try..." "${CT_CC_LANG_OBJC}" = "y"
   316     CT_Test "Building Objective-C++ language is not yet supported. Will try..." "${CT_CC_LANG_OBJCXX}" = "y"
   317     CT_Test "Building ${CT_CC_LANG_OTHERS//,/ } language(s) is not yet supported. Will try..." -n "${CT_CC_LANG_OTHERS}"
   318     lang_opt=$(echo "${lang_opt},${CT_CC_LANG_OTHERS}" |sed -r -e 's/,+/,/g; s/,*$//;')
   319 
   320     extra_config+=("--enable-languages=${lang_opt}")
   321     extra_config+=("--disable-multilib")
   322     for tmp in ARCH ABI CPU TUNE FPU FLOAT; do
   323         eval tmp="\${CT_ARCH_WITH_${tmp}}"
   324         if [ -n "${tmp}" ]; then
   325             extra_config+=("${tmp}")
   326         fi
   327     done
   328 
   329     [ "${CT_SHARED_LIBS}" = "y" ]                   || extra_config+=("--disable-shared")
   330     [ -n "${CT_CC_PKGVERSION}" ]                    && extra_config+=("--with-pkgversion=${CT_CC_PKGVERSION}")
   331     [ -n "${CT_CC_BUGURL}" ]                        && extra_config+=("--with-bugurl=${CT_CC_BUGURL}")
   332     case "${CT_CC_GCC_SJLJ_EXCEPTIONS}" in
   333         y)  extra_config+=("--enable-sjlj-exceptions");;
   334         m)  ;;
   335         "") extra_config+=("--disable-sjlj-exceptions");;
   336     esac
   337     if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then
   338         extra_config+=("--enable-__cxa_atexit")
   339     else
   340         extra_config+=("--disable-__cxa_atexit")
   341     fi
   342     if [ -n "${CC_ENABLE_CXX_FLAGS}" ]; then
   343         extra_config+=("--enable-cxx-flags=${CC_ENABLE_CXX_FLAGS}")
   344     fi
   345     if [ "${CT_CC_GCC_LIBMUDFLAP}" = "y" ]; then
   346         extra_config+=(--enable-libmudflap)
   347     else
   348         extra_config+=(--disable-libmudflap)
   349     fi
   350 
   351     if [ "${CT_CC_STATIC_LIBSTDCXX}" = "y" ]; then
   352         # this is from CodeSourcery arm-2010q1-202-arm-none-linux-gnueabi.src.tar.bz2
   353         # build script
   354         # FIXME: if the host gcc is gcc-4.5 then presumably we could use -static-libstdc++,
   355         # see http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01635.html
   356         extra_config+=("--with-host-libstdcxx=-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm")
   357     elif [ "${CT_COMPLIBS_SHARED}" != "y" ]; then
   358         # When companion libraries are build static (eg !shared),
   359         # the libstdc++ is not pulled automatically, although it
   360         # is needed. Shoe-horn it in our LDFLAGS
   361         # Ditto libm on some Fedora boxen
   362         final_LDFLAGS='-lstdc++ -lm'
   363     fi
   364     if [ "${CT_CC_GCC_USE_GMP_MPFR}" = "y" ]; then
   365         extra_config+=("--with-gmp=${CT_COMPLIBS_DIR}")
   366         extra_config+=("--with-mpfr=${CT_COMPLIBS_DIR}")
   367     fi
   368     if [ "${CT_CC_GCC_USE_PPL_CLOOG}" = "y" ]; then
   369         extra_config+=("--with-ppl=${CT_COMPLIBS_DIR}")
   370         extra_config+=("--with-cloog=${CT_COMPLIBS_DIR}")
   371     fi
   372     if [ "${CT_CC_GCC_USE_MPC_LIBELF}" = "y" ]; then
   373         extra_config+=("--with-mpc=${CT_COMPLIBS_DIR}")
   374         extra_config+=("--with-libelf=${CT_COMPLIBS_DIR}")
   375     fi
   376 
   377     if [ "${CT_THREADS}" = "none" ]; then
   378         extra_config+=("--disable-threads")
   379         if [ "${CT_CC_GCC_4_2_or_later}" = y ]; then
   380             extra_config+=("--disable-libgomp")
   381         fi
   382     else
   383         if [ "${CT_THREADS}" = "win32" ]; then
   384             extra_config+=("--enable-threads=win32")
   385             extra_config+=("--disable-win32-registry")
   386         else
   387             extra_config+=("--enable-threads=posix")
   388         fi
   389     fi
   390 
   391     if [ "${CT_CC_GCC_ENABLE_TARGET_OPTSPACE}" = "y" ]; then
   392         extra_config+=("--enable-target-optspace")
   393     fi
   394     if [ "${CT_CC_GCC_DISABLE_PCH}" = "y" ]; then
   395         extra_config+=("--disable-libstdcxx-pch")
   396     fi
   397 
   398     CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'"
   399 
   400     # --enable-symvers=gnu really only needed for sh4 to work around a
   401     # detection problem only matters for gcc-3.2.x and later, I think.
   402     # --disable-nls to work around crash bug on ppc405, but also because
   403     # embedded systems don't really need message catalogs...
   404     CC_FOR_BUILD="${CT_BUILD}-gcc"                  \
   405     CFLAGS="${CT_CFLAGS_FOR_HOST}"                  \
   406     LDFLAGS="${final_LDFLAGS}"                      \
   407     CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}"         \
   408     CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}"       \
   409     LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}"       \
   410     CT_DoExecLog ALL                                \
   411     "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure"  \
   412         --build=${CT_BUILD}                         \
   413         --host=${CT_HOST}                           \
   414         --target=${CT_TARGET}                       \
   415         --prefix="${CT_PREFIX_DIR}"                 \
   416         ${CC_SYSROOT_ARG}                           \
   417         "${extra_config[@]}"                        \
   418         --with-local-prefix="${CT_SYSROOT_DIR}"     \
   419         --disable-nls                               \
   420         --enable-symvers=gnu                        \
   421         --enable-c99                                \
   422         --enable-long-long                          \
   423         ${CT_CC_EXTRA_CONFIG}
   424 
   425     if [ "${CT_CANADIAN}" = "y" ]; then
   426         CT_DoLog EXTRA "Building libiberty"
   427         CT_DoExecLog ALL make ${PARALLELMFLAGS} all-build-libiberty
   428     fi
   429 
   430     CT_DoLog EXTRA "Building final compiler"
   431     CT_DoExecLog ALL make ${PARALLELMFLAGS} all
   432 
   433     CT_DoLog EXTRA "Installing final compiler"
   434     CT_DoExecLog ALL make install
   435 
   436     # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able
   437     # to call the C compiler with the same, somewhat canonical name.
   438     # check whether compiler has an extension
   439     file="$( ls -1 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )"
   440     [ -z "${file}" ] || ext=".${file##*.}"
   441     CT_DoExecLog ALL ln -sv "${CT_TARGET}-gcc${ext}" "${CT_PREFIX_DIR}/bin/${CT_TARGET}-cc${ext}"
   442 
   443     CT_EndStep
   444 }