summaryrefslogtreecommitdiff
path: root/BUILD
diff options
context:
space:
mode:
authorunknown <msvensson@neptunus.(none)>2005-04-27 12:50:37 +0200
committerunknown <msvensson@neptunus.(none)>2005-04-27 12:50:37 +0200
commit78f89a729a962f7a88869a3d5e50ca493391b2a4 (patch)
tree666dbd45ebcb68e18dedf88cf17571c835bae608 /BUILD
parentabf4e93d8285c8e73df85f3056fd7ce81cafad13 (diff)
downloadmariadb-git-78f89a729a962f7a88869a3d5e50ca493391b2a4.tar.gz
Bug#9263 GCC4: -mcpu is depricated, use -mtune or -march instead
- Made a script that selects the best compiler optimizations for the current cpu. - Use the script from BUILD/SETUP.sh BUILD/SETUP.sh: Run check-cpu and use the compiler optimization flags it outputs
Diffstat (limited to 'BUILD')
-rwxr-xr-xBUILD/SETUP.sh13
-rwxr-xr-xBUILD/check-cpu77
2 files changed, 85 insertions, 5 deletions
diff --git a/BUILD/SETUP.sh b/BUILD/SETUP.sh
index e048ad723ab..8bb281f20e9 100755
--- a/BUILD/SETUP.sh
+++ b/BUILD/SETUP.sh
@@ -53,11 +53,14 @@ max_leave_isam_configs="--with-innodb --with-bdb --with-ndbcluster --with-archiv
max_no_es_configs="$max_leave_isam_configs --without-isam"
max_configs="$max_no_es_configs --with-embedded-server"
-alpha_cflags="-mcpu=ev6 -Wa,-mev6" # Not used yet
-amd64_cflags="-DBIG_TABLES"
-pentium_cflags="-mcpu=pentiumpro"
-pentium64_cflags="-mcpu=nocona -m64"
-ppc_cflags="-mpowerpc -mcpu=powerpc"
+path=`dirname $0`
+. "$path/check-cpu"
+
+alpha_cflags="$check_cpu_cflags -Wa,-m$cpu_flag"
+amd64_cflags="$check_cpu_cflags -DBIG_TABLES"
+pentium_cflags="$check_cpu_cflags"
+pentium64_cflags="$check_cpu_cflags -m64"
+ppc_cflags="$check_cpu_cflags"
sparc_cflags=""
# be as fast as we can be without losing our ability to backtrace
diff --git a/BUILD/check-cpu b/BUILD/check-cpu
new file mode 100755
index 00000000000..633aa9e8a00
--- /dev/null
+++ b/BUILD/check-cpu
@@ -0,0 +1,77 @@
+#!/bin/sh
+#
+# Check cpu of current machine and find the
+# best compiler optimization flags for gcc
+#
+#
+
+if test -r /proc/cpuinfo ; then
+ cpuinfo="cat /proc/cpuinfo"
+ cpu_family=`$cpuinfo | grep 'family' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -1`
+ if test -z "$cpu_family" ; then
+ cpu_family=`$cpuinfo | grep 'cpu' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -1`
+ fi
+ cpu_vendor=`$cpuinfo | grep 'vendor_id' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -1`
+ model_name=`$cpuinfo | grep 'model name' | cut -d ':' -f 2 | head -1`
+ if test -z "$model_name" ; then
+ model_name=`$cpuinfo | grep 'cpu model' | cut -d ':' -f 2 | head -1`
+ fi
+ if test -z "$model_name" ; then
+ model_name=`uname -m`
+ fi
+else
+ exit 0
+fi
+
+case "$cpu_family--$model_name" in
+ Alpha*EV6*)
+ cpu_flag="ev6";
+ ;;
+ *Xeon*)
+ cpu_flag="nocona";
+ ;;
+ *Pentium*4*CPU*)
+ cpu_flag="pentium4";
+ ;;
+ *Athlon*64*)
+ cpu_flag="athlon64";
+ ;;
+ *Athlon*)
+ cpu_flag="athlon";
+ ;;
+ *Itanium*)
+ # Don't need to set any flags for itanium(at the moment)
+ cpu_flag="";
+ ;;
+ *ppc)
+ cpu_flag="powerpc";
+ ;;
+ *)
+ cpu_flag="i386";
+ ;;
+esac
+
+echo "cpu_flag: $cpu_flag"
+
+if test -z "$CC" ; then
+ cc="gcc";
+else
+ cc=$CC
+
+fi
+
+cc_ver=`$cc --version | sed 1q`
+cc_verno=`echo $cc_ver | sed -e 's/[^0-9. ]//g; s/^ *//g; s/ .*//g'`
+
+case "$cc_ver--$cc_verno" in
+ *GCC*--3.4*|*GCC*--3.5*|*GCC*--4.*)
+ check_cpu_cflags="-mtune=$cpu_flag -march=$cpu_flag"
+ ;;
+ *GCC*)
+ check_cpu_cflags="-mcpu=$cpu_flag -march=$cpu_flag"
+ ;;
+ *)
+ check_cpu_cflags=""
+ ;;
+esac
+echo $check_cpu_cflags