scripts/build/cc/gcc.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed Feb 17 23:50:49 2010 +0100 (2010-02-17)
changeset 1810 e44f67656c5f
parent 1484 c5451809efdb
child 1848 3f54c8d7f3f9
permissions -rw-r--r--
complibs: hide companion libraries for target entry

The companion libraries on the target are required only for internal use by
binutils and gdb. The user should not have to know about this, so hide the
option.
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@1808
   153
    [ -z "${CT_GMP}"    ] || extra_config+=("--with-gmp=${CT_PREFIX_DIR}")
yann@1808
   154
    [ -z "${CT_MPFR}"   ] || extra_config+=("--with-mpfr=${CT_PREFIX_DIR}")
yann@1808
   155
    [ -z "${CT_PPL}"    ] || extra_config+=("--with-ppl=${CT_PREFIX_DIR}")
yann@1808
   156
    [ -z "${CT_CLOOG}"  ] || extra_config+=("--with-cloog=${CT_PREFIX_DIR}")
yann@1808
   157
    [ -z "${CT_MPC}"    ] || extra_config+=("--with-mpc=${CT_PREFIX_DIR}")
yann@850
   158
yann@1479
   159
    CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'"
yann@850
   160
yann@850
   161
    # Use --with-local-prefix so older gccs don't look in /usr/local (http://gcc.gnu.org/PR10532)
yann@1041
   162
    CC_FOR_BUILD="${CT_BUILD}-gcc"                  \
yann@850
   163
    CFLAGS="${CT_CFLAGS_FOR_HOST}"                  \
yann@850
   164
    CT_DoExecLog ALL                                \
yann@1389
   165
    "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure"  \
yann@1041
   166
        --build=${CT_BUILD}                         \
yann@850
   167
        --host=${CT_HOST}                           \
yann@850
   168
        --target=${CT_TARGET}                       \
yann@850
   169
        --prefix="${core_prefix_dir}"               \
yann@850
   170
        --with-local-prefix="${CT_SYSROOT_DIR}"     \
yann@850
   171
        --disable-multilib                          \
yann@850
   172
        ${CC_CORE_SYSROOT_ARG}                      \
yann@1479
   173
        "${extra_config[@]}"                        \
yann@850
   174
        --disable-nls                               \
yann@850
   175
        --enable-symvers=gnu                        \
yann@1107
   176
        --enable-languages="${lang_opt}"            \
yann@850
   177
        --enable-target-optspace                    \
yann@850
   178
        ${CT_CC_CORE_EXTRA_CONFIG}
yann@850
   179
yann@850
   180
    if [ "${build_libgcc}" = "yes" ]; then
yann@850
   181
        # HACK: we need to override SHLIB_LC from gcc/config/t-slibgcc-elf-ver or
yann@850
   182
        # gcc/config/t-libunwind so -lc is removed from the link for
yann@850
   183
        # libgcc_s.so, as we do not have a target -lc yet.
yann@850
   184
        # This is not as ugly as it appears to be ;-) All symbols get resolved
yann@850
   185
        # during the glibc build, and we provide a proper libgcc_s.so for the
yann@850
   186
        # cross toolchain during the final gcc build.
yann@850
   187
        #
yann@850
   188
        # As we cannot modify the source tree, nor override SHLIB_LC itself
yann@850
   189
        # during configure or make, we have to edit the resultant
yann@850
   190
        # gcc/libgcc.mk itself to remove -lc from the link.
yann@850
   191
        # This causes us to have to jump through some hoops...
yann@850
   192
        #
yann@850
   193
        # To produce libgcc.mk to edit we firstly require libiberty.a,
yann@850
   194
        # so we configure then build it.
yann@850
   195
        # Next we have to configure gcc, create libgcc.mk then edit it...
yann@850
   196
        # So much easier if we just edit the source tree, but hey...
yann@1389
   197
        if [ ! -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then
yann@850
   198
            CT_DoExecLog ALL make configure-libiberty
yann@850
   199
            CT_DoExecLog ALL make ${PARALLELMFLAGS} -C libiberty libiberty.a
yann@850
   200
            CT_DoExecLog ALL make configure-gcc configure-libcpp
yann@850
   201
            CT_DoExecLog ALL make ${PARALLELMFLAGS} all-libcpp
yann@850
   202
        else
yann@850
   203
            CT_DoExecLog ALL make configure-gcc configure-libcpp configure-build-libiberty
yann@850
   204
            CT_DoExecLog ALL make ${PARALLELMFLAGS} all-libcpp all-build-libiberty
yann@850
   205
        fi
yann@850
   206
        # HACK: gcc-4.2 uses libdecnumber to build libgcc.mk, so build it here.
yann@1389
   207
        if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/libdecnumber" ]; then
yann@850
   208
            CT_DoExecLog ALL make configure-libdecnumber
yann@850
   209
            CT_DoExecLog ALL make ${PARALLELMFLAGS} -C libdecnumber libdecnumber.a
yann@850
   210
        fi
yann@850
   211
yann@850
   212
        # Starting with GCC 4.3, libgcc.mk is no longer built,
yann@850
   213
        # and libgcc.mvars is used instead.
yann@850
   214
yann@892
   215
        if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then
yann@850
   216
            libgcc_rule="libgcc.mvars"
yann@850
   217
            build_rules="all-gcc all-target-libgcc"
yann@850
   218
            install_rules="install-gcc install-target-libgcc"
yann@850
   219
        else
yann@850
   220
            libgcc_rule="libgcc.mk"
yann@850
   221
            build_rules="all-gcc"
yann@850
   222
            install_rules="install-gcc"
yann@850
   223
        fi
yann@850
   224
yann@850
   225
        CT_DoExecLog ALL make ${PARALLELMFLAGS} -C gcc ${libgcc_rule}
yann@850
   226
        sed -r -i -e 's@-lc@@g' gcc/${libgcc_rule}
yann@850
   227
    else # build_libgcc
yann@850
   228
            build_rules="all-gcc"
yann@850
   229
            install_rules="install-gcc"
yann@850
   230
    fi   # ! build libgcc
yann@850
   231
yann@850
   232
    if [ "${CT_CANADIAN}" = "y" ]; then
yann@850
   233
        CT_DoLog EXTRA "Building libiberty"
yann@850
   234
        CT_DoExecLog ALL make ${PARALLELMFLAGS} all-build-libiberty
yann@850
   235
    fi
yann@850
   236
yann@850
   237
    CT_DoLog EXTRA "Building ${mode} core C compiler"
yann@850
   238
    CT_DoExecLog ALL make ${PARALLELMFLAGS} ${build_rules}
yann@850
   239
yann@850
   240
    CT_DoLog EXTRA "Installing ${mode} core C compiler"
yann@850
   241
    CT_DoExecLog ALL make ${install_rules}
yann@850
   242
yann@1269
   243
    # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able
yann@1269
   244
    # to call the C compiler with the same, somewhat canonical name.
yann@1269
   245
    CT_DoExecLog ALL ln -sv "${CT_TARGET}"-gcc "${core_prefix_dir}/bin/${CT_TARGET}"-cc
yann@1269
   246
yann@850
   247
    CT_EndStep
yann@850
   248
}
yann@850
   249
yann@850
   250
#------------------------------------------------------------------------------
yann@850
   251
# Build final gcc
yann@850
   252
do_cc() {
yann@1479
   253
    local -a extra_config
yann@1479
   254
    local tmp
yann@1479
   255
yann@850
   256
    # If building for bare metal, nothing to be done here, the static core conpiler is enough!
yann@850
   257
    [ "${CT_BARE_METAL}" = "y" ] && return 0
yann@850
   258
yann@850
   259
    CT_DoStep INFO "Installing final compiler"
yann@850
   260
yann@850
   261
    mkdir -p "${CT_BUILD_DIR}/build-cc"
yann@850
   262
    cd "${CT_BUILD_DIR}/build-cc"
yann@850
   263
yann@850
   264
    CT_DoLog EXTRA "Configuring final compiler"
yann@850
   265
yann@850
   266
    # Enable selected languages
yann@850
   267
    lang_opt="c"
yann@850
   268
    [ "${CT_CC_LANG_CXX}" = "y"      ] && lang_opt="${lang_opt},c++"
yann@850
   269
    [ "${CT_CC_LANG_FORTRAN}" = "y"  ] && lang_opt="${lang_opt},fortran"
yann@850
   270
    [ "${CT_CC_LANG_ADA}" = "y"      ] && lang_opt="${lang_opt},ada"
yann@850
   271
    [ "${CT_CC_LANG_JAVA}" = "y"     ] && lang_opt="${lang_opt},java"
yann@850
   272
    [ "${CT_CC_LANG_OBJC}" = "y"     ] && lang_opt="${lang_opt},objc"
yann@850
   273
    [ "${CT_CC_LANG_OBJCXX}" = "y"   ] && lang_opt="${lang_opt},obj-c++"
yann@850
   274
    CT_Test "Building ADA language is not yet supported. Will try..." "${CT_CC_LANG_ADA}" = "y"
yann@850
   275
    CT_Test "Building Objective-C language is not yet supported. Will try..." "${CT_CC_LANG_OBJC}" = "y"
yann@850
   276
    CT_Test "Building Objective-C++ language is not yet supported. Will try..." "${CT_CC_LANG_OBJCXX}" = "y"
yann@850
   277
    CT_Test "Building ${CT_CC_LANG_OTHERS//,/ } language(s) is not yet supported. Will try..." -n "${CT_CC_LANG_OTHERS}"
yann@850
   278
    lang_opt=$(echo "${lang_opt},${CT_CC_LANG_OTHERS}" |sed -r -e 's/,+/,/g; s/,*$//;')
yann@850
   279
yann@1479
   280
    extra_config+=("--enable-languages=${lang_opt}")
yann@1479
   281
    extra_config+=("--disable-multilib")
yann@1479
   282
    for tmp in ARCH ABI CPU TUNE FPU FLOAT; do
yann@1479
   283
        eval tmp="\${CT_ARCH_WITH_${tmp}}"
yann@1479
   284
        if [ -n "${tmp}" ]; then
yann@1479
   285
            extra_config+=("${tmp}")
yann@1479
   286
        fi
yann@1479
   287
    done
yann@1479
   288
yann@1479
   289
    [ "${CT_SHARED_LIBS}" = "y" ]                   || extra_config+=("--disable-shared")
yann@1479
   290
    [ -n "${CT_CC_PKGVERSION}" ]                    && extra_config+=("--with-pkgversion=${CT_CC_PKGVERSION}")
yann@1479
   291
    [ -n "${CT_CC_BUGURL}" ]                        && extra_config+=("--with-bugurl=${CT_CC_BUGURL}")
yann@1479
   292
    [ "${CT_CC_SJLJ_EXCEPTIONS_USE}" = "y" ]        && extra_config+=("--enable-sjlj-exceptions")
yann@1479
   293
    [ "${CT_CC_SJLJ_EXCEPTIONS_DONT_USE}" = "y" ]   && extra_config+=("--disable-sjlj-exceptions")
yann@850
   294
    if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then
yann@1479
   295
        extra_config+=("--enable-__cxa_atexit")
yann@850
   296
    else
yann@1479
   297
        extra_config+=("--disable-__cxa_atexit")
yann@850
   298
    fi
yann@1484
   299
    if [ -n "${CC_ENABLE_CXX_FLAGS}" ]; then
yann@1484
   300
        extra_config+=("--enable-cxx-flags=${CC_ENABLE_CXX_FLAGS}")
yann@1484
   301
    fi
yann@1808
   302
    [ -z "${CT_GMP}"    ] || extra_config+=("--with-gmp=${CT_PREFIX_DIR}")
yann@1808
   303
    [ -z "${CT_MPFR}"   ] || extra_config+=("--with-mpfr=${CT_PREFIX_DIR}")
yann@1808
   304
    [ -z "${CT_PPL}"    ] || extra_config+=("--with-ppl=${CT_PREFIX_DIR}")
yann@1808
   305
    [ -z "${CT_CLOOG}"  ] || extra_config+=("--with-cloog=${CT_PREFIX_DIR}")
yann@1808
   306
    [ -z "${CT_MPC}"    ] || extra_config+=("--with-mpc=${CT_PREFIX_DIR}")
yann@850
   307
yann@1479
   308
    CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'"
yann@850
   309
yann@850
   310
    # --enable-symvers=gnu really only needed for sh4 to work around a
yann@850
   311
    # detection problem only matters for gcc-3.2.x and later, I think.
yann@850
   312
    # --disable-nls to work around crash bug on ppc405, but also because
yann@850
   313
    # embedded systems don't really need message catalogs...
yann@1122
   314
    CC_FOR_BUILD="${CT_BUILD}-gcc"                  \
yann@1122
   315
    CFLAGS="${CT_CFLAGS_FOR_HOST}"                  \
yann@1122
   316
    CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}"         \
yann@1122
   317
    CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}"       \
yann@1122
   318
    LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}"       \
yann@1122
   319
    CT_DoExecLog ALL                                \
yann@1389
   320
    "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure"  \
yann@1122
   321
        --build=${CT_BUILD}                         \
yann@1122
   322
        --host=${CT_HOST}                           \
yann@1122
   323
        --target=${CT_TARGET}                       \
yann@1122
   324
        --prefix="${CT_PREFIX_DIR}"                 \
yann@1122
   325
        ${CC_SYSROOT_ARG}                           \
yann@1479
   326
        "${extra_config[@]}"                        \
yann@1122
   327
        --with-local-prefix="${CT_SYSROOT_DIR}"     \
yann@1122
   328
        --disable-nls                               \
yann@1122
   329
        --enable-threads=posix                      \
yann@1122
   330
        --enable-symvers=gnu                        \
yann@1122
   331
        --enable-c99                                \
yann@1122
   332
        --enable-long-long                          \
yann@1122
   333
        --enable-target-optspace                    \
yann@850
   334
        ${CT_CC_EXTRA_CONFIG}
yann@850
   335
yann@850
   336
    if [ "${CT_CANADIAN}" = "y" ]; then
yann@850
   337
        CT_DoLog EXTRA "Building libiberty"
yann@850
   338
        CT_DoExecLog ALL make ${PARALLELMFLAGS} all-build-libiberty
yann@850
   339
    fi
yann@850
   340
yann@850
   341
    CT_DoLog EXTRA "Building final compiler"
yann@850
   342
    CT_DoExecLog ALL make ${PARALLELMFLAGS} all
yann@850
   343
yann@850
   344
    CT_DoLog EXTRA "Installing final compiler"
yann@850
   345
    CT_DoExecLog ALL make install
yann@850
   346
yann@850
   347
    # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able
yann@850
   348
    # to call the C compiler with the same, somewhat canonical name.
yann@1007
   349
    CT_DoExecLog ALL ln -sv "${CT_TARGET}"-gcc "${CT_PREFIX_DIR}/bin/${CT_TARGET}"-cc
yann@850
   350
yann@850
   351
    CT_EndStep
yann@850
   352
}