#! /bin/bash
# $Id$
-renice +19 -p $$; ionice -c3 -p $$
+#renice +19 -p $$; ionice -c3 -p $$
+renice +10 -p $$; ionice -c3 -p $$
# Do not use for ctags - it would override $PATH:
# PS1=x; . ~/.bashrc
target=
targets=
configure="./configure"
-debug="-ggdb2"
-ldflags="-lmcheck"
+# >=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"
+mcheck=""
+#mcheck="-lmcheck"
fast=false
readline=""
+disablebinutils="--disable-binutils --disable-gas --disable-gold --disable-gprof --disable-ld"
while true
do
if [ "$1" = "-s" ];then
# -O0 is important to override GCC -O2.
debug="-O0 -s"
- #ldflags=""
+ shift
+ continue
+ fi
+
+ if [ "$1" = "--asan" ];then
+ asan="-fsanitize=address"
+ 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
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"
test -z "$CC" && CC=gcc
: >errs1.c
- for flags in \
- "$debug -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4" \
- "$debug -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions" \
- "" \
+ # -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
- "$CC" $flags -c errs1.c -o /dev/null && break
+ # 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="$ldflags"
+ export LDFLAGS="$mcheck $asan"
- time nice "$configure" $target $targets $customss $readline --enable-debug --disable-sim --enable-gold --enable-plugins $maintainer $werror --with-separate-debug-dir=/usr/lib/debug "$@"
+ 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)) &