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
2014-06-04 15:53:04 +02:00
parent df4341747c
commit 8e1c0d15a9
3 changed files with 19 additions and 10 deletions
+11 -5
View File
@@ -895,12 +895,18 @@ if test x$fast = xtrue; then
fi fi
if test x$mysql = xtrue; then if test x$mysql = xtrue; then
AC_PATH_PROG([MYSQLCONFIG], [mysql_config], [], [$PATH:/bin:/usr/bin:/usr/local/bin]) if test "x$windows" = xtrue; then
if test x$MYSQLCONFIG = x; then AC_CHECK_HEADER([mysql.h],,[AC_MSG_ERROR([MySQL header file mysql.h not found!])])
AC_MSG_ERROR([mysql_config 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 fi
AC_SUBST(MYSQLLIB, `$MYSQLCONFIG --libs_r`)
AC_SUBST(MYSQLCFLAG, `$MYSQLCONFIG --cflags`)
fi fi
if test x$sqlite = xtrue; then if test x$sqlite = xtrue; then
@@ -14,12 +14,12 @@
* for more details. * for more details.
*/ */
#include "mysql_database.h"
#define _GNU_SOURCE #define _GNU_SOURCE
#include <string.h> #include <string.h>
#include <mysql.h> #include <mysql.h>
#include "mysql_database.h"
#include <utils/debug.h> #include <utils/debug.h>
#include <utils/chunk.h> #include <utils/chunk.h>
#include <threading/thread_value.h> #include <threading/thread_value.h>
@@ -730,7 +730,7 @@ static bool finalize_transaction(private_mysql_database_t *this,
return TRUE; return TRUE;
} }
METHOD(database_t, commit, bool, METHOD(database_t, commit_, bool,
private_mysql_database_t *this) private_mysql_database_t *this)
{ {
return finalize_transaction(this, FALSE); 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 * parse mysql://username:pass@host:port/database uri
*/ */
username = strdupa(uri + 8); username = strdup(uri + 8);
pos = strchr(username, ':'); pos = strchr(username, ':');
if (pos) if (pos)
{ {
@@ -800,10 +800,12 @@ static bool parse_uri(private_mysql_database_t *this, char *uri)
this->password = strdup(password); this->password = strdup(password);
this->database = strdup(database); this->database = strdup(database);
this->port = atoi(port); this->port = atoi(port);
free(username);
return TRUE; return TRUE;
} }
} }
} }
free(username);
DBG1(DBG_LIB, "parsing MySQL database uri '%s' failed", uri); DBG1(DBG_LIB, "parsing MySQL database uri '%s' failed", uri);
return FALSE; return FALSE;
} }
@@ -828,7 +830,7 @@ mysql_database_t *mysql_database_create(char *uri)
.query = _query, .query = _query,
.execute = _execute, .execute = _execute,
.transaction = _transaction, .transaction = _transaction,
.commit = _commit, .commit = _commit_,
.rollback = _rollback, .rollback = _rollback,
.get_driver = _get_driver, .get_driver = _get_driver,
.destroy = _destroy, .destroy = _destroy,
@@ -21,6 +21,7 @@
#ifndef MYSQL_DATABASE_H_ #ifndef MYSQL_DATABASE_H_
#define MYSQL_DATABASE_H_ #define MYSQL_DATABASE_H_
#include <library.h>
#include <database/database.h> #include <database/database.h>
typedef struct mysql_database_t mysql_database_t; typedef struct mysql_database_t mysql_database_t;