#!/bin/sh

if [ ! -f "sql/mysqld.cc" ]; then
  echo "You must run this script from the MySQL top-level directory."
  exit 1
fi

cflags="-64 -mips4"
config_args=
if [ "$#" != 0 ]; then
  case "$1" in
    --help)
      echo "Usage: $0 [options]"
      echo "Options:" 
      echo "--help                print this message"
      echo "-32                   build 32-bit binary"
      echo "-64                   build 64-bit binary [default]"
      exit 0
      ;;
    -64)
      echo "Building 64-bit binary"
      ;;
    -32)
      echo "Building 32-bit binary"
      cflags=""
      ;;
    *)
      config_args="$config_args $1"; shift
      ;;
  esac
else
  echo "Building 64-bit binary"
fi

set -x
make distclean

path=`dirname $0`
. "$path/autorun.sh"

# C options:
# -apo          - auto-parallize for multiprocessors (implies -mp)
# -mp           - generate multiprocessor code
# These two common optimization options apparently use 'sproc' model of
# threading, which is not compatible with PTHREADS: don't add them unless you
# know what you're doing.
#
# -c99          - enable C features standardized in C99, such as long long,
#                 strtoll, stroull etc.
#                 This option is vital to compile MySQL.
# -woff         - turn off some warnings 
# -64           - generate 64 bit object (implies -mips4)
# -mips4        - produce code for MIPS R10000, MIPS R12000 and further 64 bit
#                 processors
# -OPT:Olimit=0 - no limits exists to size of function for compiler to optimize
#                 it
nowarn="-woff 1064,1188,1460,1552,1681,1682,3303"
cflags="$cflags $nowarn -O3 -c99 -OPT:Olimit=0"

# C++ only options:
# -LANG:exceptions=OFF            - don't generate exception handling code
#                                   MySQL doesn't use exceptions.
# -LANG:std=OFF                   - don't link standard C++ library, such as
#                                   <iostream>, <complex>, etc. 
# -LANG:libc_in_namespace_std=OFF - libstdc functions can be  
#                                   declared in namespace 'std', when included
#                                   into C++ code. Switch this feature off.
#                                   This option is vital to compile MySQL

cxxflags="$cflags -LANG:exceptions=OFF -LANG:std=OFF"
cxxflags="$cxxflags -LANG:libc_in_namespace_std=OFF"

CC=cc CXX=CC CFLAGS="$cflags" CXXFLAGS="$cxxflags" \
./configure --prefix=/usr/local/mysql --disable-shared \
            --with-extra-charsets=complex --enable-thread-safe-client \
            --without-extra-tools --disable-dependency-tracking \
            $config_args

make 
