]> git.ipfire.org Git - thirdparty/pdns.git/blobdiff - m4/pdns_with_lua.m4
Merge pull request #7903 from Habbie/dnsdist-doc-nits
[thirdparty/pdns.git] / m4 / pdns_with_lua.m4
index 1494e195a09c389e6823e03cb16f1c6d3a59324d..e280c1b7382357cddde8fa03f7b75e13c3056b27 100644 (file)
@@ -1,38 +1,62 @@
 AC_DEFUN([PDNS_WITH_LUA],[
-  AC_MSG_CHECKING([whether we will be linking in Lua])
+  AC_PROG_GREP()dnl Ensure we have grep
+  AC_MSG_CHECKING([which Lua implementation to use])
   AC_ARG_WITH([lua],
-    [AS_HELP_STRING([--with-lua], [build Lua Bindings @<:@default=auto@:>@])],
-    [with_lua=$withval],
-    [with_lua=auto]
-  )
+    [AS_HELP_STRING([--with-lua], [select Lua implementation @<:@default=auto@:>@])
+  ], [
+    with_lua=$withval
+  ], [
+    with_lua=auto
+  ])
+
+  AS_IF([test "x$with_lua" = "xyes"], [
+    dnl --with-lua was passed, make it auto
+    with_lua=auto
+  ])
+
   AC_MSG_RESULT([$with_lua])
 
-  AS_IF([test "x$with_lua" != "xno"],[
-    AS_IF([test "x$with_lua" = "xyes" -o "x$with_lua" = "xauto"],
-      [for LUAPC in lua5.3 lua-5.3 lua53 lua5.2 lua-5.2 lua52 lua5.1 lua-5.1 lua51 lua; do
-         PKG_CHECK_MODULES([LUA], $LUAPC >= 5.1, [
-           AC_DEFINE([HAVE_LUA], [1], [Define to 1 if you have lua])
-           with_lua=yes
-         ], [LUAPC=""]) # otherwise pkg_check will fail
-         if test "x$LUA_LIBS" != "x"; then break; fi
-       done
-      ],
-      [LUAPC="$with_lua"
-        PKG_CHECK_MODULES([LUA], $LUAPC >= 5.1, [
-          AC_DEFINE([HAVE_LUA], [1], [Define to 1 if you have lua])
-          with_lua=yes
+  AS_IF([test "x$with_lua" = "xno" -a "$1" = "mandatory"], [
+    AC_MSG_ERROR([--without-lua specified, but Lua is not optional])
+  ])
+
+  LUAPC=""
+  luajit_min_version='2.0.2'
+  lua_min_version='5.1'
+
+  AS_IF([test "x$with_lua" != "xno"], [
+    AS_IF([test "x$with_lua" != "xauto"], [
+      with_lua_version=${lua_min_version}
+      AS_IF([echo "x$with_lua" | ${GREP} 'jit' >/dev/null 2>&1], [with_lua_version=${luajit_min_version}])
+      PKG_CHECK_MODULES([LUA], $with_lua >= $with_lua_version, [
+        AC_DEFINE([HAVE_LUA], [1], [Define to 1 if you have Lua])
+        LUAPC=$with_lua
+      ], [
+        AC_MSG_ERROR([Selected Lua ($with_lua) not found])
+      ])
+    ], [
+      PKG_CHECK_MODULES([LUA], [luajit >= ${luajit_min_version}], [
+        LUAPC=luajit
+        AC_DEFINE([HAVE_LUA], [1], [Define to 1 if you have Lua])
+      ], [ : ])
+      AS_IF([test -z "$LUAPC"], [
+        found_lua=n
+        m4_foreach_w([luapc], [lua5.3 lua-5.3 lua53 lua5.2 lua-5.2 lua52 lua5.1 lua-5.1 lua51 lua], [
+          AS_IF([test "$found_lua" != "y"], [
+            PKG_CHECK_MODULES([LUA], [luapc >= ${lua_min_version}], [
+              AC_DEFINE([HAVE_LUA], [1], [Define to 1 if you have lua])
+              found_lua=y
+              LUAPC=luapc
+            ], [ : ])
+          ])
         ])
-    ])
-    AC_MSG_CHECKING([for chosen LUA])
-    AS_IF([test "x$LUAPC" = "x"], [
-      AS_IF([test "x$with_lua" = "xyes"],
-        [AC_MSG_ERROR([cannot find lua])],
-        [AC_MSG_RESULT([not found])]
-      )],
-      [AC_MSG_RESULT([$LUAPC])
-       AC_CHECK_HEADER([lua.hpp], [ have_lua_hpp=y ])
-       AM_CONDITIONAL([HAVE_LUA_HPP], [ test x"$have_lua_hpp" = "xy" ])
       ])
     ])
-  AM_CONDITIONAL([LUA], [test "x$with_lua" = "xyes"])
+  ])
+
+  AS_IF([test -z "$LUAPC" -a "$1" = "mandatory"], [
+    AC_MSG_ERROR([No Lua not found, but is mandatory])
+  ])
+
+  AM_CONDITIONAL([LUA], [test -n "x$LUAPC"])
 ])