#! /bin/bash # $Id$ #renice +19 -p $$; ionice -c3 -p $$ renice +10 -p $$; ionice -c3 -p $$ # Do not use for ctags - it would override $PATH: # PS1=x; . ~/.bashrc function ctags {(unset ctags; PS1=x; . ~/.bashrc; ctags; );} customss="--enable-static --disable-shared" customm="-m64" target= targets= configure="./configure" # >=4.7 has small macros section. if gcc --version|perl -ne 'exit(!(/(\d+)\.(\d+)/&&($1>4||($1==4&&$2>=7))));';then debug="-g3" else debug="-g2" fi asan="" #asan="-fsanitize=address -static-libasan" mcheck="" #mcheck="-lmcheck" fast=false readline="" disablebinutils="--disable-binutils --disable-gas --disable-gold --disable-gprof --disable-ld" while true do if [ "$1" = "--origss" ];then customss= shift continue fi if [ "$1" = "--fast" ];then fast=true shift continue fi if [ "$1" = "--shared" ];then customss="--disable-static --enable-shared" shift continue fi if [ "$1" = "-m" ];then customm= shift continue fi if [ "$1" = "-m32" ];then customm=-m32 case `uname -m` in i?86|x86_64|ia64) target=i386-unknown-linux-gnu ;; ppc*) target=powerpc64-unknown-linux-gnu ;; s390*) target=s390-unknown-linux-gnu ;; esac shift continue fi if [ "${1#*/configure}" != "$1" ];then configure="$1" shift continue fi if [ "$1" = "-s" ];then # -O0 is important to override GCC -O2. debug="-O0 -s" shift continue fi if [ "$1" = "--asan" ];then asan="-fsanitize=address -static-libasan" shift continue fi if [ "$1" = "--noasan" ];then asan="" shift continue fi if [ "$1" = "--nomcheck" ];then mcheck="" shift continue fi if [ "$1" = "--binutils" ];then disablebinutils="" shift continue fi break done rm -f errs1.ok ( set -ex find -name config.cache|xargs rm -f # sourceware.org? if test -f `dirname $configure`/bfd/elf64-x86-64.c \ -o -f `dirname $configure`/gcc/reload.c;then maintainer="" else : # maintainer="--enable-maintainer-mode" fi if test -f `dirname $configure`/bfd/elf64-x86-64.c;then test -f g77 || (test -f /usr/bin/gfortran && ln -s /usr/bin/gfortran g77) fi if ! $fast;then targets="$targets --enable-64-bit-bfd" fi if ! $fast && test -f `dirname $configure`/bfd/elf64-x86-64.c -a '(' -d CVS -o -d .git ')';then targets="$targets --enable-targets=all" fi if test ! -d readline;then # $fast || targets="$targets --with-system-readline" fi if test -f `dirname $configure`/gcc/reload.c;then werror="--disable-werror" customm="" # --disable-static would fail on finding built libstdc++ due to -static-libstdc++. # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49829 #customss="" customss="--disable-static --enable-shared" else werror="" fi if test -d readline/doc && ! test -e readline/readline.c;then # Fedora gdb.spec prep. readline="--with-system-readline" fi test -z "$CC" && CC=gcc : >errs1.c # -Wp,-D_FORTIFY_SOURCE=2: /usr/include/features.h:329:3: error: #warning _FORTIFY_SOURCE requested but disabled [-Werror=cpp] for flags in \ "$debug -pipe -Wall -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -ftrack-macro-expansion=0 -fno-diagnostics-show-caret $asan" \ "$debug -pipe -Wall -fexceptions -fstack-protector --param=ssp-buffer-size=4 -ftrack-macro-expansion=0 -fno-diagnostics-show-caret $asan" \ "$debug -pipe -Wall -fexceptions -fstack-protector --param=ssp-buffer-size=4 -ftrack-macro-expansion=0 -fno-diagnostics-show-caret" \ "$debug -pipe -Wall -fexceptions -fstack-protector --param=ssp-buffer-size=4" \ "$debug -pipe -Wall -fexceptions" \ "" \ ;do if [ -z "$flags" ];then rm -f errs1.c echo >&2 "flags error" exit 1 fi # Use -Werror: # cc1: warnings being treated as errors # archive.c:1: error: -fstack-protector not supported for this target "$CC" $flags -Werror -c errs1.c -o /dev/null && break done if test -n "$customm" && "$CC" $customm -c errs1.c -o /dev/null;then flags="$customm $flags" fi rm -f errs1.c if ! echo "$flags"|grep -q 'fsanitize=address';then asan="" fi export CFLAGS="$flags" export CXXFLAGS="$flags" export GCJFLAGS="$flags" export CFLAGS_FOR_TARGET="$flags" export CXXFLAGS_FOR_TARGET="$flags" export LDFLAGS="$mcheck $asan" time nice "$configure" $target $targets $customss $readline $disablebinutils --enable-debug --disable-sim $maintainer $werror --with-separate-debug-dir=/usr/lib/debug --without-guile "$@" # --enable-gold --enable-plugins (ctags; test -d gdb && (cd gdb; ctags; cd testsuite; ctags; cd ../gdbserver; ctags)) & errs2 touch errs1.ok ) 2>&1|tee errs1 test -f errs1.ok rc=$? rm -f errs1.ok exit $rc