fix from alex
[rrdtool.git] / configure.ac
index a2ece2b..f08b4e9 100644 (file)
@@ -367,7 +367,7 @@ CONFIGURE_PART(Resolve Portability Issues)
 dnl Do we need getopt_long
 
 build_getopt=no
 dnl Do we need getopt_long
 
 build_getopt=no
-RRD_GETOPT_LONG="#"
+RRD_GETOPT_LONG="LIBC_HAS_GETOPT_LONG"
 AC_CHECK_FUNC(getopt_long,[],[
 RRD_GETOPT_LONG="getopt_long"
 build_getopt=yes
 AC_CHECK_FUNC(getopt_long,[],[
 RRD_GETOPT_LONG="getopt_long"
 build_getopt=yes
@@ -651,19 +651,19 @@ LUA_EOF
     AC_MSG_RESULT([no, version found is $LUA_MAJOR.$LUA_MINOR])
   else
     AC_MSG_RESULT([$LUA_MAJOR.$LUA_MINOR found])
     AC_MSG_RESULT([no, version found is $LUA_MAJOR.$LUA_MINOR])
   else
     AC_MSG_RESULT([$LUA_MAJOR.$LUA_MINOR found])
-    vdot=$LUA_MAJOR.$LUA_MINOR
-    vndot=$LUA_MAJOR$LUA_MINOR
+    lua_vdot=$LUA_MAJOR.$LUA_MINOR
+    lua_vndot=$LUA_MAJOR$LUA_MINOR
     lua_version=$LUA_MAJOR.$LUA_MINOR.$LUA_POINT
     lua_version=$LUA_MAJOR.$LUA_MINOR.$LUA_POINT
-    AC_CHECK_HEADERS(lua$vndot/lua.h,
-      [AC_CHECK_HEADERS(lua$vndot/lualib.h,
-        [AC_CHECK_HEADER(lua$vndot/lauxlib.h,
-          [lua_headerdir=lua$vndot],
+    AC_CHECK_HEADERS(lua$lua_vndot/lua.h,
+      [AC_CHECK_HEADERS(lua$lua_vndot/lualib.h,
+        [AC_CHECK_HEADER(lua$lua_vndot/lauxlib.h,
+          [lua_headerdir=lua$lua_vndot],
           [])],
         [])],
           [])],
         [])],
-      [AC_CHECK_HEADERS(lua$vdot/lua.h,
-        [AC_CHECK_HEADERS(lua$vdot/lualib.h,
-          [AC_CHECK_HEADER(lua$vdot/lauxlib.h,
-            [lua_headerdir=lua$vdot],
+      [AC_CHECK_HEADERS(lua$lua_vdot/lua.h,
+        [AC_CHECK_HEADERS(lua$lua_vdot/lualib.h,
+          [AC_CHECK_HEADER(lua$lua_vdot/lauxlib.h,
+            [lua_headerdir=lua$lua_vdot],
             [])],
           [])],
         [AC_CHECK_HEADERS(lua.h,
             [])],
           [])],
         [AC_CHECK_HEADERS(lua.h,
@@ -682,23 +682,20 @@ LUA_EOF
 
     if test "$COMP_LUA" != "lua"; then
       enable_lua=no
 
     if test "$COMP_LUA" != "lua"; then
       enable_lua=no
-      AC_MSG_WARN([Lua $vdot found but not lua.h, lualib.h and lauxlib.h! Please install the -dev packages for Lua $vdot])
+      AC_MSG_WARN([Lua $lua_vdot found but not lua.h, lualib.h and lauxlib.h! Please install the -dev packages for Lua $lua_vdot])
     else
       # OK, headers found, let's check the libraries (LIBS is not used)
       LIBS=
       lua_havelib=no
       LUA_HAVE_COMPAT51=DONT_HAVE_COMPAT51
     else
       # OK, headers found, let's check the libraries (LIBS is not used)
       LIBS=
       lua_havelib=no
       LUA_HAVE_COMPAT51=DONT_HAVE_COMPAT51
-      AC_SEARCH_LIBS(lua_call, lua$vdot lua$vndot lua,
-        [AC_SEARCH_LIBS(luaL_register, lua$vdot lua$vndot lua,
-          [lua_havelib=LUA$vndot],
-          [AC_SEARCH_LIBS(luaL_module, lualib$vndot lualib$vdot lualib,
-            [lua_havelib=$vndot ;
-             AC_CHECK_HEADERS(lua$vndot/compat-5.1.h,
-               [LUA_HAVE_COMPAT51=HAVE_COMPAT51], [],
-                 [[#include <lua$vndot/lua.h>
-                   #include <lua$vndot/lauxlib.h> ]])],
-            [AC_SEARCH_LIBS(luaL_openlib, lualib$vdot lualib$vndot lualib,
-              [lua_havelib=$vndot],
+      AC_SEARCH_LIBS(lua_call, lua$lua_vdot lua$lua_vndot lua,
+        [AC_SEARCH_LIBS(luaL_register, lua$lua_vdot lua$lua_vndot lua,
+          [lua_havelib=LUA$lua_vndot],
+          [AC_SEARCH_LIBS(luaL_module, lualib$lua_vndot lualib$lua_vdot lualib,
+            [lua_havelib=$lua_vndot; $LUA -l compat-5.1 2>/dev/null;
+             test "$?" = "0" && LUA_HAVE_COMPAT51=HAVE_COMPAT51],
+            [AC_SEARCH_LIBS(luaL_openlib, lualib$lua_vdot lualib$lua_vndot lualib,
+              [lua_havelib=$lua_vndot],
               [COMP_LUA=], [-lm])], [-lm])], [-lm])],
         [COMP_LUA=], [-lm])
       lua_libs=$LIBS
               [COMP_LUA=], [-lm])], [-lm])], [-lm])],
         [COMP_LUA=], [-lm])
       lua_libs=$LIBS
@@ -706,69 +703,70 @@ LUA_EOF
 
       # Options to pass when configuring Lua module
       if test  "$lua_havelib" != "no"; then
 
       # Options to pass when configuring Lua module
       if test  "$lua_havelib" != "no"; then
-        # OK, headers and libs found
-        # try to set lua include, lib and C installation dirs with pkg-config
+        # OK, headers and libs found. Try to set lua flags
+        # and modules installation dirs with pkg-config
         if test "$PKGCONFIG" != "no"; then
         if test "$PKGCONFIG" != "no"; then
-          if test "$vndot" = "50"; then
+          if test "$lua_vndot" = "50"; then
             lua_pkg_prefix=lualib
           else
             lua_pkg_prefix=lua
           fi
           # try with dot, without dot and finally without version
             lua_pkg_prefix=lualib
           else
             lua_pkg_prefix=lua
           fi
           # try with dot, without dot and finally without version
-          for f in $lua_pkg_prefix$vdot $lua_pkg_prefix$vndot $lua_pkg_prefix; do
-            lua_cflags=$($PKGCONFIG --cflags $f 2>/dev/null)
-            if test "$lua_cflags" != ""; then
-              # OK, found CFLAGS. Get Lua LFLAGS and lib install dir
-              LUA_CFLAGS=$lua_cflags
-              LUA_LFLAGS=$($PKGCONFIG --libs $f)
-              LUA_INSTALL_CMOD=$($PKGCONFIG --variable=INSTALL_CMOD $f)
-              break
+          for f in $lua_pkg_prefix$lua_vdot $lua_pkg_prefix$lua_vndot $lua_pkg_prefix; do
+            lua_exec_prefix=`$PKGCONFIG --variable=prefix $f 2>/dev/null`
+            # same binaries?
+            if test "$lua_exec_prefix/bin/lua" = "$LUA"; then 
+                # OK, found CFLAGS. Get Lua LFLAGS and modules install dir
+                LUA_CFLAGS=`$PKGCONFIG --cflags $f 2>/dev/null`
+                LUA_LFLAGS=`$PKGCONFIG --libs $f 2>/dev/null`
+                LUA_INSTALL_CMOD=`$PKGCONFIG --variable=INSTALL_CMOD $f 2>/dev/null`
+                LUA_INSTALL_LMOD=`$PKGCONFIG --variable=INSTALL_LMOD $f 2>/dev/null`
+                break
             fi
           done
         fi
 
             fi
           done
         fi
 
-        # if not set with pkg-config, use default values in src package
-        if test "$LUA_CFLAGS" = ""; then
-          AC_MSG_WARN(Setting Lua include and lib dirs to defaults in src package)
-          LUA_CFLAGS="-I/usr/local/include -I/usr/local/include/lua -I/usr/local/include/lua/$vdot"
-          LUA_LFLAGS="-L/usr/local/lib -L/usr/local/lib/lua -L/usr/local/lib/lua/$vdot $lua_libs"
-          LUA_INSTALL_CMOD="/usr/local/lib/lua/$vdot"
+        LUA_RRD_LIBDIR="$langpref/lib/lua/$lua_vdot"
+        # if lua 5.0 can't find compat-5.1, force installation of
+        # compat-5.1.lua together with RRDtool.
+        if test "$lua_vdot" = "5.0" -a "$LUA_HAVE_COMPAT51" != "HAVE_COMPAT51"; then
+          lua_need_compat51=1 
+          LUA_INSTALL_LMOD="$LUA_RRD_LIBDIR"
         fi
         fi
-        LUA_SRCS=rrdlua.c
-        LUA_OBJS=rrdlua.o
-        # If Lua 5.0, we need compat-5.1. Add ours unless already
-        # integrated as in Debian/Ubuntu 5.0 -dev packages.
-        if test "$vdot" = "5.0" -a "$LUA_HAVE_COMPAT51" != "HAVE_COMPAT51"; then
-          LUA_SRCS="rrdlua.c compat-5.1r5/compat-5.1.c"
-          LUA_OBJS="rrdlua.o compat-5.1r5/compat-5.1.o"
+
+        # if not set with pkg-config, use default values in src packages compat-5.1, lua 5.1
+        if test "$LUA_CFLAGS" = ""; then
+          AC_MSG_WARN(Setting Lua include and lib flags to defaults in compat-5.1 and lua 5.1 sources)
+          LUA_CFLAGS="-I/usr/local/include -I/usr/local/include/lua -I/usr/local/include/lua/$lua_vdot"
+          LUA_LFLAGS="-L/usr/local/lib -L/usr/local/lib/lua -L/usr/local/lib/lua/$lua_vdot $lua_libs"
+          LUA_INSTALL_CMOD="/usr/local/lib/lua/$lua_vdot"
         fi
 
         dnl pass additional lua options
         fi
 
         dnl pass additional lua options
-        # if lua-site-install is not set, overwrite LUA_INSTALL_CMOD already
-        # found and install together with RRDtool, under $langpref.
-        LUA_RRD_LANGPREF="$langpref/lib/lua"
+        dnl if lua-site-install is not set, overwrite LUA_INSTALL_CMOD already
+        dnl found and install together with RRDtool, under $langpref.
         AC_ARG_ENABLE(lua-site-install,
         AC_ARG_ENABLE(lua-site-install,
-        [  --enable-lua-site-install   by default the rrdtool lua modules are installed
-                                  together with rrdtool in $prefix/lib/lua. You have to
-                                  add $prefix/lib/lua/$lua_version/?.so to package.cpath
-                                  for lua to find the rrd.so file. When you set this
-                                  option the Lua module will get installed wherever
-                                  your Lua setup thinks it is best.],
+        [  --enable-lua-site-install   by default the lua module is installed
+                          together with rrdtool in $prefix/lib/lua/$lua_version.
+                          You have to add $prefix/lib/lua/$lua_version/?.so to
+                          package.cpath for lua to find 'rrd.so'. For lua 5.0
+                          you may also need to change LUA_PATH to the same dir,
+                          to require 'compat-5.1'. When you set this option the
+                          lua modules will get installed wherever your Lua
+                          setup thinks it is best.
+                          WARNING: if you set this option, system lua modules
+                          compat-5.1.lua and rrd.so, if any, may be overwritten.],
         [],
         [],
-        [LUA_INSTALL_CMOD="$LUA_RRD_LANGPREF/$vdot"])
+        [LUA_INSTALL_CMOD="$LUA_RRD_LIBDIR"; LUA_INSTALL_LMOD="$LUA_RRD_LIBDIR"])
 
 
+        LUA_DEFINES="-DLUA$lua_vndot -D$LUA_HAVE_COMPAT51"
         AC_SUBST(LUA)
         AC_SUBST(COMP_LUA)
         AC_SUBST(LUA)
         AC_SUBST(COMP_LUA)
-        AC_SUBST(LUA_MAJOR)
-        AC_SUBST(LUA_MINOR)
-        AC_SUBST(LUA_POINT)
-        AC_SUBST(LUA_RRD_LANGPREF)
         AC_SUBST(LUA_INSTALL_CMOD)
         AC_SUBST(LUA_INSTALL_CMOD)
-        AC_SUBST(LUA_HAVE_COMPAT51)
+        AC_SUBST(LUA_INSTALL_LMOD)
         AC_SUBST(LUA_CFLAGS)
         AC_SUBST(LUA_LFLAGS)
         AC_SUBST(LUA_CFLAGS)
         AC_SUBST(LUA_LFLAGS)
-        AC_SUBST(LUA_SRCS)
-        AC_SUBST(LUA_OBJS)
+       AC_SUBST(LUA_DEFINES)
       else
         enable_lua=no
         AC_MSG_RESULT([Lua headers found but not the libraries! Please reinstall the dev packages for Lua $LUA_MAJOR.$LUA_MINOR])
       else
         enable_lua=no
         AC_MSG_RESULT([Lua headers found but not the libraries! Please reinstall the dev packages for Lua $LUA_MAJOR.$LUA_MINOR])
@@ -776,7 +774,14 @@ LUA_EOF
     fi
   fi
 fi
     fi
   fi
 fi
-
+dnl If Lua 5.0, we need compat-5.1. Add ours unless already
+dnl integrated as in Debian/Ubuntu 5.0 -dev packages.
+AM_CONDITIONAL(LUA_NEED_OUR_COMPAT51,
+      [test "$lua_vdot" = "5.0" -a "$LUA_HAVE_COMPAT51" != "HAVE_COMPAT51"])
+AM_CONDITIONAL(LUA_SITE_CINSTALL, [test "$LUA_INSTALL_CMOD" != "$LUA_RRD_LIBDIR"])
+AM_CONDITIONAL(LUA_SITE_LINSTALL, [test "$LUA_INSTALL_LMOD" != "$LUA_RRD_LIBDIR"])
+AM_CONDITIONAL(LUA50, [test "$lua_vndot" = "50"])
+AM_CONDITIONAL(BUILD_LUA, [test "$enable_lua" = "yes"])
 
 enable_tcl_site=no
 
 
 enable_tcl_site=no
 
@@ -868,13 +873,13 @@ AC_CONFIG_FILES([examples/Makefile])
 AC_CONFIG_FILES([doc/Makefile])
 AC_CONFIG_FILES([po/Makefile.in])
 AC_CONFIG_FILES([src/Makefile])
 AC_CONFIG_FILES([doc/Makefile])
 AC_CONFIG_FILES([po/Makefile.in])
 AC_CONFIG_FILES([src/Makefile])
-AC_CONFIG_FILES([src/librrd.sym])
+AC_CONFIG_FILES([src/librrd.sym.in])
 AC_CONFIG_FILES([src/librrd.pc])
 AC_CONFIG_FILES([bindings/Makefile])
 AC_CONFIG_FILES([bindings/tcl/Makefile])
 AC_CONFIG_FILES([bindings/tcl/ifOctets.tcl])
 AC_CONFIG_FILES([Makefile])          
 AC_CONFIG_FILES([src/librrd.pc])
 AC_CONFIG_FILES([bindings/Makefile])
 AC_CONFIG_FILES([bindings/tcl/Makefile])
 AC_CONFIG_FILES([bindings/tcl/ifOctets.tcl])
 AC_CONFIG_FILES([Makefile])          
-AC_CONFIG_FILES([bindings/lua/Makefile.lua])
+AC_CONFIG_FILES([bindings/lua/Makefile])
 
 AC_CONFIG_COMMANDS([default],[[ chmod +x examples/*.pl]],[[]])
 AC_OUTPUT
 
 AC_CONFIG_COMMANDS([default],[[ chmod +x examples/*.pl]],[[]])
 AC_OUTPUT
@@ -908,9 +913,14 @@ echo "          Ruby Modules: $COMP_RUBY"
 echo "           Ruby Binary: $RUBY"
 echo "          Ruby Options: $RUBY_MAKE_OPTIONS"
 echo "    Build Lua Bindings: $enable_lua"
 echo "           Ruby Binary: $RUBY"
 echo "          Ruby Options: $RUBY_MAKE_OPTIONS"
 echo "    Build Lua Bindings: $enable_lua"
+if test "$enable_lua" = "yes"; then
 echo "            Lua Binary: $LUA"
 echo "           Lua Version: $lua_version"
 echo "            Lua Binary: $LUA"
 echo "           Lua Version: $lua_version"
-echo "        Lua module dir: $LUA_INSTALL_CMOD"
+echo "     Lua C-modules dir: $LUA_INSTALL_CMOD"
+if test "$lua_need_compat51" = "1"; then
+echo "   Lua Lua-modules dir: $LUA_INSTALL_LMOD"
+fi
+fi
 echo "    Build Tcl Bindings: $enable_tcl"
 echo " Build Python Bindings: $enable_python"
 echo "          Build rrdcgi: $enable_rrdcgi"
 echo "    Build Tcl Bindings: $enable_tcl"
 echo " Build Python Bindings: $enable_python"
 echo "          Build rrdcgi: $enable_rrdcgi"