1*39ee7a7aSBaptiste Daroussin# =========================================================================== 2*39ee7a7aSBaptiste Daroussin# http://www.gnu.org/software/autoconf-archive/ax_lua.html 3*39ee7a7aSBaptiste Daroussin# =========================================================================== 4*39ee7a7aSBaptiste Daroussin# 5*39ee7a7aSBaptiste Daroussin# SYNOPSIS 6*39ee7a7aSBaptiste Daroussin# 7*39ee7a7aSBaptiste Daroussin# AX_PROG_LUA[([MINIMUM-VERSION], [TOO-BIG-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])] 8*39ee7a7aSBaptiste Daroussin# AX_LUA_HEADERS[([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])] 9*39ee7a7aSBaptiste Daroussin# AX_LUA_LIBS[([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])] 10*39ee7a7aSBaptiste Daroussin# AX_LUA_READLINE[([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])] 11*39ee7a7aSBaptiste Daroussin# 12*39ee7a7aSBaptiste Daroussin# DESCRIPTION 13*39ee7a7aSBaptiste Daroussin# 14*39ee7a7aSBaptiste Daroussin# Detect a Lua interpreter, optionally specifying a minimum and maximum 15*39ee7a7aSBaptiste Daroussin# version number. Set up important Lua paths, such as the directories in 16*39ee7a7aSBaptiste Daroussin# which to install scripts and modules (shared libraries). 17*39ee7a7aSBaptiste Daroussin# 18*39ee7a7aSBaptiste Daroussin# Also detect Lua headers and libraries. The Lua version contained in the 19*39ee7a7aSBaptiste Daroussin# header is checked to match the Lua interpreter version exactly. When 20*39ee7a7aSBaptiste Daroussin# searching for Lua libraries, the version number is used as a suffix. 21*39ee7a7aSBaptiste Daroussin# This is done with the goal of supporting multiple Lua installs (5.1, 22*39ee7a7aSBaptiste Daroussin# 5.2, and 5.3 side-by-side). 23*39ee7a7aSBaptiste Daroussin# 24*39ee7a7aSBaptiste Daroussin# A note on compatibility with previous versions: This file has been 25*39ee7a7aSBaptiste Daroussin# mostly rewritten for serial 18. Most developers should be able to use 26*39ee7a7aSBaptiste Daroussin# these macros without needing to modify configure.ac. Care has been taken 27*39ee7a7aSBaptiste Daroussin# to preserve each macro's behavior, but there are some differences: 28*39ee7a7aSBaptiste Daroussin# 29*39ee7a7aSBaptiste Daroussin# 1) AX_WITH_LUA is deprecated; it now expands to the exact same thing as 30*39ee7a7aSBaptiste Daroussin# AX_PROG_LUA with no arguments. 31*39ee7a7aSBaptiste Daroussin# 32*39ee7a7aSBaptiste Daroussin# 2) AX_LUA_HEADERS now checks that the version number defined in lua.h 33*39ee7a7aSBaptiste Daroussin# matches the interpreter version. AX_LUA_HEADERS_VERSION is therefore 34*39ee7a7aSBaptiste Daroussin# unnecessary, so it is deprecated and does not expand to anything. 35*39ee7a7aSBaptiste Daroussin# 36*39ee7a7aSBaptiste Daroussin# 3) The configure flag --with-lua-suffix no longer exists; the user 37*39ee7a7aSBaptiste Daroussin# should instead specify the LUA precious variable on the command line. 38*39ee7a7aSBaptiste Daroussin# See the AX_PROG_LUA description for details. 39*39ee7a7aSBaptiste Daroussin# 40*39ee7a7aSBaptiste Daroussin# Please read the macro descriptions below for more information. 41*39ee7a7aSBaptiste Daroussin# 42*39ee7a7aSBaptiste Daroussin# This file was inspired by Andrew Dalke's and James Henstridge's 43*39ee7a7aSBaptiste Daroussin# python.m4 and Tom Payne's, Matthieu Moy's, and Reuben Thomas's ax_lua.m4 44*39ee7a7aSBaptiste Daroussin# (serial 17). Basically, this file is a mash-up of those two files. I 45*39ee7a7aSBaptiste Daroussin# like to think it combines the best of the two! 46*39ee7a7aSBaptiste Daroussin# 47*39ee7a7aSBaptiste Daroussin# AX_PROG_LUA: Search for the Lua interpreter, and set up important Lua 48*39ee7a7aSBaptiste Daroussin# paths. Adds precious variable LUA, which may contain the path of the Lua 49*39ee7a7aSBaptiste Daroussin# interpreter. If LUA is blank, the user's path is searched for an 50*39ee7a7aSBaptiste Daroussin# suitable interpreter. 51*39ee7a7aSBaptiste Daroussin# 52*39ee7a7aSBaptiste Daroussin# If MINIMUM-VERSION is supplied, then only Lua interpreters with a 53*39ee7a7aSBaptiste Daroussin# version number greater or equal to MINIMUM-VERSION will be accepted. If 54*39ee7a7aSBaptiste Daroussin# TOO-BIG-VERSION is also supplied, then only Lua interpreters with a 55*39ee7a7aSBaptiste Daroussin# version number greater or equal to MINIMUM-VERSION and less than 56*39ee7a7aSBaptiste Daroussin# TOO-BIG-VERSION will be accepted. 57*39ee7a7aSBaptiste Daroussin# 58*39ee7a7aSBaptiste Daroussin# The Lua version number, LUA_VERSION, is found from the interpreter, and 59*39ee7a7aSBaptiste Daroussin# substituted. LUA_PLATFORM is also found, but not currently supported (no 60*39ee7a7aSBaptiste Daroussin# standard representation). 61*39ee7a7aSBaptiste Daroussin# 62*39ee7a7aSBaptiste Daroussin# Finally, the macro finds four paths: 63*39ee7a7aSBaptiste Daroussin# 64*39ee7a7aSBaptiste Daroussin# luadir Directory to install Lua scripts. 65*39ee7a7aSBaptiste Daroussin# pkgluadir $luadir/$PACKAGE 66*39ee7a7aSBaptiste Daroussin# luaexecdir Directory to install Lua modules. 67*39ee7a7aSBaptiste Daroussin# pkgluaexecdir $luaexecdir/$PACKAGE 68*39ee7a7aSBaptiste Daroussin# 69*39ee7a7aSBaptiste Daroussin# These paths are found based on $prefix, $exec_prefix, Lua's 70*39ee7a7aSBaptiste Daroussin# package.path, and package.cpath. The first path of package.path 71*39ee7a7aSBaptiste Daroussin# beginning with $prefix is selected as luadir. The first path of 72*39ee7a7aSBaptiste Daroussin# package.cpath beginning with $exec_prefix is used as luaexecdir. This 73*39ee7a7aSBaptiste Daroussin# should work on all reasonable Lua installations. If a path cannot be 74*39ee7a7aSBaptiste Daroussin# determined, a default path is used. Of course, the user can override 75*39ee7a7aSBaptiste Daroussin# these later when invoking make. 76*39ee7a7aSBaptiste Daroussin# 77*39ee7a7aSBaptiste Daroussin# luadir Default: $prefix/share/lua/$LUA_VERSION 78*39ee7a7aSBaptiste Daroussin# luaexecdir Default: $exec_prefix/lib/lua/$LUA_VERSION 79*39ee7a7aSBaptiste Daroussin# 80*39ee7a7aSBaptiste Daroussin# These directories can be used by Automake as install destinations. The 81*39ee7a7aSBaptiste Daroussin# variable name minus 'dir' needs to be used as a prefix to the 82*39ee7a7aSBaptiste Daroussin# appropriate Automake primary, e.g. lua_SCRIPS or luaexec_LIBRARIES. 83*39ee7a7aSBaptiste Daroussin# 84*39ee7a7aSBaptiste Daroussin# If an acceptable Lua interpreter is found, then ACTION-IF-FOUND is 85*39ee7a7aSBaptiste Daroussin# performed, otherwise ACTION-IF-NOT-FOUND is preformed. If ACTION-IF-NOT- 86*39ee7a7aSBaptiste Daroussin# FOUND is blank, then it will default to printing an error. To prevent 87*39ee7a7aSBaptiste Daroussin# the default behavior, give ':' as an action. 88*39ee7a7aSBaptiste Daroussin# 89*39ee7a7aSBaptiste Daroussin# AX_LUA_HEADERS: Search for Lua headers. Requires that AX_PROG_LUA be 90*39ee7a7aSBaptiste Daroussin# expanded before this macro. Adds precious variable LUA_INCLUDE, which 91*39ee7a7aSBaptiste Daroussin# may contain Lua specific include flags, e.g. -I/usr/include/lua5.1. If 92*39ee7a7aSBaptiste Daroussin# LUA_INCLUDE is blank, then this macro will attempt to find suitable 93*39ee7a7aSBaptiste Daroussin# flags. 94*39ee7a7aSBaptiste Daroussin# 95*39ee7a7aSBaptiste Daroussin# LUA_INCLUDE can be used by Automake to compile Lua modules or 96*39ee7a7aSBaptiste Daroussin# executables with embedded interpreters. The *_CPPFLAGS variables should 97*39ee7a7aSBaptiste Daroussin# be used for this purpose, e.g. myprog_CPPFLAGS = $(LUA_INCLUDE). 98*39ee7a7aSBaptiste Daroussin# 99*39ee7a7aSBaptiste Daroussin# This macro searches for the header lua.h (and others). The search is 100*39ee7a7aSBaptiste Daroussin# performed with a combination of CPPFLAGS, CPATH, etc, and LUA_INCLUDE. 101*39ee7a7aSBaptiste Daroussin# If the search is unsuccessful, then some common directories are tried. 102*39ee7a7aSBaptiste Daroussin# If the headers are then found, then LUA_INCLUDE is set accordingly. 103*39ee7a7aSBaptiste Daroussin# 104*39ee7a7aSBaptiste Daroussin# The paths automatically searched are: 105*39ee7a7aSBaptiste Daroussin# 106*39ee7a7aSBaptiste Daroussin# * /usr/include/luaX.Y 107*39ee7a7aSBaptiste Daroussin# * /usr/include/lua/X.Y 108*39ee7a7aSBaptiste Daroussin# * /usr/include/luaXY 109*39ee7a7aSBaptiste Daroussin# * /usr/local/include/luaX.Y 110*39ee7a7aSBaptiste Daroussin# * /usr/local/include/lua-X.Y 111*39ee7a7aSBaptiste Daroussin# * /usr/local/include/lua/X.Y 112*39ee7a7aSBaptiste Daroussin# * /usr/local/include/luaXY 113*39ee7a7aSBaptiste Daroussin# 114*39ee7a7aSBaptiste Daroussin# (Where X.Y is the Lua version number, e.g. 5.1.) 115*39ee7a7aSBaptiste Daroussin# 116*39ee7a7aSBaptiste Daroussin# The Lua version number found in the headers is always checked to match 117*39ee7a7aSBaptiste Daroussin# the Lua interpreter's version number. Lua headers with mismatched 118*39ee7a7aSBaptiste Daroussin# version numbers are not accepted. 119*39ee7a7aSBaptiste Daroussin# 120*39ee7a7aSBaptiste Daroussin# If headers are found, then ACTION-IF-FOUND is performed, otherwise 121*39ee7a7aSBaptiste Daroussin# ACTION-IF-NOT-FOUND is performed. If ACTION-IF-NOT-FOUND is blank, then 122*39ee7a7aSBaptiste Daroussin# it will default to printing an error. To prevent the default behavior, 123*39ee7a7aSBaptiste Daroussin# set the action to ':'. 124*39ee7a7aSBaptiste Daroussin# 125*39ee7a7aSBaptiste Daroussin# AX_LUA_LIBS: Search for Lua libraries. Requires that AX_PROG_LUA be 126*39ee7a7aSBaptiste Daroussin# expanded before this macro. Adds precious variable LUA_LIB, which may 127*39ee7a7aSBaptiste Daroussin# contain Lua specific linker flags, e.g. -llua5.1. If LUA_LIB is blank, 128*39ee7a7aSBaptiste Daroussin# then this macro will attempt to find suitable flags. 129*39ee7a7aSBaptiste Daroussin# 130*39ee7a7aSBaptiste Daroussin# LUA_LIB can be used by Automake to link Lua modules or executables with 131*39ee7a7aSBaptiste Daroussin# embedded interpreters. The *_LIBADD and *_LDADD variables should be used 132*39ee7a7aSBaptiste Daroussin# for this purpose, e.g. mymod_LIBADD = $(LUA_LIB). 133*39ee7a7aSBaptiste Daroussin# 134*39ee7a7aSBaptiste Daroussin# This macro searches for the Lua library. More technically, it searches 135*39ee7a7aSBaptiste Daroussin# for a library containing the function lua_load. The search is performed 136*39ee7a7aSBaptiste Daroussin# with a combination of LIBS, LIBRARY_PATH, and LUA_LIB. 137*39ee7a7aSBaptiste Daroussin# 138*39ee7a7aSBaptiste Daroussin# If the search determines that some linker flags are missing, then those 139*39ee7a7aSBaptiste Daroussin# flags will be added to LUA_LIB. 140*39ee7a7aSBaptiste Daroussin# 141*39ee7a7aSBaptiste Daroussin# If libraries are found, then ACTION-IF-FOUND is performed, otherwise 142*39ee7a7aSBaptiste Daroussin# ACTION-IF-NOT-FOUND is performed. If ACTION-IF-NOT-FOUND is blank, then 143*39ee7a7aSBaptiste Daroussin# it will default to printing an error. To prevent the default behavior, 144*39ee7a7aSBaptiste Daroussin# set the action to ':'. 145*39ee7a7aSBaptiste Daroussin# 146*39ee7a7aSBaptiste Daroussin# AX_LUA_READLINE: Search for readline headers and libraries. Requires the 147*39ee7a7aSBaptiste Daroussin# AX_LIB_READLINE macro, which is provided by ax_lib_readline.m4 from the 148*39ee7a7aSBaptiste Daroussin# Autoconf Archive. 149*39ee7a7aSBaptiste Daroussin# 150*39ee7a7aSBaptiste Daroussin# If a readline compatible library is found, then ACTION-IF-FOUND is 151*39ee7a7aSBaptiste Daroussin# performed, otherwise ACTION-IF-NOT-FOUND is performed. 152*39ee7a7aSBaptiste Daroussin# 153*39ee7a7aSBaptiste Daroussin# LICENSE 154*39ee7a7aSBaptiste Daroussin# 155*39ee7a7aSBaptiste Daroussin# Copyright (c) 2015 Reuben Thomas <rrt@sc3d.org> 156*39ee7a7aSBaptiste Daroussin# Copyright (c) 2014 Tim Perkins <tprk77@gmail.com> 157*39ee7a7aSBaptiste Daroussin# 158*39ee7a7aSBaptiste Daroussin# This program is free software: you can redistribute it and/or modify it 159*39ee7a7aSBaptiste Daroussin# under the terms of the GNU General Public License as published by the 160*39ee7a7aSBaptiste Daroussin# Free Software Foundation, either version 3 of the License, or (at your 161*39ee7a7aSBaptiste Daroussin# option) any later version. 162*39ee7a7aSBaptiste Daroussin# 163*39ee7a7aSBaptiste Daroussin# This program is distributed in the hope that it will be useful, but 164*39ee7a7aSBaptiste Daroussin# WITHOUT ANY WARRANTY; without even the implied warranty of 165*39ee7a7aSBaptiste Daroussin# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 166*39ee7a7aSBaptiste Daroussin# Public License for more details. 167*39ee7a7aSBaptiste Daroussin# 168*39ee7a7aSBaptiste Daroussin# You should have received a copy of the GNU General Public License along 169*39ee7a7aSBaptiste Daroussin# with this program. If not, see <http://www.gnu.org/licenses/>. 170*39ee7a7aSBaptiste Daroussin# 171*39ee7a7aSBaptiste Daroussin# As a special exception, the respective Autoconf Macro's copyright owner 172*39ee7a7aSBaptiste Daroussin# gives unlimited permission to copy, distribute and modify the configure 173*39ee7a7aSBaptiste Daroussin# scripts that are the output of Autoconf when processing the Macro. You 174*39ee7a7aSBaptiste Daroussin# need not follow the terms of the GNU General Public License when using 175*39ee7a7aSBaptiste Daroussin# or distributing such scripts, even though portions of the text of the 176*39ee7a7aSBaptiste Daroussin# Macro appear in them. The GNU General Public License (GPL) does govern 177*39ee7a7aSBaptiste Daroussin# all other use of the material that constitutes the Autoconf Macro. 178*39ee7a7aSBaptiste Daroussin# 179*39ee7a7aSBaptiste Daroussin# This special exception to the GPL applies to versions of the Autoconf 180*39ee7a7aSBaptiste Daroussin# Macro released by the Autoconf Archive. When you make and distribute a 181*39ee7a7aSBaptiste Daroussin# modified version of the Autoconf Macro, you may extend this special 182*39ee7a7aSBaptiste Daroussin# exception to the GPL to apply to your modified version as well. 183*39ee7a7aSBaptiste Daroussin 184*39ee7a7aSBaptiste Daroussin#serial 39 185*39ee7a7aSBaptiste Daroussin 186*39ee7a7aSBaptiste Daroussindnl ========================================================================= 187*39ee7a7aSBaptiste Daroussindnl AX_PROG_LUA([MINIMUM-VERSION], [TOO-BIG-VERSION], 188*39ee7a7aSBaptiste Daroussindnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) 189*39ee7a7aSBaptiste Daroussindnl ========================================================================= 190*39ee7a7aSBaptiste DaroussinAC_DEFUN([AX_PROG_LUA], 191*39ee7a7aSBaptiste Daroussin[ 192*39ee7a7aSBaptiste Daroussin dnl Check for required tools. 193*39ee7a7aSBaptiste Daroussin AC_REQUIRE([AC_PROG_GREP]) 194*39ee7a7aSBaptiste Daroussin AC_REQUIRE([AC_PROG_SED]) 195*39ee7a7aSBaptiste Daroussin 196*39ee7a7aSBaptiste Daroussin dnl Make LUA a precious variable. 197*39ee7a7aSBaptiste Daroussin AC_ARG_VAR([LUA], [The Lua interpreter, e.g. /usr/bin/lua5.1]) 198*39ee7a7aSBaptiste Daroussin 199*39ee7a7aSBaptiste Daroussin dnl Find a Lua interpreter. 200*39ee7a7aSBaptiste Daroussin m4_define_default([_AX_LUA_INTERPRETER_LIST], 201*39ee7a7aSBaptiste Daroussin [lua lua5.3 lua53 lua5.2 lua52 lua5.1 lua51 lua50]) 202*39ee7a7aSBaptiste Daroussin 203*39ee7a7aSBaptiste Daroussin m4_if([$1], [], 204*39ee7a7aSBaptiste Daroussin [ dnl No version check is needed. Find any Lua interpreter. 205*39ee7a7aSBaptiste Daroussin AS_IF([test "x$LUA" = 'x'], 206*39ee7a7aSBaptiste Daroussin [AC_PATH_PROGS([LUA], [_AX_LUA_INTERPRETER_LIST], [:])]) 207*39ee7a7aSBaptiste Daroussin ax_display_LUA='lua' 208*39ee7a7aSBaptiste Daroussin 209*39ee7a7aSBaptiste Daroussin AS_IF([test "x$LUA" != 'x:'], 210*39ee7a7aSBaptiste Daroussin [ dnl At least check if this is a Lua interpreter. 211*39ee7a7aSBaptiste Daroussin AC_MSG_CHECKING([if $LUA is a Lua interpreter]) 212*39ee7a7aSBaptiste Daroussin _AX_LUA_CHK_IS_INTRP([$LUA], 213*39ee7a7aSBaptiste Daroussin [AC_MSG_RESULT([yes])], 214*39ee7a7aSBaptiste Daroussin [ AC_MSG_RESULT([no]) 215*39ee7a7aSBaptiste Daroussin AC_MSG_ERROR([not a Lua interpreter]) 216*39ee7a7aSBaptiste Daroussin ]) 217*39ee7a7aSBaptiste Daroussin ]) 218*39ee7a7aSBaptiste Daroussin ], 219*39ee7a7aSBaptiste Daroussin [ dnl A version check is needed. 220*39ee7a7aSBaptiste Daroussin AS_IF([test "x$LUA" != 'x'], 221*39ee7a7aSBaptiste Daroussin [ dnl Check if this is a Lua interpreter. 222*39ee7a7aSBaptiste Daroussin AC_MSG_CHECKING([if $LUA is a Lua interpreter]) 223*39ee7a7aSBaptiste Daroussin _AX_LUA_CHK_IS_INTRP([$LUA], 224*39ee7a7aSBaptiste Daroussin [AC_MSG_RESULT([yes])], 225*39ee7a7aSBaptiste Daroussin [ AC_MSG_RESULT([no]) 226*39ee7a7aSBaptiste Daroussin AC_MSG_ERROR([not a Lua interpreter]) 227*39ee7a7aSBaptiste Daroussin ]) 228*39ee7a7aSBaptiste Daroussin dnl Check the version. 229*39ee7a7aSBaptiste Daroussin m4_if([$2], [], 230*39ee7a7aSBaptiste Daroussin [_ax_check_text="whether $LUA version >= $1"], 231*39ee7a7aSBaptiste Daroussin [_ax_check_text="whether $LUA version >= $1, < $2"]) 232*39ee7a7aSBaptiste Daroussin AC_MSG_CHECKING([$_ax_check_text]) 233*39ee7a7aSBaptiste Daroussin _AX_LUA_CHK_VER([$LUA], [$1], [$2], 234*39ee7a7aSBaptiste Daroussin [AC_MSG_RESULT([yes])], 235*39ee7a7aSBaptiste Daroussin [ AC_MSG_RESULT([no]) 236*39ee7a7aSBaptiste Daroussin AC_MSG_ERROR([version is out of range for specified LUA])]) 237*39ee7a7aSBaptiste Daroussin ax_display_LUA=$LUA 238*39ee7a7aSBaptiste Daroussin ], 239*39ee7a7aSBaptiste Daroussin [ dnl Try each interpreter until we find one that satisfies VERSION. 240*39ee7a7aSBaptiste Daroussin m4_if([$2], [], 241*39ee7a7aSBaptiste Daroussin [_ax_check_text="for a Lua interpreter with version >= $1"], 242*39ee7a7aSBaptiste Daroussin [_ax_check_text="for a Lua interpreter with version >= $1, < $2"]) 243*39ee7a7aSBaptiste Daroussin AC_CACHE_CHECK([$_ax_check_text], 244*39ee7a7aSBaptiste Daroussin [ax_cv_pathless_LUA], 245*39ee7a7aSBaptiste Daroussin [ for ax_cv_pathless_LUA in _AX_LUA_INTERPRETER_LIST none; do 246*39ee7a7aSBaptiste Daroussin test "x$ax_cv_pathless_LUA" = 'xnone' && break 247*39ee7a7aSBaptiste Daroussin _AX_LUA_CHK_IS_INTRP([$ax_cv_pathless_LUA], [], [continue]) 248*39ee7a7aSBaptiste Daroussin _AX_LUA_CHK_VER([$ax_cv_pathless_LUA], [$1], [$2], [break]) 249*39ee7a7aSBaptiste Daroussin done 250*39ee7a7aSBaptiste Daroussin ]) 251*39ee7a7aSBaptiste Daroussin dnl Set $LUA to the absolute path of $ax_cv_pathless_LUA. 252*39ee7a7aSBaptiste Daroussin AS_IF([test "x$ax_cv_pathless_LUA" = 'xnone'], 253*39ee7a7aSBaptiste Daroussin [LUA=':'], 254*39ee7a7aSBaptiste Daroussin [AC_PATH_PROG([LUA], [$ax_cv_pathless_LUA])]) 255*39ee7a7aSBaptiste Daroussin ax_display_LUA=$ax_cv_pathless_LUA 256*39ee7a7aSBaptiste Daroussin ]) 257*39ee7a7aSBaptiste Daroussin ]) 258*39ee7a7aSBaptiste Daroussin 259*39ee7a7aSBaptiste Daroussin AS_IF([test "x$LUA" = 'x:'], 260*39ee7a7aSBaptiste Daroussin [ dnl Run any user-specified action, or abort. 261*39ee7a7aSBaptiste Daroussin m4_default([$4], [AC_MSG_ERROR([cannot find suitable Lua interpreter])]) 262*39ee7a7aSBaptiste Daroussin ], 263*39ee7a7aSBaptiste Daroussin [ dnl Query Lua for its version number. 264*39ee7a7aSBaptiste Daroussin AC_CACHE_CHECK([for $ax_display_LUA version], 265*39ee7a7aSBaptiste Daroussin [ax_cv_lua_version], 266*39ee7a7aSBaptiste Daroussin [ dnl Get the interpreter version in X.Y format. This should work for 267*39ee7a7aSBaptiste Daroussin dnl interpreters version 5.0 and beyond. 268*39ee7a7aSBaptiste Daroussin ax_cv_lua_version=[`$LUA -e ' 269*39ee7a7aSBaptiste Daroussin -- return a version number in X.Y format 270*39ee7a7aSBaptiste Daroussin local _, _, ver = string.find(_VERSION, "^Lua (%d+%.%d+)") 271*39ee7a7aSBaptiste Daroussin print(ver)'`] 272*39ee7a7aSBaptiste Daroussin ]) 273*39ee7a7aSBaptiste Daroussin AS_IF([test "x$ax_cv_lua_version" = 'x'], 274*39ee7a7aSBaptiste Daroussin [AC_MSG_ERROR([invalid Lua version number])]) 275*39ee7a7aSBaptiste Daroussin AC_SUBST([LUA_VERSION], [$ax_cv_lua_version]) 276*39ee7a7aSBaptiste Daroussin AC_SUBST([LUA_SHORT_VERSION], [`echo "$LUA_VERSION" | $SED 's|\.||'`]) 277*39ee7a7aSBaptiste Daroussin 278*39ee7a7aSBaptiste Daroussin dnl The following check is not supported: 279*39ee7a7aSBaptiste Daroussin dnl At times (like when building shared libraries) you may want to know 280*39ee7a7aSBaptiste Daroussin dnl which OS platform Lua thinks this is. 281*39ee7a7aSBaptiste Daroussin AC_CACHE_CHECK([for $ax_display_LUA platform], 282*39ee7a7aSBaptiste Daroussin [ax_cv_lua_platform], 283*39ee7a7aSBaptiste Daroussin [ax_cv_lua_platform=[`$LUA -e 'print("unknown")'`]]) 284*39ee7a7aSBaptiste Daroussin AC_SUBST([LUA_PLATFORM], [$ax_cv_lua_platform]) 285*39ee7a7aSBaptiste Daroussin 286*39ee7a7aSBaptiste Daroussin dnl Use the values of $prefix and $exec_prefix for the corresponding 287*39ee7a7aSBaptiste Daroussin dnl values of LUA_PREFIX and LUA_EXEC_PREFIX. These are made distinct 288*39ee7a7aSBaptiste Daroussin dnl variables so they can be overridden if need be. However, the general 289*39ee7a7aSBaptiste Daroussin dnl consensus is that you shouldn't need this ability. 290*39ee7a7aSBaptiste Daroussin AC_SUBST([LUA_PREFIX], ['${prefix}']) 291*39ee7a7aSBaptiste Daroussin AC_SUBST([LUA_EXEC_PREFIX], ['${exec_prefix}']) 292*39ee7a7aSBaptiste Daroussin 293*39ee7a7aSBaptiste Daroussin dnl Lua provides no way to query the script directory, and instead 294*39ee7a7aSBaptiste Daroussin dnl provides LUA_PATH. However, we should be able to make a safe educated 295*39ee7a7aSBaptiste Daroussin dnl guess. If the built-in search path contains a directory which is 296*39ee7a7aSBaptiste Daroussin dnl prefixed by $prefix, then we can store scripts there. The first 297*39ee7a7aSBaptiste Daroussin dnl matching path will be used. 298*39ee7a7aSBaptiste Daroussin AC_CACHE_CHECK([for $ax_display_LUA script directory], 299*39ee7a7aSBaptiste Daroussin [ax_cv_lua_luadir], 300*39ee7a7aSBaptiste Daroussin [ AS_IF([test "x$prefix" = 'xNONE'], 301*39ee7a7aSBaptiste Daroussin [ax_lua_prefix=$ac_default_prefix], 302*39ee7a7aSBaptiste Daroussin [ax_lua_prefix=$prefix]) 303*39ee7a7aSBaptiste Daroussin 304*39ee7a7aSBaptiste Daroussin dnl Initialize to the default path. 305*39ee7a7aSBaptiste Daroussin ax_cv_lua_luadir="$LUA_PREFIX/share/lua/$LUA_VERSION" 306*39ee7a7aSBaptiste Daroussin 307*39ee7a7aSBaptiste Daroussin dnl Try to find a path with the prefix. 308*39ee7a7aSBaptiste Daroussin _AX_LUA_FND_PRFX_PTH([$LUA], [$ax_lua_prefix], [script]) 309*39ee7a7aSBaptiste Daroussin AS_IF([test "x$ax_lua_prefixed_path" != 'x'], 310*39ee7a7aSBaptiste Daroussin [ dnl Fix the prefix. 311*39ee7a7aSBaptiste Daroussin _ax_strip_prefix=`echo "$ax_lua_prefix" | $SED 's|.|.|g'` 312*39ee7a7aSBaptiste Daroussin ax_cv_lua_luadir=`echo "$ax_lua_prefixed_path" | \ 313*39ee7a7aSBaptiste Daroussin $SED "s|^$_ax_strip_prefix|$LUA_PREFIX|"` 314*39ee7a7aSBaptiste Daroussin ]) 315*39ee7a7aSBaptiste Daroussin ]) 316*39ee7a7aSBaptiste Daroussin AC_SUBST([luadir], [$ax_cv_lua_luadir]) 317*39ee7a7aSBaptiste Daroussin AC_SUBST([pkgluadir], [\${luadir}/$PACKAGE]) 318*39ee7a7aSBaptiste Daroussin 319*39ee7a7aSBaptiste Daroussin dnl Lua provides no way to query the module directory, and instead 320*39ee7a7aSBaptiste Daroussin dnl provides LUA_PATH. However, we should be able to make a safe educated 321*39ee7a7aSBaptiste Daroussin dnl guess. If the built-in search path contains a directory which is 322*39ee7a7aSBaptiste Daroussin dnl prefixed by $exec_prefix, then we can store modules there. The first 323*39ee7a7aSBaptiste Daroussin dnl matching path will be used. 324*39ee7a7aSBaptiste Daroussin AC_CACHE_CHECK([for $ax_display_LUA module directory], 325*39ee7a7aSBaptiste Daroussin [ax_cv_lua_luaexecdir], 326*39ee7a7aSBaptiste Daroussin [ AS_IF([test "x$exec_prefix" = 'xNONE'], 327*39ee7a7aSBaptiste Daroussin [ax_lua_exec_prefix=$ax_lua_prefix], 328*39ee7a7aSBaptiste Daroussin [ax_lua_exec_prefix=$exec_prefix]) 329*39ee7a7aSBaptiste Daroussin 330*39ee7a7aSBaptiste Daroussin dnl Initialize to the default path. 331*39ee7a7aSBaptiste Daroussin ax_cv_lua_luaexecdir="$LUA_EXEC_PREFIX/lib/lua/$LUA_VERSION" 332*39ee7a7aSBaptiste Daroussin 333*39ee7a7aSBaptiste Daroussin dnl Try to find a path with the prefix. 334*39ee7a7aSBaptiste Daroussin _AX_LUA_FND_PRFX_PTH([$LUA], 335*39ee7a7aSBaptiste Daroussin [$ax_lua_exec_prefix], [module]) 336*39ee7a7aSBaptiste Daroussin AS_IF([test "x$ax_lua_prefixed_path" != 'x'], 337*39ee7a7aSBaptiste Daroussin [ dnl Fix the prefix. 338*39ee7a7aSBaptiste Daroussin _ax_strip_prefix=`echo "$ax_lua_exec_prefix" | $SED 's|.|.|g'` 339*39ee7a7aSBaptiste Daroussin ax_cv_lua_luaexecdir=`echo "$ax_lua_prefixed_path" | \ 340*39ee7a7aSBaptiste Daroussin $SED "s|^$_ax_strip_prefix|$LUA_EXEC_PREFIX|"` 341*39ee7a7aSBaptiste Daroussin ]) 342*39ee7a7aSBaptiste Daroussin ]) 343*39ee7a7aSBaptiste Daroussin AC_SUBST([luaexecdir], [$ax_cv_lua_luaexecdir]) 344*39ee7a7aSBaptiste Daroussin AC_SUBST([pkgluaexecdir], [\${luaexecdir}/$PACKAGE]) 345*39ee7a7aSBaptiste Daroussin 346*39ee7a7aSBaptiste Daroussin dnl Run any user specified action. 347*39ee7a7aSBaptiste Daroussin $3 348*39ee7a7aSBaptiste Daroussin ]) 349*39ee7a7aSBaptiste Daroussin]) 350*39ee7a7aSBaptiste Daroussin 351*39ee7a7aSBaptiste Daroussindnl AX_WITH_LUA is now the same thing as AX_PROG_LUA. 352*39ee7a7aSBaptiste DaroussinAC_DEFUN([AX_WITH_LUA], 353*39ee7a7aSBaptiste Daroussin[ 354*39ee7a7aSBaptiste Daroussin AC_MSG_WARN([[$0 is deprecated, please use AX_PROG_LUA instead]]) 355*39ee7a7aSBaptiste Daroussin AX_PROG_LUA 356*39ee7a7aSBaptiste Daroussin]) 357*39ee7a7aSBaptiste Daroussin 358*39ee7a7aSBaptiste Daroussin 359*39ee7a7aSBaptiste Daroussindnl ========================================================================= 360*39ee7a7aSBaptiste Daroussindnl _AX_LUA_CHK_IS_INTRP(PROG, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) 361*39ee7a7aSBaptiste Daroussindnl ========================================================================= 362*39ee7a7aSBaptiste DaroussinAC_DEFUN([_AX_LUA_CHK_IS_INTRP], 363*39ee7a7aSBaptiste Daroussin[ 364*39ee7a7aSBaptiste Daroussin dnl A minimal Lua factorial to prove this is an interpreter. This should work 365*39ee7a7aSBaptiste Daroussin dnl for Lua interpreters version 5.0 and beyond. 366*39ee7a7aSBaptiste Daroussin _ax_lua_factorial=[`$1 2>/dev/null -e ' 367*39ee7a7aSBaptiste Daroussin -- a simple factorial 368*39ee7a7aSBaptiste Daroussin function fact (n) 369*39ee7a7aSBaptiste Daroussin if n == 0 then 370*39ee7a7aSBaptiste Daroussin return 1 371*39ee7a7aSBaptiste Daroussin else 372*39ee7a7aSBaptiste Daroussin return n * fact(n-1) 373*39ee7a7aSBaptiste Daroussin end 374*39ee7a7aSBaptiste Daroussin end 375*39ee7a7aSBaptiste Daroussin print("fact(5) is " .. fact(5))'`] 376*39ee7a7aSBaptiste Daroussin AS_IF([test "$_ax_lua_factorial" = 'fact(5) is 120'], 377*39ee7a7aSBaptiste Daroussin [$2], [$3]) 378*39ee7a7aSBaptiste Daroussin]) 379*39ee7a7aSBaptiste Daroussin 380*39ee7a7aSBaptiste Daroussin 381*39ee7a7aSBaptiste Daroussindnl ========================================================================= 382*39ee7a7aSBaptiste Daroussindnl _AX_LUA_CHK_VER(PROG, MINIMUM-VERSION, [TOO-BIG-VERSION], 383*39ee7a7aSBaptiste Daroussindnl [ACTION-IF-TRUE], [ACTION-IF-FALSE]) 384*39ee7a7aSBaptiste Daroussindnl ========================================================================= 385*39ee7a7aSBaptiste DaroussinAC_DEFUN([_AX_LUA_CHK_VER], 386*39ee7a7aSBaptiste Daroussin[ 387*39ee7a7aSBaptiste Daroussin dnl Check that the Lua version is within the bounds. Only the major and minor 388*39ee7a7aSBaptiste Daroussin dnl version numbers are considered. This should work for Lua interpreters 389*39ee7a7aSBaptiste Daroussin dnl version 5.0 and beyond. 390*39ee7a7aSBaptiste Daroussin _ax_lua_good_version=[`$1 -e ' 391*39ee7a7aSBaptiste Daroussin -- a script to compare versions 392*39ee7a7aSBaptiste Daroussin function verstr2num(verstr) 393*39ee7a7aSBaptiste Daroussin local _, _, majorver, minorver = string.find(verstr, "^(%d+)%.(%d+)") 394*39ee7a7aSBaptiste Daroussin if majorver and minorver then 395*39ee7a7aSBaptiste Daroussin return tonumber(majorver) * 100 + tonumber(minorver) 396*39ee7a7aSBaptiste Daroussin end 397*39ee7a7aSBaptiste Daroussin end 398*39ee7a7aSBaptiste Daroussin local minver = verstr2num("$2") 399*39ee7a7aSBaptiste Daroussin local _, _, trimver = string.find(_VERSION, "^Lua (.*)") 400*39ee7a7aSBaptiste Daroussin local ver = verstr2num(trimver) 401*39ee7a7aSBaptiste Daroussin local maxver = verstr2num("$3") or 1e9 402*39ee7a7aSBaptiste Daroussin if minver <= ver and ver < maxver then 403*39ee7a7aSBaptiste Daroussin print("yes") 404*39ee7a7aSBaptiste Daroussin else 405*39ee7a7aSBaptiste Daroussin print("no") 406*39ee7a7aSBaptiste Daroussin end'`] 407*39ee7a7aSBaptiste Daroussin AS_IF([test "x$_ax_lua_good_version" = "xyes"], 408*39ee7a7aSBaptiste Daroussin [$4], [$5]) 409*39ee7a7aSBaptiste Daroussin]) 410*39ee7a7aSBaptiste Daroussin 411*39ee7a7aSBaptiste Daroussin 412*39ee7a7aSBaptiste Daroussindnl ========================================================================= 413*39ee7a7aSBaptiste Daroussindnl _AX_LUA_FND_PRFX_PTH(PROG, PREFIX, SCRIPT-OR-MODULE-DIR) 414*39ee7a7aSBaptiste Daroussindnl ========================================================================= 415*39ee7a7aSBaptiste DaroussinAC_DEFUN([_AX_LUA_FND_PRFX_PTH], 416*39ee7a7aSBaptiste Daroussin[ 417*39ee7a7aSBaptiste Daroussin dnl Get the script or module directory by querying the Lua interpreter, 418*39ee7a7aSBaptiste Daroussin dnl filtering on the given prefix, and selecting the shallowest path. If no 419*39ee7a7aSBaptiste Daroussin dnl path is found matching the prefix, the result will be an empty string. 420*39ee7a7aSBaptiste Daroussin dnl The third argument determines the type of search, it can be 'script' or 421*39ee7a7aSBaptiste Daroussin dnl 'module'. Supplying 'script' will perform the search with package.path 422*39ee7a7aSBaptiste Daroussin dnl and LUA_PATH, and supplying 'module' will search with package.cpath and 423*39ee7a7aSBaptiste Daroussin dnl LUA_CPATH. This is done for compatibility with Lua 5.0. 424*39ee7a7aSBaptiste Daroussin 425*39ee7a7aSBaptiste Daroussin ax_lua_prefixed_path=[`$1 -e ' 426*39ee7a7aSBaptiste Daroussin -- get the path based on search type 427*39ee7a7aSBaptiste Daroussin local searchtype = "$3" 428*39ee7a7aSBaptiste Daroussin local paths = "" 429*39ee7a7aSBaptiste Daroussin if searchtype == "script" then 430*39ee7a7aSBaptiste Daroussin paths = (package and package.path) or LUA_PATH 431*39ee7a7aSBaptiste Daroussin elseif searchtype == "module" then 432*39ee7a7aSBaptiste Daroussin paths = (package and package.cpath) or LUA_CPATH 433*39ee7a7aSBaptiste Daroussin end 434*39ee7a7aSBaptiste Daroussin -- search for the prefix 435*39ee7a7aSBaptiste Daroussin local prefix = "'$2'" 436*39ee7a7aSBaptiste Daroussin local minpath = "" 437*39ee7a7aSBaptiste Daroussin local mindepth = 1e9 438*39ee7a7aSBaptiste Daroussin string.gsub(paths, "(@<:@^;@:>@+)", 439*39ee7a7aSBaptiste Daroussin function (path) 440*39ee7a7aSBaptiste Daroussin path = string.gsub(path, "%?.*$", "") 441*39ee7a7aSBaptiste Daroussin path = string.gsub(path, "/@<:@^/@:>@*$", "") 442*39ee7a7aSBaptiste Daroussin if string.find(path, prefix) then 443*39ee7a7aSBaptiste Daroussin local depth = string.len(string.gsub(path, "@<:@^/@:>@", "")) 444*39ee7a7aSBaptiste Daroussin if depth < mindepth then 445*39ee7a7aSBaptiste Daroussin minpath = path 446*39ee7a7aSBaptiste Daroussin mindepth = depth 447*39ee7a7aSBaptiste Daroussin end 448*39ee7a7aSBaptiste Daroussin end 449*39ee7a7aSBaptiste Daroussin end) 450*39ee7a7aSBaptiste Daroussin print(minpath)'`] 451*39ee7a7aSBaptiste Daroussin]) 452*39ee7a7aSBaptiste Daroussin 453*39ee7a7aSBaptiste Daroussin 454*39ee7a7aSBaptiste Daroussindnl ========================================================================= 455*39ee7a7aSBaptiste Daroussindnl AX_LUA_HEADERS([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) 456*39ee7a7aSBaptiste Daroussindnl ========================================================================= 457*39ee7a7aSBaptiste DaroussinAC_DEFUN([AX_LUA_HEADERS], 458*39ee7a7aSBaptiste Daroussin[ 459*39ee7a7aSBaptiste Daroussin dnl Check for LUA_VERSION. 460*39ee7a7aSBaptiste Daroussin AC_MSG_CHECKING([if LUA_VERSION is defined]) 461*39ee7a7aSBaptiste Daroussin AS_IF([test "x$LUA_VERSION" != 'x'], 462*39ee7a7aSBaptiste Daroussin [AC_MSG_RESULT([yes])], 463*39ee7a7aSBaptiste Daroussin [ AC_MSG_RESULT([no]) 464*39ee7a7aSBaptiste Daroussin AC_MSG_ERROR([cannot check Lua headers without knowing LUA_VERSION]) 465*39ee7a7aSBaptiste Daroussin ]) 466*39ee7a7aSBaptiste Daroussin 467*39ee7a7aSBaptiste Daroussin dnl Make LUA_INCLUDE a precious variable. 468*39ee7a7aSBaptiste Daroussin AC_ARG_VAR([LUA_INCLUDE], [The Lua includes, e.g. -I/usr/include/lua5.1]) 469*39ee7a7aSBaptiste Daroussin 470*39ee7a7aSBaptiste Daroussin dnl Some default directories to search. 471*39ee7a7aSBaptiste Daroussin LUA_SHORT_VERSION=`echo "$LUA_VERSION" | $SED 's|\.||'` 472*39ee7a7aSBaptiste Daroussin m4_define_default([_AX_LUA_INCLUDE_LIST], 473*39ee7a7aSBaptiste Daroussin [ /usr/include/lua$LUA_VERSION \ 474*39ee7a7aSBaptiste Daroussin /usr/include/lua-$LUA_VERSION \ 475*39ee7a7aSBaptiste Daroussin /usr/include/lua/$LUA_VERSION \ 476*39ee7a7aSBaptiste Daroussin /usr/include/lua$LUA_SHORT_VERSION \ 477*39ee7a7aSBaptiste Daroussin /usr/local/include/lua$LUA_VERSION \ 478*39ee7a7aSBaptiste Daroussin /usr/local/include/lua-$LUA_VERSION \ 479*39ee7a7aSBaptiste Daroussin /usr/local/include/lua/$LUA_VERSION \ 480*39ee7a7aSBaptiste Daroussin /usr/local/include/lua$LUA_SHORT_VERSION \ 481*39ee7a7aSBaptiste Daroussin ]) 482*39ee7a7aSBaptiste Daroussin 483*39ee7a7aSBaptiste Daroussin dnl Try to find the headers. 484*39ee7a7aSBaptiste Daroussin _ax_lua_saved_cppflags=$CPPFLAGS 485*39ee7a7aSBaptiste Daroussin CPPFLAGS="$CPPFLAGS $LUA_INCLUDE" 486*39ee7a7aSBaptiste Daroussin AC_CHECK_HEADERS([lua.h lualib.h lauxlib.h luaconf.h]) 487*39ee7a7aSBaptiste Daroussin CPPFLAGS=$_ax_lua_saved_cppflags 488*39ee7a7aSBaptiste Daroussin 489*39ee7a7aSBaptiste Daroussin dnl Try some other directories if LUA_INCLUDE was not set. 490*39ee7a7aSBaptiste Daroussin AS_IF([test "x$LUA_INCLUDE" = 'x' && 491*39ee7a7aSBaptiste Daroussin test "x$ac_cv_header_lua_h" != 'xyes'], 492*39ee7a7aSBaptiste Daroussin [ dnl Try some common include paths. 493*39ee7a7aSBaptiste Daroussin for _ax_include_path in _AX_LUA_INCLUDE_LIST; do 494*39ee7a7aSBaptiste Daroussin test ! -d "$_ax_include_path" && continue 495*39ee7a7aSBaptiste Daroussin 496*39ee7a7aSBaptiste Daroussin AC_MSG_CHECKING([for Lua headers in]) 497*39ee7a7aSBaptiste Daroussin AC_MSG_RESULT([$_ax_include_path]) 498*39ee7a7aSBaptiste Daroussin 499*39ee7a7aSBaptiste Daroussin AS_UNSET([ac_cv_header_lua_h]) 500*39ee7a7aSBaptiste Daroussin AS_UNSET([ac_cv_header_lualib_h]) 501*39ee7a7aSBaptiste Daroussin AS_UNSET([ac_cv_header_lauxlib_h]) 502*39ee7a7aSBaptiste Daroussin AS_UNSET([ac_cv_header_luaconf_h]) 503*39ee7a7aSBaptiste Daroussin 504*39ee7a7aSBaptiste Daroussin _ax_lua_saved_cppflags=$CPPFLAGS 505*39ee7a7aSBaptiste Daroussin CPPFLAGS="$CPPFLAGS -I$_ax_include_path" 506*39ee7a7aSBaptiste Daroussin AC_CHECK_HEADERS([lua.h lualib.h lauxlib.h luaconf.h]) 507*39ee7a7aSBaptiste Daroussin CPPFLAGS=$_ax_lua_saved_cppflags 508*39ee7a7aSBaptiste Daroussin 509*39ee7a7aSBaptiste Daroussin AS_IF([test "x$ac_cv_header_lua_h" = 'xyes'], 510*39ee7a7aSBaptiste Daroussin [ LUA_INCLUDE="-I$_ax_include_path" 511*39ee7a7aSBaptiste Daroussin break 512*39ee7a7aSBaptiste Daroussin ]) 513*39ee7a7aSBaptiste Daroussin done 514*39ee7a7aSBaptiste Daroussin ]) 515*39ee7a7aSBaptiste Daroussin 516*39ee7a7aSBaptiste Daroussin AS_IF([test "x$ac_cv_header_lua_h" = 'xyes'], 517*39ee7a7aSBaptiste Daroussin [ dnl Make a program to print LUA_VERSION defined in the header. 518*39ee7a7aSBaptiste Daroussin dnl TODO It would be really nice if we could do this without compiling a 519*39ee7a7aSBaptiste Daroussin dnl program, then it would work when cross compiling. But I'm not sure how 520*39ee7a7aSBaptiste Daroussin dnl to do this reliably. For now, assume versions match when cross compiling. 521*39ee7a7aSBaptiste Daroussin 522*39ee7a7aSBaptiste Daroussin AS_IF([test "x$cross_compiling" != 'xyes'], 523*39ee7a7aSBaptiste Daroussin [ AC_CACHE_CHECK([for Lua header version], 524*39ee7a7aSBaptiste Daroussin [ax_cv_lua_header_version], 525*39ee7a7aSBaptiste Daroussin [ _ax_lua_saved_cppflags=$CPPFLAGS 526*39ee7a7aSBaptiste Daroussin CPPFLAGS="$CPPFLAGS $LUA_INCLUDE" 527*39ee7a7aSBaptiste Daroussin AC_RUN_IFELSE( 528*39ee7a7aSBaptiste Daroussin [ AC_LANG_SOURCE([[ 529*39ee7a7aSBaptiste Daroussin#include <lua.h> 530*39ee7a7aSBaptiste Daroussin#include <stdlib.h> 531*39ee7a7aSBaptiste Daroussin#include <stdio.h> 532*39ee7a7aSBaptiste Daroussinint main(int argc, char ** argv) 533*39ee7a7aSBaptiste Daroussin{ 534*39ee7a7aSBaptiste Daroussin if(argc > 1) printf("%s", LUA_VERSION); 535*39ee7a7aSBaptiste Daroussin exit(EXIT_SUCCESS); 536*39ee7a7aSBaptiste Daroussin} 537*39ee7a7aSBaptiste Daroussin]]) 538*39ee7a7aSBaptiste Daroussin ], 539*39ee7a7aSBaptiste Daroussin [ ax_cv_lua_header_version=`./conftest$EXEEXT p | \ 540*39ee7a7aSBaptiste Daroussin $SED -n "s|^Lua \(@<:@0-9@:>@\{1,\}\.@<:@0-9@:>@\{1,\}\).\{0,\}|\1|p"` 541*39ee7a7aSBaptiste Daroussin ], 542*39ee7a7aSBaptiste Daroussin [ax_cv_lua_header_version='unknown']) 543*39ee7a7aSBaptiste Daroussin CPPFLAGS=$_ax_lua_saved_cppflags 544*39ee7a7aSBaptiste Daroussin ]) 545*39ee7a7aSBaptiste Daroussin 546*39ee7a7aSBaptiste Daroussin dnl Compare this to the previously found LUA_VERSION. 547*39ee7a7aSBaptiste Daroussin AC_MSG_CHECKING([if Lua header version matches $LUA_VERSION]) 548*39ee7a7aSBaptiste Daroussin AS_IF([test "x$ax_cv_lua_header_version" = "x$LUA_VERSION"], 549*39ee7a7aSBaptiste Daroussin [ AC_MSG_RESULT([yes]) 550*39ee7a7aSBaptiste Daroussin ax_header_version_match='yes' 551*39ee7a7aSBaptiste Daroussin ], 552*39ee7a7aSBaptiste Daroussin [ AC_MSG_RESULT([no]) 553*39ee7a7aSBaptiste Daroussin ax_header_version_match='no' 554*39ee7a7aSBaptiste Daroussin ]) 555*39ee7a7aSBaptiste Daroussin ], 556*39ee7a7aSBaptiste Daroussin [ AC_MSG_WARN([cross compiling so assuming header version number matches]) 557*39ee7a7aSBaptiste Daroussin ax_header_version_match='yes' 558*39ee7a7aSBaptiste Daroussin ]) 559*39ee7a7aSBaptiste Daroussin ]) 560*39ee7a7aSBaptiste Daroussin 561*39ee7a7aSBaptiste Daroussin dnl Was LUA_INCLUDE specified? 562*39ee7a7aSBaptiste Daroussin AS_IF([test "x$ax_header_version_match" != 'xyes' && 563*39ee7a7aSBaptiste Daroussin test "x$LUA_INCLUDE" != 'x'], 564*39ee7a7aSBaptiste Daroussin [AC_MSG_ERROR([cannot find headers for specified LUA_INCLUDE])]) 565*39ee7a7aSBaptiste Daroussin 566*39ee7a7aSBaptiste Daroussin dnl Test the final result and run user code. 567*39ee7a7aSBaptiste Daroussin AS_IF([test "x$ax_header_version_match" = 'xyes'], [$1], 568*39ee7a7aSBaptiste Daroussin [m4_default([$2], [AC_MSG_ERROR([cannot find Lua includes])])]) 569*39ee7a7aSBaptiste Daroussin]) 570*39ee7a7aSBaptiste Daroussin 571*39ee7a7aSBaptiste Daroussindnl AX_LUA_HEADERS_VERSION no longer exists, use AX_LUA_HEADERS. 572*39ee7a7aSBaptiste DaroussinAC_DEFUN([AX_LUA_HEADERS_VERSION], 573*39ee7a7aSBaptiste Daroussin[ 574*39ee7a7aSBaptiste Daroussin AC_MSG_WARN([[$0 is deprecated, please use AX_LUA_HEADERS instead]]) 575*39ee7a7aSBaptiste Daroussin]) 576*39ee7a7aSBaptiste Daroussin 577*39ee7a7aSBaptiste Daroussin 578*39ee7a7aSBaptiste Daroussindnl ========================================================================= 579*39ee7a7aSBaptiste Daroussindnl AX_LUA_LIBS([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) 580*39ee7a7aSBaptiste Daroussindnl ========================================================================= 581*39ee7a7aSBaptiste DaroussinAC_DEFUN([AX_LUA_LIBS], 582*39ee7a7aSBaptiste Daroussin[ 583*39ee7a7aSBaptiste Daroussin dnl TODO Should this macro also check various -L flags? 584*39ee7a7aSBaptiste Daroussin 585*39ee7a7aSBaptiste Daroussin dnl Check for LUA_VERSION. 586*39ee7a7aSBaptiste Daroussin AC_MSG_CHECKING([if LUA_VERSION is defined]) 587*39ee7a7aSBaptiste Daroussin AS_IF([test "x$LUA_VERSION" != 'x'], 588*39ee7a7aSBaptiste Daroussin [AC_MSG_RESULT([yes])], 589*39ee7a7aSBaptiste Daroussin [ AC_MSG_RESULT([no]) 590*39ee7a7aSBaptiste Daroussin AC_MSG_ERROR([cannot check Lua libs without knowing LUA_VERSION]) 591*39ee7a7aSBaptiste Daroussin ]) 592*39ee7a7aSBaptiste Daroussin 593*39ee7a7aSBaptiste Daroussin dnl Make LUA_LIB a precious variable. 594*39ee7a7aSBaptiste Daroussin AC_ARG_VAR([LUA_LIB], [The Lua library, e.g. -llua5.1]) 595*39ee7a7aSBaptiste Daroussin 596*39ee7a7aSBaptiste Daroussin AS_IF([test "x$LUA_LIB" != 'x'], 597*39ee7a7aSBaptiste Daroussin [ dnl Check that LUA_LIBS works. 598*39ee7a7aSBaptiste Daroussin _ax_lua_saved_libs=$LIBS 599*39ee7a7aSBaptiste Daroussin LIBS="$LUA_LIB $LIBS" 600*39ee7a7aSBaptiste Daroussin AC_SEARCH_LIBS([lua_load], [], 601*39ee7a7aSBaptiste Daroussin [_ax_found_lua_libs='yes'], 602*39ee7a7aSBaptiste Daroussin [_ax_found_lua_libs='no']) 603*39ee7a7aSBaptiste Daroussin LIBS=$_ax_lua_saved_libs 604*39ee7a7aSBaptiste Daroussin 605*39ee7a7aSBaptiste Daroussin dnl Check the result. 606*39ee7a7aSBaptiste Daroussin AS_IF([test "x$_ax_found_lua_libs" != 'xyes'], 607*39ee7a7aSBaptiste Daroussin [AC_MSG_ERROR([cannot find libs for specified LUA_LIB])]) 608*39ee7a7aSBaptiste Daroussin ], 609*39ee7a7aSBaptiste Daroussin [ dnl First search for extra libs. 610*39ee7a7aSBaptiste Daroussin _ax_lua_extra_libs='' 611*39ee7a7aSBaptiste Daroussin 612*39ee7a7aSBaptiste Daroussin _ax_lua_saved_libs=$LIBS 613*39ee7a7aSBaptiste Daroussin LIBS="$LUA_LIB $LIBS" 614*39ee7a7aSBaptiste Daroussin AC_SEARCH_LIBS([exp], [m]) 615*39ee7a7aSBaptiste Daroussin AC_SEARCH_LIBS([dlopen], [dl]) 616*39ee7a7aSBaptiste Daroussin LIBS=$_ax_lua_saved_libs 617*39ee7a7aSBaptiste Daroussin 618*39ee7a7aSBaptiste Daroussin AS_IF([test "x$ac_cv_search_exp" != 'xno' && 619*39ee7a7aSBaptiste Daroussin test "x$ac_cv_search_exp" != 'xnone required'], 620*39ee7a7aSBaptiste Daroussin [_ax_lua_extra_libs="$_ax_lua_extra_libs $ac_cv_search_exp"]) 621*39ee7a7aSBaptiste Daroussin 622*39ee7a7aSBaptiste Daroussin AS_IF([test "x$ac_cv_search_dlopen" != 'xno' && 623*39ee7a7aSBaptiste Daroussin test "x$ac_cv_search_dlopen" != 'xnone required'], 624*39ee7a7aSBaptiste Daroussin [_ax_lua_extra_libs="$_ax_lua_extra_libs $ac_cv_search_dlopen"]) 625*39ee7a7aSBaptiste Daroussin 626*39ee7a7aSBaptiste Daroussin dnl Try to find the Lua libs. 627*39ee7a7aSBaptiste Daroussin _ax_lua_saved_libs=$LIBS 628*39ee7a7aSBaptiste Daroussin LIBS="$LUA_LIB $LIBS" 629*39ee7a7aSBaptiste Daroussin AC_SEARCH_LIBS([lua_load], 630*39ee7a7aSBaptiste Daroussin [ lua$LUA_VERSION \ 631*39ee7a7aSBaptiste Daroussin lua$LUA_SHORT_VERSION \ 632*39ee7a7aSBaptiste Daroussin lua-$LUA_VERSION \ 633*39ee7a7aSBaptiste Daroussin lua-$LUA_SHORT_VERSION \ 634*39ee7a7aSBaptiste Daroussin lua \ 635*39ee7a7aSBaptiste Daroussin ], 636*39ee7a7aSBaptiste Daroussin [_ax_found_lua_libs='yes'], 637*39ee7a7aSBaptiste Daroussin [_ax_found_lua_libs='no'], 638*39ee7a7aSBaptiste Daroussin [$_ax_lua_extra_libs]) 639*39ee7a7aSBaptiste Daroussin LIBS=$_ax_lua_saved_libs 640*39ee7a7aSBaptiste Daroussin 641*39ee7a7aSBaptiste Daroussin AS_IF([test "x$ac_cv_search_lua_load" != 'xno' && 642*39ee7a7aSBaptiste Daroussin test "x$ac_cv_search_lua_load" != 'xnone required'], 643*39ee7a7aSBaptiste Daroussin [LUA_LIB="$ac_cv_search_lua_load $_ax_lua_extra_libs"]) 644*39ee7a7aSBaptiste Daroussin ]) 645*39ee7a7aSBaptiste Daroussin 646*39ee7a7aSBaptiste Daroussin dnl Test the result and run user code. 647*39ee7a7aSBaptiste Daroussin AS_IF([test "x$_ax_found_lua_libs" = 'xyes'], [$1], 648*39ee7a7aSBaptiste Daroussin [m4_default([$2], [AC_MSG_ERROR([cannot find Lua libs])])]) 649*39ee7a7aSBaptiste Daroussin]) 650*39ee7a7aSBaptiste Daroussin 651*39ee7a7aSBaptiste Daroussin 652*39ee7a7aSBaptiste Daroussindnl ========================================================================= 653*39ee7a7aSBaptiste Daroussindnl AX_LUA_READLINE([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) 654*39ee7a7aSBaptiste Daroussindnl ========================================================================= 655*39ee7a7aSBaptiste DaroussinAC_DEFUN([AX_LUA_READLINE], 656*39ee7a7aSBaptiste Daroussin[ 657*39ee7a7aSBaptiste Daroussin AX_LIB_READLINE 658*39ee7a7aSBaptiste Daroussin AS_IF([test "x$ac_cv_header_readline_readline_h" != 'x' && 659*39ee7a7aSBaptiste Daroussin test "x$ac_cv_header_readline_history_h" != 'x'], 660*39ee7a7aSBaptiste Daroussin [ LUA_LIBS_CFLAGS="-DLUA_USE_READLINE $LUA_LIBS_CFLAGS" 661*39ee7a7aSBaptiste Daroussin $1 662*39ee7a7aSBaptiste Daroussin ], 663*39ee7a7aSBaptiste Daroussin [$2]) 664*39ee7a7aSBaptiste Daroussin]) 665