]> granicus.if.org Git - vim/commitdiff
updated for version 7.4a.045 v7.4a.045
authorBram Moolenaar <Bram@vim.org>
Sun, 28 Jul 2013 11:32:15 +0000 (13:32 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 28 Jul 2013 11:32:15 +0000 (13:32 +0200)
Problem:    Configure does not always find the right library for Lua.  Missing
            support for LuaJit.
Solution:   Improve the configure detection of Lua. (Hiroshi Shirosaki)

src/Makefile
src/auto/configure
src/configure.in
src/version.c

index 861068bf9841b079bbe66112e523c47fa2370314..db506878bcda358184b9dd64e6cb14de2c3d94b0 100644 (file)
@@ -381,8 +381,12 @@ CClink = $(CC)
 # LUA
 # Uncomment one of these when you want to include the Lua interface.
 # First one is for static linking, second one for dynamic loading.
+# Use --with-luajit if you want to use LuaJIT instead of Lua.
+# Set PATH environment variable to find lua or luajit executable.
 #CONF_OPT_LUA = --enable-luainterp
 #CONF_OPT_LUA = --enable-luainterp=dynamic
+#CONF_OPT_LUA = --enable-luainterp --with-luajit
+#CONF_OPT_LUA = --enable-luainterp=dynamic --with-luajit
 # Lua installation dir (when not set uses $LUA_PREFIX or defaults to /usr)
 #CONF_OPT_LUA_PREFIX = --with-lua-prefix=/usr/local
 
index a7ebc222ca1a6ba0cacfedcf5d5958ebc9c8d519..62aeab9fd56252e753ff62080adf1a1a4da3254b 100755 (executable)
@@ -674,6 +674,8 @@ LUA_LIBS
 LUA_PRO
 LUA_OBJ
 LUA_SRC
+vi_cv_path_plain_lua
+vi_cv_path_luajit
 vi_cv_path_lua
 compiledby
 dogvimdiff
@@ -758,6 +760,7 @@ enable_xsmp
 enable_xsmp_interact
 enable_luainterp
 with_lua_prefix
+with_luajit
 enable_mzschemeinterp
 with_plthome
 enable_perlinterp
@@ -1469,6 +1472,7 @@ Optional Packages:
   --with-features=TYPE    tiny, small, normal, big or huge (default: normal)
   --with-compiledby=NAME  name to show in :version message
   --with-lua-prefix=PFX   Prefix where Lua is installed.
+  --with-luajit           Link with LuaJIT instead of Lua.
   --with-plthome=PLTHOME   Use PLTHOME.
   --with-python-config-dir=PATH  Python's config directory
   --with-python3-config-dir=PATH  Python's config directory
@@ -4646,18 +4650,95 @@ $as_echo "not set, default to /usr" >&6; }
     fi
   fi
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-luajit" >&5
+$as_echo_n "checking --with-luajit... " >&6; }
+
+# Check whether --with-luajit was given.
+if test "${with_luajit+set}" = set; then :
+  withval=$with_luajit; vi_cv_with_luajit="$withval"
+else
+  vi_cv_with_luajit="no"
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_with_luajit" >&5
+$as_echo "$vi_cv_with_luajit" >&6; }
+
   LUA_INC=
   if test "X$vi_cv_path_lua_pfx" != "X"; then
-        # Extract the first word of "lua", so it can be a program name with args.
+    if test "x$vi_cv_with_luajit" != "xno"; then
+            # Extract the first word of "luajit", so it can be a program name with args.
+set dummy luajit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_vi_cv_path_luajit+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $vi_cv_path_luajit in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_vi_cv_path_luajit="$vi_cv_path_luajit" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_vi_cv_path_luajit="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+vi_cv_path_luajit=$ac_cv_path_vi_cv_path_luajit
+if test -n "$vi_cv_path_luajit"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_luajit" >&5
+$as_echo "$vi_cv_path_luajit" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+      if test "X$vi_cv_path_luajit" != "X"; then
+               { $as_echo "$as_me:${as_lineno-$LINENO}: checking LuaJIT version" >&5
+$as_echo_n "checking LuaJIT version... " >&6; }
+if test "${vi_cv_version_luajit+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+   vi_cv_version_luajit=`${vi_cv_path_luajit} -v | sed 's/LuaJIT \([0-9.]*\)\.[0-9] .*/\1/'`
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_luajit" >&5
+$as_echo "$vi_cv_version_luajit" >&6; }
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking Lua version of LuaJIT" >&5
+$as_echo_n "checking Lua version of LuaJIT... " >&6; }
+if test "${vi_cv_version_lua_luajit+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+   vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'`
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_lua_luajit" >&5
+$as_echo "$vi_cv_version_lua_luajit" >&6; }
+       vi_cv_path_lua="$vi_cv_path_luajit"
+       vi_cv_version_lua="$vi_cv_version_lua_luajit"
+      fi
+    else
+            # Extract the first word of "lua", so it can be a program name with args.
 set dummy lua; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_vi_cv_path_lua+set}" = set; then :
+if test "${ac_cv_path_vi_cv_path_plain_lua+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  case $vi_cv_path_lua in
+  case $vi_cv_path_plain_lua in
   [\\/]* | ?:[\\/]*)
-  ac_cv_path_vi_cv_path_lua="$vi_cv_path_lua" # Let the user override the test with a path.
+  ac_cv_path_vi_cv_path_plain_lua="$vi_cv_path_plain_lua" # Let the user override the test with a path.
   ;;
   *)
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -4667,7 +4748,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_vi_cv_path_lua="$as_dir/$ac_word$ac_exec_ext"
+    ac_cv_path_vi_cv_path_plain_lua="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -4678,91 +4759,179 @@ IFS=$as_save_IFS
   ;;
 esac
 fi
-vi_cv_path_lua=$ac_cv_path_vi_cv_path_lua
-if test -n "$vi_cv_path_lua"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_lua" >&5
-$as_echo "$vi_cv_path_lua" >&6; }
+vi_cv_path_plain_lua=$ac_cv_path_vi_cv_path_plain_lua
+if test -n "$vi_cv_path_plain_lua"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_plain_lua" >&5
+$as_echo "$vi_cv_path_plain_lua" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
-    if test "X$vi_cv_path_lua" != "X"; then
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking Lua version" >&5
+      if test "X$vi_cv_path_plain_lua" != "X"; then
+               { $as_echo "$as_me:${as_lineno-$LINENO}: checking Lua version" >&5
 $as_echo_n "checking Lua version... " >&6; }
-if test "${vi_cv_version_lua+set}" = set; then :
+if test "${vi_cv_version_plain_lua+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-   vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'`
+   vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'`
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_lua" >&5
-$as_echo "$vi_cv_version_lua" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_plain_lua" >&5
+$as_echo "$vi_cv_version_plain_lua" >&6; }
+      fi
+      vi_cv_path_lua="$vi_cv_path_plain_lua"
+      vi_cv_version_lua="$vi_cv_version_plain_lua"
     fi
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include" >&5
+    if test "x$vi_cv_with_luajit" != "xno" && test "X$vi_cv_version_luajit" != "X"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit" >&5
+$as_echo_n "checking if lua.h can be found in $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit... " >&6; }
+      if test -f $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit/lua.h; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       LUA_INC=/luajit-$vi_cv_version_luajit
+      fi
+    fi
+    if test "X$LUA_INC" = "X"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include" >&5
 $as_echo_n "checking if lua.h can be found in $vi_cv_path_lua_pfx/include... " >&6; }
-    if test -f $vi_cv_path_lua_pfx/include/lua.h; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+      if test -f $vi_cv_path_lua_pfx/include/lua.h; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+      else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua" >&5
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua" >&5
 $as_echo_n "checking if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua... " >&6; }
-      if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+       if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-        LUA_INC=/lua$vi_cv_version_lua
-      else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+         LUA_INC=/lua$vi_cv_version_lua
+       else
+         { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-        vi_cv_path_lua_pfx=
+         vi_cv_path_lua_pfx=
+       fi
       fi
     fi
   fi
 
   if test "X$vi_cv_path_lua_pfx" != "X"; then
-    if test "X$LUA_INC" != "X"; then
-            LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
+    if test "x$vi_cv_with_luajit" != "xno"; then
+      multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
+      if test "X$multiarch" != "X"; then
+       lib_multiarch="lib/${multiarch}"
+      else
+       lib_multiarch="lib"
+      fi
+      if test "X$vi_cv_version_lua" = "X"; then
+       LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit"
+      else
+       LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit-$vi_cv_version_lua"
+      fi
     else
-      LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
+      if test "X$LUA_INC" != "X"; then
+               LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
+      else
+       LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
+      fi
     fi
-    LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
-    LUA_SRC="if_lua.c"
-    LUA_OBJ="objects/if_lua.o"
-    LUA_PRO="if_lua.pro"
-    $as_echo "#define FEAT_LUA 1" >>confdefs.h
+    if test "$enable_luainterp" = "dynamic"; then
+      lua_ok="yes"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking if link with ${LUA_LIBS} is sane" >&5
+$as_echo_n "checking if link with ${LUA_LIBS} is sane... " >&6; }
+      libs_save=$LIBS
+      LIBS="$LIBS $LUA_LIBS"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }; lua_ok="yes"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }; lua_ok="no"; LUA_LIBS=""
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      LIBS=$libs_save
+    fi
+    if test "x$lua_ok" = "xyes"; then
+      LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
+      LUA_SRC="if_lua.c"
+      LUA_OBJ="objects/if_lua.o"
+      LUA_PRO="if_lua.pro"
+      $as_echo "#define FEAT_LUA 1" >>confdefs.h
+
+    fi
     if test "$enable_luainterp" = "dynamic"; then
+      if test "x$vi_cv_with_luajit" != "xno"; then
+       luajit="jit"
+      fi
       if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
        vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
       else
-       multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
-       if test "X$multiarch" != "X"; then
-         lib_multiarch="lib/${multiarch}"
+       if test "x$MACOSX" = "xyes"; then
+         ext="dylib"
+         indexes=""
+       else
+         ext="so"
+         indexes=".0 .1 .2 .3 .4 .5 .6 .7 .8 .9"
+         multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
+         if test "X$multiarch" != "X"; then
+           lib_multiarch="lib/${multiarch}"
+         fi
        fi
-                       for subdir in "${lib_multiarch}" lib64 lib; do
+                       { $as_echo "$as_me:${as_lineno-$LINENO}: checking if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx" >&5
+$as_echo_n "checking if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx... " >&6; }
+       for subdir in "${lib_multiarch}" lib64 lib; do
          if test -z "$subdir"; then
            continue
          fi
-         for sover in "${vi_cv_version_lua}.so" "-${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
-           for i in .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 ""; do
-             if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${sover}$i"; then
+         for sover in "${vi_cv_version_lua}.${ext}" "-${vi_cv_version_lua}.${ext}" \
+           ".${vi_cv_version_lua}.${ext}" ".${ext}.${vi_cv_version_lua}"; do
+           for i in $indexes ""; do
+             if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${luajit}${sover}$i"; then
                sover2="$i"
                break 3
              fi
            done
          done
+         sover=""
        done
-       vi_cv_dll_name_lua="liblua${sover}$sover2"
+       if test "X$sover" = "X"; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+         lua_ok="no"
+         vi_cv_dll_name_lua="liblua${luajit}.${ext}"
+       else
+         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+         lua_ok="yes"
+         vi_cv_dll_name_lua="liblua${luajit}${sover}$sover2"
+       fi
       fi
       $as_echo "#define DYNAMIC_LUA 1" >>confdefs.h
 
       LUA_LIBS=""
       LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
     fi
+    if test "X$LUA_CFLAGS$LUA_LIBS" != "X" && \
+       test "x$MACOSX" = "xyes" && test "x$vi_cv_with_luajit" != "xno" && \
+       test "`(uname -m) 2>/dev/null`" = "x86_64"; then
+            LUA_LIBS="-pagezero_size 10000 -image_base 100000000 $LUA_LIBS"
+    fi
   fi
-  if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
+  if test "$fail_if_missing" = "yes" -a "$lua_ok" != "yes"; then
     as_fn_error "could not configure lua" "$LINENO" 5
   fi
 
index 89d8895adc2d0d6beee4b0f1b912cc2a61e88c3c..c20b198da8631ec0ca62d2e9ff78fa75c4a782e2 100644 (file)
@@ -453,74 +453,160 @@ if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
     fi
   fi
 
+  AC_MSG_CHECKING(--with-luajit)
+  AC_ARG_WITH(luajit,
+       [  --with-luajit           Link with LuaJIT instead of Lua.],
+       [vi_cv_with_luajit="$withval"],
+       [vi_cv_with_luajit="no"])
+  AC_MSG_RESULT($vi_cv_with_luajit)
+
   LUA_INC=
   if test "X$vi_cv_path_lua_pfx" != "X"; then
-    dnl -- try to find Lua executable
-    AC_PATH_PROG(vi_cv_path_lua, lua)
-    if test "X$vi_cv_path_lua" != "X"; then
-      dnl -- find Lua version
-      AC_CACHE_CHECK(Lua version, vi_cv_version_lua,
-      [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
-    fi
-    AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
-    if test -f $vi_cv_path_lua_pfx/include/lua.h; then
-      AC_MSG_RESULT(yes)
+    if test "x$vi_cv_with_luajit" != "xno"; then
+      dnl -- try to find LuaJIT executable
+      AC_PATH_PROG(vi_cv_path_luajit, luajit)
+      if test "X$vi_cv_path_luajit" != "X"; then
+       dnl -- find LuaJIT version
+       AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
+       [ vi_cv_version_luajit=`${vi_cv_path_luajit} -v | sed 's/LuaJIT \([[0-9.]]*\)\.[[0-9]] .*/\1/'` ])
+       AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
+       [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
+       vi_cv_path_lua="$vi_cv_path_luajit"
+       vi_cv_version_lua="$vi_cv_version_lua_luajit"
+      fi
     else
-      AC_MSG_RESULT(no)
-      AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
-      if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
-        AC_MSG_RESULT(yes)
-        LUA_INC=/lua$vi_cv_version_lua
+      dnl -- try to find Lua executable
+      AC_PATH_PROG(vi_cv_path_plain_lua, lua)
+      if test "X$vi_cv_path_plain_lua" != "X"; then
+       dnl -- find Lua version
+       AC_CACHE_CHECK(Lua version, vi_cv_version_plain_lua,
+       [ vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
+      fi
+      vi_cv_path_lua="$vi_cv_path_plain_lua"
+      vi_cv_version_lua="$vi_cv_version_plain_lua"
+    fi
+    if test "x$vi_cv_with_luajit" != "xno" && test "X$vi_cv_version_luajit" != "X"; then
+      AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit)
+      if test -f $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit/lua.h; then
+       AC_MSG_RESULT(yes)
+       LUA_INC=/luajit-$vi_cv_version_luajit
+      fi
+    fi
+    if test "X$LUA_INC" = "X"; then
+      AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
+      if test -f $vi_cv_path_lua_pfx/include/lua.h; then
+       AC_MSG_RESULT(yes)
       else
-        AC_MSG_RESULT(no)
-        vi_cv_path_lua_pfx=
+       AC_MSG_RESULT(no)
+       AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
+       if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
+         AC_MSG_RESULT(yes)
+         LUA_INC=/lua$vi_cv_version_lua
+       else
+         AC_MSG_RESULT(no)
+         vi_cv_path_lua_pfx=
+       fi
       fi
     fi
   fi
 
   if test "X$vi_cv_path_lua_pfx" != "X"; then
-    if test "X$LUA_INC" != "X"; then
-      dnl Test alternate location using version
-      LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
+    if test "x$vi_cv_with_luajit" != "xno"; then
+      multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
+      if test "X$multiarch" != "X"; then
+       lib_multiarch="lib/${multiarch}"
+      else
+       lib_multiarch="lib"
+      fi
+      if test "X$vi_cv_version_lua" = "X"; then
+       LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit"
+      else
+       LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit-$vi_cv_version_lua"
+      fi
     else
-      LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
+      if test "X$LUA_INC" != "X"; then
+       dnl Test alternate location using version
+       LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
+      else
+       LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
+      fi
+    fi
+    if test "$enable_luainterp" = "dynamic"; then
+      lua_ok="yes"
+    else
+      AC_MSG_CHECKING([if link with ${LUA_LIBS} is sane])
+      libs_save=$LIBS
+      LIBS="$LIBS $LUA_LIBS"
+      AC_TRY_LINK(,[ ],
+       AC_MSG_RESULT(yes); lua_ok="yes",
+       AC_MSG_RESULT(no); lua_ok="no"; LUA_LIBS="")
+      LIBS=$libs_save
+    fi
+    if test "x$lua_ok" = "xyes"; then
+      LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
+      LUA_SRC="if_lua.c"
+      LUA_OBJ="objects/if_lua.o"
+      LUA_PRO="if_lua.pro"
+      AC_DEFINE(FEAT_LUA)
     fi
-    LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
-    LUA_SRC="if_lua.c"
-    LUA_OBJ="objects/if_lua.o"
-    LUA_PRO="if_lua.pro"
-    AC_DEFINE(FEAT_LUA)
     if test "$enable_luainterp" = "dynamic"; then
+      if test "x$vi_cv_with_luajit" != "xno"; then
+       luajit="jit"
+      fi
       if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
        vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
       else
-       multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
-       if test "X$multiarch" != "X"; then
-         lib_multiarch="lib/${multiarch}"
+       if test "x$MACOSX" = "xyes"; then
+         ext="dylib"
+         indexes=""
+       else
+         ext="so"
+         indexes=".0 .1 .2 .3 .4 .5 .6 .7 .8 .9"
+         multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
+         if test "X$multiarch" != "X"; then
+           lib_multiarch="lib/${multiarch}"
+         fi
        fi
        dnl Determine the sover for the current version, but fallback to
        dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
+       AC_MSG_CHECKING(if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx)
        for subdir in "${lib_multiarch}" lib64 lib; do
          if test -z "$subdir"; then
            continue
          fi
-         for sover in "${vi_cv_version_lua}.so" "-${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
-           for i in .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 ""; do
-             if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${sover}$i"; then
+         for sover in "${vi_cv_version_lua}.${ext}" "-${vi_cv_version_lua}.${ext}" \
+           ".${vi_cv_version_lua}.${ext}" ".${ext}.${vi_cv_version_lua}"; do
+           for i in $indexes ""; do
+             if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${luajit}${sover}$i"; then
                sover2="$i"
                break 3
              fi
            done
          done
+         sover=""
        done
-       vi_cv_dll_name_lua="liblua${sover}$sover2"
+       if test "X$sover" = "X"; then
+         AC_MSG_RESULT(no)
+         lua_ok="no"
+         vi_cv_dll_name_lua="liblua${luajit}.${ext}"
+       else
+         AC_MSG_RESULT(yes)
+         lua_ok="yes"
+         vi_cv_dll_name_lua="liblua${luajit}${sover}$sover2"
+       fi
       fi
       AC_DEFINE(DYNAMIC_LUA)
       LUA_LIBS=""
       LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
     fi
+    if test "X$LUA_CFLAGS$LUA_LIBS" != "X" && \
+       test "x$MACOSX" = "xyes" && test "x$vi_cv_with_luajit" != "xno" && \
+       test "`(uname -m) 2>/dev/null`" = "x86_64"; then
+      dnl OSX/x64 requires these flags. See http://luajit.org/install.html
+      LUA_LIBS="-pagezero_size 10000 -image_base 100000000 $LUA_LIBS"
+    fi
   fi
-  if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
+  if test "$fail_if_missing" = "yes" -a "$lua_ok" != "yes"; then
     AC_MSG_ERROR([could not configure lua])
   fi
   AC_SUBST(LUA_SRC)
index 43ad9dd6f146b1a0a172cf1ca7254e05a8bd663c..da09f6e2bb8d6d92dda4e71ab529960580235c2c 100644 (file)
@@ -727,6 +727,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    45,
 /**/
     44,
 /**/