Permalink
Browse files

Check SWIG version in configure.

  • Loading branch information...
Alexey Sokolov
Alexey Sokolov committed May 6, 2011
1 parent 54d8cd6 commit 7d912d1d2d323f7861c3e5bc578190b4018d584e
Showing with 172 additions and 16 deletions.
  1. +1 −1 autogen.sh
  2. +27 −14 configure.ac
  3. +142 −0 m4/ac_pkg_swig.m4
  4. +2 −1 modules/Makefile.in
View
@@ -8,7 +8,7 @@ ACLOCAL=${ACLOCAL-aclocal}
AUTOHEADER=${AUTOHEADER-autoheader}
AUTOCONF=${AUTOCONF-autoconf}
AUTOMAKE=${AUTOMAKE-automake}
-ACLOCAL_FLAGS="${ACLOCAL_FLAGS} ${FLAGS}"
+ACLOCAL_FLAGS="${ACLOCAL_FLAGS--I m4} ${FLAGS}"
AUTOHEADER_FLAGS="${AUTOHEADER_FLAGS} ${FLAGS}"
AUTOCONF_FLAGS="${AUTOCONF_FLAGS} ${FLAGS}"
AUTOMAKE_FLAGS="${AUTOMAKE_FLAGS---add-missing} ${FLAGS}"
View
@@ -1,5 +1,6 @@
dnl Keep the version number in sync with main.h!
AC_INIT([znc], [0.099])
+AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR([znc.cpp])
AC_LANG([C++])
AC_CONFIG_HEADERS([zncconfig.h])
@@ -111,8 +112,8 @@ AC_ARG_ENABLE( [swig],
This value is ignored if perl and python are disabled. If you disable swig,
but still want to use these modules, please download the necessary files to modules/modperl and/or to modules/modpython.
Check http://en.znc.in/wiki/Modperl and http://en.znc.in/wiki/Modpython for details.]),
- [SWIG="$enableval"],
- [SWIG="auto"])
+ [USESWIG="$enableval"],
+ [USESWIG="auto"])
AC_ARG_ENABLE( [sasl],
AS_HELP_STRING([--enable-sasl], [enable sasl]),
[if test "$enableval" = "yes" ; then SASL=1; fi],)
@@ -291,29 +292,30 @@ else
fi
if test "x$PERL" != xno -o "x$PYTHON" != xno; then
- old_SWIG="$SWIG"
- if test "x$SWIG" != "xno"; then
- AC_PATH_PROG([SWIG_BINARY], [swig])
- test -z "$SWIG_BINARY" && SWIG=no
+ old_USESWIG="$USESWIG"
+ if test "x$USESWIG" != "xno"; then
+ AC_PROG_SWIG([1.3.40])
+ test -z "$SWIG" && USESWIG=no
fi
- if test "x$SWIG" = xno; then
- SWIG_BINARY=""
- if test "x$old_SWIG" = xno; then
- SWIG="no, need manual download for perl/python bindings"
+ if test "x$USESWIG" = xno; then
+ SWIG=""
+ AC_MSG_WARN([$SWIG_ERROR])
+ if test "x$old_USESWIG" = xno; then
+ USESWIG="no, need manual download for perl/python bindings"
AC_MSG_WARN([swig was disabled, so you should put needed sources to modules/
Please check http://en.znc.in/wiki/Modperl or http://en.znc.in/wiki/Modpython for details.])
else
AC_MSG_ERROR([swig was not found. Try --disable-perl --disable-python, or download the necessary sources and use --disable-swig.
Please check http://en.znc.in/wiki/Modperl or http://en.znc.in/wiki/Modpython for details.])
fi
else
- SWIG=yes
+ USESWIG=yes
fi
else
- if test "x$SWIG" = "xyes"; then
+ if test "x$USESWIG" = "xyes"; then
AC_MSG_WARN([swig is needed only for perl and python, but both are disabled. Disabling swig.])
fi
- SWIG=no
+ USESWIG=no
fi
if test "x$PERL" != "xno"; then
@@ -349,6 +351,16 @@ if test "x$PYTHON" != "xno"; then
AC_MSG_ERROR([pkg-config is required for modpython.])
fi
PKG_CHECK_MODULES([python], [$PYTHON >= 3.0],, AC_MSG_ERROR([$PYTHON.pc not found or is wrong. Try --disable-python or install python3.]))
+ if test "x$USESWIG" = xyes; then :
+ PKG_CHECK_MODULES([python32], [$PYTHON >= 3.2], [PYTHON_32=yes], [PYTHON_32=no])
+ if test "x$PYTHON_32" = xyes; then
+ AC_MSG_NOTICE([python 3.2+ found, requiring newer swig.])
+ AC_PROG_SWIG([2.0.4])
+ if test -z "$SWIG"; then
+ AC_MSG_ERROR([$SWIG_ERROR])
+ fi
+ fi
+ fi
my_saved_LIBS="$LIBS"
my_saved_CXXFLAGS="$CXXFLAGS"
appendLib $python_LIBS
@@ -482,6 +494,7 @@ AC_SUBST([MODDIR])
AC_SUBST([DATADIR])
AC_SUBST([PERL])
AC_SUBST([PYTHON])
+AC_SUBST([SWIG])
AC_SUBST([python_CFLAGS])
AC_SUBST([python_LIBS])
AC_CONFIG_FILES([Makefile])
@@ -504,7 +517,7 @@ echo "openssl: $SSL"
echo "c-ares: $ARES"
echo "perl: $PERL"
echo "python: $PYTHON"
-echo "swig: $SWIG"
+echo "swig: $USESWIG"
if test x"$SASL" = "x" ; then
echo "sasl: no"
else
View
@@ -0,0 +1,142 @@
+dnl @synopsis AC_PROG_SWIG([major.minor.micro])
+dnl
+dnl This macro searches for a SWIG installation on your system. If
+dnl found you should call SWIG via $(SWIG). You can use the optional
+dnl first argument to check if the version of the available SWIG is
+dnl greater than or equal to the value of the argument. It should have
+dnl the format: N[.N[.N]] (N is a number between 0 and 999. Only the
+dnl first N is mandatory.)
+dnl
+dnl If the version argument is given (e.g. 1.3.17), AC_PROG_SWIG checks
+dnl that the swig package is this version number or higher.
+dnl
+dnl In configure.in, use as:
+dnl
+dnl AC_PROG_SWIG(1.3.17)
+dnl SWIG_ENABLE_CXX
+dnl SWIG_MULTI_MODULE_SUPPORT
+dnl SWIG_PYTHON
+dnl
+dnl @category InstalledPackages
+dnl @author Sebastian Huber <sebastian-huber@web.de>
+dnl @author Alan W. Irwin <irwin@beluga.phys.uvic.ca>
+dnl @author Rafael Laboissiere <rafael@laboissiere.net>
+dnl @author Andrew Collier <abcollier@yahoo.com>
+dnl @version 2004-09-20
+dnl
+dnl Modified by Alexey Sokolov <alexey@alexeysokolov.co.cc> on 2011-05-06
+dnl @license GPLWithACException
+
+AC_DEFUN([AC_PROG_SWIG],[
+ SWIG_ERROR=""
+ AC_PATH_PROG([SWIG],[swig])
+ if test -z "$SWIG" ; then
+dnl AC_MSG_WARN([cannot find 'swig' program. You should look at http://www.swig.org])
+ SWIG_ERROR='SWIG is not installed. You should look at http://www.swig.org'
+ elif test -n "$1" ; then
+ AC_MSG_CHECKING([for SWIG version])
+ [swig_version=`$SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`]
+ AC_MSG_RESULT([$swig_version])
+ if test -n "$swig_version" ; then
+ # Calculate the required version number components
+ [required=$1]
+ [required_major=`echo $required | sed 's/[^0-9].*//'`]
+ if test -z "$required_major" ; then
+ [required_major=0]
+ fi
+ [required=`echo $required | sed 's/[0-9]*[^0-9]//'`]
+ [required_minor=`echo $required | sed 's/[^0-9].*//'`]
+ if test -z "$required_minor" ; then
+ [required_minor=0]
+ fi
+ [required=`echo $required | sed 's/[0-9]*[^0-9]//'`]
+ [required_patch=`echo $required | sed 's/[^0-9].*//'`]
+ if test -z "$required_patch" ; then
+ [required_patch=0]
+ fi
+ # Calculate the available version number components
+ [available=$swig_version]
+ [available_major=`echo $available | sed 's/[^0-9].*//'`]
+ if test -z "$available_major" ; then
+ [available_major=0]
+ fi
+ [available=`echo $available | sed 's/[0-9]*[^0-9]//'`]
+ [available_minor=`echo $available | sed 's/[^0-9].*//'`]
+ if test -z "$available_minor" ; then
+ [available_minor=0]
+ fi
+ [available=`echo $available | sed 's/[0-9]*[^0-9]//'`]
+ [available_patch=`echo $available | sed 's/[^0-9].*//'`]
+ if test -z "$available_patch" ; then
+ [available_patch=0]
+ fi
+ if test $available_major -lt $required_major; then
+ SWIG_ERROR='SWIG version >= $1 is required. You have '"$swig_version"'. You should look at http://www.swig.org'
+ elif test $available_major -eq $required_major; then
+ if test $available_minor -lt $required_minor; then
+ SWIG_ERROR='SWIG version >= $1 is required. You have '"$swig_version"'. You should look at http://www.swig.org'
+ elif test $available_minor -eq $required_minor; then
+ if test $available_patch -lt $required_patch; then
+ SWIG_ERROR='SWIG version >= $1 is required. You have '"$swig_version"'. You should look at http://www.swig.org'
+ fi
+ fi
+ fi
+ if test -z "$SWIG_ERROR"; then
+ AC_MSG_NOTICE([SWIG executable is '$SWIG'])
+ SWIG_LIB=`$SWIG -swiglib`
+ AC_MSG_NOTICE([SWIG library directory is '$SWIG_LIB'])
+ else
+ SWIG=""
+ fi
+ else
+ SWIG_ERROR='Cannot determine SWIG version. You should look at http://www.swig.org'
+ SWIG=""
+ fi
+ fi
+ AC_SUBST([SWIG_LIB])
+])
+
+# SWIG_ENABLE_CXX()
+#
+# Enable SWIG C++ support. This affects all invocations of $(SWIG).
+AC_DEFUN([SWIG_ENABLE_CXX],[
+ AC_REQUIRE([AC_PROG_SWIG])
+ AC_REQUIRE([AC_PROG_CXX])
+ SWIG="$SWIG -c++"
+])
+
+# SWIG_MULTI_MODULE_SUPPORT()
+#
+# Enable support for multiple modules. This effects all invocations
+# of $(SWIG). You have to link all generated modules against the
+# appropriate SWIG runtime library. If you want to build Python
+# modules for example, use the SWIG_PYTHON() macro and link the
+# modules against $(SWIG_PYTHON_LIBS).
+#
+AC_DEFUN([SWIG_MULTI_MODULE_SUPPORT],[
+ AC_REQUIRE([AC_PROG_SWIG])
+ SWIG="$SWIG -noruntime"
+])
+
+# SWIG_PYTHON([use-shadow-classes = {no, yes}])
+#
+# Checks for Python and provides the $(SWIG_PYTHON_CPPFLAGS),
+# and $(SWIG_PYTHON_OPT) output variables.
+#
+# $(SWIG_PYTHON_OPT) contains all necessary SWIG options to generate
+# code for Python. Shadow classes are enabled unless the value of the
+# optional first argument is exactly 'no'. If you need multi module
+# support (provided by the SWIG_MULTI_MODULE_SUPPORT() macro) use
+# $(SWIG_PYTHON_LIBS) to link against the appropriate library. It
+# contains the SWIG Python runtime library that is needed by the type
+# check system for example.
+AC_DEFUN([SWIG_PYTHON],[
+ AC_REQUIRE([AC_PROG_SWIG])
+ AC_REQUIRE([AC_PYTHON_DEVEL])
+ test "x$1" != "xno" || swig_shadow=" -noproxy"
+ AC_SUBST([SWIG_PYTHON_OPT],[-python$swig_shadow])
+ AC_SUBST([SWIG_PYTHON_CPPFLAGS],[$PYTHON_CPPFLAGS])
+])
+
+
+
View
@@ -28,7 +28,8 @@ PERL := @PERL_BINARY@
PYTHON_ON:= @PYTHON@
PY_CFLAGS:= @python_CFLAGS@
PY_LDFLAGS:=@python_LIBS@
-SWIG := @SWIG_BINARY@
+SWIG := @SWIG@
+SWIG_ON := @USESWIG@
MODDIR := @MODDIR@
DATADIR := @DATADIR@
LIBZNC := @LIBZNC@

0 comments on commit 7d912d1

Please sign in to comment.