]> git.ipfire.org Git - thirdparty/rrdtool-1.x.git/commitdiff
fix various problems with the tcl bindings -- Peter Breitenlohner
authorTobias Oetiker <tobi@oetiker.ch>
Sat, 11 Jun 2005 05:26:13 +0000 (05:26 +0000)
committerTobias Oetiker <tobi@oetiker.ch>
Sat, 11 Jun 2005 05:26:13 +0000 (05:26 +0000)
git-svn-id: svn://svn.oetiker.ch/rrdtool/branches/1.2/program@623 a5681a0c-68f1-0310-ab6d-d61299d08faa

bindings/tcl/Makefile.am
bindings/tcl/ifOctets.tcl.in [moved from bindings/tcl/ifOctets.tcl with 95% similarity]
bindings/tcl/tclrrd.c
configure.ac

index 9606d6ddfb0047f6f6bd75a645533f3119259869..e31daa8594e160598b3105f3796280c634bac4d5 100644 (file)
@@ -1,43 +1,56 @@
 
-EXTRA_DIST = README ifOctets.tcl tclrrd.c
-CLEANFILES = tclrrd.o tclrrd.so
+EXTRA_DIST = README tclrrd.c
 
 VERSION = @VERSION@
 
-CFLAGS = @CFLAGS@
+AM_CFLAGS = @CFLAGS@
+
 TCL_PREFIX = @TCL_PREFIX@
 TCL_SHLIB_LD = @TCL_SHLIB_LD@
 TCL_SHLIB_CFLAGS = @TCL_SHLIB_CFLAGS@
 TCL_SHLIB_SUFFIX = @TCL_SHLIB_SUFFIX@
-TCL_PACKAGE_PATH = $(DESTDIR)@TCL_PACKAGE_PATH@
+TCL_PACKAGE_PATH = @TCL_PACKAGE_PATH@
 TCL_LD_SEARCH_FLAGS = @TCL_LD_SEARCH_FLAGS@
-GD_LIB_DIR       = $(top_srcdir)/@GD_LIB_DIR@
+
+CLEANFILES = tclrrd.o tclrrd.so
 
 SRC_DIR            = $(top_srcdir)/src
-AM_CPPFLAGS        = -I$(TCL_PREFIX)/include -I$(SRC_DIR)  -I$(GD_LIB_DIR)
-LIBDIRS            = -L$(libdir) -L$(SRC_DIR)  -L../../src/.libs
+AM_CPPFLAGS        = -I$(TCL_PREFIX)/include -I$(SRC_DIR)
+LIBDIRS            = -L$(top_builddir)/src/.libs -L$(top_builddir)/src -L$(libdir)
 LIB_RUNTIME_DIR    = $(libdir)
 
+pkglibdir = @TCL_PACKAGE_DIR@
+
 if BUILD_TCL
 
-tclrrd$(TCL_SHLIB_SUFFIX): tclrrd.o
-       $(TCL_SHLIB_LD) $(LIBDIRS) $< -o $@ -lrrd
+# Automake doen't like `tclrrd$(VERSION)$(TCL_SHLIB_SUFFIX)' as
+# library name. So we build and install this library `by hand'.
+#
+# We do, however, specify a lib_LIBRARIES target such that
+# automake creates the directory (if neecessary).
+#
+TCL_RRD_LIB = tclrrd$(VERSION)$(TCL_SHLIB_SUFFIX)
 
-tclrrd.o: tclrrd.c
-       $(CC) $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $(TCL_SHLIB_CFLAGS) $(INCLUDES) -c $< -DVERSION=\"$(VERSION)\"
+lib_LIBRARIES =
+
+all-local: $(TCL_RRD_LIB)
+
+pkglib_DATA = pkgIndex.tcl
 
-all-local: tclrrd$(TCL_SHLIB_SUFFIX)
+pkglib_SCRIPTS = ifOctets.tcl
 
-tcl-install: tclrrd$(TCL_SHLIB_SUFFIX)
-       cp tclrrd$(TCL_SHLIB_SUFFIX) $(TCL_PACKAGE_PATH)/tclrrd$(VERSION)$(TCL_SHLIB_SUFFIX)
-       if [ ! -d $(TCL_PACKAGE_PATH)/tclrrd$(VERSION) ] ; then \
-               mkdir $(TCL_PACKAGE_PATH)/tclrrd$(VERSION) ; \
-       fi
-       echo "package ifneeded Rrd $(VERSION) [list load [file join \$$dir .. tclrrd$(VERSION)$(TCL_SHLIB_SUFFIX)]]" > $(TCL_PACKAGE_PATH)/tclrrd$(VERSION)/pkgIndex.tcl
+$(TCL_RRD_LIB): tclrrd.o
+       $(TCL_SHLIB_LD) $(TCL_LD_SEARCH_FLAGS) $(LIBDIRS) $< -o $@ -lrrd -lm
+
+tclrrd.o: tclrrd.c
+       $(CC) $(AM_CFLAGS) $(CFLAGS) $(TCL_SHLIB_CFLAGS) $(AM_CPPFLAGS) -c $< -DVERSION=\"$(VERSION)\"
 
-else
+pkgIndex.tcl:
+       echo "package ifneeded Rrd $(VERSION) \"load $(libdir)/tclrrd$(VERSION)[info sharedlibextension]\"" > $@
 
-all-local:
+install-exec-local: $(TCL_RRD_LIB)
+       @$(NORMAL_INSTALL)
+       $(INSTALL_PROGRAM) $(TCL_RRD_LIB) $(DESTDIR)$(libdir)/$(TCL_RRD_LIB)
 
 endif
 
similarity index 95%
rename from bindings/tcl/ifOctets.tcl
rename to bindings/tcl/ifOctets.tcl.in
index 34185b271b1b61a6a8f3211baa645b8560b29ea4..7a36397c7afaba88152e55ef5f9e6c5d0a8312e3 100644 (file)
@@ -1,9 +1,9 @@
 #!/bin/sh
 # the next line restarts using tclsh -*- tcl -*- \
-exec tclsh8.2 "$0" "$@"
+exec tclsh@TCL_VERSION@ "$0" "$@"
 
 #package require Tnm 3.0
-package require Rrd 1.0.13
+package require Rrd @VERSION@
 
 set rrdfile "[lindex $argv 0]-[lindex $argv 1].rrd"
 
index 92616de259cf85036f4d04906bcc59e71f93ba51..ad8a8a3aac9dcd2d7501ede87b7d0f6d571cd4ad 100644 (file)
@@ -16,7 +16,7 @@
 #include <rrd_tool.h>
 #include <rrd_format.h>
 
-
+extern int Tclrrd_Init(Tcl_Interp *interp, int safe);
 
 extern int __getopt_initialized;
 
@@ -167,7 +167,7 @@ Rrd_Fetch(clientData, interp, argc, argv)
     int argc;
     char *argv[];
 {
-    time_t start, end;
+    time_t start, end, j;
     unsigned long step, ds_cnt, i, ii;
     rrd_value_t *data, *datai;
     char **ds_namv;
@@ -180,7 +180,7 @@ Rrd_Fetch(clientData, interp, argc, argv)
                  &ds_cnt, &ds_namv, &data) != -1) {
         datai = data;
         listPtr = Tcl_GetObjResult(interp);
-        for (i = start; i <= end; i += step) {
+        for (j = start; j <= end; j += step) {
             for (ii = 0; ii < ds_cnt; ii++) {
                sprintf(s, "%.2f", *(datai++));
                 Tcl_ListObjAppendElement(interp, listPtr,
index 0dae62f4ad66f2a91b93e4af1b191818e8458cda..bf2ae7ebc52fdb9dc6b2e46d1f370e6f1b154fb2 100644 (file)
@@ -371,20 +371,23 @@ if test  "$enable_tcl" = "yes"; then
   withval=""
   AC_ARG_WITH(tcllib,[  --with-tcllib=DIR       location of the tclConfig.sh])
   enable_tcl=no
-  AC_MSG_CHECKING(for tclConfig.sh in $withval)
-  if test -f "$withval/tclConfig.sh" ; then
-       tcl_config=$withval/tclConfig.sh
+  for dir in $withval /usr/lib /usr/local/lib; do
+    AC_MSG_CHECKING(for tclConfig.sh in $dir)
+    if test -f "$dir/tclConfig.sh" ; then
+       tcl_config=$dir/tclConfig.sh
         enable_tcl=yes
         AC_MSG_RESULT(yes)
         break
-  else
+    else
         AC_MSG_RESULT(no)
-  fi
+    fi
+  done
 
   if test "$enable_tcl" = "no"; then
         AC_MSG_WARN([tclConfig.sh not found - Tcl interface won't be built])
   else
        . $tcl_config
+       TCL_PACKAGE_DIR="$TCL_PACKAGE_PATH/tclrrd$VERSION"
   fi
 fi
 
@@ -396,6 +399,8 @@ AC_SUBST(TCL_SHLIB_LD)
 AC_SUBST(TCL_SHLIB_SUFFIX)
 AC_SUBST(TCL_PACKAGE_PATH)
 AC_SUBST(TCL_LD_SEARCH_FLAGS)
+AC_SUBST(TCL_VERSION)
+AC_SUBST(TCL_PACKAGE_DIR)
 
 AC_ARG_ENABLE(python,[  --disable-python        do not build the python modules],
 [],[enable_python=yes])
@@ -452,6 +457,7 @@ AC_CONFIG_FILES([examples/shared-demo.pl                    \
           src/Makefile                                 \
           bindings/Makefile                             \
           bindings/tcl/Makefile                                \
+          bindings/tcl/ifOctets.tcl                    \
           bindings/python/Makefile                     \
           Makefile])
 AC_CONFIG_COMMANDS([default],[[\