~drizzle-trunk/drizzle/development

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
dnl -*- mode: m4; c-basic-offset: 2; indent-tabs-mode: nil; -*-
dnl vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
dnl
dnl  Copyright (C) 2010 Monty Taylor
dnl  This file is free software; Sun Microsystems
dnl  gives unlimited permission to copy and/or distribute it,
dnl  with or without modifications, as long as this notice is preserved.
dnl

AC_DEFUN([PANDORA_WITH_MYSQL],[
  AC_ARG_WITH([mysql],
    [AS_HELP_STRING([--with-mysql=PATH],
        [path to mysql_config binary or mysql prefix dir])], 
      [with_mysql=$withval],
      [with_mysql=":"])

  dnl There are three possibilities:
  dnl   1) nothing is given: we will search for mysql_config in PATH
  dnl   2) the location of mysql_config is given: we'll use that to determine
  dnl   3) a directory argument is given: that will be mysql_base

     
  dnl option 1: nothing, we need to insert something into MYSQL_CONFIG
  AS_IF([test "x$with_mysql" = "x:"],[
    AC_CHECK_PROGS(MYSQL_CONFIG,[mysql_config])
  ],[
    MYSQL_CONFIG="${with_mysql}"
  ])

  AC_CACHE_CHECK([for MySQL Base Location],[pandora_cv_mysql_base],[

    dnl option 2: something in MYSQL_CONFIG now, use that to get a base dir
    AS_IF([test -f "${MYSQL_CONFIG}" -a -x "${MYSQL_CONFIG}"],[
      pandora_cv_mysql_base=$(dirname $(MYSQL_CONFIG --include | sed 's/-I//'))
    ],[
      dnl option 1: a directory
      AS_IF([test -d $with_mysql],[pandora_cv_mysql_base=$with_mysql],[
        pandora_cv_mysql_base="not found"
      ])
    ])
  ])
])

AC_DEFUN([_PANDORA_SEARCH_LIBMYSQLCLIENT],[
  AC_REQUIRE([AC_LIB_PREFIX])

  AC_ARG_ENABLE([libmysqlclient],
    [AS_HELP_STRING([--disable-libmysqlclient],
      [Build with libmysqlclient support @<:@default=on@:>@])],
    [ac_enable_libmysqlclient="$enableval"],
    [ac_enable_libmysqlclient="yes"])

  AS_IF([test "x$ac_enable_libmysqlclient" = "xyes"],[
    AC_LIB_HAVE_LINKFLAGS(mysqlclient_r,,[
#include <mysql/mysql.h>
    ],[
MYSQL mysql;
  ])],[
    ac_cv_libmysqlclient_r="no"
  ])

  AM_CONDITIONAL(HAVE_LIBMYSQLCLIENT, [test "x${ac_cv_libmysqlclient_r}" = "xyes"])
  
AC_DEFUN([PANDORA_HAVE_LIBMYSQLCLIENT],[
  AC_REQUIRE([_PANDORA_SEARCH_LIBMYSQLCLIENT])
])

AC_DEFUN([PANDORA_REQUIRE_LIBMYSQLCLIENT],[
  AC_REQUIRE([PANDORA_HAVE_LIBMYSQLCLIENT])
  AS_IF([test "x${ac_cv_libmysqlclient_r}" = "xno"],
      AC_MSG_ERROR([libmysqlclient_r is required for ${PACKAGE}]))
])

  AS_IF([test "x$MYSQL_CONFIG" = "xISDIR"],[
    IBASE="-I${with_mysql}"
    MYSQL_CONFIG="${with_mysql}/scripts/mysql_config"
    ADDIFLAGS="$IBASE/include "
    ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb/include/ndbapi "
    ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb/include/mgmapi "
    ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb/include "
    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 "
  ],[
    IBASE=`$MYSQL_CONFIG --include`
    ADDIFLAGS=""
    # add regular MySQL C flags
    ADDCFLAGS=`$MYSQL_CONFIG --cflags` 
    # add NdbAPI specific C flags
    LDFLAGS="$LDFLAGS "`$MYSQL_CONFIG --libs_r | sed 's/-lmysqlclient_r//'`
    ])


    ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb"
    ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb/ndbapi"
    ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb/mgmapi"
    ADDIFLAGS="$ADDIFLAGS $IBASE/ndb"
    ADDIFLAGS="$ADDIFLAGS $IBASE/ndb/ndbapi"
    ADDIFLAGS="$ADDIFLAGS $IBASE/ndb/mgmapi"
    ADDIFLAGS="$ADDIFLAGS $IBASE"

    CFLAGS="$CFLAGS $ADDCFLAGS $ADDIFLAGS"    
    CXXFLAGS="$CXXFLAGS $ADDCFLAGS $ADDIFLAGS" 
    MYSQL_INCLUDES="$IBASE $ADDIFLAGS"   

    
    dnl AC_CHECK_LIB([mysqlclient_r],[safe_mutex_init],,[AC_MSG_ERROR([Can't link against libmysqlclient_r])])
    dnl First test to see if we can run with only ndbclient
    AC_CHECK_LIB([ndbclient],[decimal_bin_size],,[dnl else
      LDFLAGS="$LDFLAGS -lmysys -ldbug"
      AC_CHECK_LIB([mysqlclient_r],[safe_mutex_init],,)
      AC_CHECK_LIB([ndbclient],[ndb_init],,[
        AC_MSG_ERROR([Can't link against libndbclient])])
      AC_CHECK_LIB([mystrings],[decimal_bin_size],,[
          AC_MSG_ERROR([Can't find decimal_bin_size])])])
    AC_MSG_CHECKING(for NdbApi headers)
     AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <NdbApi.hpp>]], [[int attr=NdbTransaction::Commit; ]])],[ndbapi_found="yes"],[])
    AS_IF([test "$ndbapi_found" = "yes"], 
       [AC_MSG_RESULT(found)],
       [AC_MSG_ERROR([Couldn't find NdbApi.hpp!])])
    AC_MSG_CHECKING(for NDB_LE_ThreadConfigLoop)
      AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <mgmapi.h>]], [[int attr=NDB_LE_ThreadConfigLoop; ]])],[have_cge63="yes"],[])
      AS_IF([test "$have_cge63" = "yes"],
        [AC_MSG_RESULT(found)
         HAVE_CGE63="-DCGE63"
         AC_SUBST(HAVE_CGE63)],
        [AC_MSG_RESULT(missing)])

    LDFLAGS="$LDFLAGS $LIBS"
  

    MYSQL_MAJOR_VERSION=`$MYSQL_CONFIG --version | sed -e 's/\.//g' -e 's/-//g' -e 's/[A-Za-z]//g' | cut -c1-2`

    case "$MYSQL_MAJOR_VERSION" in 
      50) AC_DEFINE(MYSQL_50, [1], [mysql5.0])
	;;
      51) AC_DEFINE(MYSQL_51, [1], [mysql5.1])
        ;;
      *) echo "Unsupported version of MySQL Detected!"
        ;;
     esac
    
    AC_SUBST(MYSQL_MAJOR_VERSION)
    AC_SUBST(MYSQL_CONFIG)
    
  
])