pandora_have_libmysqlclient.m4 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. dnl -*- mode: m4; c-basic-offset: 2; indent-tabs-mode: nil; -*-
  2. dnl vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
  3. dnl
  4. dnl Copyright (C) 2010 Monty Taylor
  5. dnl This file is free software; Sun Microsystems
  6. dnl gives unlimited permission to copy and/or distribute it,
  7. dnl with or without modifications, as long as this notice is preserved.
  8. dnl
  9. AC_DEFUN([PANDORA_WITH_MYSQL],[
  10. AC_ARG_WITH([mysql],
  11. [AS_HELP_STRING([--with-mysql=PATH],
  12. [path to mysql_config binary or mysql prefix dir])],
  13. [with_mysql=$withval],
  14. [with_mysql=":"])
  15. dnl There are three possibilities:
  16. dnl 1) nothing is given: we will search for mysql_config in PATH
  17. dnl 2) the location of mysql_config is given: we'll use that to determine
  18. dnl 3) a directory argument is given: that will be mysql_base
  19. dnl option 1: nothing, we need to insert something into MYSQL_CONFIG
  20. AS_IF([test "x$with_mysql" = "x:"],[
  21. AC_CHECK_PROGS(MYSQL_CONFIG,[mysql_config])
  22. ],[
  23. MYSQL_CONFIG="${with_mysql}"
  24. ])
  25. AC_CACHE_CHECK([for MySQL Base Location],[pandora_cv_mysql_base],[
  26. dnl option 2: something in MYSQL_CONFIG now, use that to get a base dir
  27. AS_IF([test -f "${MYSQL_CONFIG}" -a -x "${MYSQL_CONFIG}"],[
  28. pandora_cv_mysql_base=$(dirname $(MYSQL_CONFIG --include | sed 's/-I//'))
  29. ],[
  30. dnl option 1: a directory
  31. AS_IF([test -d $with_mysql],[pandora_cv_mysql_base=$with_mysql],[
  32. pandora_cv_mysql_base="not found"
  33. ])
  34. ])
  35. ])
  36. ])
  37. AC_DEFUN([_PANDORA_SEARCH_LIBMYSQLCLIENT],[
  38. AC_REQUIRE([AC_LIB_PREFIX])
  39. AC_ARG_ENABLE([libmysqlclient],
  40. [AS_HELP_STRING([--disable-libmysqlclient],
  41. [Build with libmysqlclient support @<:@default=on@:>@])],
  42. [ac_enable_libmysqlclient="$enableval"],
  43. [ac_enable_libmysqlclient="yes"])
  44. AS_IF([test "x$ac_enable_libmysqlclient" = "xyes"],[
  45. AC_LIB_HAVE_LINKFLAGS(mysqlclient_r,,[
  46. #include <mysql/mysql.h>
  47. ],[
  48. MYSQL mysql;
  49. ])],[
  50. ac_cv_libmysqlclient_r="no"
  51. ])
  52. AM_CONDITIONAL(HAVE_LIBMYSQLCLIENT, [test "x${ac_cv_libmysqlclient_r}" = "xyes"])
  53. AC_DEFUN([PANDORA_HAVE_LIBMYSQLCLIENT],[
  54. AC_REQUIRE([_PANDORA_SEARCH_LIBMYSQLCLIENT])
  55. ])
  56. AC_DEFUN([PANDORA_REQUIRE_LIBMYSQLCLIENT],[
  57. AC_REQUIRE([PANDORA_HAVE_LIBMYSQLCLIENT])
  58. AS_IF([test "x${ac_cv_libmysqlclient_r}" = "xno"],
  59. PANDORA_MSG_ERROR([libmysqlclient_r is required for ${PACKAGE}]))
  60. ])
  61. AS_IF([test "x$MYSQL_CONFIG" = "xISDIR"],[
  62. IBASE="-I${with_mysql}"
  63. MYSQL_CONFIG="${with_mysql}/scripts/mysql_config"
  64. ADDIFLAGS="$IBASE/include "
  65. ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb/include/ndbapi "
  66. ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb/include/mgmapi "
  67. ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb/include "
  68. LDFLAGS="-L${with_mysql}/storage/ndb/src/.libs -L${with_mysql}/libmysql_r/.libs/ -L${with_mysql}/mysys/.libs -L${with_mysql}/mysys -L${with_mysql}/strings/.libs -L${with_mysql}/strings "
  69. ],[
  70. IBASE=`$MYSQL_CONFIG --include`
  71. ADDIFLAGS=""
  72. # add regular MySQL C flags
  73. ADDCFLAGS=`$MYSQL_CONFIG --cflags`
  74. # add NdbAPI specific C flags
  75. LDFLAGS="$LDFLAGS "`$MYSQL_CONFIG --libs_r | sed 's/-lmysqlclient_r//'`
  76. ])
  77. ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb"
  78. ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb/ndbapi"
  79. ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb/mgmapi"
  80. ADDIFLAGS="$ADDIFLAGS $IBASE/ndb"
  81. ADDIFLAGS="$ADDIFLAGS $IBASE/ndb/ndbapi"
  82. ADDIFLAGS="$ADDIFLAGS $IBASE/ndb/mgmapi"
  83. ADDIFLAGS="$ADDIFLAGS $IBASE"
  84. CFLAGS="$CFLAGS $ADDCFLAGS $ADDIFLAGS"
  85. CXXFLAGS="$CXXFLAGS $ADDCFLAGS $ADDIFLAGS"
  86. MYSQL_INCLUDES="$IBASE $ADDIFLAGS"
  87. dnl AC_CHECK_LIB([mysqlclient_r],[safe_mutex_init],,[PANDORA_MSG_ERROR([Can't link against libmysqlclient_r])])
  88. dnl First test to see if we can run with only ndbclient
  89. AC_CHECK_LIB([ndbclient],[decimal_bin_size],,[dnl else
  90. LDFLAGS="$LDFLAGS -lmysys -ldbug"
  91. AC_CHECK_LIB([mysqlclient_r],[safe_mutex_init],,)
  92. AC_CHECK_LIB([ndbclient],[ndb_init],,[
  93. PANDORA_MSG_ERROR([Can't link against libndbclient])])
  94. AC_CHECK_LIB([mystrings],[decimal_bin_size],,[
  95. PANDORA_MSG_ERROR([Can't find decimal_bin_size])])])
  96. AC_MSG_CHECKING(for NdbApi headers)
  97. AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <NdbApi.hpp>]], [[int attr=NdbTransaction::Commit; ]])],[ndbapi_found="yes"],[])
  98. AS_IF([test "$ndbapi_found" = "yes"],
  99. [AC_MSG_RESULT(found)],
  100. [PANDORA_MSG_ERROR([Couldn't find NdbApi.hpp!])])
  101. AC_MSG_CHECKING(for NDB_LE_ThreadConfigLoop)
  102. AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <mgmapi.h>]], [[int attr=NDB_LE_ThreadConfigLoop; ]])],[have_cge63="yes"],[])
  103. AS_IF([test "$have_cge63" = "yes"],
  104. [AC_MSG_RESULT(found)
  105. HAVE_CGE63="-DCGE63"
  106. AC_SUBST(HAVE_CGE63)],
  107. [AC_MSG_RESULT(missing)])
  108. LDFLAGS="$LDFLAGS $LIBS"
  109. MYSQL_MAJOR_VERSION=`$MYSQL_CONFIG --version | sed -e 's/\.//g' -e 's/-//g' -e 's/[A-Za-z]//g' | cut -c1-2`
  110. case "$MYSQL_MAJOR_VERSION" in
  111. 50) AC_DEFINE(MYSQL_50, [1], [mysql5.0])
  112. ;;
  113. 51) AC_DEFINE(MYSQL_51, [1], [mysql5.1])
  114. ;;
  115. *) echo "Unsupported version of MySQL Detected!"
  116. ;;
  117. esac
  118. AC_SUBST(MYSQL_MAJOR_VERSION)
  119. AC_SUBST(MYSQL_CONFIG)
  120. ])