Commit 80a62132 authored by unknown's avatar unknown
Browse files

WL#2286 - Compile MySQL w/YASSL support

Fix GCC 4.0 link failure.
Better CXX_VERSION guessing.


config/ac-macros/misc.m4:
  Better CXX_VERSION guessing.
configure.in:
  CXX_VERSION guessing moved to misc.m4.
  HAVE_EXPLICIT_TEMPLATE_INSTANTIATION moved to config.h.
  Use compiler AR with MIPSpro and Forte instead of instantiating templates explicitly.
extra/yassl/src/crypto_wrapper.cpp:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
extra/yassl/src/template_instnt.cpp:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
extra/yassl/src/yassl_int.cpp:
  GCC 4.0 link fix. This file needs __cxa_pure_virtual.
extra/yassl/taocrypt/include/runtime.hpp:
  Fix GCC 4.0 link failure. Instruct compiler to always emit __cxa_pure_virtual even if
  it seems to be never used.
extra/yassl/taocrypt/include/types.hpp:
  Include config.h.
extra/yassl/taocrypt/src/algebra.cpp:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
extra/yassl/taocrypt/src/dh.cpp:
  GCC 4.0 link fix. This file needs __cxa_pure_virtual.
extra/yassl/taocrypt/src/dsa.cpp:
  GCC 4.0 link fix. This file needs __cxa_pure_virtual.
extra/yassl/taocrypt/src/integer.cpp:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
extra/yassl/taocrypt/src/rsa.cpp:
  GCC 4.0 link fix. This file needs __cxa_pure_virtual.
extra/yassl/taocrypt/src/template_instnt.cpp:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
sql/field.cc:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
sql/item.cc:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
sql/item_buff.cc:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
sql/mysqld.cc:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
sql/opt_range.cc:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
sql/set_var.cc:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
sql/slave.cc:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
sql/sql_acl.cc:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
sql/sql_class.cc:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
sql/sql_insert.cc:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
sql/sql_map.cc:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
sql/sql_select.cc:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
sql/sql_show.cc:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
sql/table.cc:
  EXPLICIT_TEMPLATE_INSTANTIATION renamed to HAVE_EXPLICIT_TEMPLAE_INSTANTIATION.
parent 2ccb5106
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -710,3 +710,30 @@ fi
])


AC_DEFUN([MYSQL_CHECK_CXX_VERSION], [
case $SYSTEM_TYPE in
  *netware*)
    CXX_VERSION=`$CXX -version | grep -i version`
  ;;
  *)
    CXX_VERSION=`$CXX --version | sed 1q`
    if test $? -ne "0" -o -z "$CXX_VERSION"
    then
      CXX_VERSION=`$CXX -V 2>&1|sed 1q` # trying harder for Sun and SGI
    fi
    if test $? -ne "0" -o -z "$CXX_VERSION"
    then
      CXX_VERSION=`$CXX -v 2>&1|sed 1q` # even harder for Alpha
    fi
    if test $? -ne "0" -o -z "$CXX_VERSION"
    then
      CXX_VERSION=""
    fi
esac
if test "$CXX_VERSION"
then
  AC_MSG_CHECKING("C++ compiler version");
  AC_MSG_RESULT("$CXX $CXX_VERSION")
fi
AC_SUBST(CXX_VERSION)
])
+8 −25
Original line number Diff line number Diff line
@@ -195,25 +195,8 @@ then
else
CC_VERSION=""
fi
case $SYSTEM_TYPE in
  *netware*)
CXX_VERSION=`$CXX -version | grep -i version`
    ;;
  *)
CXX_VERSION=`$CXX --version | sed 1q`
CXX_VERSION=${CXX_VERSION:-`$CXX -V|sed 1q`} # trying harder for Sun and SGI
CXX_VERSION=${CXX_VERSION:-`$CXX -V 2>&1|sed 1q`} # even harder for Alpha
    ;;
esac
if test $? -eq "0"
then
  AC_MSG_CHECKING("C++ compiler version");
  AC_MSG_RESULT("$CXX $CXX_VERSION")
else
CXX_VERSION=""
fi
AC_SUBST(CXX_VERSION)
AC_SUBST(CC_VERSION)
MYSQL_CHECK_CXX_VERSION

# Fix for sgi gcc / sgiCC which tries to emulate gcc
if test "$CC" = "sgicc"
@@ -367,18 +350,18 @@ then
  # Disable exceptions as they seams to create problems with gcc and threads.
  # mysqld doesn't use run-time-type-checking, so we disable it.
  CXXFLAGS="$CXXFLAGS -fno-implicit-templates -fno-exceptions -fno-rtti"
  CXXFLAGS="$CXXFLAGS -DEXPLICIT_TEMPLATE_INSTANTIATION"
  AC_DEFINE([HAVE_EXPLICIT_TEMPLATE_INSTANTIATION],
    [1], [Defined by configure. Explicit template instantiation.])
fi

case $CXX_VERSION in
  MIPSpro*)
    CXXFLAGS="$CXXFLAGS -no_prelink -DEXPLICIT_TEMPLATE_INSTANTIATION"
  ;;
  Compaq*)
    CXXFLAGS="$CXXFLAGS -nopt -DEXPLICIT_TEMPLATE_INSTANTIATION"
    AR=$CXX
    ARFLAGS="-ar -o"
  ;;
  Forte*)
    CXXFLAGS="$CXXFLAGS -instance=explicit -DEXPLICIT_TEMPLATE_INSTANTIATION"
  *Forte*)
    AR=$CXX
    ARFLAGS="-xar -o"
esac

# Avoid bug in fcntl on some versions of linux
+2 −2
Original line number Diff line number Diff line
@@ -971,7 +971,7 @@ x509* PemToDer(const char* fname, CertType type)
} // namespace


#ifdef EXPLICIT_TEMPLATE_INSTANTIATION
#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
namespace yaSSL {
template void ysDelete<DiffieHellman::DHImpl>(DiffieHellman::DHImpl*);
template void ysDelete<Integer::IntegerImpl>(Integer::IntegerImpl*);
@@ -989,6 +989,6 @@ template void ysDelete<RMD::RMDImpl>(RMD::RMDImpl*);
template void ysDelete<SHA::SHAImpl>(SHA::SHAImpl*);
template void ysDelete<MD5::MD5Impl>(MD5::MD5Impl*);
}
#endif // EXPLICIT_TEMPLATE_INSTANTIATION
#endif // HAVE_EXPLICIT_TEMPLATE_INSTANTIATION

#endif // !USE_CRYPTOPP_LIB
+1 −1
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@
#include "ripemd.hpp"
#include "openssl/ssl.h"

#ifdef EXPLICIT_TEMPLATE_INSTANTIATION
#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
#if !defined(USE_CRYPTOPP_LIB)
namespace TaoCrypt {
template class HMAC<MD5>;
+2 −1
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@
 * draft along with type conversion functions.
 */

#include "runtime.hpp"
#include "yassl_int.hpp"
#include "handshake.hpp"
#include "timer.hpp"
@@ -1975,7 +1976,7 @@ X509_NAME* X509::GetSubject()

} // namespace

#ifdef EXPLICIT_TEMPLATE_INSTANTIATION
#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
namespace mySTL {
template yaSSL::yassl_int_cpp_local1::SumData for_each<mySTL::list<yaSSL::input_buffer*>::iterator, yaSSL::yassl_int_cpp_local1::SumData>(mySTL::list<yaSSL::input_buffer*>::iterator, mySTL::list<yaSSL::input_buffer*>::iterator, yaSSL::yassl_int_cpp_local1::SumData);
template yaSSL::yassl_int_cpp_local1::SumBuffer for_each<mySTL::list<yaSSL::output_buffer*>::iterator, yaSSL::yassl_int_cpp_local1::SumBuffer>(mySTL::list<yaSSL::output_buffer*>::iterator, mySTL::list<yaSSL::output_buffer*>::iterator, yaSSL::yassl_int_cpp_local1::SumBuffer);
Loading