~drizzle-trunk/drizzle/development

1273.12.1 by Monty Taylor
pandora-build v0.100 - Fixes several bugs found by cb1kenobi. Add several thoughts from folks at LCA.
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
10
AC_DEFUN([PANDORA_WITH_MYSQL],[
11
  AC_ARG_WITH([mysql],
12
    [AS_HELP_STRING([--with-mysql=PATH],
13
        [path to mysql_config binary or mysql prefix dir])], 
14
      [with_mysql=$withval],
15
      [with_mysql=":"])
16
17
  dnl There are three possibilities:
18
  dnl   1) nothing is given: we will search for mysql_config in PATH
19
  dnl   2) the location of mysql_config is given: we'll use that to determine
20
  dnl   3) a directory argument is given: that will be mysql_base
21
22
     
23
  dnl option 1: nothing, we need to insert something into MYSQL_CONFIG
24
  AS_IF([test "x$with_mysql" = "x:"],[
25
    AC_CHECK_PROGS(MYSQL_CONFIG,[mysql_config])
26
  ],[
27
    MYSQL_CONFIG="${with_mysql}"
28
  ])
29
30
  AC_CACHE_CHECK([for MySQL Base Location],[pandora_cv_mysql_base],[
31
32
    dnl option 2: something in MYSQL_CONFIG now, use that to get a base dir
33
    AS_IF([test -f "${MYSQL_CONFIG}" -a -x "${MYSQL_CONFIG}"],[
34
      pandora_cv_mysql_base=$(dirname $(MYSQL_CONFIG --include | sed 's/-I//'))
35
    ],[
36
      dnl option 1: a directory
37
      AS_IF([test -d $with_mysql],[pandora_cv_mysql_base=$with_mysql],[
38
        pandora_cv_mysql_base="not found"
39
      ])
40
    ])
41
  ])
42
])
43
44
AC_DEFUN([_PANDORA_SEARCH_LIBMYSQLCLIENT],[
45
  AC_REQUIRE([AC_LIB_PREFIX])
46
47
  AC_ARG_ENABLE([libmysqlclient],
48
    [AS_HELP_STRING([--disable-libmysqlclient],
49
      [Build with libmysqlclient support @<:@default=on@:>@])],
50
    [ac_enable_libmysqlclient="$enableval"],
51
    [ac_enable_libmysqlclient="yes"])
52
53
  AS_IF([test "x$ac_enable_libmysqlclient" = "xyes"],[
54
    AC_LIB_HAVE_LINKFLAGS(mysqlclient_r,,[
55
#include <mysql/mysql.h>
56
    ],[
57
MYSQL mysql;
58
  ])],[
59
    ac_cv_libmysqlclient_r="no"
60
  ])
61
62
  AM_CONDITIONAL(HAVE_LIBMYSQLCLIENT, [test "x${ac_cv_libmysqlclient_r}" = "xyes"])
63
  
64
AC_DEFUN([PANDORA_HAVE_LIBMYSQLCLIENT],[
65
  AC_REQUIRE([_PANDORA_SEARCH_LIBMYSQLCLIENT])
66
])
67
68
AC_DEFUN([PANDORA_REQUIRE_LIBMYSQLCLIENT],[
69
  AC_REQUIRE([PANDORA_HAVE_LIBMYSQLCLIENT])
70
  AS_IF([test "x${ac_cv_libmysqlclient_r}" = "xno"],
71
      AC_MSG_ERROR([libmysqlclient_r is required for ${PACKAGE}]))
72
])
73
74
  AS_IF([test "x$MYSQL_CONFIG" = "xISDIR"],[
75
    IBASE="-I${with_mysql}"
76
    MYSQL_CONFIG="${with_mysql}/scripts/mysql_config"
77
    ADDIFLAGS="$IBASE/include "
78
    ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb/include/ndbapi "
79
    ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb/include/mgmapi "
80
    ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb/include "
81
    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 "
82
  ],[
83
    IBASE=`$MYSQL_CONFIG --include`
84
    ADDIFLAGS=""
85
    # add regular MySQL C flags
86
    ADDCFLAGS=`$MYSQL_CONFIG --cflags` 
87
    # add NdbAPI specific C flags
88
    LDFLAGS="$LDFLAGS "`$MYSQL_CONFIG --libs_r | sed 's/-lmysqlclient_r//'`
89
    ])
90
91
92
    ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb"
93
    ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb/ndbapi"
94
    ADDIFLAGS="$ADDIFLAGS $IBASE/storage/ndb/mgmapi"
95
    ADDIFLAGS="$ADDIFLAGS $IBASE/ndb"
96
    ADDIFLAGS="$ADDIFLAGS $IBASE/ndb/ndbapi"
97
    ADDIFLAGS="$ADDIFLAGS $IBASE/ndb/mgmapi"
98
    ADDIFLAGS="$ADDIFLAGS $IBASE"
99
100
    CFLAGS="$CFLAGS $ADDCFLAGS $ADDIFLAGS"    
101
    CXXFLAGS="$CXXFLAGS $ADDCFLAGS $ADDIFLAGS" 
102
    MYSQL_INCLUDES="$IBASE $ADDIFLAGS"   
103
104
    
105
    dnl AC_CHECK_LIB([mysqlclient_r],[safe_mutex_init],,[AC_MSG_ERROR([Can't link against libmysqlclient_r])])
106
    dnl First test to see if we can run with only ndbclient
107
    AC_CHECK_LIB([ndbclient],[decimal_bin_size],,[dnl else
108
      LDFLAGS="$LDFLAGS -lmysys -ldbug"
109
      AC_CHECK_LIB([mysqlclient_r],[safe_mutex_init],,)
110
      AC_CHECK_LIB([ndbclient],[ndb_init],,[
111
        AC_MSG_ERROR([Can't link against libndbclient])])
112
      AC_CHECK_LIB([mystrings],[decimal_bin_size],,[
113
          AC_MSG_ERROR([Can't find decimal_bin_size])])])
114
    AC_MSG_CHECKING(for NdbApi headers)
115
     AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <NdbApi.hpp>]], [[int attr=NdbTransaction::Commit; ]])],[ndbapi_found="yes"],[])
116
    AS_IF([test "$ndbapi_found" = "yes"], 
117
       [AC_MSG_RESULT(found)],
118
       [AC_MSG_ERROR([Couldn't find NdbApi.hpp!])])
119
    AC_MSG_CHECKING(for NDB_LE_ThreadConfigLoop)
120
      AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <mgmapi.h>]], [[int attr=NDB_LE_ThreadConfigLoop; ]])],[have_cge63="yes"],[])
121
      AS_IF([test "$have_cge63" = "yes"],
122
        [AC_MSG_RESULT(found)
123
         HAVE_CGE63="-DCGE63"
124
         AC_SUBST(HAVE_CGE63)],
125
        [AC_MSG_RESULT(missing)])
126
127
    LDFLAGS="$LDFLAGS $LIBS"
128
  
129
130
    MYSQL_MAJOR_VERSION=`$MYSQL_CONFIG --version | sed -e 's/\.//g' -e 's/-//g' -e 's/[A-Za-z]//g' | cut -c1-2`
131
132
    case "$MYSQL_MAJOR_VERSION" in 
133
      50) AC_DEFINE(MYSQL_50, [1], [mysql5.0])
134
	;;
135
      51) AC_DEFINE(MYSQL_51, [1], [mysql5.1])
136
        ;;
137
      *) echo "Unsupported version of MySQL Detected!"
138
        ;;
139
     esac
140
    
141
    AC_SUBST(MYSQL_MAJOR_VERSION)
142
    AC_SUBST(MYSQL_CONFIG)
143
    
144
  
145
])
146