scripts/addToolsVersion: properly handle .in vs. .in.2
While most components have their version in the .in file, some
have it in the .in.2 (eg. elf2flt).
Currently, to handle this case, we indiscriminately munge both files,
but this is wrong: in the elf2flt case, if we add a binutils version,
we do not want it to be added to elf2flt, and conversely.
So, for each tool, we need to explicitly know what file to munge.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
1 # Build script for the gdb debug facility
3 # The version of ncurses to use. Yes, it's hard-coded.
4 # It's used only internally by crosstool-NG, and is
5 # not exposed outside, so we don't care about providing
6 # config options for this.
7 CT_DEBUG_GDB_NCURSES_VERSION="5.9"
9 # Ditto for the expat library
10 CT_DEBUG_GDB_EXPAT_VERSION="2.1.0"
12 do_debug_gdb_parts() {
17 if [ "${CT_GDB_CROSS}" = y ]; then
21 if [ "${CT_GDB_GDBSERVER}" = "y" ]; then
25 if [ "${CT_GDB_NATIVE}" = "y" ]; then
27 # GDB on Mingw depends on PDcurses, not ncurses
28 if [ "${CT_MINGW32}" != "y" ]; then
38 local linaro_base_url="http://launchpad.net/gdb-linaro"
40 # Account for the Linaro versioning
41 linaro_version="$( echo "${CT_GDB_VERSION}" \
42 |sed -r -e 's/^linaro-//;' \
44 linaro_series="$( echo "${linaro_version}" \
45 |sed -r -e 's/-.*//;' \
50 if [ "${do_gdb}" = "y" ]; then
51 if [ "${CT_GDB_CUSTOM}" = "y" ]; then
52 CT_GetCustom "gdb" "${CT_GDB_VERSION}" "${CT_GDB_CUSTOM_LOCATION}"
54 CT_GetFile "gdb-${CT_GDB_VERSION}" \
55 {ftp,http}://ftp.gnu.org/pub/gnu/gdb \
56 ftp://sources.redhat.com/pub/gdb/{,old-}releases \
57 "${linaro_base_url}/${linaro_series}/${linaro_version}/+download"
61 if [ "${do_ncurses}" = "y" ]; then
62 CT_GetFile "ncurses-${CT_DEBUG_GDB_NCURSES_VERSION}" .tar.gz \
63 {ftp,http}://ftp.gnu.org/pub/gnu/ncurses \
64 ftp://invisible-island.net/ncurses
67 if [ "${do_expat}" = "y" ]; then
68 CT_GetFile "expat-${CT_DEBUG_GDB_EXPAT_VERSION}" .tar.gz \
69 http://downloads.sourceforge.net/project/expat/expat/${CT_DEBUG_GDB_EXPAT_VERSION}
73 do_debug_gdb_extract() {
76 if [ "${do_gdb}" = "y" ]; then
77 # If using custom directory location, nothing to do
78 if [ "${CT_GDB_CUSTOM}" = "y" \
79 -a -d "${CT_SRC_DIR}/gdb-${CT_GDB_VERSION}" ]; then
82 CT_Extract "gdb-${CT_GDB_VERSION}"
83 CT_Patch "gdb" "${CT_GDB_VERSION}"
86 if [ "${do_ncurses}" = "y" ]; then
87 CT_Extract "ncurses-${CT_DEBUG_GDB_NCURSES_VERSION}"
88 CT_DoExecLog ALL chmod -R u+w "${CT_SRC_DIR}/ncurses-${CT_DEBUG_GDB_NCURSES_VERSION}"
89 CT_Patch "ncurses" "${CT_DEBUG_GDB_NCURSES_VERSION}"
92 if [ "${do_expat}" = "y" ]; then
93 CT_Extract "expat-${CT_DEBUG_GDB_EXPAT_VERSION}"
94 CT_Patch "expat" "${CT_DEBUG_GDB_EXPAT_VERSION}"
98 do_debug_gdb_build() {
103 gdb_src_dir="${CT_SRC_DIR}/gdb-${CT_GDB_VERSION}"
105 # Version 6.3 and below behave badly with gdbmi
106 case "${CT_GDB_VERSION}" in
107 6.2*|6.3) extra_config+=("--disable-gdbmi");;
110 if [ "${CT_GDB_HAS_PKGVERSION_BUGURL}" = "y" ]; then
111 extra_config+=("--with-pkgversion=${CT_PKGVERSION}")
112 [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}")
115 if [ "${CT_GDB_CROSS}" = "y" ]; then
116 local -a cross_extra_config
119 CT_DoStep INFO "Installing cross-gdb"
120 CT_DoLog EXTRA "Configuring cross-gdb"
122 mkdir -p "${CT_BUILD_DIR}/build-gdb-cross"
123 cd "${CT_BUILD_DIR}/build-gdb-cross"
125 cross_extra_config=("${extra_config[@]}")
126 case "${CT_THREADS}" in
127 none) cross_extra_config+=("--disable-threads");;
128 *) cross_extra_config+=("--enable-threads");;
130 if [ "${CT_GDB_CROSS_PYTHON}" = "y" ]; then
131 cross_extra_config+=( "--with-python=yes" )
133 cross_extra_config+=( "--with-python=no" )
135 if [ "${CT_GDB_CROSS_SIM}" = "y" ]; then
136 cross_extra_config+=( "--enable-sim" )
138 cross_extra_config+=( "--disable-sim" )
143 if [ "${CT_GDB_CROSS_STATIC}" = "y" ]; then
144 CC_for_gdb="gcc -static"
145 LD_for_gdb="ld -static"
148 if [ "${do_expat}" = "y" ]; then
149 cross_extra_config+=("--with-expat=yes")
151 cross_extra_config+=("--disable-expat")
152 cross_extra_config+=("--with-expat=no")
155 [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ] && \
156 cross_extra_config+=("--disable-nls")
158 gdb_cross_configure="${gdb_src_dir}/configure"
160 CT_DoLog DEBUG "Extra config passed: '${cross_extra_config[*]}'"
165 "${gdb_cross_configure}" \
166 --build=${CT_BUILD} \
168 --target=${CT_TARGET} \
169 --prefix="${CT_PREFIX_DIR}" \
170 --with-build-sysroot="${CT_SYSROOT_DIR}" \
171 --with-sysroot="${CT_SYSROOT_DIR}" \
173 "${cross_extra_config[@]}" \
174 "${CT_GDB_CROSS_EXTRA_CONFIG_ARRAY[@]}"
176 CT_DoLog EXTRA "Building cross-gdb"
177 CT_DoExecLog ALL make ${JOBSFLAGS}
179 CT_DoLog EXTRA "Installing cross-gdb"
180 CT_DoExecLog ALL make install
182 if [ "${CT_BUILD_MANUALS}" = "y" ]; then
183 CT_DoLog EXTRA "Building and installing the cross-GDB manuals"
184 CT_DoExecLog ALL make ${JOBSFLAGS} pdf html
185 CT_DoExecLog ALL make install-{pdf,html}-gdb
188 if [ "${CT_GDB_INSTALL_GDBINIT}" = "y" ]; then
189 CT_DoLog EXTRA "Install '.gdbinit' template"
190 # See in scripts/build/internals.sh for why we do this
191 if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then
192 gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" )
194 gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \
195 "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/version.c" \
199 -e "s:@@PREFIX@@:${CT_PREFIX_DIR}:;" \
200 -e "s:@@VERSION@@:${gcc_version}:;" \
201 "${CT_LIB_DIR}/scripts/build/debug/gdbinit.in" \
202 >"${CT_PREFIX_DIR}/share/gdb/gdbinit"
203 fi # Install gdbinit sample
208 if [ "${CT_GDB_NATIVE}" = "y" ]; then
209 local -a native_extra_config
211 local -a gdb_native_CFLAGS
213 CT_DoStep INFO "Installing native gdb"
215 native_extra_config=("${extra_config[@]}")
217 # GDB on Mingw depends on PDcurses, not ncurses
218 if [ "${do_ncurses}" = "y" ]; then
219 CT_DoLog EXTRA "Building static target ncurses"
221 [ "${CT_CC_LANG_CXX}" = "y" ] || ncurses_opts+=("--without-cxx" "--without-cxx-binding")
222 [ "${CT_CC_LANG_ADA}" = "y" ] || ncurses_opts+=("--without-ada")
224 mkdir -p "${CT_BUILD_DIR}/build-ncurses-build-tic"
225 cd "${CT_BUILD_DIR}/build-ncurses-build-tic"
227 # Use build = CT_REAL_BUILD so that configure thinks it is
228 # cross-compiling, and thus will use the ${CT_BUILD}-*
229 # tools instead of searching for the native ones...
231 "${CT_SRC_DIR}/ncurses-${CT_DEBUG_GDB_NCURSES_VERSION}/configure" \
232 --build=${CT_BUILD} \
236 --with-build-cc=${CT_REAL_BUILD}-gcc \
237 --with-build-cpp=${CT_REAL_BUILD}-gcc \
238 --with-build-cflags="${CT_CFLAGS_FOR_HOST}" \
241 # ncurses insists on linking tic statically. It does not work
242 # on some OSes (eg. MacOS-X/Darwin/whatever-you-call-it).
243 CT_DoExecLog DEBUG sed -r -i -e 's/-static//g;' "progs/Makefile"
245 # Under some operating systems (eg. Winblows), there is an
246 # extension appended to executables. Find that.
247 tic_ext=$(grep -E '^x[[:space:]]*=' progs/Makefile |sed -r -e 's/^.*=[[:space:]]*//;')
249 CT_DoExecLog ALL make ${JOBSFLAGS} -C include
250 CT_DoExecLog ALL make ${JOBSFLAGS} -C progs "tic${tic_ext}"
252 CT_DoExecLog ALL install -d -m 0755 "${CT_BUILDTOOLS_PREFIX_DIR}/bin"
253 CT_DoExecLog ALL install -m 0755 "progs/tic${tic_ext}" "${CT_BUILDTOOLS_PREFIX_DIR}/bin"
255 mkdir -p "${CT_BUILD_DIR}/build-ncurses"
256 cd "${CT_BUILD_DIR}/build-ncurses"
259 TIC_PATH="${CT_BUILDTOOLS_PREFIX_DIR}/bin/tic${tic_ext}" \
260 "${CT_SRC_DIR}/ncurses-${CT_DEBUG_GDB_NCURSES_VERSION}/configure" \
261 --build=${CT_BUILD} \
262 --host=${CT_TARGET} \
263 --with-build-cc=${CT_BUILD}-gcc \
264 --with-build-cpp=${CT_BUILD}-gcc \
265 --with-build-cflags="${CT_CFLAGS_FOR_HOST}" \
266 --prefix="${CT_BUILD_DIR}/static-target" \
273 CT_DoExecLog ALL make ${JOBSFLAGS}
275 CT_DoExecLog ALL make install
277 native_extra_config+=("--with-curses")
278 # There's no better way to tell gdb where to find -lcurses... :-(
279 gdb_native_CFLAGS+=("-I${CT_BUILD_DIR}/static-target/include")
280 gdb_native_CFLAGS+=("-L${CT_BUILD_DIR}/static-target/lib")
283 if [ "${do_expat}" = "y" ]; then
284 CT_DoLog EXTRA "Building static target expat"
286 mkdir -p "${CT_BUILD_DIR}/expat-build"
287 cd "${CT_BUILD_DIR}/expat-build"
290 "${CT_SRC_DIR}/expat-${CT_DEBUG_GDB_EXPAT_VERSION}/configure" \
291 --build=${CT_BUILD} \
292 --host=${CT_TARGET} \
293 --prefix="${CT_BUILD_DIR}/static-target" \
297 CT_DoExecLog ALL make ${JOBSFLAGS}
298 CT_DoExecLog ALL make install
300 native_extra_config+=("--with-expat")
301 native_extra_config+=("--with-libexpat-prefix=${CT_BUILD_DIR}/static-target")
304 CT_DoLog EXTRA "Configuring native gdb"
306 mkdir -p "${CT_BUILD_DIR}/build-gdb-native"
307 cd "${CT_BUILD_DIR}/build-gdb-native"
309 case "${CT_THREADS}" in
310 none) native_extra_config+=("--disable-threads");;
311 *) native_extra_config+=("--enable-threads");;
314 [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ] && \
315 native_extra_config+=("--disable-nls")
317 if [ "${CT_GDB_NATIVE_STATIC}" = "y" ]; then
318 CC_for_gdb="${CT_TARGET}-gcc -static"
319 LD_for_gdb="${CT_TARGET}-ld -static"
321 CC_for_gdb="${CT_TARGET}-gcc"
322 LD_for_gdb="${CT_TARGET}-ld"
325 export ac_cv_func_strncmp_works=yes
327 CT_DoLog DEBUG "Extra config passed: '${native_extra_config[*]}'"
332 CFLAGS="${gdb_native_CFLAGS[*]}" \
333 "${gdb_src_dir}/configure" \
334 --build=${CT_BUILD} \
335 --host=${CT_TARGET} \
336 --target=${CT_TARGET} \
338 --with-build-sysroot="${CT_SYSROOT_DIR}" \
345 --without-included-gettext \
347 "${native_extra_config[@]}"
349 CT_DoLog EXTRA "Building native gdb"
350 CT_DoExecLog ALL make ${JOBSFLAGS} CC=${CT_TARGET}-${CT_CC}
352 CT_DoLog EXTRA "Installing native gdb"
353 CT_DoExecLog ALL make DESTDIR="${CT_DEBUGROOT_DIR}" install
355 # Building a native gdb also builds a gdbserver
356 find "${CT_DEBUGROOT_DIR}" -type f -name gdbserver -exec rm -fv {} \; 2>&1 |CT_DoLog ALL
358 unset ac_cv_func_strncmp_works
360 CT_EndStep # native gdb build
363 if [ "${CT_GDB_GDBSERVER}" = "y" ]; then
364 local -a gdbserver_extra_config
366 CT_DoStep INFO "Installing gdbserver"
367 CT_DoLog EXTRA "Configuring gdbserver"
369 mkdir -p "${CT_BUILD_DIR}/build-gdb-gdbserver"
370 cd "${CT_BUILD_DIR}/build-gdb-gdbserver"
372 # Workaround for bad versions, where the configure
373 # script for gdbserver is not executable...
374 # Bah, GNU folks strike again... :-(
375 chmod +x "${gdb_src_dir}/gdb/gdbserver/configure"
378 if [ "${CT_GDB_GDBSERVER_STATIC}" = "y" ]; then
379 gdbserver_LDFLAGS=-static
382 gdbserver_extra_config=("${extra_config[@]}")
384 if [ "${CT_GDB_GDBSERVER_HAS_IPA_LIB}" = "y" ]; then
385 if [ "${CT_GDB_GDBSERVER_BUILD_IPA_LIB}" = "y" ]; then
386 gdbserver_extra_config+=( --enable-inprocess-agent )
388 gdbserver_extra_config+=( --disable-inprocess-agent )
393 LDFLAGS="${gdbserver_LDFLAGS}" \
394 "${gdb_src_dir}/gdb/gdbserver/configure" \
395 --build=${CT_BUILD} \
396 --host=${CT_TARGET} \
397 --target=${CT_TARGET} \
400 --localstatedir=/var \
401 --includedir="${CT_HEADERS_DIR}" \
402 --with-build-sysroot="${CT_SYSROOT_DIR}" \
408 --without-included-gettext \
411 "${gdbserver_extra_config[@]}"
413 CT_DoLog EXTRA "Building gdbserver"
414 CT_DoExecLog ALL make ${JOBSFLAGS} CC=${CT_TARGET}-${CT_CC}
416 CT_DoLog EXTRA "Installing gdbserver"
417 CT_DoExecLog ALL make DESTDIR="${CT_DEBUGROOT_DIR}" install