177 lines
5.2 KiB
Plaintext
177 lines
5.2 KiB
Plaintext
# -*- Autoconf -*-
|
|
# Process this file with autoconf to produce a configure script.
|
|
|
|
AC_PREREQ(2.59)
|
|
AC_INIT(mysql-audit-plugin, [dev])
|
|
AC_CONFIG_AUX_DIR([config-aux])
|
|
AC_CANONICAL_TARGET
|
|
|
|
AC_CONFIG_SRCDIR([src/audit_plugin.cc])
|
|
AC_CONFIG_HEADER([include/_config.h])
|
|
|
|
AC_DEFUN([CHECK_DEBUG], [
|
|
debug_default="no"
|
|
AC_ARG_ENABLE(debug, [ --enable-debug=[no/yes] turn on debugging
|
|
[default=$debug_default]],, enable_debug=$debug_default)
|
|
AC_MSG_CHECKING(whether to enable debugging)
|
|
|
|
if test "x$enable_debug" = "xyes"; then
|
|
# Note that SAFE_MUTEX is needed in debug plugin compilation, in order that
|
|
# it aligns with MySQL at debug level. Specifically, in the MySQL source file
|
|
# "include/thr_mutex.h", we need both the my_mutex_init() function and the
|
|
# my_mutex_lock() function to use the same paradigm (i.e. both using
|
|
# "safe_mutex_*" calls ... or both using "native_mutex_*" calls ... but
|
|
# definitely NOT a mix of 'safe' and 'native').
|
|
CPPFLAGS="$CPPFLAGS -g -D_DEBUG -DSAFE_MUTEX"
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
# We need to specify -DDBUG_OFF and -DNDEBUG in order to compile the plugin
|
|
# without MySQL debug components. Later versions of MySQL ignore the DBUG_OFF
|
|
# flag, but continue to respect the NDEBUG flag.
|
|
CPPFLAGS="$CPPFLAGS -g -O2 -DDBUG_OFF -DNDEBUG"
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
])
|
|
|
|
dnl Run tests using C++ compiler
|
|
dnl AC_LANG(C++)
|
|
|
|
# initialize automake
|
|
AM_INIT_AUTOMAKE([1.8 foreign tar-ustar])
|
|
|
|
|
|
#check debug
|
|
CHECK_DEBUG
|
|
|
|
#check for mysql src
|
|
sinclude(config/ac_mysql.m4)
|
|
MYSQL_SRC_TEST
|
|
MYSQL_PLUGIN_DIR_TEST
|
|
MYSQL_LIB_SERVICES_TEST
|
|
AC_SUBST(MYSQL_INC)
|
|
AC_SUBST(MYSQL_PLUGIN_DIR)
|
|
AC_SUBST(MYSQL_LIBSERVICES)
|
|
#yajl include dir
|
|
YAJL_INC=-I`cd yajl/include && pwd`
|
|
AC_SUBST(YAJL_INC)
|
|
#udis86 include
|
|
UDIS_INC=-I`cd udis86 && pwd`
|
|
AC_SUBST(UDIS_INC)
|
|
|
|
#pcre
|
|
(cd pcre && CFLAGS=-fPIC ./configure --enable-utf --disable-cpp --disable-shared --enable-static )
|
|
if test $? -ne 0 ; then
|
|
AC_MSG_ERROR([Failed pcre configure])
|
|
fi
|
|
|
|
|
|
dnl AC_PROG_CC set CFLAGS=-g if CFLAGS was empty before. Reset to empty value
|
|
dnl when not building a debug version.
|
|
dnl if test "$ac_test_CFLAGS" != set -a "$enable_debug" = no; then
|
|
dnl CFLAGS=
|
|
dnl fi
|
|
dnl AC_PROG_CXX set CXXFLAGS=-g if CXXFLAGS was empty before. Reset to empty
|
|
dnl value when not building a debug version.
|
|
dnl if test "$ac_test_CXXFLAGS" != set -a "$enable_debug" = no; then
|
|
dnl CXXFLAGS=
|
|
dnl fi
|
|
|
|
|
|
#check for programs
|
|
AC_PROG_CC
|
|
AC_PROG_LIBTOOL
|
|
AC_PROG_CXX
|
|
AC_PROG_CPP
|
|
|
|
AC_PATH_PROG(MV, mv, mv)
|
|
AC_PATH_PROG(RM, rm, rm)
|
|
AC_PATH_PROG(CP, cp, cp)
|
|
AC_PATH_PROG(SED, sed, sed)
|
|
AC_PATH_PROG(CMP, cmp, cmp)
|
|
AC_PATH_PROG(CHMOD, chmod, chmod)
|
|
AC_PATH_PROG(HOSTNAME, hostname, hostname)
|
|
AC_PATH_PROG(DIFF, diff, diff)
|
|
|
|
|
|
#for some reason we need to add -D_GNU_SOURCE
|
|
#this should have been added by AC_GNU_SOURCE but doesn't seem
|
|
#to work
|
|
#CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS"
|
|
|
|
#add the mysql flags needed (not needed as we put this in mysql_inc.h)
|
|
#CPPFLAGS="$CPPFLAGS -DMYSQL_DYNAMIC_PLUGIN -DMYSQL_SERVER"
|
|
|
|
#we can add the following flags for better error catching: -Werror -Wimplicit
|
|
CPPFLAGS="$CPPFLAGS -Werror -Wall"
|
|
CFLAGS="$CFLAGS -Wimplicit"
|
|
CXXFLAGS="-fno-implicit-templates -fno-strict-aliasing"
|
|
|
|
#add pthread libs
|
|
LIBS="$LIBS -lpthread"
|
|
|
|
|
|
|
|
|
|
#make sure we have const
|
|
AC_C_CONST
|
|
AC_TYPE_SIZE_T
|
|
|
|
#version stuff
|
|
if test -z "$MYSQL_AUDIT_PLUGIN_VERSION" ;then
|
|
MYSQL_AUDIT_PLUGIN_VERSION=1.0.0
|
|
fi
|
|
if test -z "$MYSQL_AUDIT_PLUGIN_REVISION" ;then
|
|
MYSQL_AUDIT_PLUGIN_REVISION=99999
|
|
fi
|
|
if test -z "$MYSQL_AUDIT_PLUGIN_SYMBOL_VERSION" ;then
|
|
MYSQL_AUDIT_PLUGIN_SYMBOL_VERSION=${MYSQL_AUDIT_PLUGIN_VERSION//./_}_$MYSQL_AUDIT_PLUGIN_REVISION
|
|
fi
|
|
|
|
|
|
AC_SUBST(MYSQL_AUDIT_PLUGIN_VERSION)
|
|
AC_SUBST(MYSQL_AUDIT_PLUGIN_REVISION)
|
|
echo "Version: $MYSQL_AUDIT_PLUGIN_VERSION-$MYSQL_AUDIT_PLUGIN_REVISION Symbol version: $MYSQL_AUDIT_PLUGIN_SYMBOL_VERSION"
|
|
CPPFLAGS="$CPPFLAGS -DMYSQL_AUDIT_PLUGIN_VERSION='\"$MYSQL_AUDIT_PLUGIN_VERSION\"'"
|
|
CPPFLAGS="$CPPFLAGS -DMYSQL_AUDIT_PLUGIN_REVISION='\"$MYSQL_AUDIT_PLUGIN_REVISION\"'"
|
|
CPPFLAGS="$CPPFLAGS '-DMYSQL_AUDIT_PLUGIN_SYMBOL_VERSION()=extern const char audit_plugin_version_$MYSQL_AUDIT_PLUGIN_SYMBOL_VERSION'"
|
|
|
|
# Percona`s MySQL macro
|
|
if [[ "$PERCONA_BUILD" = "true" ]]; then
|
|
CPPFLAGS="$CPPFLAGS -DPERCONA_BUILD" # Percona`s build macro, used to distinguish between MySQL/MariaDB build VS Percona build
|
|
fi
|
|
|
|
#subst the relevant variables
|
|
AC_SUBST(CPPFLAGS)
|
|
AC_SUBST(CXXLAGS)
|
|
AC_SUBST(CLAGS)
|
|
|
|
#mariadb-visibility section start
|
|
AC_ARG_ENABLE(mariadb-visibility,
|
|
[ --enable-mariadb-visibility, Enable symbol visibility for Mariadb, default:no ],
|
|
[case "${enableval}" in
|
|
yes) mariadb_visibility=yes ;;
|
|
no) mariadb_visibility=no ;;
|
|
*) AC_MSG_ERROR([bad value ${enableval} for --enable-mariadb-visibility]) ;;
|
|
esac],
|
|
[ mariadb_visibility=no ]
|
|
)
|
|
AC_MSG_RESULT($mariadb_visibility)
|
|
AM_CONDITIONAL([ENABLE_MARIADB_SYMBOLS], [test "x$mariadb_visibility" = "xyes"])
|
|
AM_CONDITIONAL(TARGET_WINDOWS, test "$TARGET_OS" = windows)
|
|
#mariadb-visibility section end
|
|
|
|
AC_CONFIG_FILES([Makefile
|
|
src/Makefile
|
|
yajl/Makefile
|
|
yajl/src/Makefile
|
|
udis86/Makefile
|
|
udis86/libudis86/Makefile
|
|
])
|
|
AC_OUTPUT
|
|
|
|
|
|
AC_MSG_NOTICE([CPPFLAGS: $CPPFLAGS])
|
|
|
|
|