doc: added doc for adg-demo included in stock ADG
[adg-lua.git] / build / ax_lua.m4
blobc6f597406dcb6b9fd3634d3605396356c1d1d274
1 # ===========================================================================
2 #          http://www.gnu.org/software/autoconf-archive/ax_lua.html
3 # ===========================================================================
5 # SYNOPSIS
7 #   AX_PROG_LUA[([MINIMUM-VERSION], [TOO-BIG-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])]
8 #   AX_LUA_HEADERS[([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])]
9 #   AX_LUA_LIBS[([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])]
10 #   AX_LUA_READLINE[([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])]
12 # DESCRIPTION
14 #   Detect a Lua interpreter, optionally specifying a minimum and maximum
15 #   version number. Set up important Lua paths, such as the directories in
16 #   which to install scripts and modules (shared libraries).
18 #   Also detect Lua headers and libraries. The Lua version contained in the
19 #   header is checked to match the Lua interpreter version exactly. When
20 #   searching for Lua libraries, the version number is used as a suffix.
21 #   This is done with the goal of supporting multiple Lua installs (5.1 and
22 #   5.2 side-by-side).
24 #   A note on compatibility with previous versions: This file has been
25 #   mostly rewritten for serial 18. Most developers should be able to use
26 #   these macros without needing to modify configure.ac. Care has been taken
27 #   to preserve each macro's behavior, but there are some differences:
29 #   1) AX_WITH_LUA is deprecated; it now expands to the exact same thing as
30 #   AX_PROG_LUA with no arguments.
32 #   2) AX_LUA_HEADERS now checks that the version number defined in lua.h
33 #   matches the interpreter version. AX_LUA_HEADERS_VERSION is therefore
34 #   unnecessary, so it is deprecated and does not expand to anything.
36 #   3) The configure flag --with-lua-suffix no longer exists; the user
37 #   should instead specify the LUA precious variable on the command line.
38 #   See the AX_PROG_LUA description for details.
40 #   Please read the macro descriptions below for more information.
42 #   This file was inspired by Andrew Dalke's and James Henstridge's
43 #   python.m4 and Tom Payne's, Matthieu Moy's, and Reuben Thomas's ax_lua.m4
44 #   (serial 17). Basically, this file is a mash-up of those two files. I
45 #   like to think it combines the best of the two!
47 #   AX_PROG_LUA: Search for the Lua interpreter, and set up important Lua
48 #   paths. Adds precious variable LUA, which may contain the path of the Lua
49 #   interpreter. If LUA is blank, the user's path is searched for an
50 #   suitable interpreter.
52 #   If MINIMUM-VERSION is supplied, then only Lua interpreters with a
53 #   version number greater or equal to MINIMUM-VERSION will be accepted. If
54 #   TOO-BIG- VERSION is also supplied, then only Lua interpreters with a
55 #   version number greater or equal to MINIMUM-VERSION and less than
56 #   TOO-BIG-VERSION will be accepted.
58 #   Version comparisons require the AX_COMPARE_VERSION macro, which is
59 #   provided by ax_compare_version.m4 from the Autoconf Archive.
61 #   The Lua version number, LUA_VERSION, is found from the interpreter, and
62 #   substituted. LUA_PLATFORM is also found, but not currently supported (no
63 #   standard representation).
65 #   Finally, the macro finds four paths:
67 #     luadir             Directory to install Lua scripts.
68 #     pkgluadir          $luadir/$PACKAGE
69 #     luaexecdir         Directory to install Lua modules.
70 #     pkgluaexecdir      $luaexecdir/$PACKAGE
72 #   These paths a found based on $prefix, $exec_prefix, Lua's package.path,
73 #   and package.cpath. The first path of package.path beginning with $prefix
74 #   is selected as luadir. The first path of package.cpath beginning with
75 #   $exec_prefix is used as luaexecdir. This should work on all reasonable
76 #   Lua installations. If a path cannot be determined, a default path is
77 #   used. Of course, the user can override these later when invoking make.
79 #     luadir             Default: $prefix/share/lua/$LUA_VERSION
80 #     luaexecdir         Default: $exec_prefix/lib/lua/$LUA_VERSION
82 #   These directories can be used by Automake as install destinations. The
83 #   variable name minus 'dir' needs to be used as a prefix to the
84 #   appropriate Automake primary, e.g. lua_SCRIPS or luaexec_LIBRARIES.
86 #   If an acceptable Lua interpreter is found, then ACTION-IF-FOUND is
87 #   performed, otherwise ACTION-IF-NOT-FOUND is preformed. If ACTION-IF-NOT-
88 #   FOUND is blank, then it will default to printing an error. To prevent
89 #   the default behavior, give ':' as an action.
91 #   AX_LUA_HEADERS: Search for Lua headers. Requires that AX_PROG_LUA be
92 #   expanded before this macro. Adds precious variable LUA_INCLUDE, which
93 #   may contain Lua specific include flags, e.g. -I/usr/include/lua5.1. If
94 #   LUA_INCLUDE is blank, then this macro will attempt to find suitable
95 #   flags.
97 #   LUA_INCLUDE can be used by Automake to compile Lua modules or
98 #   executables with embedded interpreters. The *_CPPFLAGS variables should
99 #   be used for this purpose, e.g. myprog_CPPFLAGS = $(LUA_INCLUDE).
101 #   This macro searches for the header lua.h (and others). The search is
102 #   performed with a combination of CPPFLAGS, CPATH, etc, and LUA_INCLUDE.
103 #   If the search is unsuccessful, then some common directories are tried.
104 #   If the headers are then found, then LUA_INCLUDE is set accordingly.
106 #   The paths automatically searched are:
108 #     * /usr/include/luaX.Y
109 #     * /usr/include/lua/X.Y
110 #     * /usr/include/luaXY
111 #     * /usr/local/include/luaX.Y
112 #     * /usr/local/include/lua/X.Y
113 #     * /usr/local/include/luaXY
115 #   (Where X.Y is the Lua version number, e.g. 5.1.)
117 #   The Lua version number found in the headers is always checked to match
118 #   the Lua interpreter's version number. Lua headers with mismatched
119 #   version numbers are not accepted.
121 #   If headers are found, then ACTION-IF-FOUND is performed, otherwise
122 #   ACTION-IF-NOT-FOUND is performed. If ACTION-IF-NOT-FOUND is blank, then
123 #   it will default to printing an error. To prevent the default behavior,
124 #   set the action to ':'.
126 #   AX_LUA_LIBS: Search for Lua libraries. Requires that AX_PROG_LUA be
127 #   expanded before this macro. Adds precious variable LUA_LIB, which may
128 #   contain Lua specific linker flags, e.g. -llua5.1. If LUA_LIB is blank,
129 #   then this macro will attempt to find suitable flags.
131 #   LUA_LIB can be used by Automake to link Lua modules or executables with
132 #   embedded interpreters. The *_LIBADD and *_LDADD variables should be used
133 #   for this purpose, e.g. mymod_LIBADD = $(LUA_LIB).
135 #   This macro searches for the Lua library. More technically, it searches
136 #   for a library containing the function lua_load. The search is performed
137 #   with a combination of LIBS, LIBRARY_PATH, and LUA_LIB.
139 #   If the search determines that some linker flags are missing, then those
140 #   flags will be added to LUA_LIB.
142 #   If libraries are found, then ACTION-IF-FOUND is performed, otherwise
143 #   ACTION-IF-NOT-FOUND is performed. If ACTION-IF-NOT-FOUND is blank, then
144 #   it will default to printing an error. To prevent the default behavior,
145 #   set the action to ':'.
147 #   AX_LUA_READLINE: Search for readline headers and libraries. Requires the
148 #   AX_LIB_READLINE macro, which is provided by ax_lib_readline.m4 from the
149 #   Autoconf Archive.
151 #   If a readline compatible library is found, then ACTION-IF-FOUND is
152 #   performed, otherwise ACTION-IF-NOT-FOUND is performed.
154 # LICENSE
156 #   Copyright (c) 2013 Tim Perkins <tprk77@gmail.com>
157 #   Copyright (c) 2013 Reuben Thomas <rrt@sc3d.org>
159 #   This program is free software: you can redistribute it and/or modify it
160 #   under the terms of the GNU General Public License as published by the
161 #   Free Software Foundation, either version 3 of the License, or (at your
162 #   option) any later version.
164 #   This program is distributed in the hope that it will be useful, but
165 #   WITHOUT ANY WARRANTY; without even the implied warranty of
166 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
167 #   Public License for more details.
169 #   You should have received a copy of the GNU General Public License along
170 #   with this program. If not, see <http://www.gnu.org/licenses/>.
172 #   As a special exception, the respective Autoconf Macro's copyright owner
173 #   gives unlimited permission to copy, distribute and modify the configure
174 #   scripts that are the output of Autoconf when processing the Macro. You
175 #   need not follow the terms of the GNU General Public License when using
176 #   or distributing such scripts, even though portions of the text of the
177 #   Macro appear in them. The GNU General Public License (GPL) does govern
178 #   all other use of the material that constitutes the Autoconf Macro.
180 #   This special exception to the GPL applies to versions of the Autoconf
181 #   Macro released by the Autoconf Archive. When you make and distribute a
182 #   modified version of the Autoconf Macro, you may extend this special
183 #   exception to the GPL to apply to your modified version as well.
185 #serial 20
187 dnl =========================================================================
188 dnl AX_PROG_LUA([MINIMUM-VERSION], [TOO-BIG-VERSION],
189 dnl             [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
190 dnl =========================================================================
191 AC_DEFUN([AX_PROG_LUA],
193   dnl Make LUA a precious variable.
194   AC_ARG_VAR([LUA], [The Lua interpreter, e.g. /usr/bin/lua5.1])
196   dnl Find a Lua interpreter.
197   m4_define_default([_AX_LUA_INTERPRETER_LIST],
198     [lua lua5.2 lua5.1 lua50])
200   m4_if([$1], [],
201   [ dnl No version check is needed. Find any Lua interpreter.
202     AS_IF([test "x$LUA" = 'x'],
203       [AC_PATH_PROGS([LUA], [_AX_LUA_INTERPRETER_LIST], [:])])
204     ax_display_LUA='lua'
206     dnl At least check if this is a Lua interpreter.
207     AC_MSG_CHECKING([if $LUA is a Lua interpreter])
208     _AX_LUA_CHK_IS_INTRP([$LUA],
209       [AC_MSG_RESULT([yes])],
210       [ AC_MSG_RESULT([no])
211         AC_MSG_ERROR([not a Lua interpreter])
212       ])
213   ],
214   [ dnl A version check is needed.
215     AS_IF([test "x$LUA" != 'x'],
216     [ dnl Check if this is a Lua interpreter.
217       AC_MSG_CHECKING([if $LUA is a Lua interpreter])
218       _AX_LUA_CHK_IS_INTRP([$LUA],
219         [AC_MSG_RESULT([yes])],
220         [ AC_MSG_RESULT([no])
221           AC_MSG_ERROR([not a Lua interpreter])
222         ])
223       dnl Check the version.
224       m4_if([$2], [],
225         [_ax_check_text="whether $LUA version >= $1"],
226         [_ax_check_text="whether $LUA version >= $1, < $2"])
227       AC_MSG_CHECKING([$_ax_check_text])
228       _AX_LUA_CHK_VER([$LUA], [$1], [$2],
229         [AC_MSG_RESULT([yes])],
230         [ AC_MSG_RESULT([no])
231           AC_MSG_ERROR([version is out of range for specified LUA])])
232       ax_display_LUA=$LUA
233     ],
234     [ dnl Try each interpreter until we find one that satisfies VERSION.
235       m4_if([$2], [],
236         [_ax_check_text="for a Lua interpreter with version >= $1"],
237         [_ax_check_text="for a Lua interpreter with version >= $1, < $2"])
238       AC_CACHE_CHECK([$_ax_check_text],
239         [ax_cv_pathless_LUA],
240         [ for ax_cv_pathless_LUA in _AX_LUA_INTERPRETER_LIST none; do
241             test "x$ax_cv_pathless_LUA" = 'xnone' && break
242             _AX_LUA_CHK_IS_INTRP([$ax_cv_pathless_LUA], [], [continue])
243             _AX_LUA_CHK_VER([$ax_cv_pathless_LUA], [$1], [$2], [break])
244           done
245         ])
246       dnl Set $LUA to the absolute path of $ax_cv_pathless_LUA.
247       AS_IF([test "x$ax_cv_pathless_LUA" = 'xnone'],
248         [LUA=':'],
249         [AC_PATH_PROG([LUA], [$ax_cv_pathless_LUA])])
250       ax_display_LUA=$ax_cv_pathless_LUA
251     ])
252   ])
254   AS_IF([test "x$LUA" = 'x:'],
255   [ dnl Run any user-specified action, or abort.
256     m4_default([$4], [AC_MSG_ERROR([cannot find suitable Lua interpreter])])
257   ],
258   [ dnl Query Lua for its version number.
259     AC_CACHE_CHECK([for $ax_display_LUA version], [ax_cv_lua_version],
260       [ ax_cv_lua_version=`$LUA -e "print(_VERSION)" | \
261           sed "s|^Lua \(.*\)|\1|" | \
262           grep -o "^@<:@0-9@:>@\+\\.@<:@0-9@:>@\+"`
263       ])
264     AS_IF([test "x$ax_cv_lua_version" = 'x'],
265       [AC_MSG_ERROR([invalid Lua version number])])
266     AC_SUBST([LUA_VERSION], [$ax_cv_lua_version])
267     AC_SUBST([LUA_SHORT_VERSION], [`echo "$LUA_VERSION" | sed 's|\.||'`])
269     dnl The following check is not supported:
270     dnl At times (like when building shared libraries) you may want to know
271     dnl which OS platform Lua thinks this is.
272     AC_CACHE_CHECK([for $ax_display_LUA platform], [ax_cv_lua_platform],
273       [ax_cv_lua_platform=`$LUA -e "print('unknown')"`])
274     AC_SUBST([LUA_PLATFORM], [$ax_cv_lua_platform])
276     dnl Use the values of $prefix and $exec_prefix for the corresponding
277     dnl values of LUA_PREFIX and LUA_EXEC_PREFIX. These are made distinct
278     dnl variables so they can be overridden if need be. However, the general
279     dnl consensus is that you shouldn't need this ability.
280     AC_SUBST([LUA_PREFIX], ['${prefix}'])
281     AC_SUBST([LUA_EXEC_PREFIX], ['${exec_prefix}'])
283     dnl Lua provides no way to query the script directory, and instead
284     dnl provides LUA_PATH. However, we should be able to make a safe educated
285     dnl guess. If the built-in search path contains a directory which is
286     dnl prefixed by $prefix, then we can store scripts there. The first
287     dnl matching path will be used.
288     AC_CACHE_CHECK([for $ax_display_LUA script directory],
289       [ax_cv_lua_luadir],
290       [ AS_IF([test "x$prefix" = 'xNONE'],
291           [ax_lua_prefix=$ac_default_prefix],
292           [ax_lua_prefix=$prefix])
294         dnl Initialize to the default path.
295         ax_cv_lua_luadir="$LUA_PREFIX/share/lua/$LUA_VERSION"
297         dnl Try to find a path with the prefix.
298         _AX_LUA_FND_PRFX_PTH([$LUA], [$ax_lua_prefix], [package.path])
299         AS_IF([test "x$ax_lua_prefixed_path" != 'x'],
300         [ dnl Fix the prefix.
301           _ax_strip_prefix=`echo "$ax_lua_prefix" | sed 's|.|.|g'`
302           ax_cv_lua_luadir=`echo "$ax_lua_prefixed_path" | \
303             sed "s,^$_ax_strip_prefix,$LUA_PREFIX,"`
304         ])
305       ])
306     AC_SUBST([luadir], [$ax_cv_lua_luadir])
307     AC_SUBST([pkgluadir], [\${luadir}/$PACKAGE])
309     dnl Lua provides no way to query the module directory, and instead
310     dnl provides LUA_PATH. However, we should be able to make a safe educated
311     dnl guess. If the built-in search path contains a directory which is
312     dnl prefixed by $exec_prefix, then we can store modules there. The first
313     dnl matching path will be used.
314     AC_CACHE_CHECK([for $ax_display_LUA module directory],
315       [ax_cv_lua_luaexecdir],
316       [ AS_IF([test "x$exec_prefix" = 'xNONE'],
317           [ax_lua_exec_prefix=$ax_lua_prefix],
318           [ax_lua_exec_prefix=$exec_prefix])
320         dnl Initialize to the default path.
321         ax_cv_lua_luaexecdir="$LUA_EXEC_PREFIX/lib/lua/$LUA_VERSION"
323         dnl Try to find a path with the prefix.
324         _AX_LUA_FND_PRFX_PTH([$LUA],
325           [$ax_lua_exec_prefix], [package.cpathd])
326         AS_IF([test "x$ax_lua_prefixed_path" != 'x'],
327         [ dnl Fix the prefix.
328           _ax_strip_prefix=`echo "$ax_lua_exec_prefix" | sed 's|.|.|g'`
329           ax_cv_lua_luaexecdir=`echo "$ax_lua_prefixed_path" | \
330             sed "s,^$_ax_strip_prefix,$LUA_EXEC_PREFIX,"`
331         ])
332       ])
333     AC_SUBST([luaexecdir], [$ax_cv_lua_luaexecdir])
334     AC_SUBST([pkgluaexecdir], [\${luaexecdir}/$PACKAGE])
336     dnl Run any user specified action.
337     $3
338   ])
341 dnl AX_WITH_LUA is now the same thing as AX_PROG_LUA.
342 AC_DEFUN([AX_WITH_LUA],
344   AC_MSG_WARN([[$0 is deprecated, please use AX_PROG_LUA]])
345   AX_PROG_LUA
349 dnl =========================================================================
350 dnl _AX_LUA_CHK_IS_INTRP(PROG, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
351 dnl =========================================================================
352 AC_DEFUN([_AX_LUA_CHK_IS_INTRP],
354   dnl Just print _VERSION because all Lua interpreters have this global.
355   AS_IF([$1 -e "print('Hello ' .. _VERSION .. '!')" &>/dev/null],
356     [$2], [$3])
360 dnl =========================================================================
361 dnl _AX_LUA_CHK_VER(PROG, MINIMUM-VERSION, [TOO-BIG-VERSION],
362 dnl                 [ACTION-IF-TRUE], [ACTION-IF-FALSE])
363 dnl =========================================================================
364 AC_DEFUN([_AX_LUA_CHK_VER],
366   _ax_test_ver=`$1 -e "print(_VERSION)" 2>/dev/null | \
367     sed "s|^Lua \(.*\)|\1|" | grep -o "^@<:@0-9@:>@\+\\.@<:@0-9@:>@\+"`
368   AS_IF([test "x$_ax_test_ver" = 'x'],
369     [_ax_test_ver='0'])
370   AX_COMPARE_VERSION([$_ax_test_ver], [ge], [$2])
371   m4_if([$3], [], [],
372     [ AS_IF([$ax_compare_version],
373         [AX_COMPARE_VERSION([$_ax_test_ver], [lt], [$3])])
374     ])
375   AS_IF([$ax_compare_version], [$4], [$5])
379 dnl =========================================================================
380 dnl _AX_LUA_FND_PRFX_PTH(PROG, PREFIX, LUA-PATH-VARIABLE)
381 dnl =========================================================================
382 AC_DEFUN([_AX_LUA_FND_PRFX_PTH],
384   dnl Invokes the Lua interpreter PROG to print the path variable
385   dnl LUA-PATH-VARIABLE, usually package.path or package.cpath. Paths are
386   dnl then matched against PREFIX. The first path to begin with PREFIX is set
387   dnl to ax_lua_prefixed_path.
389   ax_lua_prefixed_path=''
390   _ax_package_paths=`$1 -e 'print($3)' 2>/dev/null | sed 's|;|\n|g'`
391   dnl Try the paths in order, looking for the prefix.
392   for _ax_package_path in $_ax_package_paths; do
393     dnl Copy the path, up to the use of a Lua wildcard.
394     _ax_path_parts=`echo "$_ax_package_path" | sed 's|/|\n|g'`
395     _ax_reassembled=''
396     for _ax_path_part in $_ax_path_parts; do
397       echo "$_ax_path_part" | grep '\?' >/dev/null && break
398       _ax_reassembled="$_ax_reassembled/$_ax_path_part"
399     done
400     dnl Check the path against the prefix.
401     _ax_package_path=$_ax_reassembled
402     if echo "$_ax_package_path" | grep "^$2" >/dev/null; then
403       dnl Found it.
404       ax_lua_prefixed_path=$_ax_package_path
405       break
406     fi
407   done
411 dnl =========================================================================
412 dnl AX_LUA_HEADERS([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
413 dnl =========================================================================
414 AC_DEFUN([AX_LUA_HEADERS],
416   dnl Check for LUA_VERSION.
417   AC_MSG_CHECKING([if LUA_VERSION is defined])
418   AS_IF([test "x$LUA_VERSION" != 'x'],
419     [AC_MSG_RESULT([yes])],
420     [ AC_MSG_RESULT([no])
421       AC_MSG_ERROR([cannot check Lua headers without knowing LUA_VERSION])
422     ])
424   dnl Make LUA_INCLUDE a precious variable.
425   AC_ARG_VAR([LUA_INCLUDE], [The Lua includes, e.g. -I/usr/include/lua5.1])
427   dnl Some default directories to search.
428   LUA_SHORT_VERSION=`echo "$LUA_VERSION" | sed 's|\.||'`
429   m4_define_default([_AX_LUA_INCLUDE_LIST],
430     [ /usr/include/lua$LUA_VERSION \
431       /usr/include/lua/$LUA_VERSION \
432       /usr/include/lua$LUA_SHORT_VERSION \
433       /usr/local/include/lua$LUA_VERSION \
434       /usr/local/include/lua/$LUA_VERSION \
435       /usr/local/include/lua$LUA_SHORT_VERSION \
436     ])
438   dnl Try to find the headers.
439   _ax_lua_saved_cppflags=$CPPFLAGS
440   CPPFLAGS="$CPPFLAGS $LUA_INCLUDE"
441   AC_CHECK_HEADERS([lua.h lualib.h lauxlib.h luaconf.h])
442   CPPFLAGS=$_ax_lua_saved_cppflags
444   dnl Try some other directories if LUA_INCLUDE was not set.
445   AS_IF([test "x$LUA_INCLUDE" = 'x' &&
446          test "x$ac_cv_header_lua_h" != 'xyes'],
447     [ dnl Try some common include paths.
448       for _ax_include_path in _AX_LUA_INCLUDE_LIST; do
449         test ! -d "$_ax_include_path" && continue
451         AC_MSG_CHECKING([for Lua headers in])
452         AC_MSG_RESULT([$_ax_include_path])
454         AS_UNSET([ac_cv_header_lua_h])
455         AS_UNSET([ac_cv_header_lualib_h])
456         AS_UNSET([ac_cv_header_lauxlib_h])
457         AS_UNSET([ac_cv_header_luaconf_h])
459         _ax_lua_saved_cppflags=$CPPFLAGS
460         CPPFLAGS="$CPPFLAGS -I$_ax_include_path"
461         AC_CHECK_HEADERS([lua.h lualib.h lauxlib.h luaconf.h])
462         CPPFLAGS=$_ax_lua_saved_cppflags
464         AS_IF([test "x$ac_cv_header_lua_h" = 'xyes'],
465           [ LUA_INCLUDE="-I$_ax_include_path"
466             break
467           ])
468       done
469     ])
471   AS_IF([test "x$ac_cv_header_lua_h" = 'xyes'],
472     [ dnl Make a program to print LUA_VERSION defined in the header.
473       dnl TODO This probably shouldn't be a runtime test.
475       AC_CACHE_CHECK([for Lua header version],
476         [ax_cv_lua_header_version],
477         [ _ax_lua_saved_cppflags=$CPPFLAGS
478           CPPFLAGS="$CPPFLAGS $LUA_INCLUDE"
479           AC_RUN_IFELSE(
480             [ AC_LANG_SOURCE([[
481 #include <lua.h>
482 #include <stdlib.h>
483 #include <stdio.h>
484 int main(int argc, char ** argv)
486   if(argc > 1) printf("%s", LUA_VERSION);
487   exit(EXIT_SUCCESS);
490             ],
491             [ ax_cv_lua_header_version=`./conftest$EXEEXT p | \
492                 sed "s|^Lua \(.*\)|\1|" | \
493                 grep -o "^@<:@0-9@:>@\+\\.@<:@0-9@:>@\+"`
494             ],
495             [ax_cv_lua_header_version='unknown'])
496           CPPFLAGS=$_ax_lua_saved_cppflags
497         ])
499       dnl Compare this to the previously found LUA_VERSION.
500       AC_MSG_CHECKING([if Lua header version matches $LUA_VERSION])
501       AS_IF([test "x$ax_cv_lua_header_version" = "x$LUA_VERSION"],
502         [ AC_MSG_RESULT([yes])
503           ax_header_version_match='yes'
504         ],
505         [ AC_MSG_RESULT([no])
506           ax_header_version_match='no'
507         ])
508     ])
510   dnl Was LUA_INCLUDE specified?
511   AS_IF([test "x$ax_header_version_match" != 'xyes' &&
512          test "x$LUA_INCLUDE" != 'x'],
513     [AC_MSG_ERROR([cannot find headers for specified LUA_INCLUDE])])
515   dnl Test the final result and run user code.
516   AS_IF([test "x$ax_header_version_match" = 'xyes'], [$1],
517     [m4_default([$2], [AC_MSG_ERROR([cannot find Lua includes])])])
520 dnl AX_LUA_HEADERS_VERSION no longer exists, use AX_LUA_HEADERS.
521 AC_DEFUN([AX_LUA_HEADERS_VERSION],
523   AC_MSG_WARN([[$0 is deprecated, please use AX_LUA_HEADERS]])
527 dnl =========================================================================
528 dnl AX_LUA_LIBS([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
529 dnl =========================================================================
530 AC_DEFUN([AX_LUA_LIBS],
532   dnl TODO Should this macro also check various -L flags?
534   dnl Check for LUA_VERSION.
535   AC_MSG_CHECKING([if LUA_VERSION is defined])
536   AS_IF([test "x$LUA_VERSION" != 'x'],
537     [AC_MSG_RESULT([yes])],
538     [ AC_MSG_RESULT([no])
539       AC_MSG_ERROR([cannot check Lua libs without knowing LUA_VERSION])
540     ])
542   dnl Make LUA_LIB a precious variable.
543   AC_ARG_VAR([LUA_LIB], [The Lua library, e.g. -llua5.1])
545   AS_IF([test "x$LUA_LIB" != 'x'],
546   [ dnl Check that LUA_LIBS works.
547     _ax_lua_saved_libs=$LIBS
548     LIBS="$LIBS $LUA_LIB"
549     AC_SEARCH_LIBS([lua_load], [],
550       [_ax_found_lua_libs='yes'],
551       [_ax_found_lua_libs='no'])
552     LIBS=$_ax_lua_saved_libs
554     dnl Check the result.
555     AS_IF([test "x$_ax_found_lua_libs" != 'xyes'],
556       [AC_MSG_ERROR([cannot find libs for specified LUA_LIB])])
557   ],
558   [ dnl First search for extra libs.
559     _ax_lua_extra_libs=''
561     _ax_lua_saved_libs=$LIBS
562     LIBS="$LIBS $LUA_LIB"
563     AC_SEARCH_LIBS([exp], [m])
564     AC_SEARCH_LIBS([dlopen], [dl])
565     LIBS=$_ax_lua_saved_libs
567     AS_IF([test "x$ac_cv_search_exp" != 'xno' &&
568            test "x$ac_cv_search_exp" != 'xnone required'],
569       [_ax_lua_extra_libs="$_ax_lua_extra_libs $ac_cv_search_exp"])
571     AS_IF([test "x$ac_cv_search_dlopen" != 'xno' &&
572            test "x$ac_cv_search_dlopen" != 'xnone required'],
573       [_ax_lua_extra_libs="$_ax_lua_extra_libs $ac_cv_search_dlopen"])
575     dnl Try to find the Lua libs.
576     _ax_lua_saved_libs=$LIBS
577     LIBS="$LIBS $LUA_LIB"
578     AC_SEARCH_LIBS([lua_load], [lua$LUA_VERSION lua$LUA_SHORT_VERSION lua],
579       [_ax_found_lua_libs='yes'],
580       [_ax_found_lua_libs='no'],
581       [$_ax_lua_extra_libs])
582     LIBS=$_ax_lua_saved_libs
584     AS_IF([test "x$ac_cv_search_lua_load" != 'xno' &&
585            test "x$ac_cv_search_lua_load" != 'xnone required'],
586       [LUA_LIB="$ac_cv_search_lua_load $_ax_lua_extra_libs"])
587   ])
589   dnl Test the result and run user code.
590   AS_IF([test "x$_ax_found_lua_libs" = 'xyes'], [$1],
591     [m4_default([$2], [AC_MSG_ERROR([cannot find Lua libs])])])
595 dnl =========================================================================
596 dnl AX_LUA_READLINE([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
597 dnl =========================================================================
598 AC_DEFUN([AX_LUA_READLINE],
600   AX_LIB_READLINE
601   AS_IF([test "x$ac_cv_header_readline_readline_h" != 'x' &&
602          test "x$ac_cv_header_readline_history_h" != 'x'],
603     [ LUA_LIBS_CFLAGS="-DLUA_USE_READLINE $LUA_LIBS_CFLAGS"
604       $1
605     ],
606     [$2])