scripts/functions: Fix CT_ExtractGit function.
Change CT_ExtractGit so that it clones the repository, instead of just
symlinking it. After cloning, any given ref is checked out, or if no
ref is given, the HEAD of the repository is checked out.
This makes CT_Extract behave similar for git repositories as it does
for tarballs, so that it for example can be used for passing glibc-ports
as a git repository.
Signed-off-by: "Esben Haabendal" <esben.haabendal@prevas.dk>
[yann.morin.1998@anciens.enib.fr: fix incomplete var rename]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
1 # This file adds functions to build binutils
2 # Copyright 2007 Yann E. MORIN
3 # Licensed under the GPL v2. See COPYING in the root of this package
7 CT_GetFile "binutils-${CT_BINUTILS_VERSION}" \
8 {ftp,http}://{ftp.gnu.org/gnu,ftp.kernel.org/pub/linux/devel}/binutils \
9 ftp://gcc.gnu.org/pub/binutils/{releases,snapshots}
13 do_binutils_extract() {
14 CT_Extract "binutils-${CT_BINUTILS_VERSION}"
15 CT_Patch "binutils" "${CT_BINUTILS_VERSION}"
21 local -a extra_make_flags
22 local -a binutils_tools
24 mkdir -p "${CT_BUILD_DIR}/build-binutils"
25 cd "${CT_BUILD_DIR}/build-binutils"
27 CT_DoStep INFO "Installing binutils"
29 CT_DoLog EXTRA "Configuring binutils"
31 binutils_tools=( ar as ld strip )
32 if [ "${CT_BINUTILS_HAS_GOLD}" = "y" ]; then
33 case "${CT_BINUTILS_LINKERS_LIST}" in
35 extra_config+=( --enable-ld=yes --enable-gold=no )
36 binutils_tools+=( ld.bfd )
39 extra_config+=( --enable-ld=no --enable-gold=yes )
40 binutils_tools+=( ld.gold )
43 extra_config+=( --enable-ld=default --enable-gold=yes )
44 binutils_tools+=( ld.bfd ld.gold )
47 extra_config+=( --enable-ld=yes --enable-gold=default )
48 binutils_tools+=( ld.bfd ld.gold )
51 if [ "${CT_BINUTILS_GOLD_THREADED}" = "y" ]; then
52 extra_config+=( --enable-threads )
55 if [ "${CT_BINUTILS_PLUGINS}" = "y" ]; then
56 extra_config+=( --enable-plugins )
58 if [ "${CT_BINUTILS_HAS_PKGVERSION_BUGURL}" = "y" ]; then
59 extra_config+=("--with-pkgversion=${CT_PKGVERSION}")
60 [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}")
63 CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'"
66 CFLAGS="${CT_CFLAGS_FOR_HOST}" \
67 CXXFLAGS="${CT_CFLAGS_FOR_HOST}" \
68 "${CT_SRC_DIR}/binutils-${CT_BINUTILS_VERSION}/configure" \
71 --target=${CT_TARGET} \
72 --prefix=${CT_PREFIX_DIR} \
76 "${extra_config[@]}" \
77 ${CT_ARCH_WITH_FLOAT} \
78 ${BINUTILS_SYSROOT_ARG} \
79 "${CT_BINUTILS_EXTRA_CONFIG_ARRAY[@]}"
81 if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then
82 extra_make_flags+=("LDFLAGS=-static -all-static")
83 CT_DoLog EXTRA "Prepare binutils for static build"
84 CT_DoExecLog ALL make ${JOBSFLAGS} configure-host
87 CT_DoLog EXTRA "Building binutils"
88 CT_DoExecLog ALL make "${extra_make_flags[@]}" ${JOBSFLAGS}
90 CT_DoLog EXTRA "Installing binutils"
91 CT_DoExecLog ALL make install
93 # Install the wrapper if needed
94 if [ "${CT_BINUTILS_LD_WRAPPER}" = "y" ]; then
95 CT_DoLog EXTRA "Installing ld wrapper"
96 rm -f "${CT_PREFIX_DIR}/bin/${CT_TARGET}-ld"
97 rm -f "${CT_PREFIX_DIR}/${CT_TARGET}/bin/ld"
98 sed -r -e "s/@@DEFAULT_LD@@/${CT_BINUTILS_LINKER_DEFAULT}/" \
99 "${CT_LIB_DIR}/scripts/build/binutils/binutils-ld.in" \
100 >"${CT_PREFIX_DIR}/bin/${CT_TARGET}-ld"
101 chmod +x "${CT_PREFIX_DIR}/bin/${CT_TARGET}-ld"
102 cp -a "${CT_PREFIX_DIR}/bin/${CT_TARGET}-ld" \
103 "${CT_PREFIX_DIR}/${CT_TARGET}/bin/ld"
105 # If needed, force using ld.bfd during the toolchain build
106 if [ "${CT_BINUTILS_FORCE_LD_BFD}" = "y" ]; then
107 export CTNG_LD_IS=bfd
111 # Make those new tools available to the core C compilers to come.
112 # Note: some components want the ${TARGET}-{ar,as,ld,strip} commands as
114 mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}/${CT_TARGET}/bin"
115 mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}/bin"
116 mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}/${CT_TARGET}/bin"
117 mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}/bin"
118 for t in "${binutils_tools[@]}"; do
119 ln -sv "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" "${CT_CC_CORE_STATIC_PREFIX_DIR}/${CT_TARGET}/bin/${t}"
120 ln -sv "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" "${CT_CC_CORE_STATIC_PREFIX_DIR}/bin/${CT_TARGET}-${t}"
121 ln -sv "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" "${CT_CC_CORE_SHARED_PREFIX_DIR}/${CT_TARGET}/bin/${t}"
122 ln -sv "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" "${CT_CC_CORE_SHARED_PREFIX_DIR}/bin/${CT_TARGET}-${t}"
123 done 2>&1 |CT_DoLog ALL
128 # Now on for the target libraries
129 do_binutils_target() {
130 local -a extra_config
132 local -a build_targets
133 local -a install_targets
136 [ "${CT_BINUTILS_FOR_TARGET_IBERTY}" = "y" ] && targets+=("libiberty")
137 [ "${CT_BINUTILS_FOR_TARGET_BFD}" = "y" ] && targets+=("bfd")
138 for t in "${targets[@]}"; do
139 build_targets+=("all-${t}")
140 install_targets+=("install-${t}")
143 if [ "${#targets[@]}" -ne 0 ]; then
144 CT_DoStep INFO "Installing binutils for target"
145 mkdir -p "${CT_BUILD_DIR}/build-binutils-for-target"
146 CT_Pushd "${CT_BUILD_DIR}/build-binutils-for-target"
148 CT_DoLog EXTRA "Configuring binutils for target"
150 if [ "${CT_BINUTILS_HAS_PKGVERSION_BUGURL}" = "y" ]; then
151 extra_config+=("--with-pkgversion=${CT_PKGVERSION}")
152 [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}")
156 "${CT_SRC_DIR}/binutils-${CT_BINUTILS_VERSION}/configure" \
157 --build=${CT_BUILD} \
158 --host=${CT_TARGET} \
159 --target=${CT_TARGET} \
166 "${extra_config[@]}" \
167 ${CT_ARCH_WITH_FLOAT} \
168 "${CT_BINUTILS_EXTRA_CONFIG[@]}"
170 CT_DoLog EXTRA "Building binutils' libraries (${targets[*]}) for target"
171 CT_DoExecLog ALL make ${JOBSFLAGS} "${build_targets[@]}"
172 CT_DoLog EXTRA "Installing binutils' libraries (${targets[*]}) for target"
173 CT_DoExecLog ALL make DESTDIR="${CT_SYSROOT_DIR}" "${install_targets[@]}"