From 795d135b7fc4db7c6ce743d9847af38ae60fab5e Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Mon, 27 Jul 2009 22:14:08 +0200 Subject: [libc-eglibc] Fix testing for existing files To test for existing files, use "[ -f blabla ]", not "[ -a blabla ]" Checking for a file exsitence with "-a" is a bashism. Althoug we _are_ using bash, it's disturbing as it can be misread as the 'and' operator. Fix by using "-f". diff --git a/scripts/build/libc/eglibc.sh b/scripts/build/libc/eglibc.sh index 18fac76..dcce76c 100644 --- a/scripts/build/libc/eglibc.sh +++ b/scripts/build/libc/eglibc.sh @@ -41,18 +41,18 @@ do_libc_get() { eglibc_ports="${CT_LIBC}-ports-${CT_LIBC_VERSION}.tar.bz2" # Check if every tarballs are already present - if [ -a "${CT_TARBALLS_DIR}/${eglibc}" ] && \ - [ -a "${CT_TARBALLS_DIR}/${eglibc_linuxthreads}" ] && \ - [ -a "${CT_TARBALLS_DIR}/${eglibc_localedef}" ] && \ - [ -a "${CT_TARBALLS_DIR}/${eglibc_ports}" ]; then + if [ -f "${CT_TARBALLS_DIR}/${eglibc}" ] && \ + [ -f "${CT_TARBALLS_DIR}/${eglibc_linuxthreads}" ] && \ + [ -f "${CT_TARBALLS_DIR}/${eglibc_localedef}" ] && \ + [ -f "${CT_TARBALLS_DIR}/${eglibc_ports}" ]; then CT_DoLog DEBUG "Already have 'eglibc-${CT_LIBC_VERSION}'" return 0 fi - if [ -a "${CT_LOCAL_TARBALLS_DIR}/${eglibc}" ] && \ - [ -a "${CT_LOCAL_TARBALLS_DIR}/${eglibc_linuxthreads}" ] && \ - [ -a "${CT_LOCAL_TARBALLS_DIR}/${eglibc_localedef}" ] && \ - [ -a "${CT_LOCAL_TARBALLS_DIR}/${eglibc_ports}" ] && \ + if [ -f "${CT_LOCAL_TARBALLS_DIR}/${eglibc}" ] && \ + [ -f "${CT_LOCAL_TARBALLS_DIR}/${eglibc_linuxthreads}" ] && \ + [ -f "${CT_LOCAL_TARBALLS_DIR}/${eglibc_localedef}" ] && \ + [ -f "${CT_LOCAL_TARBALLS_DIR}/${eglibc_ports}" ] && \ [ "${CT_FORCE_DOWNLOAD}" != "y" ]; then CT_DoLog DEBUG "Got 'eglibc-${CT_LIBC_VERSION}' from local storage" for file in ${eglibc} ${eglibc_linuxthreads} ${eglibc_localedef} ${eglibc_ports}; do -- cgit v0.10.2-6-g49f6 From e4855367b401011f559f32349e24d6b9d99e763b Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Mon, 27 Jul 2009 22:16:07 +0200 Subject: [libc-eglibc] Rewrite part of the code Rewrite part of the code to better match the rest. Most notably, rewrite handling of: if [ ... ] && [ ... ] to: if [ ... -a ... ] This has the positive side effect of calling "[" only once, although "[" is probably a shell built-in. diff --git a/scripts/build/libc/eglibc.sh b/scripts/build/libc/eglibc.sh index dcce76c..18364c5 100644 --- a/scripts/build/libc/eglibc.sh +++ b/scripts/build/libc/eglibc.sh @@ -41,19 +41,21 @@ do_libc_get() { eglibc_ports="${CT_LIBC}-ports-${CT_LIBC_VERSION}.tar.bz2" # Check if every tarballs are already present - if [ -f "${CT_TARBALLS_DIR}/${eglibc}" ] && \ - [ -f "${CT_TARBALLS_DIR}/${eglibc_linuxthreads}" ] && \ - [ -f "${CT_TARBALLS_DIR}/${eglibc_localedef}" ] && \ - [ -f "${CT_TARBALLS_DIR}/${eglibc_ports}" ]; then + if [ -f "${CT_TARBALLS_DIR}/${eglibc}" \ + -a -f "${CT_TARBALLS_DIR}/${eglibc_linuxthreads}" \ + -a -f "${CT_TARBALLS_DIR}/${eglibc_localedef}" \ + -a -f "${CT_TARBALLS_DIR}/${eglibc_ports}" \ + ]; then CT_DoLog DEBUG "Already have 'eglibc-${CT_LIBC_VERSION}'" return 0 fi - if [ -f "${CT_LOCAL_TARBALLS_DIR}/${eglibc}" ] && \ - [ -f "${CT_LOCAL_TARBALLS_DIR}/${eglibc_linuxthreads}" ] && \ - [ -f "${CT_LOCAL_TARBALLS_DIR}/${eglibc_localedef}" ] && \ - [ -f "${CT_LOCAL_TARBALLS_DIR}/${eglibc_ports}" ] && \ - [ "${CT_FORCE_DOWNLOAD}" != "y" ]; then + if [ -f "${CT_LOCAL_TARBALLS_DIR}/${eglibc}" \ + -a -f "${CT_LOCAL_TARBALLS_DIR}/${eglibc_linuxthreads}" \ + -a -f "${CT_LOCAL_TARBALLS_DIR}/${eglibc_localedef}" \ + -a -f "${CT_LOCAL_TARBALLS_DIR}/${eglibc_ports}" \ + "${CT_FORCE_DOWNLOAD}" != "y" \ + ]; then CT_DoLog DEBUG "Got 'eglibc-${CT_LIBC_VERSION}' from local storage" for file in ${eglibc} ${eglibc_linuxthreads} ${eglibc_localedef} ${eglibc_ports}; do CT_DoExecLog ALL ln -s "${CT_LOCAL_TARBALLS_DIR}/${file}" "${CT_TARBALLS_DIR}/${file}" -- cgit v0.10.2-6-g49f6 From fdbe62cf0d66155d46057b6eefd17069617e5bd1 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Wed, 19 Aug 2009 19:41:24 +0200 Subject: configure: check for bash-3.1 or above This is required to use the array variables that came with bash-3.1. diff --git a/configure b/configure index a1eef74..4cadad1 100755 --- a/configure +++ b/configure @@ -318,8 +318,8 @@ add_to_var_list sed # The regular list of tools we can now easily check for has_or_abort prog=bash \ var=bash \ - ver='^GNU bash, version [34]\.' \ - err="'bash' 3.x or above was not found" + ver='^GNU bash, version (3\.[1-9]|4)' \ + err="'bash' 3.1 or above was not found" has_or_abort prog=cut has_or_abort prog=install var=install has_or_abort prog=make \ -- cgit v0.10.2-6-g49f6 From 3af546510370e6d113d12355896d6ef203d048cd Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Wed, 19 Aug 2009 19:44:30 +0200 Subject: Make eglibc's extra_config an array containing ./configure options Change extra_config from a string to a array of options. diff --git a/scripts/build/libc/eglibc.sh b/scripts/build/libc/eglibc.sh index 18364c5..245cda8 100644 --- a/scripts/build/libc/eglibc.sh +++ b/scripts/build/libc/eglibc.sh @@ -201,6 +201,8 @@ do_libc_start_files() { # This function builds and install the full glibc do_libc() { + local -a extra_config + CT_DoStep INFO "Installing C library" mkdir -p "${CT_BUILD_DIR}/build-libc" @@ -212,32 +214,32 @@ do_libc() { # We don't need to be conditional on wether the user did set different # values, as they CT_LIBC_GLIBC_EXTRA_CONFIG is passed after extra_config - extra_config="--enable-kernel=$(echo ${CT_LIBC_GLIBC_MIN_KERNEL} |sed -r -e 's/^([^.]+\.[^.]+\.[^.]+)(|\.[^.]+)$/\1/;')" + extra_config+=("--enable-kernel=$(echo ${CT_LIBC_GLIBC_MIN_KERNEL} |sed -r -e 's/^([^.]+\.[^.]+\.[^.]+)(|\.[^.]+)$/\1/;')") case "${CT_THREADS}" in - nptl) extra_config="${extra_config} --with-__thread --with-tls";; - linuxthreads) extra_config="${extra_config} --with-__thread --without-tls --without-nptl";; - none) extra_config="${extra_config} --without-__thread --without-nptl" + nptl) extra_config+=("--with-__thread" "--with-tls");; + linuxthreads) extra_config+=("--with-__thread" "--without-tls" "--without-nptl");; + none) extra_config+=("--without-__thread" "--without-nptl") case "${CT_LIBC_GLIBC_EXTRA_CONFIG}" in *-tls*) ;; - *) extra_config="${extra_config} --without-tls";; + *) extra_config+=("--without-tls");; esac ;; esac case "${CT_SHARED_LIBS}" in - y) extra_config="${extra_config} --enable-shared";; - *) extra_config="${extra_config} --disable-shared";; + y) extra_config+=("--enable-shared");; + *) extra_config+=("--disable-shared");; esac case "${CT_ARCH_FLOAT_HW},${CT_ARCH_FLOAT_SW}" in - y,) extra_config="${extra_config} --with-fp";; - ,y) extra_config="${extra_config} --without-fp";; + y,) extra_config+=("--with-fp");; + ,y) extra_config+=("--without-fp");; esac case "$(do_libc_add_ons_list ,)" in "") ;; - *) extra_config="${extra_config} --enable-add-ons=$(do_libc_add_ons_list ,)";; + *) extra_config+=("--enable-add-ons=$(do_libc_add_ons_list ,)");; esac extra_cc_args="${extra_cc_args} ${CT_ARCH_ENDIAN_OPT}" @@ -246,7 +248,7 @@ do_libc() { CT_DoLog DEBUG "Using gcc for target: '${cross_cc}'" CT_DoLog DEBUG "Configuring with addons : '$(do_libc_add_ons_list ,)'" - CT_DoLog DEBUG "Extra config args passed: '${extra_config}'" + CT_DoLog DEBUG "Extra config args passed: '${extra_config[*]}'" CT_DoLog DEBUG "Extra CC args passed : '${extra_cc_args}'" BUILD_CC="${CT_BUILD}-gcc" \ @@ -263,7 +265,7 @@ do_libc() { --disable-profile \ --without-gd \ --without-cvs \ - ${extra_config} \ + "${extra_config[@]}" \ ${CT_LIBC_GLIBC_EXTRA_CONFIG} CT_DoLog EXTRA "Building C library" -- cgit v0.10.2-6-g49f6 From f255716872aa7284bdcf3f28f7377b6c671c8f54 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Wed, 19 Aug 2009 19:44:42 +0200 Subject: Make gcc's extra_config an array containing ./configure options Change extra_config from a string to a array of options. diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh index e1f5d25..a79bba9 100644 --- a/scripts/build/cc/gcc.sh +++ b/scripts/build/cc/gcc.sh @@ -92,8 +92,9 @@ do_cc_core() { local mode local build_libgcc local core_prefix_dir - local extra_config local lang_opt + local tmp + local -a extra_config eval $1 eval $2 @@ -110,17 +111,21 @@ do_cc_core() { case "${mode}" in static) core_prefix_dir="${CT_CC_CORE_STATIC_PREFIX_DIR}" - extra_config="${extra_config} --with-newlib --enable-threads=no --disable-shared" + extra_config+=("--with-newlib") + extra_config+=("--enable-threads=no") + extra_config+=("--disable-shared") copy_headers=y ;; shared) core_prefix_dir="${CT_CC_CORE_SHARED_PREFIX_DIR}" - extra_config="${extra_config} --enable-shared" + extra_config+=("--enable-shared") copy_headers=y ;; baremetal) core_prefix_dir="${CT_PREFIX_DIR}" - extra_config="${extra_config} --with-newlib --enable-threads=no --disable-shared" + extra_config+=("--with-newlib") + extra_config+=("--enable-threads=no") + extra_config+=("--disable-shared") [ "${CT_CC_LANG_CXX}" = "y" ] && lang_opt="${lang_opt},c++" copy_headers=n ;; @@ -134,28 +139,28 @@ do_cc_core() { CT_DoLog EXTRA "Configuring ${mode} core C compiler" - extra_config="${extra_config} ${CT_ARCH_WITH_ARCH}" - extra_config="${extra_config} ${CT_ARCH_WITH_ABI}" - extra_config="${extra_config} ${CT_ARCH_WITH_CPU}" - extra_config="${extra_config} ${CT_ARCH_WITH_TUNE}" - extra_config="${extra_config} ${CT_ARCH_WITH_FPU}" - extra_config="${extra_config} ${CT_ARCH_WITH_FLOAT}" + for tmp in ARCH ABI CPU TUNE FPU FLOAT; do + eval tmp="\${CT_ARCH_WITH_${tmp}}" + if [ -n "${tmp}" ]; then + extra_config+=("${tmp}") + fi + done if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then - extra_config="${extra_config} --enable-__cxa_atexit" + extra_config+=("--enable-__cxa_atexit") else - extra_config="${extra_config} --disable-__cxa_atexit" + extra_config+=("--disable-__cxa_atexit") fi if [ "${CT_GMP_MPFR}" = "y" ]; then - extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR}" - extra_config="${extra_config} --with-mpfr=${CT_PREFIX_DIR}" + extra_config+=("--with-gmp=${CT_PREFIX_DIR}") + extra_config+=("--with-mpfr=${CT_PREFIX_DIR}") fi if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then - extra_config="${extra_config} --with-ppl=${CT_PREFIX_DIR}" - extra_config="${extra_config} --with-cloog=${CT_PREFIX_DIR}" - extra_config="${extra_config} --with-mpc=${CT_PREFIX_DIR}" + extra_config+=("--with-ppl=${CT_PREFIX_DIR}") + extra_config+=("--with-cloog=${CT_PREFIX_DIR}") + extra_config+=("--with-mpc=${CT_PREFIX_DIR}") fi - CT_DoLog DEBUG "Extra config passed: '${extra_config}'" + CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'" # Use --with-local-prefix so older gccs don't look in /usr/local (http://gcc.gnu.org/PR10532) CC_FOR_BUILD="${CT_BUILD}-gcc" \ @@ -169,7 +174,7 @@ do_cc_core() { --with-local-prefix="${CT_SYSROOT_DIR}" \ --disable-multilib \ ${CC_CORE_SYSROOT_ARG} \ - ${extra_config} \ + "${extra_config[@]}" \ --disable-nls \ --enable-symvers=gnu \ --enable-languages="${lang_opt}" \ @@ -249,6 +254,9 @@ do_cc_core() { #------------------------------------------------------------------------------ # Build final gcc do_cc() { + local -a extra_config + local tmp + # If building for bare metal, nothing to be done here, the static core conpiler is enough! [ "${CT_BARE_METAL}" = "y" ] && return 0 @@ -273,35 +281,36 @@ do_cc() { CT_Test "Building ${CT_CC_LANG_OTHERS//,/ } language(s) is not yet supported. Will try..." -n "${CT_CC_LANG_OTHERS}" lang_opt=$(echo "${lang_opt},${CT_CC_LANG_OTHERS}" |sed -r -e 's/,+/,/g; s/,*$//;') - extra_config="--enable-languages=${lang_opt}" - extra_config="${extra_config} --disable-multilib" - extra_config="${extra_config} ${CT_ARCH_WITH_ARCH}" - extra_config="${extra_config} ${CT_ARCH_WITH_ABI}" - extra_config="${extra_config} ${CT_ARCH_WITH_CPU}" - extra_config="${extra_config} ${CT_ARCH_WITH_TUNE}" - extra_config="${extra_config} ${CT_ARCH_WITH_FPU}" - extra_config="${extra_config} ${CT_ARCH_WITH_FLOAT}" - [ "${CT_SHARED_LIBS}" = "y" ] || extra_config="${extra_config} --disable-shared" - [ -n "${CT_CC_PKGVERSION}" ] && extra_config="${extra_config} --with-pkgversion=${CT_CC_PKGVERSION}" - [ -n "${CT_CC_BUGURL}" ] && extra_config="${extra_config} --with-bugurl=${CT_CC_BUGURL}" - [ "${CT_CC_SJLJ_EXCEPTIONS_USE}" = "y" ] && extra_config="${extra_config} --enable-sjlj-exceptions" - [ "${CT_CC_SJLJ_EXCEPTIONS_DONT_USE}" = "y" ] && extra_config="${extra_config} --disable-sjlj-exceptions" + extra_config+=("--enable-languages=${lang_opt}") + extra_config+=("--disable-multilib") + for tmp in ARCH ABI CPU TUNE FPU FLOAT; do + eval tmp="\${CT_ARCH_WITH_${tmp}}" + if [ -n "${tmp}" ]; then + extra_config+=("${tmp}") + fi + done + + [ "${CT_SHARED_LIBS}" = "y" ] || extra_config+=("--disable-shared") + [ -n "${CT_CC_PKGVERSION}" ] && extra_config+=("--with-pkgversion=${CT_CC_PKGVERSION}") + [ -n "${CT_CC_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_CC_BUGURL}") + [ "${CT_CC_SJLJ_EXCEPTIONS_USE}" = "y" ] && extra_config+=("--enable-sjlj-exceptions") + [ "${CT_CC_SJLJ_EXCEPTIONS_DONT_USE}" = "y" ] && extra_config+=("--disable-sjlj-exceptions") if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then - extra_config="${extra_config} --enable-__cxa_atexit" + extra_config+=("--enable-__cxa_atexit") else - extra_config="${extra_config} --disable-__cxa_atexit" + extra_config+=("--disable-__cxa_atexit") fi if [ "${CT_GMP_MPFR}" = "y" ]; then - extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR}" - extra_config="${extra_config} --with-mpfr=${CT_PREFIX_DIR}" + extra_config+=("--with-gmp=${CT_PREFIX_DIR}") + extra_config+=("--with-mpfr=${CT_PREFIX_DIR}") fi if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then - extra_config="${extra_config} --with-ppl=${CT_PREFIX_DIR}" - extra_config="${extra_config} --with-cloog=${CT_PREFIX_DIR}" - extra_config="${extra_config} --with-mpc=${CT_PREFIX_DIR}" + extra_config+=("--with-ppl=${CT_PREFIX_DIR}") + extra_config+=("--with-cloog=${CT_PREFIX_DIR}") + extra_config+=("--with-mpc=${CT_PREFIX_DIR}") fi - CT_DoLog DEBUG "Extra config passed: '${extra_config}'" + CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'" # --enable-symvers=gnu really only needed for sh4 to work around a # detection problem only matters for gcc-3.2.x and later, I think. @@ -319,7 +328,7 @@ do_cc() { --target=${CT_TARGET} \ --prefix="${CT_PREFIX_DIR}" \ ${CC_SYSROOT_ARG} \ - ${extra_config} \ + "${extra_config[@]}" \ --with-local-prefix="${CT_SYSROOT_DIR}" \ --disable-nls \ --enable-threads=posix \ -- cgit v0.10.2-6-g49f6 From 25303fc30a58d62b14c5d7cdd04004e783c7667e Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Wed, 19 Aug 2009 19:44:42 +0200 Subject: Make dmalloc's extra_config an array containing ./configure options Change extra_config from a string to a array of options. diff --git a/scripts/build/debug/100-dmalloc.sh b/scripts/build/debug/100-dmalloc.sh index 2c5d80c..f95a36d 100644 --- a/scripts/build/debug/100-dmalloc.sh +++ b/scripts/build/debug/100-dmalloc.sh @@ -10,27 +10,28 @@ do_debug_dmalloc_extract() { } do_debug_dmalloc_build() { + local -a extra_config + CT_DoStep INFO "Installing dmalloc" CT_DoLog EXTRA "Configuring dmalloc" mkdir -p "${CT_BUILD_DIR}/build-dmalloc" cd "${CT_BUILD_DIR}/build-dmalloc" - extra_config= case "${CT_CC_LANG_CXX}" in - y) extra_config="${extra_config} --enable-cxx";; - *) extra_config="${extra_config} --disable-cxx";; + y) extra_config+=("--enable-cxx");; + *) extra_config+=("--disable-cxx");; esac case "${CT_THREADS_NONE}" in - y) extra_config="${extra_config} --disable-threads";; - *) extra_config="${extra_config} --enable-threads";; + y) extra_config+=("--disable-threads");; + *) extra_config+=("--enable-threads");; esac case "${CT_SHARED_LIBS}" in - y) extra_config="${extra_config} --enable-shlib";; - *) extra_config="${extra_config} --disable-shlib";; + y) extra_config+=("--enable-shlib");; + *) extra_config+=("--disable-shlib");; esac - CT_DoLog DEBUG "Extra config passed: '${extra_config}'" + CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'" LD="${CT_TARGET}-ld" \ AR="${CT_TARGET}-ar" \ @@ -40,7 +41,7 @@ do_debug_dmalloc_build() { --prefix=/usr \ --build="${CT_BUILD}" \ --host="${CT_TARGET}" \ - ${extra_config} + "${extra_config[@]}" CT_DoLog EXTRA "Building dmalloc" CT_DoExecLog ALL make -- cgit v0.10.2-6-g49f6 From 59a37160af5b23c68725c79f796ef8d152835b3b Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Wed, 19 Aug 2009 19:44:43 +0200 Subject: Make gdb's extra_config an array containing ./configure options Change extra_config from a string to a array of options. diff --git a/scripts/build/debug/300-gdb.sh b/scripts/build/debug/300-gdb.sh index dc3c777..9207ca7 100644 --- a/scripts/build/debug/300-gdb.sh +++ b/scripts/build/debug/300-gdb.sh @@ -73,29 +73,32 @@ do_debug_gdb_extract() { } do_debug_gdb_build() { + local -a extra_config + gdb_src_dir="${CT_SRC_DIR}/gdb$(do_debug_gdb_suffix)" insight_src_dir="${CT_SRC_DIR}/insight-${CT_GDB_VERSION}" - extra_config= # Version 6.3 and below behave badly with gdbmi case "${CT_GDB_VERSION}" in - 6.2*|6.3) extra_config="${extra_config} --disable-gdbmi";; + 6.2*|6.3) extra_config+=("--disable-gdbmi");; esac if [ "${CT_GDB_CROSS}" = "y" ]; then + local -a cross_extra_config + CT_DoStep INFO "Installing cross-gdb" CT_DoLog EXTRA "Configuring cross-gdb" mkdir -p "${CT_BUILD_DIR}/build-gdb-cross" cd "${CT_BUILD_DIR}/build-gdb-cross" - cross_extra_config="${extra_config}" + cross_extra_config=("${extra_config[@]}") if [ "${CT_GMP_MPFR}" = "y" ]; then - cross_extra_config="${cross_extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}" + cross_extra_config+=("--with-gmp=${CT_PREFIX_DIR}" "--with-mpfr=${CT_PREFIX_DIR}") fi case "${CT_THREADS}" in - none) cross_extra_config="${cross_extra_config} --disable-threads";; - *) cross_extra_config="${cross_extra_config} --enable-threads";; + none) cross_extra_config+=("--disable-threads");; + *) cross_extra_config+=("--enable-threads");; esac CC_for_gdb= @@ -108,7 +111,7 @@ do_debug_gdb_build() { gdb_cross_configure="${gdb_src_dir}/configure" [ "${CT_GDB_CROSS_INSIGHT}" = "y" ] && gdb_cross_configure="${insight_src_dir}/configure" - CT_DoLog DEBUG "Extra config passed: '${cross_extra_config# }'" + CT_DoLog DEBUG "Extra config passed: '${cross_extra_config[*]}'" CC="${CC_for_gdb}" \ LD="${LD_for_gdb}" \ @@ -120,7 +123,7 @@ do_debug_gdb_build() { --prefix="${CT_PREFIX_DIR}" \ --with-build-sysroot="${CT_SYSROOT_DIR}" \ --disable-werror \ - ${cross_extra_config} + "${cross_extra_config[@]}" CT_DoLog EXTRA "Building cross-gdb" CT_DoExecLog ALL make ${PARALLELMFLAGS} @@ -132,13 +135,15 @@ do_debug_gdb_build() { fi if [ "${CT_GDB_NATIVE}" = "y" ]; then + local -a native_extra_config + local -a ncurses_opt + CT_DoStep INFO "Installing native gdb" CT_DoStep INFO "Installing ncurses library" - ncurses_opts= - [ "${CT_CC_LANG_CXX}" = "y" ] || ncurses_opts="${ncurses_opts} --without-cxx --without-cxx-binding" - [ "${CT_CC_LANG_ADA}" = "y" ] || ncurses_opts="${ncurses_opts} --without-ada" + [ "${CT_CC_LANG_CXX}" = "y" ] || ncurses_opts+=("--without-cxx" "--without-cxx-binding") + [ "${CT_CC_LANG_ADA}" = "y" ] || ncurses_opts+=("--without-ada") CT_DoStep INFO "Installing native ncurses tic" CT_DoLog EXTRA "Configuring ncurses tic" @@ -158,7 +163,7 @@ do_debug_gdb_build() { --with-build-cc=${CT_REAL_BUILD}-gcc \ --with-build-cpp=${CT_REAL_BUILD}-gcc \ --with-build-cflags="${CT_CFLAGS_FOR_HOST}" \ - ${ncurses_opts} + "${ncurses_opts[@]}" # Under some operating systems (eg. Winblows), there is an # extension appended to executables. Find that. @@ -190,7 +195,7 @@ do_debug_gdb_build() { --without-sysmouse \ --without-progs \ --enable-termcap \ - ${ncurses_opts} + "${ncurses_opts[@]}" CT_DoLog EXTRA "Building ncurses" CT_DoExecLog ALL make ${PARALLELMFLAGS} @@ -209,13 +214,13 @@ do_debug_gdb_build() { mkdir -p "${CT_BUILD_DIR}/build-gdb-native" cd "${CT_BUILD_DIR}/build-gdb-native" - native_extra_config="${extra_config}" + native_extra_config=("${extra_config[@]}") case "${CT_THREADS}" in - none) native_extra_config="${native_extra_config} --disable-threads";; - *) native_extra_config="${native_extra_config} --enable-threads";; + none) native_extra_config+=("--disable-threads");; + *) native_extra_config+=("--enable-threads");; esac if [ "${CT_GDB_NATIVE_USE_GMP_MPFR}" = "y" ]; then - native_extra_config="${native_extra_config} --with-gmp=${CT_SYSROOT_DIR}/usr --with-mpfr=${CT_SYSROOT_DIR}/usr" + native_extra_config+=("--with-gmp=${CT_SYSROOT_DIR}/usr" "--with-mpfr=${CT_SYSROOT_DIR}/usr") fi if [ "${CT_GDB_NATIVE_STATIC}" = "y" ]; then @@ -228,7 +233,7 @@ do_debug_gdb_build() { export ac_cv_func_strncmp_works=yes - CT_DoLog DEBUG "Extra config passed: '${native_extra_config# }'" + CT_DoLog DEBUG "Extra config passed: '${native_extra_config[*]}'" CC="${CC_for_gdb}" \ LD="${LD_for_gdb}" \ @@ -247,7 +252,7 @@ do_debug_gdb_build() { --disable-werror \ --without-included-gettext \ --without-develop \ - ${native_extra_config} + "${native_extra_config[@]}" CT_DoLog EXTRA "Building native gdb" CT_DoExecLog ALL make ${PARALLELMFLAGS} CC=${CT_TARGET}-${CT_CC} @@ -264,6 +269,8 @@ do_debug_gdb_build() { fi if [ "${CT_GDB_GDBSERVER}" = "y" ]; then + local -a gdbserver_extra_config + CT_DoStep INFO "Installing gdbserver" CT_DoLog EXTRA "Configuring gdbserver" @@ -280,7 +287,7 @@ do_debug_gdb_build() { gdbserver_LDFLAGS=-static fi - gdbserver_extra_config="${extra_config}" + gdbserver_extra_config=("${extra_config[@]}") LDFLAGS="${gdbserver_LDFLAGS}" \ CT_DoExecLog ALL \ @@ -301,7 +308,7 @@ do_debug_gdb_build() { --without-included-gettext \ --without-develop \ --disable-werror \ - ${gdbserver_extra_config} + "${gdbserver_extra_config[@]}" CT_DoLog EXTRA "Building gdbserver" CT_DoExecLog ALL make ${PARALLELMFLAGS} CC=${CT_TARGET}-${CT_CC} -- cgit v0.10.2-6-g49f6 From a72cc670b8880fdf868aa3a81ff4d3802779186d Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Wed, 19 Aug 2009 19:44:43 +0200 Subject: Make glibc's extra_config an array containing ./configure options Change extra_config from a string to a array of options. diff --git a/scripts/build/libc/glibc.sh b/scripts/build/libc/glibc.sh index 9af0135..43b20b3 100644 --- a/scripts/build/libc/glibc.sh +++ b/scripts/build/libc/glibc.sh @@ -6,6 +6,9 @@ do_libc_get() { local date local version + local -a addons_list + + addons_list=($(do_libc_add_ons_list " ")) if [ "${CT_LIBC_GLIBC_TARBALL}" = "y" ]; then # Use release tarballs @@ -15,7 +18,7 @@ do_libc_get() { ftp://gcc.gnu.org/pub/glibc/snapshots # C library addons - for addon in $(do_libc_add_ons_list " "); do + for addon in "${addons_list[@]}"; do # NPTL addon is not to be downloaded, in any case [ "${addon}" = "nptl" ] && continue || true CT_GetFile "glibc-${addon}-${CT_LIBC_VERSION}" \ @@ -35,7 +38,7 @@ do_libc_get() { "glibc-cvs-${CT_LIBC_VERSION}" # C library addons - for addon in $(do_libc_add_ons_list " "); do + for addon in "${addons_list[@]}"; do # NPTL addon is not to be downloaded, in any case [ "${addon}" = "nptl" ] && continue || true CT_GetCVS "glibc-${addon}-cvs-${CT_LIBC_VERSION}" \ @@ -54,6 +57,9 @@ do_libc_get() { # Extract glibc do_libc_extract() { local cvs + local -a addons_list + + addons_list=($(do_libc_add_ons_list " ")) [ "${CT_LIBC_GLIBC_CVS}" = "y" ] && cvs="cvs-" @@ -63,7 +69,7 @@ do_libc_extract() { CT_Patch "glibc-${CT_LIBC_VERSION}" nochdir # C library addons - for addon in $(do_libc_add_ons_list " "); do + for addon in "${addons_list[@]}"; do # NPTL addon is not to be extracted, in any case [ "${addon}" = "nptl" ] && continue || true CT_Extract "glibc-${addon}-${cvs}${CT_LIBC_VERSION}" nochdir @@ -82,6 +88,7 @@ do_libc_extract() { # The configure files may be older than the configure.in files # if using a snapshot (or even some tarballs). Fake them being # up to date. + sleep 2 find . -type f -name configure -exec touch {} \; 2>&1 |CT_DoLog ALL CT_Popd @@ -97,6 +104,7 @@ do_libc_check_config() { # This function installs the glibc headers needed to build the core compiler do_libc_headers() { local cvs + local -a extra_config CT_DoStep INFO "Installing C library headers" @@ -123,21 +131,23 @@ do_libc_headers() { # Override libc_cv_ppc_machine so glibc-cvs doesn't complain # 'a version of binutils that supports .machine "altivec" is needed'. - addons_list="$(do_libc_add_ons_list ,)" # We need to remove any threading addon when installing headers - addons_list="${addons_list//nptl/}" - addons_list="${addons_list//linuxthreads/}" - # Remove duplicate, leading and trailing separators - addons_config="--enable-add-ons=$(echo "${addons_list}" |sed -r -e 's/,+/,/; s/^,//; s/,$//g;')" + addons_list="$(do_libc_add_ons_list " " \ + |sed -r -e 's/\<(nptl|linuxthreads)\>/ /g;' \ + -e 's/ +/,/g; s/^,+//; s/,+$//;' \ + )" - extra_config="${addons_config} $(do_libc_min_kernel_config)" + extra_config+=("--enable-add-ons=${addons_list}") + + extra_config+=("${addons_config}") + extra_config+=("$(do_libc_min_kernel_config)") # Pre-seed the configparms file with values from the config option echo "${CT_LIBC_GLIBC_CONFIGPARMS}" > configparms cross_cc=$(CT_Which "${CT_TARGET}-gcc") CT_DoLog DEBUG "Using gcc for target: '${cross_cc}'" - CT_DoLog DEBUG "Extra config passed : '${extra_config}'" + CT_DoLog DEBUG "Extra config passed : '${extra_config[*]}'" libc_cv_ppc_machine=yes \ CC=${cross_cc} \ @@ -150,7 +160,7 @@ do_libc_headers() { --without-cvs \ --disable-sanity-checks \ --enable-hacker-mode \ - ${extra_config} \ + "${extra_config[@]}" \ --without-nptl CT_DoLog EXTRA "Installing C library headers" @@ -246,6 +256,7 @@ do_libc_headers() { # Build and install start files do_libc_start_files() { local cvs + local -a extra_config # Needed only in the NPTL case. Otherwise, return. [ "${CT_THREADS}" = "nptl" ] || return 0 @@ -260,26 +271,25 @@ do_libc_start_files() { CT_DoLog EXTRA "Configuring C library" # Add some default glibc config options if not given by user. - extra_config= case "${CT_LIBC_GLIBC_EXTRA_CONFIG}" in *-tls*) ;; - *) extra_config="${extra_config} --with-tls" + *) extra_config+=("--with-tls") esac case "${CT_SHARED_LIBS}" in - y) extra_config="${extra_config} --enable-shared";; - *) extra_config="${extra_config} --disable-shared";; + y) extra_config+=("--enable-shared");; + *) extra_config+=("--disable-shared");; esac case "${CT_ARCH_FLOAT_HW},${CT_ARCH_FLOAT_SW}" in - y,) extra_config="${extra_config} --with-fp";; - ,y) extra_config="${extra_config} --without-fp";; + y,) extra_config+=("--with-fp");; + ,y) extra_config+=("--without-fp");; esac # Obviously, we want threads, as we come here only for NPTL - extra_config="${extra_config} --with-__thread" + extra_config+=("--with-__thread") addons_config="--enable-add-ons=$(do_libc_add_ons_list ,)" - extra_config="${extra_config} ${addons_config}" + extra_config+=("${addons_config}") - extra_config="${extra_config} $(do_libc_min_kernel_config)" + extra_config+=("$(do_libc_min_kernel_config)") # Add some default CC args glibc_version_major=$(echo ${CT_LIBC_VERSION} |sed -r -e 's/^([[:digit:]]+).*/\1/') @@ -303,7 +313,7 @@ do_libc_start_files() { cross_cc=$(CT_Which "${CT_TARGET}-gcc") CT_DoLog DEBUG "Using gcc for target : '${cross_cc}'" CT_DoLog DEBUG "Configuring with addons : '$(do_libc_add_ons_list ,)'" - CT_DoLog DEBUG "Extra config args passed: '${extra_config}'" + CT_DoLog DEBUG "Extra config args passed: '${extra_config[*]}'" CT_DoLog DEBUG "Extra CC args passed : '${extra_cc_args}'" # Pre-seed the configparms file with values from the config option @@ -330,7 +340,7 @@ do_libc_start_files() { --without-gd \ --with-headers="${CT_HEADERS_DIR}" \ --cache-file=config.cache \ - ${extra_config} \ + "${extra_config[@]}" \ ${CT_LIBC_GLIBC_EXTRA_CONFIG} #TODO: should check whether slibdir has been set in configparms to */lib64 @@ -353,6 +363,7 @@ do_libc_start_files() { # This function builds and install the full glibc do_libc() { local cvs + local -a extra_config CT_DoStep INFO "Installing C library" @@ -367,34 +378,33 @@ do_libc() { # We don't need to be conditional on wether the user did set different # values, as they CT_LIBC_GLIBC_EXTRA_CONFIG is passed after extra_config - extra_config= case "${CT_THREADS}" in - nptl) extra_config="${extra_config} --with-__thread --with-tls";; - linuxthreads) extra_config="${extra_config} --with-__thread --without-tls --without-nptl";; - none) extra_config="${extra_config} --without-__thread --without-nptl" + nptl) extra_config+=("--with-__thread" "--with-tls");; + linuxthreads) extra_config+=("--with-__thread" "--without-tls" "--without-nptl");; + none) extra_config+=("--without-__thread" "--without-nptl") case "${CT_LIBC_GLIBC_EXTRA_CONFIG}" in *-tls*) ;; - *) extra_config="${extra_config} --without-tls";; + *) extra_config+=("--without-tls");; esac ;; esac case "${CT_SHARED_LIBS}" in - y) extra_config="${extra_config} --enable-shared";; - *) extra_config="${extra_config} --disable-shared";; + y) extra_config+=("--enable-shared");; + *) extra_config+=("--disable-shared");; esac case "${CT_ARCH_FLOAT_HW},${CT_ARCH_FLOAT_SW}" in - y,) extra_config="${extra_config} --with-fp";; - ,y) extra_config="${extra_config} --without-fp";; + y,) extra_config+=("--with-fp";; + ,y) extra_config+=("--without-fp";; esac case "$(do_libc_add_ons_list ,)" in "") ;; - *) extra_config="${extra_config} --enable-add-ons=$(do_libc_add_ons_list ,)";; + *) extra_config+=("--enable-add-ons=$(do_libc_add_ons_list ,)");; esac - extra_config="${extra_config} $(do_libc_min_kernel_config)" + extra_config+=("$(do_libc_min_kernel_config)") # Add some default CC args glibc_version_major=$(echo ${CT_LIBC_VERSION} |sed -r -e 's/^([[:digit:]]+).*/\1/') @@ -463,7 +473,7 @@ do_libc() { --disable-sanity-checks \ --cache-file=config.cache \ --with-headers="${CT_HEADERS_DIR}" \ - ${extra_config} \ + "${extra_config[@]}" \ ${CT_LIBC_GLIBC_EXTRA_CONFIG} if grep -l '^install-lib-all:' "${CT_SRC_DIR}/glibc-${cvs}${CT_LIBC_VERSION}/Makerules" > /dev/null; then -- cgit v0.10.2-6-g49f6 From 8dd4a2de0041b41c764292648459cf90353e04db Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Wed, 19 Aug 2009 19:44:44 +0200 Subject: Use bash arrays to store binutils config options diff --git a/scripts/build/binutils/binutils.sh b/scripts/build/binutils/binutils.sh index 17f04fb..ec9c409 100644 --- a/scripts/build/binutils/binutils.sh +++ b/scripts/build/binutils/binutils.sh @@ -17,16 +17,18 @@ do_binutils_extract() { # Build binutils do_binutils() { + local -a extra_config + mkdir -p "${CT_BUILD_DIR}/build-binutils" cd "${CT_BUILD_DIR}/build-binutils" CT_DoStep INFO "Installing binutils" - binutils_opts= # If GMP and MPFR were configured, then use that, # otherwise let binutils find the system-wide libraries, if they exist. if [ "${CT_GMP_MPFR}" = "y" ]; then - binutils_opts="--with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}" + extra_config+=("--with-gmp=${CT_PREFIX_DIR}") + extra_config+=("--with-mpfr=${CT_PREFIX_DIR}") fi CT_DoLog EXTRA "Configuring binutils" @@ -40,7 +42,7 @@ do_binutils() { --disable-nls \ --disable-multilib \ --disable-werror \ - ${binutils_opts} \ + "${extra_config[@]}" \ ${CT_ARCH_WITH_FLOAT} \ ${CT_BINUTILS_EXTRA_CONFIG} \ ${BINUTILS_SYSROOT_ARG} @@ -70,18 +72,27 @@ do_binutils() { # Now on for the target libraries do_binutils_target() { - targets= - [ "${CT_BINUTILS_FOR_TARGET_IBERTY}" = "y" ] && targets="${targets} libiberty" - [ "${CT_BINUTILS_FOR_TARGET_BFD}" = "y" ] && targets="${targets} bfd" - targets="${targets# }" + local -a extra_config + local -a targets + local -a build_targets + local -a install_targets + local t + + [ "${CT_BINUTILS_FOR_TARGET_IBERTY}" = "y" ] && targets+=("libiberty") + [ "${CT_BINUTILS_FOR_TARGET_BFD}" = "y" ] && targets+=("bfd") + for t in "${targets[@]}"; do + build_targets+=("all-${t}") + install_targets+=("install-${t}") + done + - binutils_opts= # If GMP and MPFR were configured, then use that if [ "${CT_GMP_MPFR_TARGET}" = "y" ]; then - binutils_opts="--with-gmp=${CT_SYSROOT_DIR}/usr --with-mpfr=${CT_SYSROOT_DIR}/usr" + extra_config+=("--with-gmp=${CT_SYSROOT_DIR}/usr") + extra_config+=("--with-mpfr=${CT_SYSROOT_DIR}/usr") fi - if [ -n "${targets}" ]; then + if [ "${#targets[@]}" -ne 0 ]; then CT_DoStep INFO "Installing binutils for target" mkdir -p "${CT_BUILD_DIR}/build-binutils-for-target" CT_Pushd "${CT_BUILD_DIR}/build-binutils-for-target" @@ -98,17 +109,14 @@ do_binutils_target() { --enable-static \ --disable-nls \ --disable-multilib \ - ${binutils_opts} \ + "${extra_config[@]}" \ ${CT_ARCH_WITH_FLOAT} \ ${CT_BINUTILS_EXTRA_CONFIG} - build_targets=$(echo "${targets}" |sed -r -e 's/(^| +)/\1all-/g;') - install_targets=$(echo "${targets}" |sed -r -e 's/(^| +)/\1install-/g;') - - CT_DoLog EXTRA "Building binutils' libraries (${targets}) for target" - CT_DoExecLog ALL make ${PARALLELMFLAGS} ${build_targets} - CT_DoLog EXTRA "Installing binutils' libraries (${targets}) for target" - CT_DoExecLog ALL make DESTDIR="${CT_SYSROOT_DIR}" ${install_targets} + CT_DoLog EXTRA "Building binutils' libraries (${targets[*]}) for target" + CT_DoExecLog ALL make ${PARALLELMFLAGS} "${build_targets[@]}" + CT_DoLog EXTRA "Installing binutils' libraries (${targets[*]}) for target" + CT_DoExecLog ALL make DESTDIR="${CT_SYSROOT_DIR}" "${install_targets[@]}" CT_Popd CT_EndStep -- cgit v0.10.2-6-g49f6 From 83a48e12f08e375bddd42ca27eab4896234a42b8 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Wed, 19 Aug 2009 19:44:45 +0200 Subject: Allow setting --enable-cxx-flags on gcc ./configure Some setups require one to pass extra CXX flags at the time of ./configure. Make it easy. diff --git a/config/cc/gcc.in b/config/cc/gcc.in index 3a672b0..01fbfe6 100644 --- a/config/cc/gcc.in +++ b/config/cc/gcc.in @@ -205,6 +205,17 @@ config CC_SJLJ_EXCEPTIONS_DONT_USE endchoice +config CC_ENABLE_CXX_FLAGS + string + prompt "Flags to pass to --enable-cxx-flags" + default "" + help + Enter here the value of the gcc's ./configure option --enable-cxx-flags. + Leave empty if you don't know better. + + Note: just pass in the option _value_, that is only the part that goes + after the '=' sign. + config CC_CORE_EXTRA_CONFIG string prompt "Core gcc extra config" diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh index a79bba9..1737b44 100644 --- a/scripts/build/cc/gcc.sh +++ b/scripts/build/cc/gcc.sh @@ -309,6 +309,9 @@ do_cc() { extra_config+=("--with-cloog=${CT_PREFIX_DIR}") extra_config+=("--with-mpc=${CT_PREFIX_DIR}") fi + if [ -n "${CC_ENABLE_CXX_FLAGS}" ]; then + extra_config+=("--enable-cxx-flags=${CC_ENABLE_CXX_FLAGS}") + fi CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'" -- cgit v0.10.2-6-g49f6