Commit 24bcdaaf authored by tonu@x153.internalnet's avatar tonu@x153.internalnet

Added CPU automatic detection. It examines /proc/cpuinfo (if exists) and finds...

Added CPU automatic detection. It examines /proc/cpuinfo (if exists) and finds out flags for -mcpu and -march.
TODO is --with-cpu configure option to force some other processor type.
Problem is not big as any Intel 686+ CPU will use -mcpu=pentiumpro anyway. Exceptions are Athlons and 586 processors.
parent d9737f20
...@@ -40,7 +40,7 @@ c_warnings="$global_warnings -Wunused" ...@@ -40,7 +40,7 @@ c_warnings="$global_warnings -Wunused"
cxx_warnings="$global_warnings -Woverloaded-virtual -Wextern-inline -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor" cxx_warnings="$global_warnings -Woverloaded-virtual -Wextern-inline -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor"
alpha_cflags="-mcpu=ev6 -Wa,-mev6" # Not used yet alpha_cflags="-mcpu=ev6 -Wa,-mev6" # Not used yet
pentium_cflags="-mpentiumpro" pentium_cflags=""
sparc_cflags="" sparc_cflags=""
# be as fast as we can be without losing our ability to backtrace # be as fast as we can be without losing our ability to backtrace
......
...@@ -642,6 +642,53 @@ fi ...@@ -642,6 +642,53 @@ fi
AC_MSG_RESULT($ac_cv_conv_longlong_to_float) AC_MSG_RESULT($ac_cv_conv_longlong_to_float)
]) ])
AC_DEFUN(MYSQL_CHECK_CPU,
AC_CACHE_CHECK([if compiler supports optimizations for current cpu], mysql_cv_cpu,[
ac_save_CFLAGS="$CFLAGS"
if test -r /proc/cpuinfo ; then
cpuinfo="cat /proc/cpuinfo"
cpu_family=`$cpuinfo | grep 'cpu family' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -1`
cpu_vendor=`$cpuinfo | grep 'vendor_id' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -1`
fi
if test "$cpu_vendor" = "AuthenticAMD"; then
if test $cpu_family>=6; then
cpu_set="athlon pentiumpro k5 pentium i486 i386";
elif test $cpu_family=5; then
cpu_set="k5 pentium i486 i386";
elif test $cpu_family=4; then
cpu_set="i486 i386"
else
cpu_set="i386"
fi
elif test "$cpu_vendor" = "GenuineIntel"; then
if test $cpu_family>=6; then
cpu_set=" pentiumpro pentium i486 i386";
elif test $cpu_family=5; then
cpu_set="pentium i486 i386";
elif test $cpu_family=4; then
cpu_set="i486 i386"
else
cpu_set="i386"
fi
fi
for ac_arg in $cpu_set;
do
CFLAGS="$ac_save_CFLAGS -mcpu=$ac_arg -march=$ac_arg"
echo "trying $ac_arg";
AC_TRY_COMPILE([],[int i],mysql_cv_cpu=$ac_arg; break;, mysql_cv_cpu="unknown")
done
if test "$mysql_cv_cpu" = "unknown"
then
CFLAGS="$ac_save_CFLAGS"
AC_MSG_RESULT(none)
else
AC_MSG_RESULT($mysql_cv_cpu)
fi
]))
AC_DEFUN(MYSQL_CHECK_VIO, [ AC_DEFUN(MYSQL_CHECK_VIO, [
AC_ARG_WITH([vio], AC_ARG_WITH([vio],
[\ [\
......
...@@ -1673,6 +1673,7 @@ AC_ARG_WITH(embedded-server, ...@@ -1673,6 +1673,7 @@ AC_ARG_WITH(embedded-server,
[with_embedded_server=no] [with_embedded_server=no]
) )
MYSQL_CHECK_CPU
MYSQL_CHECK_MYSQLFS MYSQL_CHECK_MYSQLFS
MYSQL_CHECK_VIO MYSQL_CHECK_VIO
MYSQL_CHECK_OPENSSL MYSQL_CHECK_OPENSSL
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment