mysql: Add Windows support

As the mysql_config script is not available for Windows, we use a hardcoded
library name and no additional CFLAGS. This builds fine against the binary
MySQL Connector/C distribution.
This commit is contained in:
Martin Willi 2013-11-22 09:08:09 +01:00
parent df4341747c
commit 8e1c0d15a9
3 changed files with 19 additions and 10 deletions

View File

@ -895,12 +895,18 @@ if test x$fast = xtrue; then
fi
if test x$mysql = xtrue; then
AC_PATH_PROG([MYSQLCONFIG], [mysql_config], [], [$PATH:/bin:/usr/bin:/usr/local/bin])
if test x$MYSQLCONFIG = x; then
AC_MSG_ERROR([mysql_config not found!])
if test "x$windows" = xtrue; then
AC_CHECK_HEADER([mysql.h],,[AC_MSG_ERROR([MySQL header file mysql.h not found!])])
AC_CHECK_LIB([mysql],[main],[LIBS="$LIBS"],[AC_MSG_ERROR([MySQL library not found!])],[])
AC_SUBST(MYSQLLIB, -lmysql)
else
AC_PATH_PROG([MYSQLCONFIG], [mysql_config], [], [$PATH:/bin:/usr/bin:/usr/local/bin])
if test x$MYSQLCONFIG = x; then
AC_MSG_ERROR([mysql_config not found!])
fi
AC_SUBST(MYSQLLIB, `$MYSQLCONFIG --libs_r`)
AC_SUBST(MYSQLCFLAG, `$MYSQLCONFIG --cflags`)
fi
AC_SUBST(MYSQLLIB, `$MYSQLCONFIG --libs_r`)
AC_SUBST(MYSQLCFLAG, `$MYSQLCONFIG --cflags`)
fi
if test x$sqlite = xtrue; then

View File

@ -14,12 +14,12 @@
* for more details.
*/
#include "mysql_database.h"
#define _GNU_SOURCE
#include <string.h>
#include <mysql.h>
#include "mysql_database.h"
#include <utils/debug.h>
#include <utils/chunk.h>
#include <threading/thread_value.h>
@ -730,7 +730,7 @@ static bool finalize_transaction(private_mysql_database_t *this,
return TRUE;
}
METHOD(database_t, commit, bool,
METHOD(database_t, commit_, bool,
private_mysql_database_t *this)
{
return finalize_transaction(this, FALSE);
@ -768,7 +768,7 @@ static bool parse_uri(private_mysql_database_t *this, char *uri)
/**
* parse mysql://username:pass@host:port/database uri
*/
username = strdupa(uri + 8);
username = strdup(uri + 8);
pos = strchr(username, ':');
if (pos)
{
@ -800,10 +800,12 @@ static bool parse_uri(private_mysql_database_t *this, char *uri)
this->password = strdup(password);
this->database = strdup(database);
this->port = atoi(port);
free(username);
return TRUE;
}
}
}
free(username);
DBG1(DBG_LIB, "parsing MySQL database uri '%s' failed", uri);
return FALSE;
}
@ -828,7 +830,7 @@ mysql_database_t *mysql_database_create(char *uri)
.query = _query,
.execute = _execute,
.transaction = _transaction,
.commit = _commit,
.commit = _commit_,
.rollback = _rollback,
.get_driver = _get_driver,
.destroy = _destroy,

View File

@ -21,6 +21,7 @@
#ifndef MYSQL_DATABASE_H_
#define MYSQL_DATABASE_H_
#include <library.h>
#include <database/database.h>
typedef struct mysql_database_t mysql_database_t;