guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Release Guile, now ;-) [was:] Re: GC rewrite, first version.


From: Rob Browning
Subject: Re: Release Guile, now ;-) [was:] Re: GC rewrite, first version.
Date: Thu, 01 Aug 2002 17:40:31 -0500
User-agent: Gnus/5.090006 (Oort Gnus v0.06) Emacs/21.2 (i386-pc-linux-gnu)

Rob Browning <address@hidden> writes:

> 1.5.7 was ready to go.  However since I'm waiting to upload anyway
> I'll go see how extensive the changes to fix it might be.

OK, after looking in to it, it seems like we probably need a number of
changes to get things "right".  One of the main questions is how do
you generate a header that can be included in the install tree
containing info based on configure's results, but doesn't refer to any
of those results (at least not to the generic names).  After poking
around a bit I propose the following solution:

  * change our configure generated header to be config.h via
    config.h.in as per the normal autoconf expectations and put it in
    the normal place ./config.h.in.  This will now be a completely
    private header, not installed, and not included by anything but .c
    files.

  * change all *.c occurrences of #include ?libguile/scmconfig.h?"  to
    "#include <config.h>" except for the include in __scm.h.  That one
    will be left alone.

  * add a rule to libguile/Makefile.am like this:

      scmconfig.h: ${builddir}/scmconfig-generate
          ${builddir}/scmconfig-generate > scmconfig.h.tmp
          mv scmconfig.h.tmp scmconfig.h

  * write libguile/scmconfig-generate.c to use the values in
    <config.h> to generate a config.h independent header like this:

      #include <config.h>
      #include <stdio.h>

      int
      main (int argc, char *argv[])
      {
        printf(
      "/* libguile/scmconfig.h -*-c-*-

         This file contains bits that were determined automatically, but
         should be included in the guile public header install

         This file is generated automatically from
         libguile/scmconfig-generate.  Please make changes there.
      */\n\n");

      #ifdef HAVE_LONG_LONGS
        printf("#define SCM_HAVE_LONG_LONGS");
      #endif

        /* etc. */
        return 0;
      }

    This allows us to autogenerate the file from the contents of
    config.h without having to do anything too fancy with
    sed/config.status, etc.

  * go through and add items to scmconfig-generate.c as needed, but
    leave as much as possible in <config.h> -- where it'll be private.
    For example, I'm guessing that most of the HAVE_FOO macros won't
    be public, and the ones that must be public (i.e. in scmconfig.h)
    should be renamed to SCM_HAVE_FOO, or similar.

But this looks like a non-trivial amount of work.  I've already done
all the steps but the last in a test tree, but that's the big one.
So the question is, does this have to be done before 1.6.1?

Also while poking around I noticed that there are at least several
#defines in __scm.h that appear to serve no purpose -- they're not
referred to anywhere else.  I'm wondering if these can be dropped.
For example, TICKS isn't used anywhere, and it looks like ENGNOT could
be moved to numbers.c without problems.

-- 
Rob Browning
rlb @defaultvalue.org, @linuxdevel.com, and @debian.org
Previously @cs.utexas.edu
GPG=1C58 8B2C FB5E 3F64 EA5C  64AE 78FE E5FE F0CB A0AD



reply via email to

[Prev in Thread] Current Thread [Next in Thread]