Ioannis E. VENETIS <venetis@mail.capsl.udel.edu> pointed out that GMP and MPFR were not used by gcc.
Turned out that none could use GMP and MPFR as the config option changed its name, but the change was not propagated to all users.
/trunk/scripts/build/binutils.sh | 2 1 1 0 +-
/trunk/scripts/build/debug/300-gdb.sh | 2 1 1 0 +-
/trunk/scripts/build/cc_gcc.sh | 6 3 3 0 +++---
3 files changed, 5 insertions(+), 5 deletions(-)
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
6 [ "${CT_CC}" = "gcc" ] || return 0
7 echo "gcc-${CT_CC_VERSION}"
12 # Ah! gcc folks are kind of 'different': they store the tarballs in
13 # subdirectories of the same name! That's because gcc is such /crap/ that
14 # it is such /big/ that it needs being splitted for distribution! Sad. :-(
15 # Arrgghh! Some of those versions does not follow this convention:
16 # gcc-3.3.3 lives in releases/gcc-3.3.3, while gcc-2.95.* isn't in a
17 # subdirectory! You bastard!
18 CT_GetFile "${CT_CC_FILE}" \
19 {ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/${CT_CC_FILE}}
24 CT_ExtractAndPatch "${CT_CC_FILE}"
27 #------------------------------------------------------------------------------
30 # In case we're NPTL, build the static core gcc;
31 # in any other case, do nothing.
32 case "${CT_THREADS}" in
33 nptl) do_cc_core_static;;
39 # In case we're NPTL, build the shared core gcc,
40 # in any other case, build the static core gcc.
41 case "${CT_THREADS}" in
42 nptl) do_cc_core_shared;;
43 *) do_cc_core_static;;
47 #------------------------------------------------------------------------------
48 # Build static core gcc
50 mkdir -p "${CT_BUILD_DIR}/build-cc-core-static"
51 cd "${CT_BUILD_DIR}/build-cc-core-static"
53 CT_DoStep INFO "Installing static core C compiler"
55 CT_DoLog DEBUG "Copying headers to install area of bootstrap gcc, so it can build libgcc2"
56 mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}/${CT_TARGET}/include"
57 cp -r "${CT_HEADERS_DIR}"/* "${CT_CC_CORE_STATIC_PREFIX_DIR}/${CT_TARGET}/include" 2>&1 |CT_DoLog DEBUG
59 CT_DoLog EXTRA "Configuring static core C compiler"
61 extra_config="${CT_ARCH_WITH_ARCH} ${CT_ARCH_WITH_ABI} ${CT_ARCH_WITH_CPU} ${CT_ARCH_WITH_TUNE} ${CT_ARCH_WITH_FPU} ${CT_ARCH_WITH_FLOAT}"
62 [ "${CT_GMP_MPFR}" = "y" ] && extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}"
63 if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then
64 extra_config="${extra_config} --enable-__cxa_atexit"
66 extra_config="${extra_config} --disable-__cxa_atexit"
69 CT_DoLog DEBUG "Extra config passed: '${extra_config}'"
71 # Use --with-local-prefix so older gccs don't look in /usr/local (http://gcc.gnu.org/PR10532)
72 CC_FOR_BUILD="${CT_CC_NATIVE}" \
73 CFLAGS="${CT_CFLAGS_FOR_HOST}" \
74 "${CT_SRC_DIR}/${CT_CC_FILE}/configure" \
77 --target=${CT_TARGET} \
78 --prefix="${CT_CC_CORE_STATIC_PREFIX_DIR}" \
79 --with-local-prefix="${CT_SYSROOT_DIR}" \
82 ${CC_CORE_SYSROOT_ARG} \
86 --enable-symvers=gnu \
87 --enable-languages=c \
89 --enable-target-optspace \
90 ${CT_CC_CORE_EXTRA_CONFIG} 2>&1 |CT_DoLog ALL
92 if [ "${CT_CANADIAN}" = "y" ]; then
93 CT_DoLog EXTRA "Building libiberty"
94 make ${PARALLELMFLAGS} all-build-libiberty 2>&1 |CT_DoLog ALL
97 CT_DoLog EXTRA "Building static core C compiler"
98 make ${PARALLELMFLAGS} all-gcc 2>&1 |CT_DoLog ALL
100 CT_DoLog EXTRA "Installing static core C compiler"
101 make install-gcc 2>&1 |CT_DoLog ALL
106 #------------------------------------------------------------------------------
107 # Build shared core gcc
108 do_cc_core_shared() {
109 mkdir -p "${CT_BUILD_DIR}/build-cc-core-shared"
110 cd "${CT_BUILD_DIR}/build-cc-core-shared"
112 CT_DoStep INFO "Installing shared core C compiler"
114 CT_DoLog DEBUG "Copying headers to install area of bootstrap gcc, so it can build libgcc2"
115 mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}/${CT_TARGET}/include"
116 cp -r "${CT_HEADERS_DIR}"/* "${CT_CC_CORE_SHARED_PREFIX_DIR}/${CT_TARGET}/include" 2>&1 |CT_DoLog DEBUG
118 CT_DoLog EXTRA "Configuring shared core C compiler"
120 extra_config="${CT_ARCH_WITH_ARCH} ${CT_ARCH_WITH_ABI} ${CT_ARCH_WITH_CPU} ${CT_ARCH_WITH_TUNE} ${CT_ARCH_WITH_FPU} ${CT_ARCH_WITH_FLOAT}"
121 [ "${CT_GMP_MPFR}" = "y" ] && extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}"
122 if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then
123 extra_config="${extra_config} --enable-__cxa_atexit"
125 extra_config="${extra_config} --disable-__cxa_atexit"
128 CT_DoLog DEBUG "Extra config passed: '${extra_config}'"
130 CC_FOR_BUILD="${CT_CC_NATIVE}" \
131 CFLAGS="${CT_CFLAGS_FOR_HOST}" \
132 "${CT_SRC_DIR}/${CT_CC_FILE}/configure" \
134 --target=${CT_TARGET} \
136 --prefix="${CT_CC_CORE_SHARED_PREFIX_DIR}" \
137 --with-local-prefix="${CT_SYSROOT_DIR}" \
139 ${CC_CORE_SYSROOT_ARG} \
142 --enable-symvers=gnu \
143 --enable-languages=c \
145 --enable-target-optspace \
146 ${CT_CC_CORE_EXTRA_CONFIG} 2>&1 |CT_DoLog ALL
148 # HACK: we need to override SHLIB_LC from gcc/config/t-slibgcc-elf-ver or
149 # gcc/config/t-libunwind so -lc is removed from the link for
150 # libgcc_s.so, as we do not have a target -lc yet.
151 # This is not as ugly as it appears to be ;-) All symbols get resolved
152 # during the glibc build, and we provide a proper libgcc_s.so for the
153 # cross toolchain during the final gcc build.
155 # As we cannot modify the source tree, nor override SHLIB_LC itself
156 # during configure or make, we have to edit the resultant
157 # gcc/libgcc.mk itself to remove -lc from the link.
158 # This causes us to have to jump through some hoops...
160 # To produce libgcc.mk to edit we firstly require libiberty.a,
161 # so we configure then build it.
162 # Next we have to configure gcc, create libgcc.mk then edit it...
163 # So much easier if we just edit the source tree, but hey...
164 if [ ! -f "${CT_SRC_DIR}/${CT_CC_FILE}/gcc/BASE-VER" ]; then
165 make configure-libiberty
166 make ${PARALLELMFLAGS} -C libiberty libiberty.a
168 make configure-libcpp
169 make ${PARALLELMFLAGS} all-libcpp
172 make configure-libcpp
173 make configure-build-libiberty
174 make ${PARALLELMFLAGS} all-libcpp
175 make ${PARALLELMFLAGS} all-build-libiberty
176 fi 2>&1 |CT_DoLog ALL
177 # HACK: gcc-4.2 uses libdecnumber to build libgcc.mk, so build it here.
178 if [ -d "${CT_SRC_DIR}/${CT_CC_FILE}/libdecnumber" ]; then
179 make configure-libdecnumber
180 make ${PARALLELMFLAGS} -C libdecnumber libdecnumber.a
181 fi 2>&1 |CT_DoLog ALL
182 make -C gcc libgcc.mk 2>&1 |CT_DoLog ALL
183 sed -r -i -e 's@-lc@@g' gcc/libgcc.mk
185 if [ "${CT_CANADIAN}" = "y" ]; then
186 CT_DoLog EXTRA "Building libiberty"
187 make ${PARALLELMFLAGS} all-build-libiberty 2>&1 |CT_DoLog ALL
190 CT_DoLog EXTRA "Building shared core C compiler"
191 make ${PARALLELMFLAGS} all-gcc 2>&1 |CT_DoLog ALL
193 CT_DoLog EXTRA "Installing shared core C compiler"
194 make install-gcc 2>&1 |CT_DoLog ALL
199 #------------------------------------------------------------------------------
202 CT_DoStep INFO "Installing final compiler"
204 mkdir -p "${CT_BUILD_DIR}/build-cc"
205 cd "${CT_BUILD_DIR}/build-cc"
207 CT_DoLog EXTRA "Configuring final compiler"
209 # Enable selected languages
211 [ "${CT_CC_LANG_CXX}" = "y" ] && lang_opt="${lang_opt},c++"
212 [ "${CT_CC_LANG_FORTRAN}" = "y" ] && lang_opt="${lang_opt},fortran"
213 [ "${CT_CC_LANG_ADA}" = "y" ] && lang_opt="${lang_opt},ada"
214 [ "${CT_CC_LANG_JAVA}" = "y" ] && lang_opt="${lang_opt},java"
215 [ "${CT_CC_LANG_OBJC}" = "y" ] && lang_opt="${lang_opt},objc"
216 [ "${CT_CC_LANG_OBJCXX}" = "y" ] && lang_opt="${lang_opt},obj-c++"
217 CT_Test "Building ADA language is not yet supported. Will try..." "${CT_CC_LANG_ADA}" = "y"
218 CT_Test "Building Objective-C language is not yet supported. Will try..." "${CT_CC_LANG_OBJC}" = "y"
219 CT_Test "Building Objective-C++ language is not yet supported. Will try..." "${CT_CC_LANG_OBJCXX}" = "y"
220 CT_Test "Building ${CT_CC_LANG_OTHERS//,/ } language(s) is not yet supported. Will try..." -n "${CT_CC_LANG_OTHERS}"
221 lang_opt=$(echo "${lang_opt},${CT_CC_LANG_OTHERS}" |sed -r -e 's/,+/,/g; s/,*$//;')
223 extra_config="--enable-languages=${lang_opt}"
224 extra_config="${extra_config} --disable-multilib"
225 extra_config="${extra_config} ${CT_ARCH_WITH_ARCH} ${CT_ARCH_WITH_ABI} ${CT_ARCH_WITH_CPU} ${CT_ARCH_WITH_TUNE} ${CT_ARCH_WITH_FPU} ${CT_ARCH_WITH_FLOAT}"
226 [ "${CT_SHARED_LIBS}" = "y" ] || extra_config="${extra_config} --disable-shared"
227 [ "${CT_GMP_MPFR}" = "y" ] && extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}"
228 [ -n "${CT_CC_PKGVERSION}" ] && extra_config="${extra_config} --with-pkgversion=${CT_CC_PKGVERSION}"
229 [ -n "${CT_CC_BUGURL}" ] && extra_config="${extra_config} --with-bugurl=${CT_CC_BUGURL}"
230 if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then
231 extra_config="${extra_config} --enable-__cxa_atexit"
233 extra_config="${extra_config} --disable-__cxa_atexit"
236 CT_DoLog DEBUG "Extra config passed: '${extra_config}'"
238 # --enable-symvers=gnu really only needed for sh4 to work around a
239 # detection problem only matters for gcc-3.2.x and later, I think.
240 # --disable-nls to work around crash bug on ppc405, but also because
241 # embedded systems don't really need message catalogs...
242 CC_FOR_BUILD="${CT_CC_NATIVE}" \
243 CFLAGS="${CT_CFLAGS_FOR_HOST}" \
244 CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \
245 CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \
246 LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}" \
247 "${CT_SRC_DIR}/${CT_CC_FILE}/configure" \
249 --target=${CT_TARGET} --host=${CT_HOST} \
250 --prefix="${CT_PREFIX_DIR}" \
253 --with-local-prefix="${CT_SYSROOT_DIR}" \
255 --enable-threads=posix \
256 --enable-symvers=gnu \
259 --enable-target-optspace \
260 ${CT_CC_EXTRA_CONFIG} 2>&1 |CT_DoLog ALL
262 if [ "${CT_CANADIAN}" = "y" ]; then
263 CT_DoLog EXTRA "Building libiberty"
264 make ${PARALLELMFLAGS} all-build-libiberty 2>&1 |CT_DoLog ALL
267 # Idea from <cort.dougan at gmail.com>:
268 # Fix lib/lib64 confusion for GCC 3.3.3 on PowerPC64 and x86_64.
269 # GCC 3.4.0 and up don't suffer from this confusion, and don't need this
271 # FIXME: we should patch gcc's source rather than uglify crosstool.sh.
272 # FIXME: is this needed for gcc-3.3.[56]?
273 case "${CT_CC_FILE}" in
275 case "${CT_TARGET}" in
276 powerpc64-unknown-linux-gnu|x86_64-unknown-linux-gnu)
277 for d in $(find "${CT_SYSROOT_DIR}" -name lib -type d -empty); do
278 if [ -d $(dirname "${d}")/lib64 ] ; then
280 ln -s $(dirname "${d}")/lib64 "${d}"
287 CT_DoLog EXTRA "Building final compiler"
288 make ${PARALLELMFLAGS} all 2>&1 |CT_DoLog ALL
290 CT_DoLog EXTRA "Installing final compiler"
291 make install 2>&1 |CT_DoLog ALL
293 # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able
294 # to call the C compiler with the same, somewhat canonical name.
295 ln "${CT_PREFIX_DIR}/bin/${CT_TARGET}"-{g,}cc
297 # gcc installs stuff in prefix/target/lib, when it would make better sense
298 # to install that into sysroot/usr/lib
299 CT_DoLog EXTRA "Moving improperly installed gcc libs to sysroot"
300 ( cd "${CT_PREFIX_DIR}/${CT_TARGET}/lib"; tar cf - . ) | ( cd "${CT_SYSROOT_DIR}/usr/lib"; tar xfv - ) |CT_DoLog ALL
301 rm -rf "${CT_PREFIX_DIR}/${CT_TARGET}/lib"