Hemmann, Volker Armin wrote:
On Thursday 02 October 2003 07:38, Sebastian Bergmann wrote:
Norberto Bensa wrote:
I'm rebuilding the whole system (including kernel) with -Os
What is the recommended way to set CFLAGS for the kernel?
there is no recommended way to set kernel CFLAGS. Setting CFLAGS for kernel is not recommended ;o)
#!/bin/bash
#This script is Linux specific #It should work on any gcc >= 2.95 at least #these apply to any arch (just here for reference) unsafe_math_opts="-ffast-math -fno-math-errno -funsafe-math-optimizations -fno-trapping-math" gcc_version=`gcc -dumpversion | sed 's/\([0-9]\{1,\}\.[0-9]\{1,\}\)\.*\([0-9]\{1,\}\)\{0,1\}/\1\2/'` IFS=":" while read name value; do unset IFS name=`echo $name` value=`echo $value` IFS=":" if [ "$name" == "vendor_id" ]; then vendor_id="$value" elif [ "$name" == "cpu family" ]; then cpu_family="$value" elif [ "$name" == "model" ]; then cpu_model="$value" elif [ "$name" == "flags" ]; then flags="$value" fi done < /proc/cpuinfo unset IFS if [ "$vendor_id" == "AuthenticAMD" ]; then if [ "$cpu_family" == "4" ]; then _CFLAGS="$_CFLAGS -march=i486" elif [ "$cpu_family" == "5" ]; then if [ "$cpu_model" -lt "4" ]; then _CFLAGS="$_CFLAGS -march=pentium" elif [ "$cpu_model" == "6" ] || [ "$cpu_model" == "7" ]; then _CFLAGS="$_CFLAGS -march=k6" elif [ "$cpu_model" == "8" ] || [ "$cpu_model" == "12" ]; then if expr $gcc_version '>=' 3.1 >/dev/null; then _CFLAGS="$_CFLAGS -march=k6-2" else _CFLAGS="$_CFLAGS -march=k6" fi elif [ "$cpu_model" == "9" ] || [ "$cpu_model" == "13" ]; then if expr $gcc_version '>=' 3.1 >/dev/null; then _CFLAGS="$_CFLAGS -march=k6-3" else _CFLAGS="$_CFLAGS -march=k6" fi fi elif [ "$cpu_family" == "6" ]; then if [ "$cpu_model" -le "3" ]; then if expr $gcc_version '>=' 3.0 >/dev/null; then _CFLAGS="$_CFLAGS -march=athlon" else _CFLAGS="$_CFLAGS -march=k6" fi elif [ "$cpu_model" == "4" ]; then if expr $gcc_version '>=' 3.1 >/dev/null; then _CFLAGS="$_CFLAGS -march=athlon-tbird" elif expr $gcc_version '>=' 3.0 >/dev/null; then _CFLAGS="$_CFLAGS -march=athlon" else _CFLAGS="$_CFLAGS -march=k6" fi elif [ "$cpu_model" -ge "6" ]; then #athlon-{4,xp,mp} if expr $gcc_version '>=' 3.1 >/dev/null; then _CFLAGS="$_CFLAGS -march=athlon-xp" elif expr $gcc_version '>=' 3.0 >/dev/null; then _CFLAGS="$_CFLAGS -march=athlon" else _CFLAGS="$_CFLAGS -march=k6" fi fi fi else #everything else "GenuineIntel" if [ "$cpu_family" == "3" ]; then _CFLAGS="$_CFLAGS -march=i386" elif [ "$cpu_family" == "4" ]; then _CFLAGS="$_CFLAGS -march=i486" elif [ "$cpu_family" == "5" ] && expr $gcc_version '<' 3.1 >/dev/null; then _CFLAGS="$_CFLAGS -march=pentium" elif [ "$cpu_family" -ge "6" ] && expr $gcc_version '<' 3.1 >/dev/null; then _CFLAGS="$_CFLAGS -march=pentiumpro" elif [ "$cpu_family" == "5" ]; then if [ "$cpu_model" != "4" ]; then _CFLAGS="$_CFLAGS -march=pentium" else _CFLAGS="$_CFLAGS -march=pentium-mmx" #No overlap with other vendors fi elif [ "$cpu_family" == "6" ]; then if echo "$flags" | grep -vq cmov; then #gcc incorrectly assumes i686 always has cmov _CFLAGS="$_CFLAGS -march=pentium -mcpu=pentiumpro" #VIA CPUs exhibit this else if [ "$cpu_model" == "0" ] || [ "$cpu_model" == "1" ]; then _CFLAGS="$_CFLAGS -march=pentiumpro" elif [ "$cpu_model" -ge "3" ] && [ "$cpu_model" -le "6" ]; then #4 invalid _CFLAGS="$_CFLAGS -march=pentium2" elif [ "$cpu_model" -ge "7" ] && [ "$cpu_model" -le "11" ]; then #9 invalid _CFLAGS="$_CFLAGS -march=pentium3" fi fi elif [ "$cpu_family" == "15" ]; then _CFLAGS="$_CFLAGS -march=pentium4" fi fi if expr $gcc_version '>=' 3.1 >/dev/null; then if echo "$flags" | grep -q sse2; then _CFLAGS="$_CFLAGS -mfpmath=sse -msse2" elif echo "$flags" | grep -q sse; then _CFLAGS="$_CFLAGS -mfpmath=sse -msse" fi if echo "$flags" | grep -q mmx; then _CFLAGS="$_CFLAGS -mmmx" fi if echo "$flags" | grep -q 3dnow; then _CFLAGS="$_CFLAGS -3dnow" fi fi echo "$_CFLAGS"
-- [EMAIL PROTECTED] mailing list