summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Sowden <jeremy@azazel.net>2022-01-09 11:57:46 +0000
committerPablo Neira Ayuso <pablo@netfilter.org>2022-01-11 22:15:33 +0100
commit3d64f815687c33c3dbaa51ca4f3ee51441fde487 (patch)
tree832b30835f9a90ee5dc5f6e5f915e4a1c2d4c3f7
parent1277a1af8e929e160bd7a66cf3b901f1505e496a (diff)
build: use pkg-config or mysql_config for libmysqlclient
Recent versions of mariadb and mysql support pkg-config. Older versions provide a mysql_config script. Use pkg-config if available, otherwise fall back to mysql_config. Signed-off-by: Jeremy Sowden <jeremy@azazel.net> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r--acinclude.m493
-rw-r--r--configure.ac53
-rw-r--r--output/mysql/Makefile.am4
3 files changed, 51 insertions, 99 deletions
diff --git a/acinclude.m4 b/acinclude.m4
index c7a1c67..a49ed31 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -93,99 +93,6 @@ fi
])
-dnl @synopsis CT_CHECK_MYSQL_DB
-dnl
-dnl This macro tries to find the headers and librariess for the
-dnl MySQL database to build client applications.
-dnl
-dnl If includes are found, the variable MYSQL_INC will be set. If
-dnl libraries are found, the variable MYSQL_LIB will be set. if no check
-dnl was successful, the script exits with a error message.
-dnl
-dnl @category InstalledPackages
-dnl @author Harald Welte <laforge@gnumonks.org>
-dnl @version 2006-01-07
-dnl @license AllPermissive
-
-AC_DEFUN([CT_CHECK_MYSQL_DB], [
-
-AC_ARG_WITH(mysql,
- [ --with-mysql=PREFIX Prefix of your MySQL installation],
- [my_prefix=$withval], [my_prefix=])
-AC_ARG_WITH(mysql-inc,
- [ --with-mysql-inc=PATH Path to the include directory of MySQL],
- [my_inc=$withval], [my_inc=])
-AC_ARG_WITH(mysql-lib,
- [ --with-mysql-lib=PATH Path to the libraries of MySQL],
- [my_lib=$withval], [my_lib=])
-
-
-AC_SUBST(MYSQL_INC)
-AC_SUBST(MYSQL_LIB)
-
-if test "$my_prefix" != "no"; then
-
-AC_MSG_CHECKING([for MySQL mysql_config program])
-for d in $my_prefix/bin /usr/bin /usr/local/bin /usr/local/mysql/bin /opt/mysql/bin /opt/packages/mysql/bin
-do
- if test -x $d/mysql_config -a "$cross_compiling" = "no";
- then
- AC_MSG_RESULT(found mysql_config in $d)
- MYSQL_INC=`$d/mysql_config --include`
- MYSQL_LIB=`$d/mysql_config --libs`
- break
- fi
-done
-
-if test "$MYSQL_INC" = ""; then
- if test "$my_prefix" != ""; then
- AC_MSG_CHECKING([for MySQL includes in $my_prefix/include])
- if test -f "$my_prefix/include/mysql.h" ; then
- MYSQL_INC="-I$my_prefix/include"
- AC_MSG_RESULT([yes])
- else
- AC_MSG_WARN(mysql.h not found)
- fi
- AC_MSG_CHECKING([for MySQL libraries in $my_prefix/lib])
- if test -f "$my_prefix/lib/libmysql.so" ; then
- MYSQL_LIB="-L$my_prefix/lib -lmysqlclient"
- AC_MSG_RESULT([yes])
- else
- AC_MSG_WARN(libmysqlclient.so not found)
- fi
- else
- if test "$my_inc" != ""; then
- AC_MSG_CHECKING([for MySQL includes in $my_inc])
- if test -f "$my_inc/mysql.h" ; then
- MYSQL_INC="-I$my_inc"
- AC_MSG_RESULT([yes])
- else
- AC_MSG_WARN(mysql.h not found)
- fi
- fi
- if test "$my_lib" != ""; then
- AC_MSG_CHECKING([for MySQL libraries in $my_lib])
- if test -f "$my_lib/libmysqlclient.so" ; then
- MYSQL_LIB="-L$my_lib -lmysqlclient"
- AC_MSG_RESULT([yes])
- else
- AC_MSG_WARN(libmysqlclient.so not found)
- fi
- fi
- fi
-fi
-
-if test "$MYSQL_INC" = "" ; then
- AC_CHECK_HEADER([mysql.h], [], AC_MSG_WARN(mysql.h not found))
-fi
-if test "$MYSQL_LIB" = "" ; then
- AC_CHECK_LIB(mysqlclient, mysql_close, [], AC_MSG_WARN(libmysqlclient.so not found))
-fi
-
-fi
-
-])
-
dnl @synopsis CT_CHECK_PCAP
dnl
dnl This macro tries to find the headers and libraries for libpcap.
diff --git a/configure.ac b/configure.ac
index a3ad198..bcdd2f8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -87,10 +87,55 @@ AM_CONDITIONAL([HAVE_PGSQL], [test "x$PQLIBPATH" != "x"])
AC_ARG_ENABLE([mysql],
[AS_HELP_STRING([--enable-mysql], [Enable MySQL output plugin [default=test]])])
-AS_IF([test "x$enable_mysql" != "xno"],
- [CT_CHECK_MYSQL_DB()])
-AS_IF([test "x$MYSQL_LIB" != "x"], [enable_mysql=yes], [enable_mysql=no])
-AM_CONDITIONAL([HAVE_MYSQL], [test "x$MYSQL_LIB" != "x"])
+AS_IF([test "x$enable_mysql" != "xno"], [
+
+ PKG_CHECK_EXISTS([mysqlclient],
+ [PKG_CHECK_MODULES([libmysqlclient], [mysqlclient])],
+ [
+
+ AC_ARG_WITH([mysql-config],
+ [AS_HELP_STRING([--with-mysql-config=PATH], [Path to the mysql_config script])],
+ [mysql_config="$withval"], [mysql_config=mysql_config])
+
+ AC_MSG_CHECKING([for mysql_config])
+
+ AS_IF([command -v "$mysql_config" >/dev/null], [
+
+ MYSQL_CLIENT_CFLAGS=`$mysql_config --cflags`
+ MYSQL_CLIENT_LIBS=`$mysql_config --libs`
+
+ AC_SUBST([MYSQL_CLIENT_CFLAGS])
+ AC_SUBST([MYSQL_CLIENT_LIBS])
+
+ AC_MSG_RESULT([$mysql_config])
+
+ dnl Some distro's don't put mysql_config in the same package as the
+ dnl headers and .so sym-links. Therefore, it is possible that the former
+ dnl may be available, but the latter may not. Hence, we check explicitly
+ dnl for mysql.h.
+
+ ulogd_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$MYSQL_CLIENT_CFLAGS"
+ AC_CHECK_HEADER([mysql.h], [
+
+ libmysqlclient_CFLAGS="$MYSQL_CLIENT_CFLAGS"
+ libmysqlclient_LIBS="$MYSQL_CLIENT_LIBS"
+
+ AC_SUBST([libmysqlclient_CFLAGS])
+ AC_SUBST([libmysqlclient_LIBS])
+
+ ])
+ CPPFLAGS="$ulogd_save_CPPFLAGS"
+
+ ], [
+ AC_MSG_RESULT([no])
+ ])
+
+ ])
+
+])
+AS_IF([test "x$libmysqlclient_LIBS" != "x"], [enable_mysql=yes], [enable_mysql=no])
+AM_CONDITIONAL([HAVE_MYSQL], [test "x$libmysqlclient_LIBS" != "x"])
AC_ARG_ENABLE([sqlite3],
[AS_HELP_STRING([--enable-sqlite3], [Enable SQLITE3 output plugin [default=test]])])
diff --git a/output/mysql/Makefile.am b/output/mysql/Makefile.am
index 54abb96..69d9839 100644
--- a/output/mysql/Makefile.am
+++ b/output/mysql/Makefile.am
@@ -1,9 +1,9 @@
include $(top_srcdir)/Make_global.am
-AM_CPPFLAGS += $(MYSQL_INC)
+AM_CPPFLAGS += $(libmysqlclient_CFLAGS)
pkglib_LTLIBRARIES = ulogd_output_MYSQL.la
ulogd_output_MYSQL_la_SOURCES = ulogd_output_MYSQL.c ../../util/db.c
-ulogd_output_MYSQL_la_LIBADD = ${MYSQL_LIB}
+ulogd_output_MYSQL_la_LIBADD = $(libmysqlclient_LIBS)
ulogd_output_MYSQL_la_LDFLAGS = -avoid-version -module