scripts/build/cc/gcc.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jan 17 23:06:02 2010 +0100 (2010-01-17)
changeset 1740 c57458bb354d
parent 1479 70a68892831e
child 1808 a1370757e6a1
child 1931 875abab986ac
permissions -rw-r--r--
configure: do not require hg when configuring in an hg clone

When configuring in an hg clone, we need hg to compute the version string.
It can happen that users do not have Mercurial (eg. if they got a snapshot
rather that they did a full clone). In this case, we can still run, of
course, so simply fill the version string with a sufficiently explicit
value, that does not require hg. The date is a good candidate.
yann@850
     1
# This file adds the function to build the gcc C compiler
yann@850
     2
# Copyright 2007 Yann E. MORIN
yann@850
     3
# Licensed under the GPL v2. See COPYING in the root of this package
yann@850
     4
yann@850
     5
# Download gcc
yann@850
     6
do_cc_get() {
yann@850
     7
    # Ah! gcc folks are kind of 'different': they store the tarballs in
yann@850
     8
    # subdirectories of the same name! That's because gcc is such /crap/ that
yann@850
     9
    # it is such /big/ that it needs being splitted for distribution! Sad. :-(
yann@850
    10
    # Arrgghh! Some of those versions does not follow this convention:
yann@850
    11
    # gcc-3.3.3 lives in releases/gcc-3.3.3, while gcc-2.95.* isn't in a
yann@850
    12
    # subdirectory! You bastard!
yann@1389
    13
    CT_GetFile "gcc-${CT_CC_VERSION}"                                                       \
yann@1389
    14
               {ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${CT_CC_VERSION}}         \
yann@1389
    15
               ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${CT_CC_VERSION} \
yann@1389
    16
               ftp://ftp.uvsq.fr/pub/gcc/snapshots/${CT_CC_VERSION}
yann@1268
    17
yann@1129
    18
    # Starting with GCC 4.3, ecj is used for Java, and will only be
yann@1129
    19
    # built if the configure script finds ecj.jar at the top of the
yann@1129
    20
    # GCC source tree, which will not be there unless we get it and
yann@1129
    21
    # put it there ourselves
yann@1129
    22
    if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" ]; then
yann@1129
    23
        CT_GetFile ecj-latest .jar ftp://gcc.gnu.org/pub/java   \
yann@1129
    24
                                   ftp://sourceware.org/pub/java
yann@1129
    25
    fi
yann@850
    26
}
yann@850
    27
yann@850
    28
# Extract gcc
yann@850
    29
do_cc_extract() {
yann@1389
    30
    CT_Extract "gcc-${CT_CC_VERSION}"
yann@1389
    31
    CT_Patch "gcc-${CT_CC_VERSION}"
yann@1268
    32
yann@1129
    33
    # Copy ecj-latest.jar to ecj.jar at the top of the GCC source tree
yann@1389
    34
    if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y"                     \
yann@1389
    35
         -a ! -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar"   \
yann@1259
    36
       ]; then
yann@1389
    37
        CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar"
yann@1129
    38
    fi
yann@850
    39
}
yann@850
    40
yann@850
    41
#------------------------------------------------------------------------------
yann@850
    42
# Core gcc pass 1
yann@850
    43
do_cc_core_pass_1() {
yann@1425
    44
    # If we're building a canadian compiler no use to build the CC
yann@1425
    45
    # core compiler, we're not using it
yann@1425
    46
    [ -n "${CT_CANADIAN}" ] && return 0
yann@1425
    47
yann@850
    48
    # If we're building for bare metal, build the static core gcc,
yann@850
    49
    # with libgcc.
yann@850
    50
    # In case we're not bare metal, and we're NPTL, build the static core gcc.
yann@850
    51
    # In any other case, do nothing.
yann@850
    52
    case "${CT_BARE_METAL},${CT_THREADS}" in
yann@850
    53
        y,*)    do_cc_core mode=baremetal build_libgcc=yes;;
yann@850
    54
        ,nptl)  do_cc_core mode=static build_libgcc=no;;
yann@850
    55
        *)      ;;
yann@850
    56
    esac
yann@850
    57
}
yann@850
    58
yann@850
    59
# Core gcc pass 2
yann@850
    60
do_cc_core_pass_2() {
yann@1425
    61
    # If we're building a canadian compiler no use to build the CC
yann@1425
    62
    # core compiler, we're not using it
yann@1425
    63
    [ -n "${CT_CANADIAN}" ] && return 0
yann@1425
    64
yann@850
    65
    # In case we're building for bare metal, do nothing, we already have
yann@850
    66
    # our compiler.
yann@892
    67
    # In case we're NPTL, build the shared core gcc and the target libgcc.
yann@892
    68
    # In any other case, build the static core gcc and, if using gcc-4.3+,
yann@892
    69
    # also build the target libgcc.
yann@850
    70
    case "${CT_BARE_METAL},${CT_THREADS}" in
yann@850
    71
        y,*)    ;;
yann@892
    72
        ,nptl)
yann@892
    73
            do_cc_core mode=shared build_libgcc=yes
yann@892
    74
            ;;
yann@892
    75
        *)  if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then
yann@892
    76
                do_cc_core mode=static build_libgcc=yes
yann@892
    77
            else
yann@892
    78
                do_cc_core mode=static build_libgcc=no
yann@892
    79
            fi
yann@892
    80
            ;;
yann@850
    81
    esac
yann@850
    82
}
yann@850
    83
yann@850
    84
#------------------------------------------------------------------------------
yann@850
    85
# Build core gcc
yann@850
    86
# This function is used to build both the static and the shared core C conpiler,
yann@850
    87
# with or without the target libgcc. We need to know wether:
yann@850
    88
#  - we're building static, shared or bare metal: mode=[static|shared|baremetal]
yann@850
    89
#  - we need to build libgcc or not             : build_libgcc=[yes|no]
yann@850
    90
# Usage: do_cc_core_static mode=[static|shared|baremetal] build_libgcc=[yes|no]
yann@850
    91
do_cc_core() {
yann@850
    92
    local mode
yann@850
    93
    local build_libgcc
yann@850
    94
    local core_prefix_dir
yann@1107
    95
    local lang_opt
yann@1479
    96
    local tmp
yann@1479
    97
    local -a extra_config
yann@850
    98
yann@850
    99
    eval $1
yann@850
   100
    eval $2
yann@850
   101
    CT_TestOrAbort "Internal Error: 'mode' must either 'static', 'shared' or 'baremetal', not '${mode:-(empty)}'" "${mode}" = "static" -o "${mode}" = "shared" -o "${mode}" = "baremetal"
yann@850
   102
    CT_TestOrAbort "Internal Error: 'build_libgcc' must be either 'yes' or 'no', not '${build_libgcc:-(empty)}'" "${build_libgcc}" = "yes" -o "${build_libgcc}" = "no"
yann@850
   103
    # In normal conditions, ( "${mode}" = "shared" ) implies
yann@850
   104
    # ( "${build_libgcc}" = "yes" ), but I won't check for that
yann@850
   105
yann@1107
   106
    CT_DoStep INFO "Installing ${mode} core C compiler"
yann@850
   107
    mkdir -p "${CT_BUILD_DIR}/build-cc-core-${mode}"
yann@850
   108
    cd "${CT_BUILD_DIR}/build-cc-core-${mode}"
yann@850
   109
yann@1107
   110
    lang_opt=c
yann@850
   111
    case "${mode}" in
yann@850
   112
        static)
yann@850
   113
            core_prefix_dir="${CT_CC_CORE_STATIC_PREFIX_DIR}"
yann@1479
   114
            extra_config+=("--with-newlib")
yann@1479
   115
            extra_config+=("--enable-threads=no")
yann@1479
   116
            extra_config+=("--disable-shared")
yann@850
   117
            copy_headers=y
yann@850
   118
            ;;
yann@850
   119
        shared)
yann@850
   120
            core_prefix_dir="${CT_CC_CORE_SHARED_PREFIX_DIR}"
yann@1479
   121
            extra_config+=("--enable-shared")
yann@850
   122
            copy_headers=y
yann@850
   123
            ;;
yann@850
   124
        baremetal)
yann@850
   125
            core_prefix_dir="${CT_PREFIX_DIR}"
yann@1479
   126
            extra_config+=("--with-newlib")
yann@1479
   127
            extra_config+=("--enable-threads=no")
yann@1479
   128
            extra_config+=("--disable-shared")
yann@1107
   129
            [ "${CT_CC_LANG_CXX}" = "y" ] && lang_opt="${lang_opt},c++"
yann@850
   130
            copy_headers=n
yann@850
   131
            ;;
yann@850
   132
    esac
yann@850
   133
yann@850
   134
    if [ "${copy_headers}" = "y" ]; then
yann@850
   135
        CT_DoLog DEBUG "Copying headers to install area of bootstrap gcc, so it can build libgcc2"
yann@850
   136
        CT_DoExecLog ALL mkdir -p "${core_prefix_dir}/${CT_TARGET}/include"
yann@850
   137
        CT_DoExecLog ALL cp -r "${CT_HEADERS_DIR}"/* "${core_prefix_dir}/${CT_TARGET}/include"
yann@850
   138
    fi
yann@850
   139
yann@850
   140
    CT_DoLog EXTRA "Configuring ${mode} core C compiler"
yann@850
   141
yann@1479
   142
    for tmp in ARCH ABI CPU TUNE FPU FLOAT; do
yann@1479
   143
        eval tmp="\${CT_ARCH_WITH_${tmp}}"
yann@1479
   144
        if [ -n "${tmp}" ]; then
yann@1479
   145
            extra_config+=("${tmp}")
yann@1479
   146
        fi
yann@1479
   147
    done
yann@850
   148
    if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then
yann@1479
   149
        extra_config+=("--enable-__cxa_atexit")
yann@850
   150
    else
yann@1479
   151
        extra_config+=("--disable-__cxa_atexit")
yann@850
   152
    fi
yann@1393
   153
    if [ "${CT_GMP_MPFR}" = "y" ]; then
yann@1479
   154
        extra_config+=("--with-gmp=${CT_PREFIX_DIR}")
yann@1479
   155
        extra_config+=("--with-mpfr=${CT_PREFIX_DIR}")
yann@1393
   156
    fi
yann@1393
   157
    if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then
yann@1479
   158
        extra_config+=("--with-ppl=${CT_PREFIX_DIR}")
yann@1479
   159
        extra_config+=("--with-cloog=${CT_PREFIX_DIR}")
yann@1479
   160
        extra_config+=("--with-mpc=${CT_PREFIX_DIR}")
yann@1393
   161
    fi
yann@850
   162
yann@1479
   163
    CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'"
yann@850
   164
yann@850
   165
    # Use --with-local-prefix so older gccs don't look in /usr/local (http://gcc.gnu.org/PR10532)
yann@1041
   166
    CC_FOR_BUILD="${CT_BUILD}-gcc"                  \
yann@850
   167
    CFLAGS="${CT_CFLAGS_FOR_HOST}"                  \
yann@850
   168
    CT_DoExecLog ALL                                \
yann@1389
   169
    "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure"  \
yann@1041
   170
        --build=${CT_BUILD}                         \
yann@850
   171
        --host=${CT_HOST}                           \
yann@850
   172
        --target=${CT_TARGET}                       \
yann@850
   173
        --prefix="${core_prefix_dir}"               \
yann@850
   174
        --with-local-prefix="${CT_SYSROOT_DIR}"     \
yann@850
   175
        --disable-multilib                          \
yann@850
   176
        ${CC_CORE_SYSROOT_ARG}                      \
yann@1479
   177
        "${extra_config[@]}"                        \
yann@850
   178
        --disable-nls                               \
yann@850
   179
        --enable-symvers=gnu                        \
yann@1107
   180
        --enable-languages="${lang_opt}"            \
yann@850
   181
        --enable-target-optspace                    \
yann@850
   182
        ${CT_CC_CORE_EXTRA_CONFIG}
yann@850
   183
yann@850
   184
    if [ "${build_libgcc}" = "yes" ]; then
yann@850
   185
        # HACK: we need to override SHLIB_LC from gcc/config/t-slibgcc-elf-ver or
yann@850
   186
        # gcc/config/t-libunwind so -lc is removed from the link for
yann@850
   187
        # libgcc_s.so, as we do not have a target -lc yet.
yann@850
   188
        # This is not as ugly as it appears to be ;-) All symbols get resolved
yann@850
   189
        # during the glibc build, and we provide a proper libgcc_s.so for the
yann@850
   190
        # cross toolchain during the final gcc build.
yann@850
   191
        #
yann@850
   192
        # As we cannot modify the source tree, nor override SHLIB_LC itself
yann@850
   193
        # during configure or make, we have to edit the resultant
yann@850
   194
        # gcc/libgcc.mk itself to remove -lc from the link.
yann@850
   195
        # This causes us to have to jump through some hoops...
yann@850
   196
        #
yann@850
   197
        # To produce libgcc.mk to edit we firstly require libiberty.a,
yann@850
   198
        # so we configure then build it.
yann@850
   199
        # Next we have to configure gcc, create libgcc.mk then edit it...
yann@850
   200
        # So much easier if we just edit the source tree, but hey...
yann@1389
   201
        if [ ! -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then
yann@850
   202
            CT_DoExecLog ALL make configure-libiberty
yann@850
   203
            CT_DoExecLog ALL make ${PARALLELMFLAGS} -C libiberty libiberty.a
yann@850
   204
            CT_DoExecLog ALL make configure-gcc configure-libcpp
yann@850
   205
            CT_DoExecLog ALL make ${PARALLELMFLAGS} all-libcpp
yann@850
   206
        else
yann@850
   207
            CT_DoExecLog ALL make configure-gcc configure-libcpp configure-build-libiberty
yann@850
   208
            CT_DoExecLog ALL make ${PARALLELMFLAGS} all-libcpp all-build-libiberty
yann@850
   209
        fi
yann@850
   210
        # HACK: gcc-4.2 uses libdecnumber to build libgcc.mk, so build it here.
yann@1389
   211
        if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/libdecnumber" ]; then
yann@850
   212
            CT_DoExecLog ALL make configure-libdecnumber
yann@850
   213
            CT_DoExecLog ALL make ${PARALLELMFLAGS} -C libdecnumber libdecnumber.a
yann@850
   214
        fi
yann@850
   215
yann@850
   216
        # Starting with GCC 4.3, libgcc.mk is no longer built,
yann@850
   217
        # and libgcc.mvars is used instead.
yann@850
   218
yann@892
   219
        if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then
yann@850
   220
            libgcc_rule="libgcc.mvars"
yann@850
   221
            build_rules="all-gcc all-target-libgcc"
yann@850
   222
            install_rules="install-gcc install-target-libgcc"
yann@850
   223
        else
yann@850
   224
            libgcc_rule="libgcc.mk"
yann@850
   225
            build_rules="all-gcc"
yann@850
   226
            install_rules="install-gcc"
yann@850
   227
        fi
yann@850
   228
yann@850
   229
        CT_DoExecLog ALL make ${PARALLELMFLAGS} -C gcc ${libgcc_rule}
yann@850
   230
        sed -r -i -e 's@-lc@@g' gcc/${libgcc_rule}
yann@850
   231
    else # build_libgcc
yann@850
   232
            build_rules="all-gcc"
yann@850
   233
            install_rules="install-gcc"
yann@850
   234
    fi   # ! build libgcc
yann@850
   235
yann@850
   236
    if [ "${CT_CANADIAN}" = "y" ]; then
yann@850
   237
        CT_DoLog EXTRA "Building libiberty"
yann@850
   238
        CT_DoExecLog ALL make ${PARALLELMFLAGS} all-build-libiberty
yann@850
   239
    fi
yann@850
   240
yann@850
   241
    CT_DoLog EXTRA "Building ${mode} core C compiler"
yann@850
   242
    CT_DoExecLog ALL make ${PARALLELMFLAGS} ${build_rules}
yann@850
   243
yann@850
   244
    CT_DoLog EXTRA "Installing ${mode} core C compiler"
yann@850
   245
    CT_DoExecLog ALL make ${install_rules}
yann@850
   246
yann@1269
   247
    # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able
yann@1269
   248
    # to call the C compiler with the same, somewhat canonical name.
yann@1269
   249
    CT_DoExecLog ALL ln -sv "${CT_TARGET}"-gcc "${core_prefix_dir}/bin/${CT_TARGET}"-cc
yann@1269
   250
yann@850
   251
    CT_EndStep
yann@850
   252
}
yann@850
   253
yann@850
   254
#------------------------------------------------------------------------------
yann@850
   255
# Build final gcc
yann@850
   256
do_cc() {
yann@1479
   257
    local -a extra_config
yann@1479
   258
    local tmp
yann@1479
   259
yann@850
   260
    # If building for bare metal, nothing to be done here, the static core conpiler is enough!
yann@850
   261
    [ "${CT_BARE_METAL}" = "y" ] && return 0
yann@850
   262
yann@850
   263
    CT_DoStep INFO "Installing final compiler"
yann@850
   264
yann@850
   265
    mkdir -p "${CT_BUILD_DIR}/build-cc"
yann@850
   266
    cd "${CT_BUILD_DIR}/build-cc"
yann@850
   267
yann@850
   268
    CT_DoLog EXTRA "Configuring final compiler"
yann@850
   269
yann@850
   270
    # Enable selected languages
yann@850
   271
    lang_opt="c"
yann@850
   272
    [ "${CT_CC_LANG_CXX}" = "y"      ] && lang_opt="${lang_opt},c++"
yann@850
   273
    [ "${CT_CC_LANG_FORTRAN}" = "y"  ] && lang_opt="${lang_opt},fortran"
yann@850
   274
    [ "${CT_CC_LANG_ADA}" = "y"      ] && lang_opt="${lang_opt},ada"
yann@850
   275
    [ "${CT_CC_LANG_JAVA}" = "y"     ] && lang_opt="${lang_opt},java"
yann@850
   276
    [ "${CT_CC_LANG_OBJC}" = "y"     ] && lang_opt="${lang_opt},objc"
yann@850
   277
    [ "${CT_CC_LANG_OBJCXX}" = "y"   ] && lang_opt="${lang_opt},obj-c++"
yann@850
   278
    CT_Test "Building ADA language is not yet supported. Will try..." "${CT_CC_LANG_ADA}" = "y"
yann@850
   279
    CT_Test "Building Objective-C language is not yet supported. Will try..." "${CT_CC_LANG_OBJC}" = "y"
yann@850
   280
    CT_Test "Building Objective-C++ language is not yet supported. Will try..." "${CT_CC_LANG_OBJCXX}" = "y"
yann@850
   281
    CT_Test "Building ${CT_CC_LANG_OTHERS//,/ } language(s) is not yet supported. Will try..." -n "${CT_CC_LANG_OTHERS}"
yann@850
   282
    lang_opt=$(echo "${lang_opt},${CT_CC_LANG_OTHERS}" |sed -r -e 's/,+/,/g; s/,*$//;')
yann@850
   283
yann@1479
   284
    extra_config+=("--enable-languages=${lang_opt}")
yann@1479
   285
    extra_config+=("--disable-multilib")
yann@1479
   286
    for tmp in ARCH ABI CPU TUNE FPU FLOAT; do
yann@1479
   287
        eval tmp="\${CT_ARCH_WITH_${tmp}}"
yann@1479
   288
        if [ -n "${tmp}" ]; then
yann@1479
   289
            extra_config+=("${tmp}")
yann@1479
   290
        fi
yann@1479
   291
    done
yann@1479
   292
yann@1479
   293
    [ "${CT_SHARED_LIBS}" = "y" ]                   || extra_config+=("--disable-shared")
yann@1479
   294
    [ -n "${CT_CC_PKGVERSION}" ]                    && extra_config+=("--with-pkgversion=${CT_CC_PKGVERSION}")
yann@1479
   295
    [ -n "${CT_CC_BUGURL}" ]                        && extra_config+=("--with-bugurl=${CT_CC_BUGURL}")
yann@1479
   296
    [ "${CT_CC_SJLJ_EXCEPTIONS_USE}" = "y" ]        && extra_config+=("--enable-sjlj-exceptions")
yann@1479
   297
    [ "${CT_CC_SJLJ_EXCEPTIONS_DONT_USE}" = "y" ]   && extra_config+=("--disable-sjlj-exceptions")
yann@850
   298
    if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then
yann@1479
   299
        extra_config+=("--enable-__cxa_atexit")
yann@850
   300
    else
yann@1479
   301
        extra_config+=("--disable-__cxa_atexit")
yann@850
   302
    fi
yann@1393
   303
    if [ "${CT_GMP_MPFR}" = "y" ]; then
yann@1479
   304
        extra_config+=("--with-gmp=${CT_PREFIX_DIR}")
yann@1479
   305
        extra_config+=("--with-mpfr=${CT_PREFIX_DIR}")
yann@1393
   306
    fi
yann@1393
   307
    if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then
yann@1479
   308
        extra_config+=("--with-ppl=${CT_PREFIX_DIR}")
yann@1479
   309
        extra_config+=("--with-cloog=${CT_PREFIX_DIR}")
yann@1479
   310
        extra_config+=("--with-mpc=${CT_PREFIX_DIR}")
yann@1393
   311
    fi
yann@1484
   312
    if [ -n "${CC_ENABLE_CXX_FLAGS}" ]; then
yann@1484
   313
        extra_config+=("--enable-cxx-flags=${CC_ENABLE_CXX_FLAGS}")
yann@1484
   314
    fi
yann@850
   315
yann@1479
   316
    CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'"
yann@850
   317
yann@850
   318
    # --enable-symvers=gnu really only needed for sh4 to work around a
yann@850
   319
    # detection problem only matters for gcc-3.2.x and later, I think.
yann@850
   320
    # --disable-nls to work around crash bug on ppc405, but also because
yann@850
   321
    # embedded systems don't really need message catalogs...
yann@1122
   322
    CC_FOR_BUILD="${CT_BUILD}-gcc"                  \
yann@1122
   323
    CFLAGS="${CT_CFLAGS_FOR_HOST}"                  \
yann@1122
   324
    CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}"         \
yann@1122
   325
    CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}"       \
yann@1122
   326
    LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}"       \
yann@1122
   327
    CT_DoExecLog ALL                                \
yann@1389
   328
    "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure"  \
yann@1122
   329
        --build=${CT_BUILD}                         \
yann@1122
   330
        --host=${CT_HOST}                           \
yann@1122
   331
        --target=${CT_TARGET}                       \
yann@1122
   332
        --prefix="${CT_PREFIX_DIR}"                 \
yann@1122
   333
        ${CC_SYSROOT_ARG}                           \
yann@1479
   334
        "${extra_config[@]}"                        \
yann@1122
   335
        --with-local-prefix="${CT_SYSROOT_DIR}"     \
yann@1122
   336
        --disable-nls                               \
yann@1122
   337
        --enable-threads=posix                      \
yann@1122
   338
        --enable-symvers=gnu                        \
yann@1122
   339
        --enable-c99                                \
yann@1122
   340
        --enable-long-long                          \
yann@1122
   341
        --enable-target-optspace                    \
yann@850
   342
        ${CT_CC_EXTRA_CONFIG}
yann@850
   343
yann@850
   344
    if [ "${CT_CANADIAN}" = "y" ]; then
yann@850
   345
        CT_DoLog EXTRA "Building libiberty"
yann@850
   346
        CT_DoExecLog ALL make ${PARALLELMFLAGS} all-build-libiberty
yann@850
   347
    fi
yann@850
   348
yann@850
   349
    CT_DoLog EXTRA "Building final compiler"
yann@850
   350
    CT_DoExecLog ALL make ${PARALLELMFLAGS} all
yann@850
   351
yann@850
   352
    CT_DoLog EXTRA "Installing final compiler"
yann@850
   353
    CT_DoExecLog ALL make install
yann@850
   354
yann@850
   355
    # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able
yann@850
   356
    # to call the C compiler with the same, somewhat canonical name.
yann@1007
   357
    CT_DoExecLog ALL ln -sv "${CT_TARGET}"-gcc "${CT_PREFIX_DIR}/bin/${CT_TARGET}"-cc
yann@850
   358
yann@850
   359
    CT_EndStep
yann@850
   360
}