diff options
Diffstat (limited to 'storage/ndb/ndb_configure.m4')
-rw-r--r-- | storage/ndb/ndb_configure.m4 | 349 |
1 files changed, 349 insertions, 0 deletions
diff --git a/storage/ndb/ndb_configure.m4 b/storage/ndb/ndb_configure.m4 new file mode 100644 index 00000000000..21e4627515f --- /dev/null +++ b/storage/ndb/ndb_configure.m4 @@ -0,0 +1,349 @@ +dnl --------------------------------------------------------------------------- +dnl Macro: MYSQL_CHECK_NDBCLUSTER +dnl --------------------------------------------------------------------------- + +# The version of NDB in this version of MySQL is currently fixed +# and not supposed to be changed unless major changes happen in +# storage/ndb directory. +# NOTE! To avoid mixup with MySQL Cluster's version numbers +# this version of NDB is set to 5.5.7 although it's basically +# a copy of MySQL Cluster 6.2.18 +NDB_VERSION_MAJOR=5 +NDB_VERSION_MINOR=5 +NDB_VERSION_BUILD=7 +NDB_VERSION_STATUS="" +TEST_NDBCLUSTER="" + +dnl for build ndb docs + +AC_PATH_PROG(DOXYGEN, doxygen, no) +AC_PATH_PROG(PDFLATEX, pdflatex, no) +AC_PATH_PROG(MAKEINDEX, makeindex, no) + +AC_SUBST(DOXYGEN) +AC_SUBST(PDFLATEX) +AC_SUBST(MAKEINDEX) + + +AC_DEFUN([MYSQL_CHECK_NDB_OPTIONS], [ + AC_ARG_WITH([ndb-sci], + AC_HELP_STRING([--with-ndb-sci=DIR], + [Provide MySQL with a custom location of + sci library. Given DIR, sci library is + assumed to be in $DIR/lib and header files + in $DIR/include.]), + [mysql_sci_dir=${withval}], + [mysql_sci_dir=""]) + + case "$mysql_sci_dir" in + "no" ) + have_ndb_sci=no + AC_MSG_RESULT([-- not including sci transporter]) + ;; + * ) + if test -f "$mysql_sci_dir/lib/libsisci.a" -a \ + -f "$mysql_sci_dir/include/sisci_api.h"; then + NDB_SCI_INCLUDES="-I$mysql_sci_dir/include" + NDB_SCI_LIBS="$mysql_sci_dir/lib/libsisci.a" + AC_MSG_RESULT([-- including sci transporter]) + AC_DEFINE([NDB_SCI_TRANSPORTER], [1], + [Including Ndb Cluster DB sci transporter]) + AC_SUBST(NDB_SCI_INCLUDES) + AC_SUBST(NDB_SCI_LIBS) + have_ndb_sci="yes" + AC_MSG_RESULT([found sci transporter in $mysql_sci_dir/{include, lib}]) + else + AC_MSG_RESULT([could not find sci transporter in $mysql_sci_dir/{include, lib}]) + fi + ;; + esac + + AC_ARG_WITH([ndb-test], + [ + --with-ndb-test Include the NDB Cluster ndbapi test programs], + [ndb_test="$withval"], + [ndb_test=no]) + AC_ARG_WITH([ndb-docs], + [ + --with-ndb-docs Include the NDB Cluster ndbapi and mgmapi documentation], + [ndb_docs="$withval"], + [ndb_docs=no]) + AC_ARG_WITH([ndb-port], + [ + --with-ndb-port Port for NDB Cluster management server], + [ndb_port="$withval"], + [ndb_port="default"]) + AC_ARG_WITH([ndb-port-base], + [ + --with-ndb-port-base Base port for NDB Cluster transporters], + [ndb_port_base="$withval"], + [ndb_port_base="default"]) + AC_ARG_WITH([ndb-debug], + [ + --without-ndb-debug Disable special ndb debug features], + [ndb_debug="$withval"], + [ndb_debug="default"]) + AC_ARG_WITH([ndb-ccflags], + AC_HELP_STRING([--with-ndb-ccflags=CFLAGS], + [Extra CFLAGS for ndb compile]), + [ndb_ccflags=${withval}], + [ndb_ccflags=""]) + AC_ARG_WITH([ndb-binlog], + [ + --without-ndb-binlog Disable ndb binlog], + [ndb_binlog="$withval"], + [ndb_binlog="default"]) + + case "$ndb_ccflags" in + "yes") + AC_MSG_RESULT([The --ndb-ccflags option requires a parameter (passed to CC for ndb compilation)]) + ;; + *) + ndb_cxxflags_fix="$ndb_cxxflags_fix $ndb_ccflags" + ;; + esac + + AC_MSG_CHECKING([for NDB Cluster options]) + AC_MSG_RESULT([]) + + have_ndb_test=no + case "$ndb_test" in + yes ) + AC_MSG_RESULT([-- including ndbapi test programs]) + have_ndb_test="yes" + ;; + * ) + AC_MSG_RESULT([-- not including ndbapi test programs]) + ;; + esac + + have_ndb_docs=no + case "$ndb_docs" in + yes ) + AC_MSG_RESULT([-- including ndbapi and mgmapi documentation]) + have_ndb_docs="yes" + ;; + * ) + AC_MSG_RESULT([-- not including ndbapi and mgmapi documentation]) + ;; + esac + + case "$ndb_debug" in + yes ) + AC_MSG_RESULT([-- including ndb extra debug options]) + have_ndb_debug="yes" + ;; + full ) + AC_MSG_RESULT([-- including ndb extra extra debug options]) + have_ndb_debug="full" + ;; + no ) + AC_MSG_RESULT([-- not including ndb extra debug options]) + have_ndb_debug="no" + ;; + * ) + have_ndb_debug="default" + ;; + esac + + AC_MSG_RESULT([done.]) +]) + +AC_DEFUN([NDBCLUSTER_WORKAROUNDS], [ + + #workaround for Sun Forte/x86 see BUG#4681 + case $SYSTEM_TYPE-$MACHINE_TYPE-$ac_cv_prog_gcc in + *solaris*-i?86-no) + CFLAGS="$CFLAGS -DBIG_TABLES" + CXXFLAGS="$CXXFLAGS -DBIG_TABLES" + ;; + *) + ;; + esac + + # workaround for Sun Forte compile problem for ndb + case $SYSTEM_TYPE-$ac_cv_prog_gcc in + *solaris*-no) + ndb_cxxflags_fix="$ndb_cxxflags_fix -instances=static" + ;; + *) + ;; + esac + + # ndb fail for whatever strange reason to link Sun Forte/x86 + # unless using incremental linker + case $SYSTEM_TYPE-$MACHINE_TYPE-$ac_cv_prog_gcc-$have_ndbcluster in + *solaris*-i?86-no-yes) + CXXFLAGS="$CXXFLAGS -xildon" + ;; + *) + ;; + esac +]) + +AC_DEFUN([MYSQL_SETUP_NDBCLUSTER], [ + + AC_MSG_RESULT([Using NDB Cluster]) + with_partition="yes" + ndb_cxxflags_fix="" + TEST_NDBCLUSTER="--ndbcluster" + + ndbcluster_includes="-I\$(top_builddir)/storage/ndb/include -I\$(top_srcdir)/storage/ndb/include -I\$(top_srcdir)/storage/ndb/include/ndbapi -I\$(top_srcdir)/storage/ndb/include/mgmapi" + ndbcluster_libs="\$(top_builddir)/storage/ndb/src/.libs/libndbclient.a" + ndbcluster_system_libs="" + ndb_mgmclient_libs="\$(top_builddir)/storage/ndb/src/mgmclient/libndbmgmclient.la" + + MYSQL_CHECK_NDB_OPTIONS + NDBCLUSTER_WORKAROUNDS + + MAKE_BINARY_DISTRIBUTION_OPTIONS="$MAKE_BINARY_DISTRIBUTION_OPTIONS --with-ndbcluster" + + if test "$have_ndb_debug" = "default" + then + have_ndb_debug=$with_debug + fi + + if test "$have_ndb_debug" = "yes" + then + # Medium debug. + NDB_DEFS="-DNDB_DEBUG -DVM_TRACE -DERROR_INSERT -DARRAY_GUARD" + elif test "$have_ndb_debug" = "full" + then + NDB_DEFS="-DNDB_DEBUG_FULL -DVM_TRACE -DERROR_INSERT -DARRAY_GUARD" + else + # no extra ndb debug but still do asserts if debug version + if test "$with_debug" = "yes" + then + NDB_DEFS="" + else + NDB_DEFS="-DNDEBUG" + fi + fi + + if test X"$ndb_port" = Xdefault + then + ndb_port="1186" + fi + + have_ndb_binlog="no" + if test X"$ndb_binlog" = Xdefault || + test X"$ndb_binlog" = Xyes + then + have_ndb_binlog="yes" + fi + + if test X"$have_ndb_binlog" = Xyes + then + AC_DEFINE([WITH_NDB_BINLOG], [1], + [Including Ndb Cluster Binlog]) + AC_MSG_RESULT([Including Ndb Cluster Binlog]) + else + AC_MSG_RESULT([Not including Ndb Cluster Binlog]) + fi + + ndb_transporter_opt_objs="" + if test "$ac_cv_func_shmget" = "yes" && + test "$ac_cv_func_shmat" = "yes" && + test "$ac_cv_func_shmdt" = "yes" && + test "$ac_cv_func_shmctl" = "yes" && + test "$ac_cv_func_sigaction" = "yes" && + test "$ac_cv_func_sigemptyset" = "yes" && + test "$ac_cv_func_sigaddset" = "yes" && + test "$ac_cv_func_pthread_sigmask" = "yes" + then + AC_DEFINE([NDB_SHM_TRANSPORTER], [1], + [Including Ndb Cluster DB shared memory transporter]) + AC_MSG_RESULT([Including ndb shared memory transporter]) + ndb_transporter_opt_objs="$ndb_transporter_opt_objs SHM_Transporter.lo SHM_Transporter.unix.lo" + else + AC_MSG_RESULT([Not including ndb shared memory transporter]) + fi + + if test X"$have_ndb_sci" = Xyes + then + ndb_transporter_opt_objs="$ndb_transporter_opt_objs SCI_Transporter.lo" + fi + + ndb_opt_subdirs= + ndb_bin_am_ldflags="-static" + if test X"$have_ndb_test" = Xyes + then + ndb_opt_subdirs="test" + ndb_bin_am_ldflags="" + fi + + if test X"$have_ndb_docs" = Xyes + then + ndb_opt_subdirs="$ndb_opt_subdirs docs" + ndb_bin_am_ldflags="" + fi + + # building dynamic breaks on AIX. (If you want to try it and get unresolved + # __vec__delete2 and some such, try linking against libhC.) + case "$host_os" in + aix3.* | aix4.0.* | aix4.1.*) ;; + *) ndb_bin_am_ldflags="-static";; + esac + + # libndbclient versioning when linked with GNU ld. + if $LD --version 2>/dev/null|grep GNU >/dev/null 2>&1 ; then + NDB_LD_VERSION_SCRIPT="-Wl,--version-script=\$(top_builddir)/storage/ndb/src/libndb.ver" + AC_CONFIG_FILES(storage/ndb/src/libndb.ver) + fi + AC_SUBST(NDB_LD_VERSION_SCRIPT) + + AC_SUBST(NDB_SHARED_LIB_MAJOR_VERSION) + AC_SUBST(NDB_SHARED_LIB_VERSION) + + + AC_SUBST(NDB_VERSION_MAJOR) + AC_SUBST(NDB_VERSION_MINOR) + AC_SUBST(NDB_VERSION_BUILD) + AC_SUBST(NDB_VERSION_STATUS) + AC_DEFINE_UNQUOTED([NDB_VERSION_MAJOR], [$NDB_VERSION_MAJOR], + [NDB major version]) + AC_DEFINE_UNQUOTED([NDB_VERSION_MINOR], [$NDB_VERSION_MINOR], + [NDB minor version]) + AC_DEFINE_UNQUOTED([NDB_VERSION_BUILD], [$NDB_VERSION_BUILD], + [NDB build version]) + AC_DEFINE_UNQUOTED([NDB_VERSION_STATUS], ["$NDB_VERSION_STATUS"], + [NDB status version]) + + AC_SUBST(ndbcluster_includes) + AC_SUBST(ndbcluster_libs) + AC_SUBST(ndbcluster_system_libs) + AC_SUBST(ndb_mgmclient_libs) + AC_SUBST(NDB_SCI_LIBS) + + AC_SUBST(ndb_transporter_opt_objs) + AC_SUBST(ndb_port) + AC_SUBST(ndb_bin_am_ldflags) + AC_SUBST(ndb_opt_subdirs) + + AC_SUBST(NDB_DEFS) + AC_SUBST(ndb_cxxflags_fix) + + NDB_SIZEOF_CHARP="$ac_cv_sizeof_charp" + NDB_SIZEOF_CHAR="$ac_cv_sizeof_char" + NDB_SIZEOF_SHORT="$ac_cv_sizeof_short" + NDB_SIZEOF_INT="$ac_cv_sizeof_int" + NDB_SIZEOF_LONG="$ac_cv_sizeof_long" + NDB_SIZEOF_LONG_LONG="$ac_cv_sizeof_long_long" + AC_SUBST([NDB_SIZEOF_CHARP]) + AC_SUBST([NDB_SIZEOF_CHAR]) + AC_SUBST([NDB_SIZEOF_SHORT]) + AC_SUBST([NDB_SIZEOF_INT]) + AC_SUBST([NDB_SIZEOF_LONG]) + AC_SUBST([NDB_SIZEOF_LONG_LONG]) + + AC_CONFIG_FILES([ + storage/ndb/include/ndb_version.h + storage/ndb/include/ndb_global.h + storage/ndb/include/ndb_types.h + ]) +]) + +AC_SUBST(TEST_NDBCLUSTER) +dnl --------------------------------------------------------------------------- +dnl END OF MYSQL_CHECK_NDBCLUSTER SECTION +dnl --------------------------------------------------------------------------- |