summaryrefslogtreecommitdiff
path: root/storage/ndb/ndb_configure.m4
diff options
context:
space:
mode:
Diffstat (limited to 'storage/ndb/ndb_configure.m4')
-rw-r--r--storage/ndb/ndb_configure.m4349
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 ---------------------------------------------------------------------------