# |
# $Id: configure.in,v 1.23 2001/02/06 22:59:25 grubba Exp $ |
# |
# Configure script for the mysql-module |
# |
# Henrik Grubbström |
# |
|
# |
# NOTE: |
# Prior to 3.20.0 After 3.20.0 |
# -------------------------------------------------------------- |
# /usr/local/mysql/mach-lib-threads /usr/local/lib/mysql |
# /usr/local/mysql/include /usr/local/include/mysql |
# libmysql.a libmysqllib.a |
# libstrings.a libmystrings.a |
# |
|
|
AC_INIT(mysql.c) |
AC_CONFIG_HEADER(config.h) |
|
AC_MODULE_INIT() |
|
OLD_LIBS=$LIBS |
OLD_LDFLAGS=$LDFLAGS |
OLD_CPPFLAGS=$CPPFLAGS |
MYSQL_LIBS="" |
|
AC_ARG_WITH(mysql, [ --without-mysql no support for the Mysql database],[],[with_mysql=yes]) |
AC_ARG_WITH(root, [ --with-root=path specify a cross-compilation root-directory],[ |
case "$with_root" in |
/) |
with_root="" |
;; |
/*) |
;; |
no) |
with_root="" |
;; |
*) |
AC_MSG_WARN([Root path $with_root is not absolute. Ignored.]) |
with_root="" |
;; |
esac |
],[with_root=""]) |
|
if test x$with_mysql = xno; then |
: |
else |
AC_MSG_CHECKING(for Mysql lib-directory) |
|
libdirs="$with_root/usr/local/lib/mysql $with_root/usr/local/mysql/lib/mysql $with_root/opt/lib/mysql $with_root/opt/mysql/lib/mysql $with_root/usr/gnu/lib/mysql $with_root/usr/lib/mysql $with_root/lib/mysql $with_root/usr/local/mysql/lib $with_root/usr/local/mysql/mach-lib-thread no" |
incdirs="$with_root/usr/local/include/mysql $with_root/usr/local/mysql/include/mysql $with_root/opt/include/mysql $with_root/opt/mysql/include/mysql $with_root/usr/gnu/include/mysql $with_root/usr/include/mysql $with_root/include/mysql $with_root/usr/local/mysql/include no" |
|
if test x$with_mysql = xyes; then :; else |
# Mysql installation directory specified. |
|
libdirs="$with_mysql/lib/mysql $with_mysql/lib $libdirs" |
incdirs="$with_mysql/include/mysql $with_mysql/include $incdirs" |
fi |
|
AC_CACHE_VAL(pike_cv_mysql_lib_dir, [ |
for pike_cv_mysql_lib_dir in $libdirs; do |
if test -d $pike_cv_mysql_lib_dir/.; then |
break |
else |
: |
fi |
done |
]) |
|
AC_MSG_RESULT($pike_cv_mysql_lib_dir) |
|
if test x$pike_cv_mysql_lib_dir = xno; then :; else |
echo Adding $pike_cv_mysql_lib_dir to the library search path. |
LDFLAGS="${LDFLAGS} -R$pike_cv_mysql_lib_dir -L$pike_cv_mysql_lib_dir" |
fi |
|
AC_MSG_CHECKING(for Mysql include-directory) |
|
AC_CACHE_VAL(pike_cv_mysql_include_dir, [ |
for pike_cv_mysql_include_dir in $incdirs; do |
if test -d $pike_cv_mysql_include_dir/.; then |
break |
else |
: |
fi |
done |
]) |
|
AC_MSG_RESULT($pike_cv_mysql_include_dir) |
|
if test x$pike_cv_mysql_include_dir = xno; then :; else |
echo Adding $pike_cv_mysql_include_dir to the include search path. |
CPPFLAGS="${CPPFLAGS} -I$pike_cv_mysql_include_dir" |
fi |
|
# Header file |
|
AC_CHECK_HEADERS(winsock.h mysql.h mysql/mysql.h errmsg.h mysql/errmsg.h) |
|
# Mysql libs |
|
pike_cv_mysql="unknown" |
|
AC_CHECK_LIB(mystrings, bchange, [ |
LIBS="-lmystrings $LIBS" |
MYSQL_LIBS="-lmystrings ${MYSQL_LIBS}" |
pike_cv_mysql="post3.20" |
], [ |
AC_CHECK_LIB(strings, bchange, [ |
LIBS="-lstrings $LIBS" |
MYSQL_LIBS="-lstrings ${MYSQL_LIBS}" |
pike_cv_mysql="pre3.20" |
], []) |
]) |
|
AC_MSG_CHECKING(Mysql version) |
|
AC_MSG_RESULT($pike_cv_mysql) |
|
# System libs which might be needed |
|
if echo $LIBS|grep -- -lsocket >&5 2>&5; then |
: |
else |
AC_CHECK_LIB(socket, socket, [ |
LIBS="-lsocket $LIBS" |
MYSQL_LIBS="-lsocket ${MYSQL_LIBS}" |
], []) |
fi |
if echo $LIBS|grep -- -lnsl >&5 2>&5; then |
: |
else |
AC_CHECK_LIB(nsl, gethostbyname, [ |
LIBS="-lnsl $LIBS" |
MYSQL_LIBS="-lnsl ${MYSQL_LIBS}" |
], []) |
fi |
if echo $LIBS|grep -- -lm >&5 2>&5; then |
: |
else |
AC_CHECK_LIB(m, floor, [ |
LIBS="-lm $LIBS" |
MYSQL_LIBS="-lm ${MYSQL_LIBS}" |
], []) |
fi |
|
# Pthreads is still needed in 3.20.0. |
AC_CHECK_FUNC(pthread_self, [], [ |
AC_CHECK_LIB(pthread, pthread_self, [ |
LIBS="-lpthread $LIBS" |
echo Warning added -lpthread to \$LIBS\! |
], [ |
AC_CHECK_LIB(pthreads, pthread_self, [ |
LIBS="-lpthreads $LIBS" |
echo Warning added -lpthreads to \$LIBS\! |
], []) |
]) |
]) |
|
AC_CHECK_LIB(dbug, _db_doprnt_, [ |
LIBS="-ldbug $LIBS" |
MYSQL_LIBS="-ldbug ${MYSQL_LIBS}" |
], []) |
|
AC_CHECK_LIB(mysys, my_init, [ |
LIBS="-lmysys $LIBS" |
MYSQL_LIBS="-lmysys ${MYSQL_LIBS}" |
], []) |
|
# mysql 3.23.x libmysqlclient requires zlib... |
AC_CHECK_LIB(z, compress, [ |
LIBS="-lz $LIBS" |
MYSQL_LIBS="-lz ${MYSQL_LIBS}" |
], []) |
|
# Try a couple of mysqlclient libs |
# in order of age, newest first. |
|
define([AC_CHECK_SQLLIB], |
[ |
AC_MSG_CHECKING(for mysql_connect in $1) |
AC_CACHE_VAL(ac_cv_pike_lib_$1_mysql_connect, |
[ |
ac_save_LIBS="$LIBS" |
LIBS="-l$1 $LIBS" |
AC_TRY_LINK( |
[ |
#ifdef HAVE_WINSOCK_H |
#include <winsock.h> |
#endif |
|
#ifdef HAVE_MYSQL_H |
#include <mysql.h> |
#else |
#ifdef HAVE_MYSQL_MYSQL_H |
#include <mysql/mysql.h> |
#endif |
#endif |
],[ |
mysql_connect(0,0,0,0); |
],ac_cv_pike_lib_$1_mysql_connect=yes,ac_cv_pike_lib_$1_mysql_connect=no) |
LIBS="$ac_save_LIBS" |
]) |
|
if test "x$ac_cv_pike_lib_$1_mysql_connect" = xyes ; then |
AC_MSG_RESULT(yes) |
$2 |
else |
AC_MSG_RESULT(no) |
$3 |
fi |
]) |
|
AC_CHECK_SQLLIB(mysqlclient, [ |
LIBS="-lmysqlclient $LIBS" |
MYSQL_LIBS="-lmysqlclient ${MYSQL_LIBS}" |
], [ |
AC_CHECK_SQLLIB(mysqllib, [ |
LIBS="-lmysqllib $LIBS" |
MYSQL_LIBS="-lmysqllib ${MYSQL_LIBS}" |
], [ |
AC_CHECK_SQLLIB(mysql, [ |
LIBS="-lmysql $LIBS" |
MYSQL_LIBS="-lmysql ${MYSQL_LIBS}" |
], [ pike_cv_mysql="no" ]) |
]) |
]) |
|
if test x$pike_cv_mysql = xno; then |
# Restore variables, so we don't link with unnessesary libs |
|
LIBS=$OLD_LIBS |
CPPFLAGS=$OLD_CPPFLAGS |
LDFLAGS=$OLD_LDFLAGS |
MYSQL_LIBS="" |
else |
AC_DEFINE(HAVE_MYSQL) |
|
# Note: mysql_port and mysql_unix_port aren't functions, but that shouldn't matter |
define([PIKE_CHECK_MYSQL_FUNC], [ |
changequote(<<, >>)dnl |
define(<<AC_CV_NAME>>, translit(pike_cv_mysql_$1, [ *], [_p]))dnl |
changequote([, ])dnl |
AC_MSG_CHECKING(for $1) |
AC_CACHE_VAL(AC_CV_NAME, [ |
AC_TRY_COMPILE([ |
#ifdef HAVE_MYSQL_H |
#include <mysql.h> |
#else |
#ifdef HAVE_MYSQL_MYSQL_H |
#include <mysql/mysql.h> |
#else |
#error Need mysql.h headerfile! |
#endif |
#endif |
|
#ifndef STDCALL |
#define STDCALL |
#endif /* STDCALL */ |
|
], [ |
void (*foo__)() = (void (*)())&$1; |
], [AC_CV_NAME="yes"], [AC_CV_NAME="no"]) |
]) |
if test "$AC_CV_NAME" = "yes"; then |
AC_DEFINE(translit(HAVE_$1,[a-z],[A-Z])) |
fi |
AC_MSG_RESULT($AC_CV_NAME) |
]) |
|
PIKE_CHECK_MYSQL_FUNC(mysql_real_query) |
PIKE_CHECK_MYSQL_FUNC(mysql_fetch_lengths) |
|
# Note: The following two are variables: |
PIKE_CHECK_MYSQL_FUNC(mysql_port) |
PIKE_CHECK_MYSQL_FUNC(mysql_unix_port) |
|
if test "$pike_cv_mysql_mysql_fetch_lengths" = "yes"; then |
# |
# In 3.20.6b mysql_fetch_lengths() returns an uint *. |
# In 3.20.22 it returns an unsigned int *. |
# In 3.22.23 it returns an unsigned long *. |
# |
AC_MSG_CHECKING([if mysql_fetch_lengths() returns an uint or an ulong]) |
AC_CACHE_VAL(pike_cv_mysql_fetch_lengths_ret_type, [ |
for ret_type in "unsigned long long" "unsigned long" "unsigned int" "long long" "long" "int"; do |
AC_TRY_COMPILE([ |
#ifdef HAVE_MYSQL_H |
#include <mysql.h> |
#else |
#ifdef HAVE_MYSQL_MYSQL_H |
#include <mysql/mysql.h> |
#else |
#error Need mysql.h headerfile! |
#endif |
#endif |
|
#ifndef STDCALL |
#define STDCALL |
#endif /* STDCALL */ |
|
$ret_type * STDCALL mysql_fetch_lengths(MYSQL_RES *mysql) |
{ |
return 0; |
} |
], [], [ pike_cv_mysql_fetch_lengths_ret_type="$ret_type"; break; ]) |
done |
]) |
if test "X$pike_cv_mysql_fetch_lengths_ret_type" = "X"; then |
AC_MSG_RESULT(Unknown -- Defaulting to unsigned long) |
AC_DEFINE(FETCH_LENGTHS_TYPE, unsigned long) |
else |
AC_MSG_RESULT($pike_cv_mysql_fetch_lengths_ret_type) |
AC_DEFINE_UNQUOTED(FETCH_LENGTHS_TYPE, |
$pike_cv_mysql_fetch_lengths_ret_type) |
fi |
else :; fi |
fi |
fi |
|
AC_SUBST(MYSQL_LIBS) |
|
AC_OUTPUT(Makefile,echo FOO >stamp-h ) |
|