]> jfr.im git - irc/rizon/znc.git/commitdiff
Check SWIG version in configure.
authorAlexey Sokolov <redacted>
Fri, 6 May 2011 08:17:30 +0000 (15:17 +0700)
committerAlexey Sokolov <redacted>
Fri, 6 May 2011 08:17:30 +0000 (15:17 +0700)
autogen.sh
configure.ac
m4/ac_pkg_swig.m4 [new file with mode: 0644]
modules/Makefile.in

index e11f3199293c6442aa7956fd34a516a3e56fcfc9..2ed4030702d5efd221ccff79673004470f07e53f 100755 (executable)
@@ -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}"
index 078a3d0a216fe33ef5209989d834962ec16bfc9a..45111598d63ee79a7555696d22f5cec3dcc12c5f 100644 (file)
@@ -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,15 +292,16 @@ 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
@@ -307,13 +309,13 @@ Please check http://en.znc.in/wiki/Modperl or http://en.znc.in/wiki/Modpython fo
 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
diff --git a/m4/ac_pkg_swig.m4 b/m4/ac_pkg_swig.m4
new file mode 100644 (file)
index 0000000..64c33cd
--- /dev/null
@@ -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])
+])
+
+
+
index 4bd69b2dbe8eb735818cac4cdb2d81aaf023f97c..d3707b7b5a5265bb2560d06fdc208d7954c84e98 100644 (file)
@@ -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@