[Lunar-commits] <moonbase> gcc: version bumped to 4.5.1.

Florin Braescu florin at lunar-linux.org
Wed Sep 1 09:21:11 CEST 2010


commit d21f4d1b4bb7db845e3f6b78681e2d4661bb5d75
Author: Florin Braescu <florin at lunar-linux.org>
Date:   Wed Sep 1 10:21:11 2010 +0300

    gcc: version bumped to 4.5.1.
    
    GCC now requires the MPC library in order to build.
    Many optimizations and bugfixes.
    Some obsolete platforms were removed.
---
 compilers/gcc/BUILD                            |    4 +-
 compilers/gcc/BUILD.x86_64                     |    4 +-
 compilers/gcc/DEPENDS                          |    3 +-
 compilers/gcc/DETAILS                          |    9 +-
 compilers/gcc/plugin.d/optimize-gcc_4_4.plugin |  601 ------------------------
 compilers/gcc/plugin.d/optimize-gcc_4_5.plugin |  601 ++++++++++++++++++++++++
 6 files changed, 615 insertions(+), 607 deletions(-)

diff --git a/compilers/gcc/BUILD b/compilers/gcc/BUILD
index 7fcc411..ecab117 100644
--- a/compilers/gcc/BUILD
+++ b/compilers/gcc/BUILD
@@ -1,5 +1,7 @@
 (
 
+  patch_it $SOURCE_CACHE/$SOURCE2 1  &&
+
   mkdir BUILD  &&
   cd BUILD     &&
 
@@ -25,7 +27,7 @@
                $OPTS                                 &&
 
   make CFLAGS='-O' LIBCFLAGS='-g -O2' LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap-lean  &&
-  prepare_install  && 
+  prepare_install  &&
   make install
 
 ) > $C_FIFO 2>&1
diff --git a/compilers/gcc/BUILD.x86_64 b/compilers/gcc/BUILD.x86_64
index 6ed319d..78b53a7 100644
--- a/compilers/gcc/BUILD.x86_64
+++ b/compilers/gcc/BUILD.x86_64
@@ -1,5 +1,7 @@
 (
 
+  patch_it $SOURCE_CACHE/$SOURCE2 1  &&
+
   mkdir BUILD  &&
   cd BUILD     &&
 
@@ -26,7 +28,7 @@
                $OPTS                                 &&
 
   make CFLAGS='-O' LIBCFLAGS='-g -O2' LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap-lean  &&
-  prepare_install  && 
+  prepare_install  &&
   make install
 
 ) > $C_FIFO 2>&1
diff --git a/compilers/gcc/DEPENDS b/compilers/gcc/DEPENDS
index b68f223..be0a697 100644
--- a/compilers/gcc/DEPENDS
+++ b/compilers/gcc/DEPENDS
@@ -1,3 +1,4 @@
 depends gmp
-depends mpfr
+depends libmpc
+
 optional_depends "cloog-ppl"  "" "" "for Graphite Optimizer"
diff --git a/compilers/gcc/DETAILS b/compilers/gcc/DETAILS
index 80fc1be..69b1d00 100644
--- a/compilers/gcc/DETAILS
+++ b/compilers/gcc/DETAILS
@@ -1,13 +1,16 @@
           MODULE=gcc
-         VERSION=4.4.3
+         VERSION=4.5.1
           SOURCE=$MODULE-$VERSION.tar.bz2
+         SOURCE2=$MODULE-4.5.0-python.patch.bz2
    SOURCE_URL[0]=$GNU_URL/gcc/$MODULE-$VERSION
    SOURCE_URL[1]=ftp://gcc.gnu.org/pub/gcc/releases/gcc-$VERSION
    SOURCE_URL[2]=http://www.online-mirror.org/gcc/$MODULE-$VERSION
-      SOURCE_VFY=sha1:619766282734728539ce58a5c383cb371f1999c7
+     SOURCE2_URL=$PATCH_URL
+      SOURCE_VFY=sha1:78809acdaef48e74165efe3289cb1a3cb344e406
+     SOURCE2_VFY=sha1:7c1fc0b526b74cce301b85acee04011ed6e5aa5a
         WEB_SITE=http://gcc.gnu.org
          ENTERED=20020628
-         UPDATED=20100122
+         UPDATED=20100901
            SHORT="GNU compiler collection"
 
 cat << EOF
diff --git a/compilers/gcc/plugin.d/optimize-gcc_4_4.plugin b/compilers/gcc/plugin.d/optimize-gcc_4_4.plugin
deleted file mode 100644
index 59429bb..0000000
--- a/compilers/gcc/plugin.d/optimize-gcc_4_4.plugin
+++ /dev/null
@@ -1,601 +0,0 @@
-#
-# gcc-4.4.x compiler optimizations plugin
-#
-
-plugin_compiler_gcc_4_4_optimize()
-{
-  if [ "${LUNAR_COMPILER:-GCC_4_4}" != "GCC_4_4" ]; then
-    return 2
-  fi
-
-  debug_msg "plugin_compiler_gcc_4_4_optimize($@)"
-  if [ -f /etc/lunar/local/optimizations.GCC_4_4 ]; then
-    . /etc/lunar/local/optimizations.GCC_4_4
-  fi
-
-  # some local macro's
-  cflags_add()
-  {
-    CFLAGS="$CFLAGS $@"
-  }
-
-  cxxflags_add()
-  {
-    CXXFLAGS="$CXXFLAGS $@"
-  }
-
-  cppflags_add()
-  {
-    CPPFLAGS="$CPPFLAGS $@"
-  }
-
-  c_cxx_flags_add()
-  {
-    cflags_add $@
-    cxxflags_add $@
-  }
-
-  # CFLAGS/CXXFLAGS - base optimization
-  case $BOPT in
-    None)    c_cxx_flags_add "-O0" ;;
-    Small)   c_cxx_flags_add "-Os" ;;
-    Fast)    c_cxx_flags_add "-O1" ;;
-    Faster)  c_cxx_flags_add "-O2" ;;
-    Fastest) c_cxx_flags_add "-O3" ;;
-  esac
-
-  # CFLAGS -march cpu-specific optimization
-  if [ -n "$CPU" ]; then
-    c_cxx_flags_add "-march=$CPU"
-  fi
-
-  # GCC specific extra optimizations
-  for SP in ${SPD[@]}; do
-    case $SP in
-      Speedy)   c_cxx_flags_add "-funroll-loops" ;;
-      Regparm)  c_cxx_flags_add "-mregparm=3" ;;
-      Risky)    c_cxx_flags_add "-ffast-math" ;;
-      Pointers) c_cxx_flags_add "-fomit-frame-pointer" ;;
-      Siblings) c_cxx_flags_add "-foptimize-sibling-calls" ;;
-      Profiling)
-        c_cxx_flags_add "-fprofile-arcs"
-        set_local_config "KEEP_SOURCE" "on"
-      ;;
-      Branching) c_cxx_flags_add "-fbranch-probabilities" ;;
-      Aliasing)  c_cxx_flags_add "-fstrict-aliasing" ;;
-      Cprop)     c_cxx_flags_add "-fno-cprop-registers" ;;
-      Float)     c_cxx_flags_add "-ffloat-store" ;;
-      Address)   c_cxx_flags_add "-fforce-addr" ;;
-      Align)     c_cxx_flags_add "-falign-functions -falign-loops -falign-jumps" ;;
-      Expensive) c_cxx_flags_add "-fexpensive-optimizations" ;;
-      Doubles)   c_cxx_flags_add "-malign-double" ;;
-      Tracer)    c_cxx_flags_add "-ftracer" ;;
-      Blocks)    c_cxx_flags_add "-freorder-blocks" ;;
-    esac
-  done
-
-  # STACK - kind of dangerous - shouldn't we just remove this?
-  if (( STACK > 0 )) ; then
-    c_cxx_flags_add "-mpreferred-stack-boundary=$STACK"
-    cppflags_add "-mpreferred-stack-boundary=$STACK"
-  fi
-
-  for XTR in ${XTRA[@]}; do
-    case $XTR in
-      MMX)     c_cxx_flags_add "-mmmx" ;;
-      SSE)     c_cxx_flags_add "-msse" ;;
-      SSE2)    c_cxx_flags_add "-msse2" ;;
-      SSE3)    c_cxx_flags_add "-msse3" ;;
-      SSSE3)    c_cxx_flags_add "-mssse3" ;;
-      SSE4)    c_cxx_flags_add "-msse4" ;;
-      SSE4.1)    c_cxx_flags_add "-msse4.1" ;;
-      SSE4.2)    c_cxx_flags_add "-msse4.2" ;;
-      SSE4A)    c_cxx_flags_add "-msse4a" ;;
-      SSE5)    c_cxx_flags_add "-msse5" ;;
-      3dnow)    c_cxx_flags_add "-m3dnow" ;;
-      Altivec) c_cxx_flags_add "-maltivec" ;;
-      AVX)    c_cxx_flags_add "-mavx" ;;
-      AES)    c_cxx_flags_add "-maes" ;;
-      PCLMUL)    c_cxx_flags_add "-mpclmul" ;;
-      POPCNT)    c_cxx_flags_add "-mpopcnt" ;;
-      ABM)    c_cxx_flags_add "-mabm" ;;
-    esac
-  done
-
-  case $FPM in
-    x387) c_cxx_flags_add "-mfpmath=387" ;;
-    SSE)  c_cxx_flags_add "-mfpmath=sse" ;;
-    Both) c_cxx_flags_add "-mfpmath=both" ;;
-  esac
-
-  for OPT in ${CC_OPTS[@]}; do
-    case $OPT in
-      Deprecated)
-        cxxflags_add "-Wno-deprecated"
-        ;;
-      Debug)
-        c_cxx_flags_add "-g"
-        ;;
-      Pipe)
-        c_cxx_flags_add "-pipe"
-        ;;
-    esac
-  done
-
-  CC=gcc
-  CXX=g++
-  CPP=cpp
-
-  if [ -n "$MYCFLAGS" ]; then
-  CFLAGS=$MYCFLAGS
-  CXXFLAGS=$MYCFLAGS
-  fi
-  if [ -n "$MYCXXFLAGS" ]; then
-  CXXFLAGS=$MYCXXFLAGS
-  fi
-
-  export CFLAGS CXXFLAGS CPPFLAGS
-  export CC CXX CPP
- 
-  verbose_msg "CC=\"$CC\""
-  verbose_msg "CXX=\"$CXX\""
-  verbose_msg "CPP=\"$CPP\""
-  verbose_msg "CFLAGS=\"$CFLAGS\""
-  verbose_msg "CXXFLAGS=\"$CXXFLAGS\""
-  verbose_msg "CPPFLAGS=\"$CPPFLAGS\""
-
-  return 2
-}
-
-
-plugin_compiler_gcc_4_4_menu()
-{
-  # The main code calls this function WITHOUT $1 to find out which
-  # compiler optimization plugins exist. It then returns the plugin
-  # identifier which can be saved in $LUNAR_COMPILER as the user's
-  # choice for COMPILERS
-  if [ -z "$1" ]; then
-    echo "GCC_4_4"
-    echo "GNU C Compiler suite version 4.4.x"
-    return 2
-  elif [ "$1" != "GCC_4_4" ]; then
-    # we don't display anything when the user selected a
-    # different menu
-    return 2
-  fi
-
-  # now we are done with determining if we are really the menu
-  # that the user wants - so we can display it
-  menu() 
-  { 
-    unset RESULT
-    if [ "$1" == "checklist" ]; then
-      RESULT=`$DIALOG --no-cancel --item-help --separate-output --checklist "$2" 0 0 0 "${OPTIONS[@]}"`
-      if [ $? != 0 ]; then
-        return 1
-      fi
-    elif [ "$1" == "radiolist" ]; then
-      RESULT=`$DIALOG --no-cancel --item-help --radiolist "$2" 0 0 0 "${OPTIONS[@]}"`
-      if [ $? != 0 ]; then
-        return 1
-      fi
-    fi
-    RESULT=$(echo $RESULT | sed -e 's:^"::' -e 's:"$::')
-    return 0
-  }
-
-  save_optimizations()
-  {
-    debug_msg "save_optimizations($@)"
-    cat >/etc/lunar/local/optimizations.GCC_4_4  <<EOF
-CPU=$CPU
-BOPT=$BOPT
-SPD=( $(echo ${SPD[@]} ) )
-XTRA=( $(echo ${XTRA[@]}) )
-FPM=$FPM
-CC_OPTS=( $(echo ${CC_OPTS[@]} ) )
-STACK=$STACK
-EOF
-  }
-
-  if [ -f /etc/lunar/local/optimizations.GCC_4_4 ]; then
-    . /etc/lunar/local/optimizations.GCC_4_4
-  fi
-
-  export IFS=$'\t\n'
-  TITLE="Lunar Compiler Optimizations"
-
-  SAFE_OPTIMIZATIONS=${SAFE_OPTIMIZATIONS:-on}
-
-  while true; do
-    unset OPTIONS
-    IS_DEFAULT=$([ `get_local_config LUNAR_COMPILER` == "GCC_4_4" ] && echo DEFAULT || get_local_config LUNAR_COMPILER)
-    DEFAULT=${CHOICE:-safe}
-    CHOICE=`$DIALOG --title "$TITLE" --ok-label "Select" --cancel-label "Close" --default-item "$DEFAULT" --item-help --menu "" 0 0 0 $(
-      echo "default"
-      echo "Set this compiler as default  [$IS_DEFAULT]"
-      echo "Enables you to substitute the default C compiler"
-      if [ "$SAFE_OPTIMIZATIONS" == "off" ] ; then
-        echo "safe"
-        echo "Turn on optimization safety   [$SAFE_OPTIMIZATIONS]"
-        echo "Only allow safe optimizations (removes dangerous settings!)"
-      else
-        echo "safe"
-        echo "Turn off optimization safety  [$SAFE_OPTIMIZATIONS]"
-        echo "Allow potentially unsafe optimizations (DANGEROUS!)"
-      fi
-      echo "bopt"
-      echo "Base speed optimization       [$BOPT]"
-      echo "Select the base optimization from -Os, -O0, -O1 etc"
-      echo "cpu"
-      echo "CPU selection                 [$CPU]"
-      echo "Select the target CPU type"
-      if [ "$SAFE_OPTIMIZATIONS" == "off" ] ; then
-        echo "xtra"
-        echo "CPU extensions                [${XTRA[@]}]"
-        echo "Select CPU extensions"
-        echo "spd"
-        echo "Specialized optimizations     [${SPD[@]}]"
-        echo "Select specific compiler flags for expensive and risky optimizations"
-        echo "fpm"
-        echo "Floating point optimizations  [$FPM]"
-        echo "enable specific floating point optimizations"
-      fi
-      echo "cc_opt"
-      echo "General C/C++ options         [${CC_OPTS[@]}]"
-      echo "Select named pipes, warnings on deprecated symbols"
-      if [ "$SAFE_OPTIMIZATIONS" == "off" ] ; then
-        echo "stack"
-        echo "Stack                         [$STACK]"
-        echo "Set the stack size"
-      fi) `
-      if [ $? != 0 ]; then
-        save_optimizations
-        set_local_config SAFE_OPTIMIZATIONS $SAFE_OPTIMIZATIONS
-        return
-      fi
-
-      case $CHOICE in 
-        default)
-          if [ "$IS_DEFAULT" != "DEFAULT" ]; then
-            set_local_config LUNAR_COMPILER GCC_4_4
-            $DIALOG --msgbox "Gcc 4.4 is now the default compiler!" 6 60
-          fi
-          ;;
-        safe)
-          if [ "$SAFE_OPTIMIZATIONS" == "off" ]; then
-            SAFE_OPTIMIZATIONS=on
-            unset SPD XTRA STACK
-            FPM=("None")
-            BOPT=${BOPT//Fastest/Faster}
-          else
-            $DIALOG --defaultno --yes-label "No" --no-label "Yes" --colors --yesno " \Z1*** WARNING ***\n\n\ZnPlease read this carefully. You are about to turn off the optimization safety. This means that you can possibly turn on compiler or linker optimizations that can and will break your box. Not only will the problem most likely occur only days, weeks or months after you turn this switch, but also it can corrupt all your personal data, make your machine unbootable, and cause serious personal distress, headache, loss of vision, heart failure, loss of income, or otherwise very bad things. Before you turn off this option, please think for yourself for a minute and ask yourself: Is it worth it?\n\nOnly use safe optimizations?" 20 70
-            if [ $? == 0 ]; then
-              SAFE_OPTIMIZATIONS=off
-            fi
-          fi
-        ;;
-        bopt)
-          OPTIONS=(
-            "None" "-O0" $( [ "$BOPT" == "None" ] && echo "on" || echo "off" ) "Only default optimizations"
-            "Fast" "-O1" $( [ "$BOPT" == "Fast" ] && echo "on" || echo "off" ) "-O1"
-            "Faster" "-O2" $( [ "$BOPT" == "Faster" ] && echo "on" || echo "off" ) "-O2"
-            "Fastest" "-O3" $( [ "$BOPT" == "Fastest" ] && echo "on" || echo "off" ) "-O3"
-            "Small" "-Os" $( [ "$BOPT" == "Small" ] && echo "on" || echo "off" ) "-Os"
-            )
-          menu radiolist "Choose the base compile-time optimization. Most people will use -O2 or -O3. Note that some modules set their own level." &&
-          BOPT=$RESULT
-        ;;
-        cpu)
-          case $PLATFORM in
-            x86)
-              OPTIONS=(
-                "None" "" $( [ ! "$CPU" ] && echo "on" || echo "off" ) "All processor types"
-                "native" "autodetect" $( [ "$CPU" == "native" ] && echo "on" || echo "off" ) "autodetect CPU at compile time - recommended"
-                "i386" "i386" $( [ "$CPU" == "i386" ] && echo "on" || echo "off" ) "i386 processors"
-                "i486" "i486" $( [ "$CPU" == "i486" ] && echo "on" || echo "off" ) "i486 processors"
-                "i586" "i586 (Pentium)" $( [ "$CPU" == "i586" ] && echo "on" || echo "off" ) "i586 processors, identical to 'pentium'"
-                "pentium-mmx" "pentium-mmx" $( [ "$CPU" == "pentium-mmx" ] && echo "on" || echo "off" ) "Pentium processors with mmx"
-                "i686" "i686 (PentiumPro)" $( [ "$CPU" == "i686" ] && echo "on" || echo "off" ) "i686 processors, identical to 'pentiumpro'"
-                "pentium2" "P2" $( [ "$CPU" == "pentium2" ] && echo "on" || echo "off" ) "Pentium II processors"
-                "pentium3" "P3 (Celeron)" $( [ "$CPU" == "pentium3" ] && echo "on" || echo "off" ) "Pentium III processors"
-                "pentium3m" "P3 mobile (Celeron)" $( [ "$CPU" == "pentium3m" ] && echo "on" || echo "off" ) "Pentium III Mobile processors"
-                "pentium-m" "P3 mobile (Celeron) Low power version" $( [ "$CPU" == "pentium-m" ] && echo "on" || echo "off" ) "Pentium III Mobile processor - low power versions"
-                "pentium4" "P4" $( [ "$CPU" == "pentium4" ] && echo "on" || echo "off" ) "Pentium 4 processors"
-                "pentium4m" "P4 mobile" $( [ "$CPU" == "pentium4m" ] && echo "on" || echo "off" ) "Pentium 4 mobile processors"
-                "core2" "Core 2" $( [ "$CPU" == "core2" ] && echo "on" || echo "off" ) "Intel Core 2 processors"
-                "prescott" "Xeon" $( [ "$CPU" == "prescott" ] && echo "on" || echo "off" ) "Newer Xeons with sse3"
-                "nocona" "nocona" $( [ "$CPU" == "nocona" ] && echo "on" || echo "off" ) "Newer Xeons with sse3 and em64t"
-                "k6" "k6" $( [ "$CPU" == "k6" ] && echo "on" || echo "off" ) "AMD K6 processors"
-                "k6-2" "k6-2" $( [ "$CPU" == "k6-2" ] && echo "on" || echo "off" ) "AMD K6-2 processors"
-                "k6-3" "k6-3" $( [ "$CPU" == "k6-3" ] && echo "on" || echo "off" ) "AMD K6-3 processors"
-                "athlon" "athlon" $( [ "$CPU" == "athlon" ] && echo "on" || echo "off" ) "AMD Athlon processors"
-                "athlon-tbird" "athlon-tbird" $( [ "$CPU" == "athlon-tbird" ] && echo "on" || echo "off" ) "AMD Athlon Thunderbird processors"
-                "athlon-4" "athlon-4" $( [ "$CPU" == "athlon-4" ] && echo "on" || echo "off" ) "AMD Athlon 4 processors"
-                "athlon-xp" "athlon-xp" $( [ "$CPU" == "athlon-xp" ] && echo "on" || echo "off" ) "AMD Athlon XP processors"
-                "athlon-mp" "athlon-mp" $( [ "$CPU" == "athlon-mp" ] && echo "on" || echo "off" ) "AMD athlon MP processors"
-                "k8" "k8" $( [ "$CPU" == "k8" ] && echo "on" || echo "off" ) "AMD K8 processors"
-                "opteron" "opteron" $( [ "$CPU" == "opteron" ] && echo "on" || echo "off" ) "AMD opteron processors"
-                "athlon64" "athlon64" $( [ "$CPU" == "athlon64" ] && echo "on" || echo "off" ) "AMD Athlon 64 processors"
-                "athlon-fx" "athlon-fx" $( [ "$CPU" == "athlon-fx" ] && echo "on" || echo "off" ) "AMD Athlon fx processors"
-                "k8-sse3" "k8-sse3" $( [ "$CPU" == "k8-sse3" ] && echo "on" || echo "off" ) "AMD K8 processors with SSE3"
-                "opteron-sse3" "opteron-sse3" $( [ "$CPU" == "opteron-sse3" ] && echo "on" || echo "off" ) "AMD opteron processors with SSE3"
-                "athlon64-sse3" "athlon64-sse3" $( [ "$CPU" == "athlon64-sse3" ] && echo "on" || echo "off" ) "AMD Athlon 64 processors with SSE3"
-                "amdfam10" "AMD K10 Phenom/new K10 based Opteron family" $( [ "$CPU" == "amdfam10" ] && echo "on" || echo "off" ) "AMD K10 family: Phenom1,2 Athlon2, new Opteron K10 based processors with SSE4A ABM"
-                "barcelona" "barcelona" $( [ "$CPU" == "barcelona" ] && echo "on" || echo "off" ) "AMD K10 family: barcelona core processors with SSE4A ABM"
-                "geode" "geode" $( [ "$CPU" == "geode" ] && echo "on" || echo "off" ) "AMD Geode processors"
-                "winchip-c6" "winchip-c6" $( [ "$CPU" == "winchip-c6" ] && echo "on" || echo "off" ) "IDT Winchip C6 CPU (a 486)"
-                "winchip2" "winchip2" $( [ "$CPU" == "winchip2" ] && echo "on" || echo "off" ) "IDT Winchip2 CPU (a 486)"
-                "c3" "c3" $( [ "$CPU" == "c3" ] && echo "on" || echo "off" ) "Via C3 CPU with MMX and 3dNOW"
-                "c3-2" "c3-2" $( [ "$CPU" == "c3-2" ] && echo "on" || echo "off" ) "Via C3-2 CPU with MMX and SSE"
-                )
-            ;;
-            Alpha)
-              OPTIONS=(
-                "None" "" $( [ ! "$CPU" ] && echo "on" || echo "off" ) "All processor types"
-                "ev4" "ev4" $( [ "$CPU" == "ev4" ] && echo "on" || echo "off" ) "Alpha EV4 (21064)"
-                "ev45" "ev45" $( [ "$CPU" == "ev45" ] && echo "on" || echo "off" ) "Alpha EV45 (21064a)"
-                "ev5" "ev5" $( [ "$CPU" == "ev5" ] && echo "on" || echo "off" ) "Alpha EV5 (21164)"
-                "ev56" "ev56" $( [ "$CPU" == "ev56" ] && echo "on" || echo "off" ) "Alpha EV56 (21164a)"
-                "pca56" "pca56" $( [ "$CPU" == "pca56" ] && echo "on" || echo "off" ) "Alpha pca56 (21164PC)"
-                "ev6" "ev6" $( [ "$CPU" == "ev6" ] && echo "on" || echo "off" ) "Alpha EV6 (21264)"
-                "ev67" "ev67" $( [ "$CPU" == "ev67" ] && echo "on" || echo "off" ) "Alpha EV67 (21264a)"
-                "ev68" "ev68" $( [ "$CPU" == "ev68" ] && echo "on" || echo "off" ) "Alpha EV68 (21264b)"
-                )
-            ;;
-            PowerPC)
-              OPTIONS=(
-                "None" "" $( [ ! "$CPU" ] && echo "on" || echo "off" ) "All processor types"
-                "common" "common" $( [ "$CPU" == "common" ] && echo "on" || echo "off" ) "Common PowerPC"
-                "rios" "rios" $( [ "$CPU" == "rios" ] && echo "on" || echo "off" ) "Rios PowerPC"
-                "rios1" "rios1" $( [ "$CPU" == "rios1" ] && echo "on" || echo "off" ) "Rios1 PowerPC"
-                "rsc" "rsc" $( [ "$CPU" == "rsc" ] && echo "on" || echo "off" ) "RSC PowerPC"
-                "rios2" "rios2" $( [ "$CPU" == "rios2" ] && echo "on" || echo "off" ) "Rios2 PowerPC"
-                "rs64a" "rs64a" $( [ "$CPU" == "rs64a" ] && echo "on" || echo "off" ) "RS64a PowerPC"
-                "403" "403" $( [ "$CPU" == "403" ] && echo "on" || echo "off" ) "403 PowerPC"
-                "505" "505" $( [ "$CPU" == "505" ] && echo "on" || echo "off" ) "505 PowerPC"
-                "601" "601" $( [ "$CPU" == "601" ] && echo "on" || echo "off" ) "601 PowerPC"
-                "602" "602" $( [ "$CPU" == "602" ] && echo "on" || echo "off" ) "602 PowerPC"
-                "603" "603" $( [ "$CPU" == "603" ] && echo "on" || echo "off" ) "603 PowerPC"
-                "603a" "603a" $( [ "$CPU" == "603a" ] && echo "on" || echo "off" ) "603a PowerPC"
-                "604" "604" $( [ "$CPU" == "604" ] && echo "on" || echo "off" ) "604 PowerPC"
-                "604e" "604e" $( [ "$CPU" == "604e" ] && echo "on" || echo "off" ) "604e PowerPC"
-                "620" "620" $( [ "$CPU" == "620" ] && echo "on" || echo "off" ) "620 PowerPC"
-                "630" "630" $( [ "$CPU" == "630" ] && echo "on" || echo "off" ) "630 PowerPC"
-                "740" "740" $( [ "$CPU" == "740" ] && echo "on" || echo "off" ) "740 PowerPC"
-                "7400" "7400" $( [ "$CPU" == "7400" ] && echo "on" || echo "off" ) "7400 PowerPC"
-                "7450" "7450" $( [ "$CPU" == "7450" ] && echo "on" || echo "off" ) "7450 PowerPC"
-                "750" "750" $( [ "$CPU" == "750" ] && echo "on" || echo "off" ) "750 PowerPC"
-                "801" "801" $( [ "$CPU" == "801" ] && echo "on" || echo "off" ) "801 PowerPC"
-                "821" "821" $( [ "$CPU" == "821" ] && echo "on" || echo "off" ) "821 PowerPC"
-                "823" "823" $( [ "$CPU" == "823" ] && echo "on" || echo "off" ) "823 PowerPC"
-                "Power" "Power" $( [ "$CPU" == "Power" ] && echo "on" || echo "off" ) "Power PowerPC"
-                "Power2" "Power2" $( [ "$CPU" == "Power2" ] && echo "on" || echo "off" ) "Power2 PowerPC"
-                "PowerPC" "PowerPC" $( [ "$CPU" == "PowerPC" ] && echo "on" || echo "off" ) "IBM and Apple hardware (Power and PowerPC)"
-                )
-            ;;
-            SPARC)
-              OPTIONS=(
-                "None" "" $( [ ! "$CPU" ] && echo "on" || echo "off" ) "All processor types"
-                "v7" "v7" $( [ "$CPU" == "v7" ] && echo "on" || echo "off" ) "V7 SPARC"
-                "cypress" "cypress" $( [ "$CPU" == "cypress" ] && echo "on" || echo "off" ) "Cypress SPARC"
-                "v8" "v8" $( [ "$CPU" == "v8" ] && echo "on" || echo "off" ) "V8 SPARC"
-                "supersparc" "supersparc" $( [ "$CPU" == "supersparc" ] && echo "on" || echo "off" ) "SuperSPARC"
-                "sparclite" "sparclite" $( [ "$CPU" == "sparclite" ] && echo "on" || echo "off" ) "SPARCLite"
-                "hypersparc" "hypersparc" $( [ "$CPU" == "hypersparc" ] && echo "on" || echo "off" ) "HyperSPARC"
-                "sparclite86x" "sparclite86x" $( [ "$CPU" == "sparclite86x" ] && echo "on" || echo "off" ) "SPARCLite86x"
-                "f930" "f930" $( [ "$CPU" == "f930" ] && echo "on" || echo "off" ) "f930 SPARC"
-                "f934" "f934" $( [ "$CPU" == "f934" ] && echo "on" || echo "off" ) "f934 SPARC"
-                "sparclet" "sparclet" $( [ "$CPU" == "sparclet" ] && echo "on" || echo "off" ) "SPARCLet"
-                "tsc701" "tsc701" $( [ "$CPU" == "tsc701" ] && echo "on" || echo "off" ) "tsc701"
-                "v9" "v9" $( [ "$CPU" == "v9" ] && echo "on" || echo "off" ) "V9 SPARC"
-                "ultrasparc" "ultrasparc" $( [ "$CPU" == "ultrasparc" ] && echo "on" || echo "off" ) "ULTRASPARC"
-                )
-            ;;
-            x86_64)
-              OPTIONS=(
-                "None" "" $( [ ! "$CPU" ] && echo "on" || echo "off" ) "All processor types"
-                "native" "autodetect" $( [ "$CPU" == "native" ] && echo "on" || echo "off" ) "autodetect CPU at compile time - recommended"
-                "x86-64" "x86-64" $( [ "$CPU" == "x86-64" ] && echo "on" || echo "off" ) "Both AMD64 and Intel EM64T machines"
-                "nocona" "nocona" $( [ "$CPU" == "nocona" ] && echo "on" || echo "off" ) "Newer Xeons with sse3 and em64t"
-                "core2" "core2" $( [ "$CPU" == "core2" ] && echo "on" || echo "off" ) "Intel Core2 CPU with em64t SSE3 and SSSE3"
-                "k8" "k8" $( [ "$CPU" == "k8" ] && echo "on" || echo "off" ) "AMD K8 processors"
-                "opteron" "opteron" $( [ "$CPU" == "opteron" ] && echo "on" || echo "off" ) "AMD opteron processors"
-                "athlon64" "athlon64" $( [ "$CPU" == "athlon64" ] && echo "on" || echo "off" ) "AMD Athlon 64 processors"
-                "athlon-fx" "athlon-fx" $( [ "$CPU" == "athlon-fx" ] && echo "on" || echo "off" ) "AMD Athlon fx processors"
-                "k8-sse3" "k8-sse3" $( [ "$CPU" == "k8-sse3" ] && echo "on" || echo "off" ) "AMD K8 processors with SSE3"
-                "opteron-sse3" "opteron-sse3" $( [ "$CPU" == "opteron-sse3" ] && echo "on" || echo "off" ) "AMD opteron processors with SSE3"
-                "athlon64-sse3" "athlon64-sse3" $( [ "$CPU" == "athlon64-sse3" ] && echo "on" || echo "off" ) "AMD Athlon 64 processors with SSE3"
-                "amdfam10" "AMD K10 family Phenom/new  K10 based Opteron" $( [ "$CPU" == "amdfam10" ] && echo "on" || echo "off" ) "AMD K10 family: Phenom1,2 Athlon2, new Opteron K10 family processors with SSE4A ABM"
-                "barcelona" "barcelona" $( [ "$CPU" == "barcelona" ] && echo "on" || echo "off" ) "AMD K10 family: barcelona core processors with SSE4A ABM"
-                )
-            ;;
-          esac
-          menu radiolist "CPU, according to the kernel you have a$(cat /proc/cpuinfo | grep 'model name' | cut -d: -f2 | head -n 1). If you are unsure, use autodetect - anything other is not safe." &&
-          CPU=$RESULT
-        ;;
-        spd)
-          OPTIONS=(
-            "Speedy" "-funroll-loops" $( echo ${SPD[@]} | grep -q "Speedy" && echo "on" || echo "off" ) "Optimize to increase performance of generated code"
-            "Regparm" "-mregparm=3" $( echo ${SPD[@]} | grep -q "Regparm" && echo "on" || echo "off" ) "Pass up to 3 function arguments in registers instead of stack"
-            "Risky" "-ffast-math" $( echo ${SPD[@]} | grep -q "Risky" && echo "on" || echo "off" ) "Optimize to increase performance ... by violating ANSI and IEEE FP rules"
-            "Pointers" "-fomit-frame-pointer" $( echo ${SPD[@]} | grep -q "Pointers" && echo "on" || echo "off" ) "Optimize by omitting frame pointers"
-            "Siblings" "-foptimize-sibling-calls" $( echo ${SPD[@]} | grep -q "Siblings" && echo "on" || echo "off" ) "Optimize sibling calls"
-            "Profiling" "-fprofile-arcs" $( echo ${SPD[@]} | grep -q "Profiling" && echo "on" || echo "off" ) "Generate profiles (For later use with Branching)"
-            "Branching" "-fbranching-probabilities" $( echo ${SPD[@]} | grep -q "Branching" && echo "on" || echo "off" ) "Predict branching (For using profiled sources)"
-            "Aliasing" "-fstrict-aliasing" $( echo ${SPD[@]} | grep -q "Aliasing" && echo "on" || echo "off" ) "Enable strict aliasing (enabled by default -O1 and above)"
-            "Cprop" "-fno-cprop-registers" $( echo ${SPD[@]} | grep -q "Cprop" && echo "on" || echo "off" ) "Reduce scheduling dependencies and remove copies"
-            "Float" "-ffloat-store" $( echo ${SPD[@]} | grep -q "Float" && echo "on" || echo "off" ) "Enable float store"
-            "Address" "-fforce-addr" $( echo ${SPD[@]} | grep -q "Address" && echo "on" || echo "off" ) "Force memory address"
-            "Align" "-falign-functions" $( echo ${SPD[@]} | grep -q "Align" && echo "on" || echo "off" ) "Align functions, loops, and jumps"
-            "Expensive" "-fexpensive-optimizations" $( echo ${SPD[@]} | grep -q "Expensive" && echo "on" || echo "off" ) "Perform expensive optimizations"
-            "Doubles" "-malign-double" $( echo ${SPD[@]} | grep -q "Doubles" && echo "on" || echo "off" ) "Align double, long double, and long long on two word boundaries"
-            "Tracer" "-ftracer" $( echo ${SPD[@]} | grep -q "Tracer" && echo "on" || echo "off" ) "Perform tail duplication to enlarge superblock size."
-            "Blocks" "-freorder-blocks" $( echo ${SPD[@]} | grep -q "Blocks" && echo "on" || echo "off" ) "Reorder basic blocks in order to reduce number of taken branches."
-            )
-          menu checklist "Select additional flags to optimize specific areas of the created code. Note that some of these flags are turned on automatically with -O2 or -O3. See 'man gcc' for more information. None of these options are safe!" &&
-          SPD=($RESULT)
-        ;;
-        fpm)
-          OPTIONS=(
-            "None" "Use compiler default" $([ "$FPM" == "None" ] && echo "on" || echo "off" ) "Use compiler default"
-            )
-          case $PLATFORM in 
-            x86|x86_64)
-              if grep '^fpu' /proc/cpuinfo | grep -qw yes; then
-                OPTIONS=(
-                  ${OPTIONS[@]}
-                  "x387" "Floating point coprocessor" $([ "$FPM" == "x387" ] && echo "on" || echo "off" ) "Classic 387 or higher Floating Point Co-Processor"
-                  )
-              fi
-              if grep -qw sse /proc/cpuinfo; then
-                OPTIONS=(
-                  ${OPTIONS[@]}
-                  "SSE" "Streaming SIMD Extensions" $([ "$FPM" == "SSE" ] && echo "on" || echo "off" ) "Streaming SIMD (Single Instruction, Multiple Data)"
-                  )
-              fi
-              if grep '^fpu' /proc/cpuinfo | grep -qw yes; then
-                OPTIONS=(
-                  ${OPTIONS[@]}
-                  "Both" "x387 and SSE" $([ "$FPM" == "Both" ] && echo "on" || echo "off" ) "Both SSE and 387"
-                  )
-              fi
-            ;;
-            PowerPC)
-              if grep -qw altivec /proc/cpuinfo; then
-                OPTIONS=(
-                  ${OPTIONS[@]}
-                  "Altivec" "PowerPC only" $([ "$FPM" == "Altivec" ] && echo "on" || echo "off" ) "Altivec"
-                  )
-              fi
-            ;;
-          esac
-          unset FLAGS
-          for EXT in fpu sse altivec ; do
-            if grep -qw "$EXT" /proc/cpuinfo ; then
-              FLAGS="$FLAGS $EXT"
-            fi
-          done
-          FLAGS=${FLAGS/fpu/387}
-          FLAGS=${FLAGS/387 sse/387 and sse (both)}
-          menu radiolist "Select available Floating Point Math compile extensions. The kernel reports that this system has: $FLAGS. None of these are safe." &&
-          FPM=$RESULT
-        ;;
-        xtra)
-          unset OPTIONS
-          case $PLATFORM in 
-            x86|x86_64)
-              if grep -qw mmx /proc/cpuinfo; then
-                OPTIONS=(
-                  ${OPTIONS[@]}
-                  "MMX" "MMX" $( echo ${XTRA[@]} | grep -q "MMX" && echo "on" || echo "off" ) "Multi-Media instruction code eXtensions"
-                  )
-              fi
-              if grep -qw sse /proc/cpuinfo; then
-                OPTIONS=(
-                  ${OPTIONS[@]} 
-                  "SSE" "SSE" $( echo ${XTRA[@]} | grep -q "SSE" && echo "on" || echo "off" ) "Streaming SIMD (Single Instruction, Multiple Data) Extensions"
-                  )
-              fi
-              if grep -qw sse2 /proc/cpuinfo; then
-                OPTIONS=(
-                  ${OPTIONS[@]}
-                  "SSE2" "SSE2" $( echo ${XTRA[@]} | grep -q "SSE2" && echo "on" || echo "off" ) "Streaming SIMD (Single Instruction, Multiple Data) Extensions v2"
-                  )
-              fi
-              if grep -qw pni /proc/cpuinfo; then
-                OPTIONS=(
-                  ${OPTIONS[@]}
-                  "SSE3" "SSE3" $( echo ${XTRA[@]} | grep -q "SSE3" && echo "on" || echo "off" ) "Streaming SIMD (Single Instruction, Multiple Data) Extensions v3"
-                  )
-              fi
-              if grep -qw ssse3 /proc/cpuinfo; then
-                OPTIONS=(
-                  ${OPTIONS[@]}
-                  "SSSE3" "SSSE3" $( echo ${XTRA[@]} | grep -q "SSSE3" && echo "on" || echo "off" ) "Supplemental Streaming SIMD (Single Instruction, Multiple Data) Extensions v3"
-                  )
-              fi
-              if grep -qw sse4_1 /proc/cpuinfo; then
-                OPTIONS=(
-                  ${OPTIONS[@]}
-                  "SSE4.1" "SSE4.1" $( echo ${XTRA[@]} | grep -q "SSE4.1" && echo "on" || echo "off" ) "Streaming SIMD (Single Instruction, Multiple Data) Extensions v4 part 1"
-                  )
-              fi
-              if grep -qw sse4_2 /proc/cpuinfo; then
-                OPTIONS=(
-                  ${OPTIONS[@]}
-                  "SSE4.2" "SSE4.2" $( echo ${XTRA[@]} | grep -q "SSE4.2" && echo "on" || echo "off" ) "Streaming SIMD (Single Instruction, Multiple Data) Extensions v4 part 2"
-                  )
-              fi
-              if grep -qw sse4_1\ sse4_2 /proc/cpuinfo; then
-                OPTIONS=(
-                  ${OPTIONS[@]}
-                  "SSE4" "SSE4" $( echo ${XTRA[@]} | grep -q "SSE4" && echo "on" || echo "off" ) "Streaming SIMD (Single Instruction, Multiple Data) Extensions v4 full: part 1 + part 2"
-                  )
-              fi
-              if grep -qw 3dnow /proc/cpuinfo; then
-                OPTIONS=(
-                  ${OPTIONS[@]}
-                  "3dnow" "3dnow" $( echo ${XTRA[@]} | grep -q "3dnow" && echo "on" || echo "off" ) "3dnow"
-                  )
-              fi
-              if grep -qw popcnt /proc/cpuinfo; then
-                OPTIONS=(
-                  ${OPTIONS[@]}
-                  "popcnt" "popcnt" $( echo ${XTRA[@]} | grep -q "popcnt" && echo "on" || echo "off" ) "population count mnemonic"
-                  )
-              fi
-              if grep -qw sse4a /proc/cpuinfo; then
-                OPTIONS=(
-                  ${OPTIONS[@]}
-                  "SSE4A" "SSE4A" $( echo ${XTRA[@]} | grep -q "SSE4A" && echo "on" || echo "off" ) "AMD Streaming SIMD (Single Instruction, Multiple Data) Extensions v4"
-                  )
-              fi
-              if grep -qw abm /proc/cpuinfo; then
-                OPTIONS=(
-                  ${OPTIONS[@]}
-                  "ABM" "ABM" $( echo ${XTRA[@]} | grep -q "ABM" && echo "on" || echo "off" ) "AMD Advanced Bit Manipulation"
-                  )
-              fi
-            ;;
-            PowerPC)
-              if grep -qw altivec /proc/cpuinfo; then
-                OPTIONS=(
-                  "Altivec" "Altivec" $( echo ${XTRA[@]} | grep -q "Altivec" && echo "on" || echo "off" ) "Altivec"
-                  )
-              fi
-            ;;
-          esac
-          unset FLAGS
-          for EXT in mmx sse sse2 pni 3dnow altivec popcnt sse4a abm ssse3 sse4_1 sse4_2 sse4_1\ sse4_2; do
-            if grep -qw "$EXT" /proc/cpuinfo ; then
-              echo $EXT
-              FLAGS="$FLAGS $EXT"
-            fi
-          done
-          FLAGS=${FLAGS/pni/sse3}
-	  FLAGS=${FLAGS/sse4_1\ sse4_2/sse4}
-          menu checklist "Select compiler use of extra instruction sets. The kernel reports that this system has: $FLAGS. None of these are safe." &&
-          XTRA=($RESULT)
-        ;;
-        cc_opt)
-          OPTIONS=(
-            "Deprecated" "-Wno-deprecated for C++" $( echo ${CC_OPTS[@]} | grep -qw "Deprecated" && echo "on" || echo "off" ) "Disable warnings of deprecated symbols in C++"
-            "Debug" "-g" $( echo ${CC_OPTS[@]} | grep -qw "Debug" && echo "on" || echo "off" ) "Add debug symbols"
-            "Pipe" "-pipe (RECOMMENDED)" $( echo ${CC_OPTS[@]} | grep -qw "Pipe" && echo "on" || echo "off" ) "Enable cc to use named pipes."
-            )
-          menu checklist "General C/C++ compiler settings" &&
-          CC_OPTS=($RESULT)
-        ;;
-        stack)
-          STACK=`$DIALOG --nocancel --inputbox "Enter the number to set the stack to, leave empty for default. Only used on x86 platform. Not safe" 0 55 $STACK`
-        ;;
-      esac
-  done
-
-  save_optimizations
-}
-
-
-plugin_register BUILD_BUILD plugin_compiler_gcc_4_4_optimize
-plugin_register OPTIMIZE_MENU plugin_compiler_gcc_4_4_menu
diff --git a/compilers/gcc/plugin.d/optimize-gcc_4_5.plugin b/compilers/gcc/plugin.d/optimize-gcc_4_5.plugin
new file mode 100644
index 0000000..df553bc
--- /dev/null
+++ b/compilers/gcc/plugin.d/optimize-gcc_4_5.plugin
@@ -0,0 +1,601 @@
+#
+# gcc-4.5.x compiler optimizations plugin
+#
+
+plugin_compiler_gcc_4_5_optimize()
+{
+  if [ "${LUNAR_COMPILER:-GCC_4_5}" != "GCC_4_5" ]; then
+    return 2
+  fi
+
+  debug_msg "plugin_compiler_gcc_4_5_optimize($@)"
+  if [ -f /etc/lunar/local/optimizations.GCC_4_5 ]; then
+    . /etc/lunar/local/optimizations.GCC_4_5
+  fi
+
+  # some local macro's
+  cflags_add()
+  {
+    CFLAGS="$CFLAGS $@"
+  }
+
+  cxxflags_add()
+  {
+    CXXFLAGS="$CXXFLAGS $@"
+  }
+
+  cppflags_add()
+  {
+    CPPFLAGS="$CPPFLAGS $@"
+  }
+
+  c_cxx_flags_add()
+  {
+    cflags_add $@
+    cxxflags_add $@
+  }
+
+  # CFLAGS/CXXFLAGS - base optimization
+  case $BOPT in
+    None)    c_cxx_flags_add "-O0" ;;
+    Small)   c_cxx_flags_add "-Os" ;;
+    Fast)    c_cxx_flags_add "-O1" ;;
+    Faster)  c_cxx_flags_add "-O2" ;;
+    Fastest) c_cxx_flags_add "-O3" ;;
+  esac
+
+  # CFLAGS -march cpu-specific optimization
+  if [ -n "$CPU" ]; then
+    c_cxx_flags_add "-march=$CPU"
+  fi
+
+  # GCC specific extra optimizations
+  for SP in ${SPD[@]}; do
+    case $SP in
+      Speedy)   c_cxx_flags_add "-funroll-loops" ;;
+      Regparm)  c_cxx_flags_add "-mregparm=3" ;;
+      Risky)    c_cxx_flags_add "-ffast-math" ;;
+      Pointers) c_cxx_flags_add "-fomit-frame-pointer" ;;
+      Siblings) c_cxx_flags_add "-foptimize-sibling-calls" ;;
+      Profiling)
+        c_cxx_flags_add "-fprofile-arcs"
+        set_local_config "KEEP_SOURCE" "on"
+      ;;
+      Branching) c_cxx_flags_add "-fbranch-probabilities" ;;
+      Aliasing)  c_cxx_flags_add "-fstrict-aliasing" ;;
+      Cprop)     c_cxx_flags_add "-fno-cprop-registers" ;;
+      Float)     c_cxx_flags_add "-ffloat-store" ;;
+      Address)   c_cxx_flags_add "-fforce-addr" ;;
+      Align)     c_cxx_flags_add "-falign-functions -falign-loops -falign-jumps" ;;
+      Expensive) c_cxx_flags_add "-fexpensive-optimizations" ;;
+      Doubles)   c_cxx_flags_add "-malign-double" ;;
+      Tracer)    c_cxx_flags_add "-ftracer" ;;
+      Blocks)    c_cxx_flags_add "-freorder-blocks" ;;
+    esac
+  done
+
+  # STACK - kind of dangerous - shouldn't we just remove this?
+  if (( STACK > 0 )) ; then
+    c_cxx_flags_add "-mpreferred-stack-boundary=$STACK"
+    cppflags_add "-mpreferred-stack-boundary=$STACK"
+  fi
+
+  for XTR in ${XTRA[@]}; do
+    case $XTR in
+      MMX)     c_cxx_flags_add "-mmmx" ;;
+      SSE)     c_cxx_flags_add "-msse" ;;
+      SSE2)    c_cxx_flags_add "-msse2" ;;
+      SSE3)    c_cxx_flags_add "-msse3" ;;
+      SSSE3)    c_cxx_flags_add "-mssse3" ;;
+      SSE4)    c_cxx_flags_add "-msse4" ;;
+      SSE4.1)    c_cxx_flags_add "-msse4.1" ;;
+      SSE4.2)    c_cxx_flags_add "-msse4.2" ;;
+      SSE4A)    c_cxx_flags_add "-msse4a" ;;
+      SSE5)    c_cxx_flags_add "-msse5" ;;
+      3dnow)    c_cxx_flags_add "-m3dnow" ;;
+      Altivec) c_cxx_flags_add "-maltivec" ;;
+      AVX)    c_cxx_flags_add "-mavx" ;;
+      AES)    c_cxx_flags_add "-maes" ;;
+      PCLMUL)    c_cxx_flags_add "-mpclmul" ;;
+      POPCNT)    c_cxx_flags_add "-mpopcnt" ;;
+      ABM)    c_cxx_flags_add "-mabm" ;;
+    esac
+  done
+
+  case $FPM in
+    x387) c_cxx_flags_add "-mfpmath=387" ;;
+    SSE)  c_cxx_flags_add "-mfpmath=sse" ;;
+    Both) c_cxx_flags_add "-mfpmath=both" ;;
+  esac
+
+  for OPT in ${CC_OPTS[@]}; do
+    case $OPT in
+      Deprecated)
+        cxxflags_add "-Wno-deprecated"
+        ;;
+      Debug)
+        c_cxx_flags_add "-g"
+        ;;
+      Pipe)
+        c_cxx_flags_add "-pipe"
+        ;;
+    esac
+  done
+
+  CC=gcc
+  CXX=g++
+  CPP=cpp
+
+  if [ -n "$MYCFLAGS" ]; then
+  CFLAGS=$MYCFLAGS
+  CXXFLAGS=$MYCFLAGS
+  fi
+  if [ -n "$MYCXXFLAGS" ]; then
+  CXXFLAGS=$MYCXXFLAGS
+  fi
+
+  export CFLAGS CXXFLAGS CPPFLAGS
+  export CC CXX CPP
+
+  verbose_msg "CC=\"$CC\""
+  verbose_msg "CXX=\"$CXX\""
+  verbose_msg "CPP=\"$CPP\""
+  verbose_msg "CFLAGS=\"$CFLAGS\""
+  verbose_msg "CXXFLAGS=\"$CXXFLAGS\""
+  verbose_msg "CPPFLAGS=\"$CPPFLAGS\""
+
+  return 2
+}
+
+
+plugin_compiler_gcc_4_5_menu()
+{
+  # The main code calls this function WITHOUT $1 to find out which
+  # compiler optimization plugins exist. It then returns the plugin
+  # identifier which can be saved in $LUNAR_COMPILER as the user's
+  # choice for COMPILERS
+  if [ -z "$1" ]; then
+    echo "GCC_4_5"
+    echo "GNU C Compiler suite version 4.5.x"
+    return 2
+  elif [ "$1" != "GCC_4_5" ]; then
+    # we don't display anything when the user selected a
+    # different menu
+    return 2
+  fi
+
+  # now we are done with determining if we are really the menu
+  # that the user wants - so we can display it
+  menu() 
+  { 
+    unset RESULT
+    if [ "$1" == "checklist" ]; then
+      RESULT=`$DIALOG --no-cancel --item-help --separate-output --checklist "$2" 0 0 0 "${OPTIONS[@]}"`
+      if [ $? != 0 ]; then
+        return 1
+      fi
+    elif [ "$1" == "radiolist" ]; then
+      RESULT=`$DIALOG --no-cancel --item-help --radiolist "$2" 0 0 0 "${OPTIONS[@]}"`
+      if [ $? != 0 ]; then
+        return 1
+      fi
+    fi
+    RESULT=$(echo $RESULT | sed -e 's:^"::' -e 's:"$::')
+    return 0
+  }
+
+  save_optimizations()
+  {
+    debug_msg "save_optimizations($@)"
+    cat >/etc/lunar/local/optimizations.GCC_4_5  <<EOF
+CPU=$CPU
+BOPT=$BOPT
+SPD=( $(echo ${SPD[@]} ) )
+XTRA=( $(echo ${XTRA[@]}) )
+FPM=$FPM
+CC_OPTS=( $(echo ${CC_OPTS[@]} ) )
+STACK=$STACK
+EOF
+  }
+
+  if [ -f /etc/lunar/local/optimizations.GCC_4_5 ]; then
+    . /etc/lunar/local/optimizations.GCC_4_5
+  fi
+
+  export IFS=$'\t\n'
+  TITLE="Lunar Compiler Optimizations"
+
+  SAFE_OPTIMIZATIONS=${SAFE_OPTIMIZATIONS:-on}
+
+  while true; do
+    unset OPTIONS
+    IS_DEFAULT=$([ `get_local_config LUNAR_COMPILER` == "GCC_4_5" ] && echo DEFAULT || get_local_config LUNAR_COMPILER)
+    DEFAULT=${CHOICE:-safe}
+    CHOICE=`$DIALOG --title "$TITLE" --ok-label "Select" --cancel-label "Close" --default-item "$DEFAULT" --item-help --menu "" 0 0 0 $(
+      echo "default"
+      echo "Set this compiler as default  [$IS_DEFAULT]"
+      echo "Enables you to substitute the default C compiler"
+      if [ "$SAFE_OPTIMIZATIONS" == "off" ] ; then
+        echo "safe"
+        echo "Turn on optimization safety   [$SAFE_OPTIMIZATIONS]"
+        echo "Only allow safe optimizations (removes dangerous settings!)"
+      else
+        echo "safe"
+        echo "Turn off optimization safety  [$SAFE_OPTIMIZATIONS]"
+        echo "Allow potentially unsafe optimizations (DANGEROUS!)"
+      fi
+      echo "bopt"
+      echo "Base speed optimization       [$BOPT]"
+      echo "Select the base optimization from -Os, -O0, -O1 etc"
+      echo "cpu"
+      echo "CPU selection                 [$CPU]"
+      echo "Select the target CPU type"
+      if [ "$SAFE_OPTIMIZATIONS" == "off" ] ; then
+        echo "xtra"
+        echo "CPU extensions                [${XTRA[@]}]"
+        echo "Select CPU extensions"
+        echo "spd"
+        echo "Specialized optimizations     [${SPD[@]}]"
+        echo "Select specific compiler flags for expensive and risky optimizations"
+        echo "fpm"
+        echo "Floating point optimizations  [$FPM]"
+        echo "enable specific floating point optimizations"
+      fi
+      echo "cc_opt"
+      echo "General C/C++ options         [${CC_OPTS[@]}]"
+      echo "Select named pipes, warnings on deprecated symbols"
+      if [ "$SAFE_OPTIMIZATIONS" == "off" ] ; then
+        echo "stack"
+        echo "Stack                         [$STACK]"
+        echo "Set the stack size"
+      fi) `
+      if [ $? != 0 ]; then
+        save_optimizations
+        set_local_config SAFE_OPTIMIZATIONS $SAFE_OPTIMIZATIONS
+        return
+      fi
+
+      case $CHOICE in 
+        default)
+          if [ "$IS_DEFAULT" != "DEFAULT" ]; then
+            set_local_config LUNAR_COMPILER GCC_4_5
+            $DIALOG --msgbox "Gcc 4.5 is now the default compiler!" 6 60
+          fi
+          ;;
+        safe)
+          if [ "$SAFE_OPTIMIZATIONS" == "off" ]; then
+            SAFE_OPTIMIZATIONS=on
+            unset SPD XTRA STACK
+            FPM=("None")
+            BOPT=${BOPT//Fastest/Faster}
+          else
+            $DIALOG --defaultno --yes-label "No" --no-label "Yes" --colors --yesno " \Z1*** WARNING ***\n\n\ZnPlease read this carefully. You are about to turn off the optimization safety. This means that you can possibly turn on compiler or linker optimizations that can and will break your box. Not only will the problem most likely occur only days, weeks or months after you turn this switch, but also it can corrupt all your personal data, make your machine unbootable, and cause serious personal distress, headache, loss of vision, heart failure, loss of income, or otherwise very bad things. Before you turn off this option, please think for yourself for a minute and ask yourself: Is it worth it?\n\nOnly use safe optimizations?" 20 70
+            if [ $? == 0 ]; then
+              SAFE_OPTIMIZATIONS=off
+            fi
+          fi
+        ;;
+        bopt)
+          OPTIONS=(
+            "None" "-O0" $( [ "$BOPT" == "None" ] && echo "on" || echo "off" ) "Only default optimizations"
+            "Fast" "-O1" $( [ "$BOPT" == "Fast" ] && echo "on" || echo "off" ) "-O1"
+            "Faster" "-O2" $( [ "$BOPT" == "Faster" ] && echo "on" || echo "off" ) "-O2"
+            "Fastest" "-O3" $( [ "$BOPT" == "Fastest" ] && echo "on" || echo "off" ) "-O3"
+            "Small" "-Os" $( [ "$BOPT" == "Small" ] && echo "on" || echo "off" ) "-Os"
+            )
+          menu radiolist "Choose the base compile-time optimization. Most people will use -O2 or -O3. Note that some modules set their own level." &&
+          BOPT=$RESULT
+        ;;
+        cpu)
+          case $PLATFORM in
+            x86)
+              OPTIONS=(
+                "None" "" $( [ ! "$CPU" ] && echo "on" || echo "off" ) "All processor types"
+                "native" "autodetect" $( [ "$CPU" == "native" ] && echo "on" || echo "off" ) "autodetect CPU at compile time - recommended"
+                "i386" "i386" $( [ "$CPU" == "i386" ] && echo "on" || echo "off" ) "i386 processors"
+                "i486" "i486" $( [ "$CPU" == "i486" ] && echo "on" || echo "off" ) "i486 processors"
+                "i586" "i586 (Pentium)" $( [ "$CPU" == "i586" ] && echo "on" || echo "off" ) "i586 processors, identical to 'pentium'"
+                "pentium-mmx" "pentium-mmx" $( [ "$CPU" == "pentium-mmx" ] && echo "on" || echo "off" ) "Pentium processors with mmx"
+                "i686" "i686 (PentiumPro)" $( [ "$CPU" == "i686" ] && echo "on" || echo "off" ) "i686 processors, identical to 'pentiumpro'"
+                "pentium2" "P2" $( [ "$CPU" == "pentium2" ] && echo "on" || echo "off" ) "Pentium II processors"
+                "pentium3" "P3 (Celeron)" $( [ "$CPU" == "pentium3" ] && echo "on" || echo "off" ) "Pentium III processors"
+                "pentium3m" "P3 mobile (Celeron)" $( [ "$CPU" == "pentium3m" ] && echo "on" || echo "off" ) "Pentium III Mobile processors"
+                "pentium-m" "P3 mobile (Celeron) Low power version" $( [ "$CPU" == "pentium-m" ] && echo "on" || echo "off" ) "Pentium III Mobile processor - low power versions"
+                "pentium4" "P4" $( [ "$CPU" == "pentium4" ] && echo "on" || echo "off" ) "Pentium 4 processors"
+                "pentium4m" "P4 mobile" $( [ "$CPU" == "pentium4m" ] && echo "on" || echo "off" ) "Pentium 4 mobile processors"
+                "core2" "Core 2" $( [ "$CPU" == "core2" ] && echo "on" || echo "off" ) "Intel Core 2 processors"
+                "prescott" "Xeon" $( [ "$CPU" == "prescott" ] && echo "on" || echo "off" ) "Newer Xeons with sse3"
+                "nocona" "nocona" $( [ "$CPU" == "nocona" ] && echo "on" || echo "off" ) "Newer Xeons with sse3 and em64t"
+                "k6" "k6" $( [ "$CPU" == "k6" ] && echo "on" || echo "off" ) "AMD K6 processors"
+                "k6-2" "k6-2" $( [ "$CPU" == "k6-2" ] && echo "on" || echo "off" ) "AMD K6-2 processors"
+                "k6-3" "k6-3" $( [ "$CPU" == "k6-3" ] && echo "on" || echo "off" ) "AMD K6-3 processors"
+                "athlon" "athlon" $( [ "$CPU" == "athlon" ] && echo "on" || echo "off" ) "AMD Athlon processors"
+                "athlon-tbird" "athlon-tbird" $( [ "$CPU" == "athlon-tbird" ] && echo "on" || echo "off" ) "AMD Athlon Thunderbird processors"
+                "athlon-4" "athlon-4" $( [ "$CPU" == "athlon-4" ] && echo "on" || echo "off" ) "AMD Athlon 4 processors"
+                "athlon-xp" "athlon-xp" $( [ "$CPU" == "athlon-xp" ] && echo "on" || echo "off" ) "AMD Athlon XP processors"
+                "athlon-mp" "athlon-mp" $( [ "$CPU" == "athlon-mp" ] && echo "on" || echo "off" ) "AMD athlon MP processors"
+                "k8" "k8" $( [ "$CPU" == "k8" ] && echo "on" || echo "off" ) "AMD K8 processors"
+                "opteron" "opteron" $( [ "$CPU" == "opteron" ] && echo "on" || echo "off" ) "AMD opteron processors"
+                "athlon64" "athlon64" $( [ "$CPU" == "athlon64" ] && echo "on" || echo "off" ) "AMD Athlon 64 processors"
+                "athlon-fx" "athlon-fx" $( [ "$CPU" == "athlon-fx" ] && echo "on" || echo "off" ) "AMD Athlon fx processors"
+                "k8-sse3" "k8-sse3" $( [ "$CPU" == "k8-sse3" ] && echo "on" || echo "off" ) "AMD K8 processors with SSE3"
+                "opteron-sse3" "opteron-sse3" $( [ "$CPU" == "opteron-sse3" ] && echo "on" || echo "off" ) "AMD opteron processors with SSE3"
+                "athlon64-sse3" "athlon64-sse3" $( [ "$CPU" == "athlon64-sse3" ] && echo "on" || echo "off" ) "AMD Athlon 64 processors with SSE3"
+                "amdfam10" "AMD K10 Phenom/new K10 based Opteron family" $( [ "$CPU" == "amdfam10" ] && echo "on" || echo "off" ) "AMD K10 family: Phenom1,2 Athlon2, new Opteron K10 based processors with SSE4A ABM"
+                "barcelona" "barcelona" $( [ "$CPU" == "barcelona" ] && echo "on" || echo "off" ) "AMD K10 family: barcelona core processors with SSE4A ABM"
+                "geode" "geode" $( [ "$CPU" == "geode" ] && echo "on" || echo "off" ) "AMD Geode processors"
+                "winchip-c6" "winchip-c6" $( [ "$CPU" == "winchip-c6" ] && echo "on" || echo "off" ) "IDT Winchip C6 CPU (a 486)"
+                "winchip2" "winchip2" $( [ "$CPU" == "winchip2" ] && echo "on" || echo "off" ) "IDT Winchip2 CPU (a 486)"
+                "c3" "c3" $( [ "$CPU" == "c3" ] && echo "on" || echo "off" ) "Via C3 CPU with MMX and 3dNOW"
+                "c3-2" "c3-2" $( [ "$CPU" == "c3-2" ] && echo "on" || echo "off" ) "Via C3-2 CPU with MMX and SSE"
+                )
+            ;;
+            Alpha)
+              OPTIONS=(
+                "None" "" $( [ ! "$CPU" ] && echo "on" || echo "off" ) "All processor types"
+                "ev4" "ev4" $( [ "$CPU" == "ev4" ] && echo "on" || echo "off" ) "Alpha EV4 (21064)"
+                "ev45" "ev45" $( [ "$CPU" == "ev45" ] && echo "on" || echo "off" ) "Alpha EV45 (21064a)"
+                "ev5" "ev5" $( [ "$CPU" == "ev5" ] && echo "on" || echo "off" ) "Alpha EV5 (21164)"
+                "ev56" "ev56" $( [ "$CPU" == "ev56" ] && echo "on" || echo "off" ) "Alpha EV56 (21164a)"
+                "pca56" "pca56" $( [ "$CPU" == "pca56" ] && echo "on" || echo "off" ) "Alpha pca56 (21164PC)"
+                "ev6" "ev6" $( [ "$CPU" == "ev6" ] && echo "on" || echo "off" ) "Alpha EV6 (21264)"
+                "ev67" "ev67" $( [ "$CPU" == "ev67" ] && echo "on" || echo "off" ) "Alpha EV67 (21264a)"
+                "ev68" "ev68" $( [ "$CPU" == "ev68" ] && echo "on" || echo "off" ) "Alpha EV68 (21264b)"
+                )
+            ;;
+            PowerPC)
+              OPTIONS=(
+                "None" "" $( [ ! "$CPU" ] && echo "on" || echo "off" ) "All processor types"
+                "common" "common" $( [ "$CPU" == "common" ] && echo "on" || echo "off" ) "Common PowerPC"
+                "rios" "rios" $( [ "$CPU" == "rios" ] && echo "on" || echo "off" ) "Rios PowerPC"
+                "rios1" "rios1" $( [ "$CPU" == "rios1" ] && echo "on" || echo "off" ) "Rios1 PowerPC"
+                "rsc" "rsc" $( [ "$CPU" == "rsc" ] && echo "on" || echo "off" ) "RSC PowerPC"
+                "rios2" "rios2" $( [ "$CPU" == "rios2" ] && echo "on" || echo "off" ) "Rios2 PowerPC"
+                "rs64a" "rs64a" $( [ "$CPU" == "rs64a" ] && echo "on" || echo "off" ) "RS64a PowerPC"
+                "403" "403" $( [ "$CPU" == "403" ] && echo "on" || echo "off" ) "403 PowerPC"
+                "505" "505" $( [ "$CPU" == "505" ] && echo "on" || echo "off" ) "505 PowerPC"
+                "601" "601" $( [ "$CPU" == "601" ] && echo "on" || echo "off" ) "601 PowerPC"
+                "602" "602" $( [ "$CPU" == "602" ] && echo "on" || echo "off" ) "602 PowerPC"
+                "603" "603" $( [ "$CPU" == "603" ] && echo "on" || echo "off" ) "603 PowerPC"
+                "603a" "603a" $( [ "$CPU" == "603a" ] && echo "on" || echo "off" ) "603a PowerPC"
+                "604" "604" $( [ "$CPU" == "604" ] && echo "on" || echo "off" ) "604 PowerPC"
+                "604e" "604e" $( [ "$CPU" == "604e" ] && echo "on" || echo "off" ) "604e PowerPC"
+                "620" "620" $( [ "$CPU" == "620" ] && echo "on" || echo "off" ) "620 PowerPC"
+                "630" "630" $( [ "$CPU" == "630" ] && echo "on" || echo "off" ) "630 PowerPC"
+                "740" "740" $( [ "$CPU" == "740" ] && echo "on" || echo "off" ) "740 PowerPC"
+                "7400" "7400" $( [ "$CPU" == "7400" ] && echo "on" || echo "off" ) "7400 PowerPC"
+                "7450" "7450" $( [ "$CPU" == "7450" ] && echo "on" || echo "off" ) "7450 PowerPC"
+                "750" "750" $( [ "$CPU" == "750" ] && echo "on" || echo "off" ) "750 PowerPC"
+                "801" "801" $( [ "$CPU" == "801" ] && echo "on" || echo "off" ) "801 PowerPC"
+                "821" "821" $( [ "$CPU" == "821" ] && echo "on" || echo "off" ) "821 PowerPC"
+                "823" "823" $( [ "$CPU" == "823" ] && echo "on" || echo "off" ) "823 PowerPC"
+                "Power" "Power" $( [ "$CPU" == "Power" ] && echo "on" || echo "off" ) "Power PowerPC"
+                "Power2" "Power2" $( [ "$CPU" == "Power2" ] && echo "on" || echo "off" ) "Power2 PowerPC"
+                "PowerPC" "PowerPC" $( [ "$CPU" == "PowerPC" ] && echo "on" || echo "off" ) "IBM and Apple hardware (Power and PowerPC)"
+                )
+            ;;
+            SPARC)
+              OPTIONS=(
+                "None" "" $( [ ! "$CPU" ] && echo "on" || echo "off" ) "All processor types"
+                "v7" "v7" $( [ "$CPU" == "v7" ] && echo "on" || echo "off" ) "V7 SPARC"
+                "cypress" "cypress" $( [ "$CPU" == "cypress" ] && echo "on" || echo "off" ) "Cypress SPARC"
+                "v8" "v8" $( [ "$CPU" == "v8" ] && echo "on" || echo "off" ) "V8 SPARC"
+                "supersparc" "supersparc" $( [ "$CPU" == "supersparc" ] && echo "on" || echo "off" ) "SuperSPARC"
+                "sparclite" "sparclite" $( [ "$CPU" == "sparclite" ] && echo "on" || echo "off" ) "SPARCLite"
+                "hypersparc" "hypersparc" $( [ "$CPU" == "hypersparc" ] && echo "on" || echo "off" ) "HyperSPARC"
+                "sparclite86x" "sparclite86x" $( [ "$CPU" == "sparclite86x" ] && echo "on" || echo "off" ) "SPARCLite86x"
+                "f930" "f930" $( [ "$CPU" == "f930" ] && echo "on" || echo "off" ) "f930 SPARC"
+                "f934" "f934" $( [ "$CPU" == "f934" ] && echo "on" || echo "off" ) "f934 SPARC"
+                "sparclet" "sparclet" $( [ "$CPU" == "sparclet" ] && echo "on" || echo "off" ) "SPARCLet"
+                "tsc701" "tsc701" $( [ "$CPU" == "tsc701" ] && echo "on" || echo "off" ) "tsc701"
+                "v9" "v9" $( [ "$CPU" == "v9" ] && echo "on" || echo "off" ) "V9 SPARC"
+                "ultrasparc" "ultrasparc" $( [ "$CPU" == "ultrasparc" ] && echo "on" || echo "off" ) "ULTRASPARC"
+                )
+            ;;
+            x86_64)
+              OPTIONS=(
+                "None" "" $( [ ! "$CPU" ] && echo "on" || echo "off" ) "All processor types"
+                "native" "autodetect" $( [ "$CPU" == "native" ] && echo "on" || echo "off" ) "autodetect CPU at compile time - recommended"
+                "x86-64" "x86-64" $( [ "$CPU" == "x86-64" ] && echo "on" || echo "off" ) "Both AMD64 and Intel EM64T machines"
+                "nocona" "nocona" $( [ "$CPU" == "nocona" ] && echo "on" || echo "off" ) "Newer Xeons with sse3 and em64t"
+                "core2" "core2" $( [ "$CPU" == "core2" ] && echo "on" || echo "off" ) "Intel Core2 CPU with em64t SSE3 and SSSE3"
+                "k8" "k8" $( [ "$CPU" == "k8" ] && echo "on" || echo "off" ) "AMD K8 processors"
+                "opteron" "opteron" $( [ "$CPU" == "opteron" ] && echo "on" || echo "off" ) "AMD opteron processors"
+                "athlon64" "athlon64" $( [ "$CPU" == "athlon64" ] && echo "on" || echo "off" ) "AMD Athlon 64 processors"
+                "athlon-fx" "athlon-fx" $( [ "$CPU" == "athlon-fx" ] && echo "on" || echo "off" ) "AMD Athlon fx processors"
+                "k8-sse3" "k8-sse3" $( [ "$CPU" == "k8-sse3" ] && echo "on" || echo "off" ) "AMD K8 processors with SSE3"
+                "opteron-sse3" "opteron-sse3" $( [ "$CPU" == "opteron-sse3" ] && echo "on" || echo "off" ) "AMD opteron processors with SSE3"
+                "athlon64-sse3" "athlon64-sse3" $( [ "$CPU" == "athlon64-sse3" ] && echo "on" || echo "off" ) "AMD Athlon 64 processors with SSE3"
+                "amdfam10" "AMD K10 family Phenom/new  K10 based Opteron" $( [ "$CPU" == "amdfam10" ] && echo "on" || echo "off" ) "AMD K10 family: Phenom1,2 Athlon2, new Opteron K10 family processors with SSE4A ABM"
+                "barcelona" "barcelona" $( [ "$CPU" == "barcelona" ] && echo "on" || echo "off" ) "AMD K10 family: barcelona core processors with SSE4A ABM"
+                )
+            ;;
+          esac
+          menu radiolist "CPU, according to the kernel you have a$(cat /proc/cpuinfo | grep 'model name' | cut -d: -f2 | head -n 1). If you are unsure, use autodetect - anything other is not safe." &&
+          CPU=$RESULT
+        ;;
+        spd)
+          OPTIONS=(
+            "Speedy" "-funroll-loops" $( echo ${SPD[@]} | grep -q "Speedy" && echo "on" || echo "off" ) "Optimize to increase performance of generated code"
+            "Regparm" "-mregparm=3" $( echo ${SPD[@]} | grep -q "Regparm" && echo "on" || echo "off" ) "Pass up to 3 function arguments in registers instead of stack"
+            "Risky" "-ffast-math" $( echo ${SPD[@]} | grep -q "Risky" && echo "on" || echo "off" ) "Optimize to increase performance ... by violating ANSI and IEEE FP rules"
+            "Pointers" "-fomit-frame-pointer" $( echo ${SPD[@]} | grep -q "Pointers" && echo "on" || echo "off" ) "Optimize by omitting frame pointers"
+            "Siblings" "-foptimize-sibling-calls" $( echo ${SPD[@]} | grep -q "Siblings" && echo "on" || echo "off" ) "Optimize sibling calls"
+            "Profiling" "-fprofile-arcs" $( echo ${SPD[@]} | grep -q "Profiling" && echo "on" || echo "off" ) "Generate profiles (For later use with Branching)"
+            "Branching" "-fbranching-probabilities" $( echo ${SPD[@]} | grep -q "Branching" && echo "on" || echo "off" ) "Predict branching (For using profiled sources)"
+            "Aliasing" "-fstrict-aliasing" $( echo ${SPD[@]} | grep -q "Aliasing" && echo "on" || echo "off" ) "Enable strict aliasing (enabled by default -O1 and above)"
+            "Cprop" "-fno-cprop-registers" $( echo ${SPD[@]} | grep -q "Cprop" && echo "on" || echo "off" ) "Reduce scheduling dependencies and remove copies"
+            "Float" "-ffloat-store" $( echo ${SPD[@]} | grep -q "Float" && echo "on" || echo "off" ) "Enable float store"
+            "Address" "-fforce-addr" $( echo ${SPD[@]} | grep -q "Address" && echo "on" || echo "off" ) "Force memory address"
+            "Align" "-falign-functions" $( echo ${SPD[@]} | grep -q "Align" && echo "on" || echo "off" ) "Align functions, loops, and jumps"
+            "Expensive" "-fexpensive-optimizations" $( echo ${SPD[@]} | grep -q "Expensive" && echo "on" || echo "off" ) "Perform expensive optimizations"
+            "Doubles" "-malign-double" $( echo ${SPD[@]} | grep -q "Doubles" && echo "on" || echo "off" ) "Align double, long double, and long long on two word boundaries"
+            "Tracer" "-ftracer" $( echo ${SPD[@]} | grep -q "Tracer" && echo "on" || echo "off" ) "Perform tail duplication to enlarge superblock size."
+            "Blocks" "-freorder-blocks" $( echo ${SPD[@]} | grep -q "Blocks" && echo "on" || echo "off" ) "Reorder basic blocks in order to reduce number of taken branches."
+            )
+          menu checklist "Select additional flags to optimize specific areas of the created code. Note that some of these flags are turned on automatically with -O2 or -O3. See 'man gcc' for more information. None of these options are safe!" &&
+          SPD=($RESULT)
+        ;;
+        fpm)
+          OPTIONS=(
+            "None" "Use compiler default" $([ "$FPM" == "None" ] && echo "on" || echo "off" ) "Use compiler default"
+            )
+          case $PLATFORM in 
+            x86|x86_64)
+              if grep '^fpu' /proc/cpuinfo | grep -qw yes; then
+                OPTIONS=(
+                  ${OPTIONS[@]}
+                  "x387" "Floating point coprocessor" $([ "$FPM" == "x387" ] && echo "on" || echo "off" ) "Classic 387 or higher Floating Point Co-Processor"
+                  )
+              fi
+              if grep -qw sse /proc/cpuinfo; then
+                OPTIONS=(
+                  ${OPTIONS[@]}
+                  "SSE" "Streaming SIMD Extensions" $([ "$FPM" == "SSE" ] && echo "on" || echo "off" ) "Streaming SIMD (Single Instruction, Multiple Data)"
+                  )
+              fi
+              if grep '^fpu' /proc/cpuinfo | grep -qw yes; then
+                OPTIONS=(
+                  ${OPTIONS[@]}
+                  "Both" "x387 and SSE" $([ "$FPM" == "Both" ] && echo "on" || echo "off" ) "Both SSE and 387"
+                  )
+              fi
+            ;;
+            PowerPC)
+              if grep -qw altivec /proc/cpuinfo; then
+                OPTIONS=(
+                  ${OPTIONS[@]}
+                  "Altivec" "PowerPC only" $([ "$FPM" == "Altivec" ] && echo "on" || echo "off" ) "Altivec"
+                  )
+              fi
+            ;;
+          esac
+          unset FLAGS
+          for EXT in fpu sse altivec ; do
+            if grep -qw "$EXT" /proc/cpuinfo ; then
+              FLAGS="$FLAGS $EXT"
+            fi
+          done
+          FLAGS=${FLAGS/fpu/387}
+          FLAGS=${FLAGS/387 sse/387 and sse (both)}
+          menu radiolist "Select available Floating Point Math compile extensions. The kernel reports that this system has: $FLAGS. None of these are safe." &&
+          FPM=$RESULT
+        ;;
+        xtra)
+          unset OPTIONS
+          case $PLATFORM in 
+            x86|x86_64)
+              if grep -qw mmx /proc/cpuinfo; then
+                OPTIONS=(
+                  ${OPTIONS[@]}
+                  "MMX" "MMX" $( echo ${XTRA[@]} | grep -q "MMX" && echo "on" || echo "off" ) "Multi-Media instruction code eXtensions"
+                  )
+              fi
+              if grep -qw sse /proc/cpuinfo; then
+                OPTIONS=(
+                  ${OPTIONS[@]} 
+                  "SSE" "SSE" $( echo ${XTRA[@]} | grep -q "SSE" && echo "on" || echo "off" ) "Streaming SIMD (Single Instruction, Multiple Data) Extensions"
+                  )
+              fi
+              if grep -qw sse2 /proc/cpuinfo; then
+                OPTIONS=(
+                  ${OPTIONS[@]}
+                  "SSE2" "SSE2" $( echo ${XTRA[@]} | grep -q "SSE2" && echo "on" || echo "off" ) "Streaming SIMD (Single Instruction, Multiple Data) Extensions v2"
+                  )
+              fi
+              if grep -qw pni /proc/cpuinfo; then
+                OPTIONS=(
+                  ${OPTIONS[@]}
+                  "SSE3" "SSE3" $( echo ${XTRA[@]} | grep -q "SSE3" && echo "on" || echo "off" ) "Streaming SIMD (Single Instruction, Multiple Data) Extensions v3"
+                  )
+              fi
+              if grep -qw ssse3 /proc/cpuinfo; then
+                OPTIONS=(
+                  ${OPTIONS[@]}
+                  "SSSE3" "SSSE3" $( echo ${XTRA[@]} | grep -q "SSSE3" && echo "on" || echo "off" ) "Supplemental Streaming SIMD (Single Instruction, Multiple Data) Extensions v3"
+                  )
+              fi
+              if grep -qw sse4_1 /proc/cpuinfo; then
+                OPTIONS=(
+                  ${OPTIONS[@]}
+                  "SSE4.1" "SSE4.1" $( echo ${XTRA[@]} | grep -q "SSE4.1" && echo "on" || echo "off" ) "Streaming SIMD (Single Instruction, Multiple Data) Extensions v4 part 1"
+                  )
+              fi
+              if grep -qw sse4_2 /proc/cpuinfo; then
+                OPTIONS=(
+                  ${OPTIONS[@]}
+                  "SSE4.2" "SSE4.2" $( echo ${XTRA[@]} | grep -q "SSE4.2" && echo "on" || echo "off" ) "Streaming SIMD (Single Instruction, Multiple Data) Extensions v4 part 2"
+                  )
+              fi
+              if grep -qw sse4_1\ sse4_2 /proc/cpuinfo; then
+                OPTIONS=(
+                  ${OPTIONS[@]}
+                  "SSE4" "SSE4" $( echo ${XTRA[@]} | grep -q "SSE4" && echo "on" || echo "off" ) "Streaming SIMD (Single Instruction, Multiple Data) Extensions v4 full: part 1 + part 2"
+                  )
+              fi
+              if grep -qw 3dnow /proc/cpuinfo; then
+                OPTIONS=(
+                  ${OPTIONS[@]}
+                  "3dnow" "3dnow" $( echo ${XTRA[@]} | grep -q "3dnow" && echo "on" || echo "off" ) "3dnow"
+                  )
+              fi
+              if grep -qw popcnt /proc/cpuinfo; then
+                OPTIONS=(
+                  ${OPTIONS[@]}
+                  "popcnt" "popcnt" $( echo ${XTRA[@]} | grep -q "popcnt" && echo "on" || echo "off" ) "population count mnemonic"
+                  )
+              fi
+              if grep -qw sse4a /proc/cpuinfo; then
+                OPTIONS=(
+                  ${OPTIONS[@]}
+                  "SSE4A" "SSE4A" $( echo ${XTRA[@]} | grep -q "SSE4A" && echo "on" || echo "off" ) "AMD Streaming SIMD (Single Instruction, Multiple Data) Extensions v4"
+                  )
+              fi
+              if grep -qw abm /proc/cpuinfo; then
+                OPTIONS=(
+                  ${OPTIONS[@]}
+                  "ABM" "ABM" $( echo ${XTRA[@]} | grep -q "ABM" && echo "on" || echo "off" ) "AMD Advanced Bit Manipulation"
+                  )
+              fi
+            ;;
+            PowerPC)
+              if grep -qw altivec /proc/cpuinfo; then
+                OPTIONS=(
+                  "Altivec" "Altivec" $( echo ${XTRA[@]} | grep -q "Altivec" && echo "on" || echo "off" ) "Altivec"
+                  )
+              fi
+            ;;
+          esac
+          unset FLAGS
+          for EXT in mmx sse sse2 pni 3dnow altivec popcnt sse4a abm ssse3 sse4_1 sse4_2 sse4_1\ sse4_2; do
+            if grep -qw "$EXT" /proc/cpuinfo ; then
+              echo $EXT
+              FLAGS="$FLAGS $EXT"
+            fi
+          done
+          FLAGS=${FLAGS/pni/sse3}
+	  FLAGS=${FLAGS/sse4_1\ sse4_2/sse4}
+          menu checklist "Select compiler use of extra instruction sets. The kernel reports that this system has: $FLAGS. None of these are safe." &&
+          XTRA=($RESULT)
+        ;;
+        cc_opt)
+          OPTIONS=(
+            "Deprecated" "-Wno-deprecated for C++" $( echo ${CC_OPTS[@]} | grep -qw "Deprecated" && echo "on" || echo "off" ) "Disable warnings of deprecated symbols in C++"
+            "Debug" "-g" $( echo ${CC_OPTS[@]} | grep -qw "Debug" && echo "on" || echo "off" ) "Add debug symbols"
+            "Pipe" "-pipe (RECOMMENDED)" $( echo ${CC_OPTS[@]} | grep -qw "Pipe" && echo "on" || echo "off" ) "Enable cc to use named pipes."
+            )
+          menu checklist "General C/C++ compiler settings" &&
+          CC_OPTS=($RESULT)
+        ;;
+        stack)
+          STACK=`$DIALOG --nocancel --inputbox "Enter the number to set the stack to, leave empty for default. Only used on x86 platform. Not safe" 0 55 $STACK`
+        ;;
+      esac
+  done
+
+  save_optimizations
+}
+
+
+plugin_register BUILD_BUILD plugin_compiler_gcc_4_5_optimize
+plugin_register OPTIMIZE_MENU plugin_compiler_gcc_4_5_menu


More information about the Lunar-commits mailing list