From 7df787b72d600b9b8040f706734c1f63778999e7 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Fri, 23 Mar 2007 06:08:17 +0000 Subject: [PATCH] add proper autoconf checks for mysql client and convert mod_cdr to automake makefile so that we can use AM_CONDITIONALS for the mysqlcdr build selection git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4749 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- acinclude.m4 | 1 + build/config/ax_lib_mysql.m4 | 148 +++++++++++++++++++++ configure.in | 5 + src/mod/event_handlers/mod_cdr/Makefile | 17 --- src/mod/event_handlers/mod_cdr/Makefile.am | 49 +++++++ 5 files changed, 203 insertions(+), 17 deletions(-) create mode 100644 build/config/ax_lib_mysql.m4 delete mode 100644 src/mod/event_handlers/mod_cdr/Makefile create mode 100644 src/mod/event_handlers/mod_cdr/Makefile.am diff --git a/acinclude.m4 b/acinclude.m4 index 8eebc8e202..abb24664f5 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -4,5 +4,6 @@ m4_include([build/config/ax_cc_maxopt.m4]) m4_include([build/config/ax_check_compiler_flags.m4]) m4_include([build/config/ac_gcc_archflag.m4]) m4_include([build/config/ac_gcc_x86_cpuid.m4]) +m4_include([build/config/ax_lib_mysql.m4]) m4_include([libs/apr/build/apr_common.m4]) m4_include([libs/curl/docs/libcurl/libcurl.m4]) diff --git a/build/config/ax_lib_mysql.m4 b/build/config/ax_lib_mysql.m4 new file mode 100644 index 0000000000..a7dce39f93 --- /dev/null +++ b/build/config/ax_lib_mysql.m4 @@ -0,0 +1,148 @@ +##### http://autoconf-archive.cryp.to/ax_lib_mysql.html +# +# SYNOPSIS +# +# AX_LIB_MYSQL([MINIMUM-VERSION]) +# +# DESCRIPTION +# +# This macro provides tests of availability of MySQL client library +# of particular version or newer. +# +# AX_LIB_MYSQL macro takes only one argument which is optional. If +# there is no required version passed, then macro does not run +# version test. +# +# The --with-mysql option takes one of three possible values: +# +# no - do not check for MySQL client library +# +# yes - do check for MySQL library in standard locations +# (mysql_config should be in the PATH) +# +# path - complete path to mysql_config utility, use this option if +# mysql_config can't be found in the PATH +# +# This macro calls: +# +# AC_SUBST(MYSQL_CFLAGS) +# AC_SUBST(MYSQL_LDFLAGS) +# AC_SUBST(MYSQL_VERSION) +# +# And sets: +# +# HAVE_MYSQL +# +# LAST MODIFICATION +# +# 2006-07-16 +# +# COPYLEFT +# +# Copyright (c) 2006 Mateusz Loskot +# +# Copying and distribution of this file, with or without +# modification, are permitted in any medium without royalty provided +# the copyright notice and this notice are preserved. + +AC_DEFUN([AX_LIB_MYSQL], +[ + AC_ARG_WITH([mysql], + AC_HELP_STRING([--with-mysql=@<:@ARG@:>@], + [use MySQL client library @<:@default=yes@:>@, optionally specify path to mysql_config] + ), + [ + if test "$withval" = "no"; then + want_mysql="no" + elif test "$withval" = "yes"; then + want_mysql="yes" + else + want_mysql="yes" + MYSQL_CONFIG="$withval" + fi + ], + [want_mysql="yes"] + ) + + MYSQL_CFLAGS="" + MYSQL_LDFLAGS="" + MYSQL_VERSION="" + + dnl + dnl Check MySQL libraries (libpq) + dnl + + if test "$want_mysql" = "yes"; then + + if test -z "$MYSQL_CONFIG" -o test; then + AC_PATH_PROG([MYSQL_CONFIG], [mysql_config], [no]) + fi + + if test "$MYSQL_CONFIG" != "no"; then + AC_MSG_CHECKING([for MySQL libraries]) + + MYSQL_CFLAGS="`$MYSQL_CONFIG --cflags`" + MYSQL_LDFLAGS="`$MYSQL_CONFIG --libs`" + + MYSQL_VERSION=`$MYSQL_CONFIG --version` + + AC_DEFINE([HAVE_MYSQL], [1], + [Define to 1 if MySQL libraries are available]) + + found_mysql="yes" + AC_MSG_RESULT([yes]) + else + found_mysql="no" + AC_MSG_RESULT([no]) + fi + fi + + dnl + dnl Check if required version of MySQL is available + dnl + + + mysql_version_req=ifelse([$1], [], [], [$1]) + + if test "$found_mysql" = "yes" -a -n "$mysql_version_req"; then + + AC_MSG_CHECKING([if MySQL version is >= $mysql_version_req]) + + dnl Decompose required version string of MySQL + dnl and calculate its number representation + mysql_version_req_major=`expr $mysql_version_req : '\([[0-9]]*\)'` + mysql_version_req_minor=`expr $mysql_version_req : '[[0-9]]*\.\([[0-9]]*\)'` + mysql_version_req_micro=`expr $mysql_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'` + if test "x$mysql_version_req_micro" = "x"; then + mysql_version_req_micro="0" + fi + + mysql_version_req_number=`expr $mysql_version_req_major \* 1000000 \ + \+ $mysql_version_req_minor \* 1000 \ + \+ $mysql_version_req_micro` + + dnl Decompose version string of installed MySQL + dnl and calculate its number representation + mysql_version_major=`expr $MYSQL_VERSION : '\([[0-9]]*\)'` + mysql_version_minor=`expr $MYSQL_VERSION : '[[0-9]]*\.\([[0-9]]*\)'` + mysql_version_micro=`expr $MYSQL_VERSION : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'` + if test "x$mysql_version_micro" = "x"; then + mysql_version_micro="0" + fi + + mysql_version_number=`expr $mysql_version_major \* 1000000 \ + \+ $mysql_version_minor \* 1000 \ + \+ $mysql_version_micro` + + mysql_version_check=`expr $mysql_version_number \>\= $mysql_version_req_number` + if test "$mysql_version_check" = "1"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + fi + + AC_SUBST([MYSQL_VERSION]) + AC_SUBST([MYSQL_CFLAGS]) + AC_SUBST([MYSQL_LDFLAGS]) +]) diff --git a/configure.in b/configure.in index 1434c4c895..6692ea1ed9 100644 --- a/configure.in +++ b/configure.in @@ -291,11 +291,16 @@ AC_SUBST(LIBCURL_DEPS) AC_ARG_ENABLE(crash-protection, [ --enable-crash-protection Compile with CRASH Protection],,[enable_crash_prot="no"]) +#AX_LIB_MYSQL([MINIMUM-VERSION]) +AX_LIB_MYSQL + AM_CONDITIONAL([CRASHPROT],[test "x$enable_crash_prot" != "xno"]) +AM_CONDITIONAL([HAVE_MYSQL],[test "$have_mysql" = "yes"]) AC_CONFIG_FILES([Makefile src/Makefile src/mod/Makefile + src/mod/event_handlers/mod_cdr/Makefile src/include/switch_am_config.h build/getlib.sh build/modmake.rules]) diff --git a/src/mod/event_handlers/mod_cdr/Makefile b/src/mod/event_handlers/mod_cdr/Makefile deleted file mode 100644 index 544608db25..0000000000 --- a/src/mod/event_handlers/mod_cdr/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -# define these targets in your makefile if you wish -# local_all local_depend local_clean depend_install local_install local_distclean local_extraclean: - -# and define these variables to impact your build - -LOCAL_CFLAGS= -LOCAL_LDFLAGS= -LOCAL_OBJS=cdrcontainer.o basecdr.o baseregistry.o pddcdr.o csvcdr.o xmlcdr.o sqlitecdr.o - -#LOCAL_CFLAGS += -DSWITCH_QUEUE_ENHANCED -#LOCAL_LDFLAGS += -lcurl - -LOCAL_INSERT_CFLAGS=mysql_config="\`which mysql-config 2>/dev/null \`"; if test -n "$$mysql_config"; then echo "\`mysql_config --include\`" ; fi -LOCAL_INSERT_LDFLAGS=mysql_config="\`which mysql-config 2>/dev/null \`"; if test -n "$$mysql_config"; then echo "\`mysql_config --libs\`" ; fi -LOCAL_INSERT_OBJS=mysql_config="\`which mysql-config 2>/dev/null \`"; if test -n "$$mysql_config"; then echo "mysqlcdr.o" ; fi - -include ../../../../build/modmake.rules diff --git a/src/mod/event_handlers/mod_cdr/Makefile.am b/src/mod/event_handlers/mod_cdr/Makefile.am new file mode 100644 index 0000000000..20512688d0 --- /dev/null +++ b/src/mod/event_handlers/mod_cdr/Makefile.am @@ -0,0 +1,49 @@ +#we should set all these vars from configure, no reason to have these in each Makefile.am +LIBTOOL=`if test -z "$(VERBOSE)" ; then echo $(SHELL) $(switch_builddir)/quiet_libtool ;else echo $(switch_builddir)/libtool; fi;` +AM_MAKEFLAGS=`test -n "$(VERBOSE)" || echo -s` +LINK_OUTPUT_REDIR=> $(MODNAME).log || error="yes" ; \ + if test -n "$(VERBOSE)" -o "$$error" = "yes"; then \ + cat $(MODNAME).log ; \ + fi ;\ + if test "$$error" = "yes"; then \ + exit 1 ;\ + fi + +moddir=$(prefix)/mod + + + +MODNAME=mod_cdr +mod_LTLIBRARIES = mod_cdr.la +mod_cdr_la_SOURCES = mod_cdr.cpp cdrcontainer.cpp basecdr.cpp baseregistry.cpp pddcdr.cpp csvcdr.cpp xmlcdr.cpp sqlitecdr.cpp +mod_cdr_la_CFLAGS = $(AM_CFLAGS) +mod_cdr_la_LIBADD=$(switch_builddir)/libfreeswitch.la +mod_cdr_la_LDFLAGS=-module -avoid-version -no-undefined -export-symbols-regex ^switch_module_.*$ -rpath $(PREFIX)/$(libdir) + +#Build mysqlcdr if we have mysql client +if HAVE_MYSQL +mod_cdr_la_CFLAGS += -DMYSQL +mod_cdr_la_LDFLAGS += -lmysql-client +mod_cdr_la_SOURCES += mysqlcdr.cpp +endif + +#mod_cdr_la_CFLAGS += -DSWITCH_QUEUE_ENHANCED +#mod_cdr_la_LDFLAGS += -lcurl + +#Override link target so we can control the output + +$(MODNAME).la: $(mod_cdr_la_OBJECTS) $(mod_cdr_la_DEPENDENCIES) + @echo Creating $(MODNAME).$(DYNAMIC_LIB_EXTEN)... + @$(CXXLINK) -rpath $(moddir) $(mod_cdr_la_LDFLAGS) $(mod_cdr_la_OBJECTS) $(mod_cdr_la_LIBADD) $(LIBS) $(LINK_OUTPUT_REDIR) + +#Override the linstall target so we just install the .so/.dylib + +install-data-am: $(DESTDIR)$(PREFIX)/$(moddir)/$(MODNAME).$(DYNAMIC_LIB_EXTEN) + +$(DESTDIR)$(PREFIX)/$(moddir)/$(MODNAME).$(DYNAMIC_LIB_EXTEN): $(MODNAME).la + @echo installing $(MODNAME).$(DYNAMIC_LIB_EXTEN) + @if [ -f .libs/$(MODNAME).$(DYNAMIC_LIB_EXTEN) ] ; then \ + $(LIBTOOL) --mode=install $(INSTALL) .libs/$(MODNAME).$(DYNAMIC_LIB_EXTEN) $(DESTDIR)$(PREFIX)/$(moddir) >/dev/null ; \ + else \ + $(LIBTOOL) --mode=install $(INSTALL) $(MODNAME).$(DYNAMIC_LIB_EXTEN) $(DESTDIR)$(PREFIX)/$(moddir) >/dev/null ; \ + fi