Try to detect when people are using one version of libguile and a
authorJim Blandy <jimb@red-bean.com>
Sun, 22 Jun 1997 23:42:40 +0000 (23:42 +0000)
committerJim Blandy <jimb@red-bean.com>
Sun, 22 Jun 1997 23:42:40 +0000 (23:42 +0000)
different version of ice-9.  People have been skewing things and
sending in bug reports.
* Makefile.am (versiondat.h): New file to generate.
* version.c: #include "versiondat.h", to get version info.
(scm_libguile_config_stamp): New function.
* script.c: #include "version.h".
(scm_compile_switches): Call scm_version to get version number.
* scmconfig.h.in, Makefile.in: Regenerated.
* Makefile.in: Regenerated.

* Makefile.am (ETAGS_ARGS): Catch SCM_PROC, etc. so we can find
primitive definitions under their Scheme names.

* Makefile.am (libguile_la_LDFLAGS): Update library version to
1:2.  Helps avoid confusion between installed and uninstalled libs.

libguile/Makefile.am
libguile/Makefile.in
libguile/scmconfig.h.in
libguile/script.c
libguile/version.c

index c428d52..f4b3c65 100644 (file)
@@ -7,6 +7,8 @@ AUTOMAKE_OPTIONS = foreign
 ## building.
 INCLUDES = -I.. -I$(srcdir)/..
 
+ETAGS_ARGS = --regex='/SCM_\(GLOBAL_\)?\(PROC\|PROC1\|SYMBOL\|VCELL\|CONST_LONG\).*\"\([^\"]\)*\"/\3/'
+
 lib_LTLIBRARIES = libguile.la
 bin_PROGRAMS = guile
 
@@ -39,7 +41,7 @@ noinst_HEADERS = coop-threads.c coop-threads.h coop.c
 
 libguile_la_DEPENDENCIES = @LIBLOBJS@
 libguile_la_LIBADD = @LIBLOBJS@
-libguile_la_LDFLAGS = -version-info 1:1 -rpath $(libdir)
+libguile_la_LDFLAGS = -version-info 1:2 -rpath $(libdir)
 
 include_HEADERS = libguile.h
 
@@ -83,9 +85,7 @@ EXTRA_DIST = ChangeLog-gh ChangeLog-scm ChangeLog-threads dynl-dl.c \
     cpp_err_symbols.in cpp_sig_symbols.in cpp_cnvt.awk coop-threads.h.cygnus \
     coop-threads.c.cygnus mit-pthreads.h mit-pthreads.c fsu-pthreads.h
 
-## FIXME: shouldn't directly generate file; instead generate temp file
-## and "mv".  Consider using timestamp file as well, to avoid
-## unnecessary rebuilds.
+## FIXME: Consider using timestamp file, to avoid unnecessary rebuilds.
 libpath.h: Makefile
        rm -f libpath.tmp
        echo '/* generated by Makefile */' > libpath.tmp
@@ -94,6 +94,18 @@ libpath.h: Makefile
        echo '#define SCM_SITE_DIR "$(pkgdatadir)/site"' >> libpath.tmp
        mv libpath.tmp libpath.h
 
+## FIXME: Consider using timestamp file, to avoid unnecessary rebuilds.
+versiondat.h: Makefile
+       rm -f versiondat.tmp
+       echo '/* generated by Makefile */' > versiondat.tmp
+       echo '#define GUILE_VERSION "$(GUILE_VERSION)"' >> versiondat.tmp
+       echo '#define GUILE_MAJOR_VERSION "$(GUILE_MAJOR_VERSION)"' \
+               >> versiondat.tmp
+       echo '#define GUILE_MINOR_VERSION "$(GUILE_MINOR_VERSION)"' \
+               >> versiondat.tmp
+       echo '#define GUILE_STAMP   "$(GUILE_STAMP)"' >> versiondat.tmp
+       mv versiondat.tmp versiondat.h
+
 SUFFIXES = .x
 .c.x:
        ./guile-snarf $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $< > $@
index 0d39535..3261e3f 100644 (file)
@@ -58,6 +58,11 @@ AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 CC = @CC@
 CPP = @CPP@
+GUILE_MAJOR_VERSION = @GUILE_MAJOR_VERSION@
+GUILE_MINOR_VERSION = @GUILE_MINOR_VERSION@
+GUILE_STAMP = @GUILE_STAMP@
+GUILE_VERSION = @GUILE_VERSION@
+LD = @LD@
 LIBLOBJS = @LIBLOBJS@
 LIBTOOL = @LIBTOOL@
 MAINT = @MAINT@
@@ -77,6 +82,8 @@ AUTOMAKE_OPTIONS = foreign
 
 INCLUDES = -I.. -I$(srcdir)/..
 
+ETAGS_ARGS = --regex='/SCM_\(GLOBAL_\)?\(PROC\|PROC1\|SYMBOL\|VCELL\|CONST_LONG\).*\"\([^\"]\)*\"/\3/'
+
 lib_LTLIBRARIES = libguile.la
 bin_PROGRAMS = guile
 
@@ -105,7 +112,7 @@ noinst_HEADERS = coop-threads.c coop-threads.h coop.c
 
 libguile_la_DEPENDENCIES = @LIBLOBJS@
 libguile_la_LIBADD = @LIBLOBJS@
-libguile_la_LDFLAGS = -version-info 1:1 -rpath $(libdir)
+libguile_la_LDFLAGS = -version-info 1:2 -rpath $(libdir)
 
 include_HEADERS = libguile.h
 
@@ -593,6 +600,17 @@ libpath.h: Makefile
        echo '#define SCM_LIBRARY_DIR "$(pkgdatadir)/$(VERSION)"' >>libpath.tmp
        echo '#define SCM_SITE_DIR "$(pkgdatadir)/site"' >> libpath.tmp
        mv libpath.tmp libpath.h
+
+versiondat.h: Makefile
+       rm -f versiondat.tmp
+       echo '/* generated by Makefile */' > versiondat.tmp
+       echo '#define GUILE_VERSION "$(GUILE_VERSION)"' >> versiondat.tmp
+       echo '#define GUILE_MAJOR_VERSION "$(GUILE_MAJOR_VERSION)"' \
+               >> versiondat.tmp
+       echo '#define GUILE_MINOR_VERSION "$(GUILE_MINOR_VERSION)"' \
+               >> versiondat.tmp
+       echo '#define GUILE_STAMP   "$(GUILE_STAMP)"' >> versiondat.tmp
+       mv versiondat.tmp versiondat.h
 .c.x:
        ./guile-snarf $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $< > $@
 
index 6a8f96c..38e1080 100644 (file)
    aclocal.m4.  */
 #undef LIBC_H_WITH_UNISTD_H
 
-/* Define these to indicate the current version of Guile.  These
-   values are supposed to be supplied by the configuration system.  */
-#undef GUILE_MAJOR_VERSION
-#undef GUILE_MINOR_VERSION
-#undef GUILE_VERSION
-
 /* Define this to include various undocumented functions used to debug
    the Guile library itself.  */
 #undef GUILE_DEBUG
index 36f3c1e..128cb82 100644 (file)
@@ -46,6 +46,7 @@
 #include "_scm.h"
 #include "gh.h"
 #include "load.h"
+#include "version.h"
 
 #include "script.h"
 
@@ -570,7 +571,7 @@ scm_compile_shell_switches (int argc, char **argv)
                  "certain other uses are permitted as well.  For details, see the file\n"
                  "`COPYING', which is included in the Guile distribution.\n"
                  "There is no warranty, to the extent permitted by law.\n",
-                 GUILE_VERSION);
+                 SCM_CHARS (scm_version ()));
          exit (0);
        }
 
index 25e3d0d..e703820 100644 (file)
@@ -41,6 +41,7 @@
 \f
 
 #include "_scm.h"
+#include "versiondat.h"
 
 #include "version.h"
 \f
@@ -75,6 +76,16 @@ scm_version ()
   return scm_makfrom0str (GUILE_VERSION);
 }
 
+/* Return a Scheme string containing Guile's configuration stamp.  */
+
+SCM_PROC(s_libguile_config_stamp, "libguile-config-stamp", 0, 0, 0, scm_libguile_config_stamp);
+
+SCM
+scm_libguile_config_stamp ()
+{
+  return scm_makfrom0str (GUILE_STAMP);
+}
+
 \f