[Buildroot] autotools, pkg_config and mysql_config

Kinsella, Ray ray.kinsella at intel.com
Thu Mar 24 20:25:02 UTC 2016


Hi folks,

So  I have a library (radlib) which can link against a couple of database libraries; sqlite, mysql and postgresql. I have been sorting out it's autotools implementation.

SQLite - worked like a dream, with two lines in my configure.ac

PKG_CHECK_MODULES([SQLITE3], [sqlite3], [have_libsqlite3=yes], [have_libsqlite3=no])$
AM_CONDITIONAL([LIB_SQLITE3],  [test "$have_libsqlite3" = "yes"])$

However mysql, in an effort to be slightly different - doesn't use pkg_config, so you therefore can't use PKG_CHECK_MODULES. Instead it ships its own tool mysql_config.

So I wrote some autoconf, to handle that ...

AX_WITH_PROG([MYSQL_CONFIG], [mysql_config], [AC_MSG_ERROR(mysql_config is required to build)])$
if test "x$MYSQL_CONFIG" != "x";then$
  AC_CHECK_HEADERS([mysql.h mysql/mysql.h])$
  if test "x$ac_cv_header_mysql_h" != "xno" -o "x$ac_cv_header_mysql_mysql_h" != "xno" ; then$
    MYSQL_CFLAGS=`$MYSQL_CONFIG --cflags`$
    MYSQL_LIBS=`$MYSQL_CONFIG --libs`$
    AC_SUBST([MYSQL_CFLAGS])$
    AC_SUBST([MYSQL_LIBS])$
  fi$
fi$
AM_CONDITIONAL([LIB_MYSQL],  [test "x$mysql_config" != "x"])

My problem is that, it is continually picking myconfig from my host system. So end up with $MYSQL_CONFIG=/usr/bin/mysql_config instead of target/usr/bin/mysql_config. MYSQL_CFLAGS and MYSQL_LIBS therefore also end up pointing at the host.

pkg_config works fine it gets set to target/usr/bin/pkg_config.

Have tried the other similar autotools macros (https://www.gnu.org/software/autoconf/manual/autoconf-2.68/html_node/Generic-Programs.html) - problem remains the same. Any clues for me?

Ray K


More information about the buildroot mailing list