gcl-devel
[Top][All Lists]
Advanced

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

Re: [Gcl-devel] FreeBSD fixes to HEAD for GCL


From: Mark Murray
Subject: Re: [Gcl-devel] FreeBSD fixes to HEAD for GCL
Date: Sat, 08 Nov 2003 10:56:08 +0000

Camm Maguire writes:
> Greetings!  At last my feedback on your submission -- my apologies for
> the delay.

Greetings! No problemo.

> > The job I did on the *.in files is a bit of a hack, as I'm not
> > particularly familiar with autoconf/automake. I'll happily incorporate
> > and test any bits you throw back at me.
> 
> OK, would be great if we can synchronize on one tree.

I'd really like to get rid of _all_ my crud :-).

> > Locally, I remove gmp3/ to avoid the forking problem, to get a
> > shared libgmp, and because FreeBSD's libgmp port is well maintained.
> > It also cuts down on clutter when the port gets rebuilt.
> > 
> 
> As previously discussed, the following is absolutely critical for
> gcl/gmp stability, though perhaps only when using
> SET-GMP-ALLOCATE-RELOCATABLE, which is not on by default:
> 
> in mpn_mul_n in file gmp3/generic/mul_n.c:

Hmm. Is the fix a general fix for all GMP users? If so, I'll just
check it into FreeBSD's GMP port and be done with it that way.

I'm somewhat allergic to bolt-on-the-side chunks of code that are
better handed by inter-port dependancies. In this case, FreeBSD knows
that GCL depends on GMP, and if GMP is in good order, then there
is no problem.

> GCL has a --enable-dynsysgmp option, which Debian uses by default, and
> which when selected, compiles only this patch, and inserts it in
> preference to the code in the dynamic lib via the following link
> command line:
> 
> gcc -o raw_gcl        -L.  -u __gmpn_toom3_mul_n ...(patched archhive).a... -
> lgmp ...

I'd happily use this, if I could check the GMP patch into the FreeBSD
GMP port with a clean conscience.

> The whole gmp3 tree is included 1) only for those users without
> external gmp3 libs, and 2) to make use of gmp3's configure mechanism
> in compiling the patched file.  I strongly recommend the BSD gcl build
> get this code in somehow.

I hear you. :)

My allergy kicks in, though, when I try to build GCL, and have to
spend time fixing/hacking round a GMP sub-build. With FreeBSD's
current system, I can not worry about GMP at all. As far thas the
fix is concerned, if I can get that into our GMP port, then there
is all-round winning. I'd then just need to clean up --enable-dynsysgmp
to not assume that it needs to to any patching shenannigans ;-).

How about a --enable-local-gmp-dammit option? *grin*

>                            Otherwise, especially if bignums are set
> relocateable for performance reasons, the alloc could trigger a GBC
> call which would move the bignum body elsewhere.  It may be possible
> to eliminate this patch when not using relocateable bignums, but this
> has not been thoroughly tested.  In such a case, I'd at least
> recommend removing the SET-GMP-ALLOCATE-RELOCATABLE function.  Perhaps
> if you don't like the patch, we could put in an #ifdef in the
> FreeBSD.h file skipping this function definition.

It sounds like the functionality given is desirable - I just need to
get it done for FreeBSD in such a way as to not get the pitchfork
carrying hordes onto my case!

> > I'm happy to say that the latest gmp3 works without the GCL patches,
> > as tested by (in MAXIMA) calculating 10000!. If there are some better
> > tests, please let me know.
> > 
> 
> Vadim posted some of the best bignum tests I've seen to the list some
> time ago.  And then Matt Kaufmann reported a bignum/contiguous page
> GBC bug which was fixed.  That test code exercising the bug was also
> posted to the list, and would be a good bignum/gmp3 test.

Do these cases tickle the GMP bug/patch above?

> > Leaving binutils around is just clutter, as its just not used, so
> > I remove that too. Would it be possible to make the GCL sources
> > require an up-to-date installation of Binutils, rather than carrying
> > a copy/fork of its own?
> > 
> 
> Agreed.  Binutils is there only for GCL patches which may be needed.
> The first such case appears to be for macosx.  By default, gcl will
> use the static system bfd library available at compile time, and will
> skip this directory entirely.  So you don't need this tree.
> 
> Here's a summary of the loader options:
> 
> statsysbfd -- static system (external) libbfd
> dynsysbfd  -- dynamic (shared) system (externa) libbfd
> dlopen     -- load objects non-permanently at runtime as .so files
> lobcfd     -- build and use the local bfd tree
> custreloc  -- use the i386, sparc, and coff only old native reloc code

We are currently using a hacked up variant of custreloc.

> > There are a bunch of files (clcs/*.[cho] pcl/*.[cho] pcl/*gazonk*) that
> > are rebuilt, but are checked into the repository. Locally I remove these
> > files as part of a "make clean". Seems cleaner that way, makes the source
> > tree smaller, and reminds you what files it is OK to edit.
> > 
> 
> I agree here too.  The problem is, we still cannot build the pcl files
> from lisp source on Windows.  These .c, .h, and .data files are there
> to construct an ansi Windows image from C source.  Once this is fixed,
> these files will be gone.  So you can get rid of them on BSD too if
> you want.

Hmm. What stands in the way of building these files on Windoze like they
are built on *ix? Could they be kept externally as a "bootstrap pack",
rather than as source-distfile clutter?

> > Here's the complete list of files (excluding gmp3/... and binutils/...)
> > that I have removed locally with no ill effects:
> > 
> > AC_FD_CC
> > AC_FD_MSG
> 
> dont' know what these are yet :-)

Autoconfig crud. Most likely brought in at import time from a non-clean
source tree.

> > o/grab_defs.u
> 
> Will look into removing this.

It looks like a junk file, mistakenly imported.

> > Index: configure-new.ac
> > ===================================================================
> > RCS file: /cvsroot/gcl/gcl/configure-new.ac,v
[patch to hack out GMP removed]
> 
> OK, I can't yet apply this for reasons stated above.  Unless you can
> perhaps suggest a better way of achieving the same end?  In principle,
> we could compile the patch and link it in without the gmp3 tree at
> all, but we'd need to grab all the headers and defines and put them
> somewhere.  I do think we need the option of a gmp3 subbuild for those
> without external gmp3 libs.

Will GCL build without GMP? GMP is really an external project, and
as such should be build as separately as possible, so my vote would
be for the subbuild to be a "cd ${GMPTMPDIR}; ${TAR} xzf ${GMPTARFILE};
cd ${GMP}; ${PATCH} < ${GMPPATCH}; ./configure ${GMPCONFIGURE}; ${MAKE};
${MAKE} install", and for that to be trivially severable from the rest
of the build.

> > -AC_ARG_ENABLE(dynsysgmp,
> > -   [ --enable-dynsysgmp will link against the system libgmp3 overriding ce
> rtain functions with patched versions from the local source ]
> > -   ,,enable_dynsysgmp="no")
> > -
> 
> But not this, this is what you want to use, no?

Yes please! But I'd prefer that it took my system GMP "as is", and
didn't try to patch it or futz with it. I'd prefer the system GMP
to be pre-fixed.

> >  TCFLAGS="-Wall -DVOL=volatile -fsigned-char"
> >  if test "$GCC" = "yes" ; then
> > -   TCFLAGS="$TCFLAGS -fwritable-strings -pipe"
> > +   TCFLAGS="$TCFLAGS -fwritable-strings"
> >  fi
> >  
> 
> -pipe was just in there for speed (historically) -- you don't like this?

I like it very mich, but us FreeBSD'ers like to supply the GCC
options from system makefiles, and we don't like them to be hardcoded
any more than they have to be.

> >  TO3FLAGS=""
> > @@ -383,8 +372,8 @@
> >     # for subconfigurations
> >     CFLAGS=-g
> >  else
> > -   TO3FLAGS="-O3 -fomit-frame-pointer"
> > -   TO2FLAGS="-O"
> > +   TO3FLAGS="-fomit-frame-pointer"
> > +   TO2FLAGS=""
> >  fi
> 
> No optimization?????

Depending on the version of GCC, certainly not -O3, it has bugs. Apart from
that, see above about getting the CFLAGS from the build environment.

> >  # Find where Data begins.  This is used by the storage allocation
> >  # mechanism, in the PAGE macro.  This offset is subtracted from
> > @@ -1324,30 +1220,30 @@
> >  
> >  if test -d ${TK_CONFIG_PREFIX}/tk${TK_VERSION} ; then
> >    TK_LIBRARY=${TK_CONFIG_PREFIX}/tk${TK_VERSION}
> > -  else
> > +else
> >    if test -d ${TK_CONFIG_PREFIX}/../tk${TK_VERSION} ; then
> >      TK_LIBRARY=${TK_CONFIG_PREFIX}/../tk${TK_VERSION}
> >    fi
> >  fi
> >  if test -d ${TK_CONFIG_PREFIX}/tcl${TCL_VERSION} ; then
> >    TCL_LIBRARY=${TK_CONFIG_PREFIX}/tcl${TCL_VERSION}
> > -  else
> > +else
> >    if test -d ${TK_CONFIG_PREFIX}/../tcl${TCL_VERSION} ; then
> >      TCL_LIBRARY=${TK_CONFIG_PREFIX}/../tcl${TCL_VERSION}
> >    fi
> >  fi
> >  if test -f ${TK_CONFIG_PREFIX}/../include/tk.h ; then
> >    TK_INCLUDE=-I${TK_CONFIG_PREFIX}/../include
> > -  else
> > -  if test -f /usr/include/tcl${TCL_VERSION}/tk.h ; then
> > -    TK_INCLUDE=-I/usr/include/tcl${TCL_VERSION}
> > +else
> > +  if test -f ${TK_CONFIG_PREFIX}/../../include/tk${TK_VERSION}/tk.h ; then
> > +    TK_INCLUDE=-I${TK_CONFIG_PREFIX}/../../include/tk${TK_VERSION}
> >    fi       
> >  fi
> >  if test -f ${TCL_CONFIG_PREFIX}/../include/tcl.h ; then
> >    TCL_INCLUDE=-I${TCL_CONFIG_PREFIX}/../include
> > -  else
> > -  if test -f /usr/include/tcl${TCL_VERSION}/tcl.h ; then
> > -    TCL_INCLUDE=-I/usr/include/tcl${TCL_VERSION}
> > +else
> > +  if test -f ${TCL_CONFIG_PREFIX}/../../include/tcl${TCL_VERSION}/tcl.h ; 
> then
> > +    TCL_INCLUDE=-I${TCL_CONFIG_PREFIX}/../../include/tcl${TCL_VERSION}
> >    fi
> >  fi
> 
> Am a bit confused here -- your tcl/tk is not being found?

Correct.

> >  AC_CHECK_LIB(lieee,main,have_ieee=1,have_ieee=0)
> > @@ -1463,7 +1359,7 @@
> >  AC_SUBST(LIBS)
> >  FINAL_CFLAGS="$TCFLAGS $PROCESSOR_FLAGS"
> >  AC_SUBST(FINAL_CFLAGS)
> > -CFLAGS="$TCFLAGS $TO3FLAGS $PROCESSOR_FLAGS -I\$(GCLDIR)/o"
> > +CFLAGS="$TCFLAGS $TO3FLAGS $PROCESSOR_FLAGS -I${prefix}/include -I\$(GCLDI
> R)/o"
> >  AC_SUBST(CFLAGS)
> 
> This looks interesting, but I can't envision the circumstance where
> you need it. 

FreeBSD's GMP is installed as a port into ${PREFIX} (usually /usr/local),
and the above is needed to find its header files. It should be specifieable
to autoconf, but I don't know autoconf well enough, so the above is a
"make it work" hack.

> > +# configure has a clever process for figuring out where Emacs
> > +# really expects to find site-lisp and default.el.  We use
> > +# these values instead to ensure that building with --prefix=PREFIX
> > +# will not make changes outside the specified tree. -twp
> >  
> >  # where to put emacs lisp files.
> > address@hidden@
> > address@hidden@/share/emacs/site-lisp
> >  
> >  # the default.el file
> > address@hidden@
> > address@hidden@/share/emacs/site-lisp/default.el
> >  
> 
> I like this, as some have reported probs with this section, but it
> does seem less flexible in general.  Do you happen to know of cases
> where your simplification would give the wrong result?

Not offhand. It was a local "make it work". I am aware of lots of
texinfo tools that are supposed to make this much easier, but I
haven't looked at them yet.

> Let me first state that our makefiles are a mess, and you are the
> first person to attempt a cleanup, which I greatly appreciate.  Its
> been a longstanding TODO to get simple Makefile.am's put in place.  By
> in large, I can't commit these simplifications as they remove the gmp3
> and binutils subbuilds, and I don't know what you're trying to get at
> with the info files, but ...

:-)

The info builds (for us) should only install the *.info files and insert
them correctly into ${PREFIX}/info/dir.

The rest of the stuff (HTML, .dvi) is overhead. I'd get lynched if
a GCL build depended on having TeX, for example.

> > Index: h/FreeBSD.defs
> > ===================================================================
> > RCS file: /cvsroot/gcl/gcl/h/FreeBSD.defs,v
> > retrieving revision 1.2
> > diff -u -d -r1.2 FreeBSD.defs
> > --- h/FreeBSD.defs  1 Nov 2002 04:09:34 -0000       1.2
> > +++ h/FreeBSD.defs  5 Oct 2003 14:01:07 -0000
> > @@ -1,27 +1,23 @@
> > -# Machine dependent makefile definitions for intel 386,486 running 386bsd
> > +# Machine dependent makefile definitions for 386bsd
> >  # Ported to FreeBSD 2.0 by Jeffrey Hsu (address@hidden).
> >  # Hacked September-93 by Paul F. Werkowski for 386BSD 0.1 + Patchkit 0.2.4
> > +# Hacked September-2003 by Juergen Weiss, Mark Murray for FreeBSD-5 CURREN
> T
> >  
> > -LBINDIR=/usr/local/bin
> > -
> > -OFLAG      = -pipe -O2 
> > -CFLAGS     = -fwritable-strings -fomit-frame-pointer -DVOL=volatile -I$(GC
> LDIR)/o -I/usr/local/lib/gcl-2.0/h -fsigned-char -I/usr/local/lib
> > -LIBS    = -lm -L/usr/local/lib
> > -ODIR_DEBUG=
> > -NULLFILE=../h/twelve_null
> > +LBINDIR=${prefix}/bin
> > +# OFLAG  = -pipe -O2
> > +# CFLAGS = @CFLAGS@@
> > +CFLAGS = -O -pipe -mcpu=pentiumpro -I/usr/local/include
> > +CFLAGS += -I$(GCLDIR)/o -fwritable-strings -fomit-frame-pointer -fsigned-c
> har -DVOL=volatile
> > +# LIBS = @LOCALLIBS@@
> > +LIBS = -L/usr/local/lib -lgmp -lm -lreadline
> 
> Please let me suggest you comment out these lines entirely, and let
> configure set them, as in linux.defs.

I tried that. Configure didn't set them properly.

> >  # This CC string will be used for compilation of the system,
> >  # and also in the compiler::*cc* variable for later compilation of
> >  # lisp files.
> > -
> > -CC = gcc
> > +CC = cc $(CFLAGS)
> >  
> 
> and this.
> 
> >  LDCC = $(CC) -static
> >  
> 
> Please don't leave this in!  --enable-static is a configure option.

This is broken, near as I can tell. The interaction between the .defs file
and configure is rather strong, and who "wins" is very hard to unravel.

> >  KCP=kcp-bsd
> > +
> > +# For AXIOM
> > +# EXTRAS = ${OBJ}/${SYS}/lib/cfuns-c.o ${OBJ}/${SYS}/lib/sockio-c.o
> 
> Please let me suggest you build gcl externally, and then build axiom
> with this external gcl via the patches I've posted to the axiom list,
> and which can be found in the debian/ subdir of the Debian axiom
> package.  In short, you don't need the gcl build tree to get these
> axiom specifics in, but can do it from lisp via (compiler::link ...).

Yeah! That's what I really want to do!

> > Index: h/FreeBSD.h
> > ===================================================================
> > RCS file: /cvsroot/gcl/gcl/h/FreeBSD.h,v
> > retrieving revision 1.2
> > diff -u -d -r1.2 FreeBSD.h
> > --- h/FreeBSD.h     1 Nov 2002 04:09:34 -0000       1.2
> > +++ h/FreeBSD.h     5 Oct 2003 14:01:07 -0000
> > @@ -1,5 +1,5 @@
> >  /*
> > - * FreeBSD.h for gcl 1.1
> > + * FreeBSD.h for gcl
> >   *
> >   * Ported by Jeffrey Hsu (address@hidden).
> >   *  Looked at previous versions by Hsu, Werkowsksi, Tobin, and Mogart.
> > @@ -8,6 +8,50 @@
> >  
> >  #include "bsd.h"
> >  
> > +#ifndef __ELF__
> > +#error FreeBSD systems use ELF
> > +#endif
> > +
> > +#undef HAVE_AOUT
> > +#define HAVE_AOUT <elf.h>
> > +#define HAVE_ELF
> > +
> > +#if defined(__i386__)
> > +#define __ELF_NATIVE_CLASS 32
> > +#endif
> > +#if defined(__alpha__) || defined(__sparc64__) || defined(__ia64__)
> > +#define __ELF_NATIVE_CLASS 64
> > +#endif
> > +#define mjoin(a,b) a ## b
> > +#define Mjoin(a,b) mjoin(a,b)
> > +#if !defined(ElfW)
> > +#define ElfW(a) Mjoin(Elf,Mjoin(__ELF_NATIVE_CLASS,Mjoin(_,a)))
> > +#endif
> > +#define ELFW(a) Mjoin(ELF,Mjoin(__ELF_NATIVE_CLASS,Mjoin(_,a)))
> > +
> > +/* Seeking to the end of ELF data is a little messy... */
> > +#include <link.h>
> > +#define SEEK_TO_END_OFILE(fp)\
> > +  do { \
> > +   long offset = 0, endofelf; int j; \
> > +   ElfW(Ehdr) eheader; ElfW(Shdr) shdr; \
> > +        fseek(fp, 0, SEEK_SET); \
> > +        fread(&eheader, sizeof(eheader), 1, fp); \
> > +  /* in case the headers themselves come AFTER the actual sections */ \
> > +   endofelf=offset = eheader.e_shoff+ eheader.e_shentsize *eheader.e_shnum
> ;\
> > +        fseek(fp, eheader.e_shoff, SEEK_SET); \
> > +   if ( eheader.e_shentsize != sizeof(ElfW(Shdr)) ) \
> > +     { FEerror("Bad ELF section header size",0); } \
> > +        for ( j = 0; j < eheader.e_shnum; j++ ) \
> > +     { fread(&shdr,eheader.e_shentsize,1,fp); \
> > +            if ( (shdr.sh_offset > offset) && (shdr.sh_type != SHT_NOBITS)
>  ) \
> > +         { offset = shdr.sh_offset; endofelf = offset+shdr.sh_size; } \
> > +     } \
> > +   if ( fseek(fp, endofelf, SEEK_SET) ) \
> > +       FEerror("Bad ELF file",0); \
> > +      } while(0)
> > +
> > +
> >  #undef LD_COMMAND
> >  #define LD_COMMAND(command,main,start,input,ldarg,output) \
> >    sprintf(command, "ld -dc -N -x -A %s -T %x %s %s -o %s", \
> > @@ -24,7 +68,7 @@
> >  /* we don't need to worry about zeroing fp->_base, to prevent what??? */
> >  #define FCLOSE_SETBUF_OK 
> >  
> > -#undef HAVE_XDR
> > +#define HAVE_XDR
> >  
> >  #define USE_ATT_TIME
> >  
> > @@ -39,17 +83,9 @@
> >  #endif
> >  
> >  #define DATA_BEGIN (char *) N_DATADDR(header);
> > -#define A_TEXT_OFFSET(x) (sizeof (struct exec))
> > -#define A_TEXT_SEEK(hdr) (N_TXTOFF(hdr) + A_TEXT_OFFSET(hdr))
> > -#define start_of_data() &etext
> > -#define start_of_text() ((char *)(sizeof(struct exec) + getpagesize()))
> >  
> > -#define UNIXSAVE "unexec.c"
> > -#ifdef UNIXSAVE 
> > - extern char etext;
> > -#endif
> > -
> > -#define RELOC_FILE "rel_sun3.c"    /* for SFASL - enabled in bsd.h */
> > +/*#define UNEXEC_USE_MAP_PRIVATE*/
> > +#define UNIXSAVE "unexelf.c"
> >  
> >  #ifdef CLOCKS_PER_SEC
> >  #define HZ CLOCKS_PER_SEC
> > @@ -67,7 +103,8 @@
> >  #define SETUP_SIG_STACK \
> >  { \
> >     static struct sigaltstack estack; \
> > -   if ((estack.ss_sp = malloc(SIGSTKSZ)) == NULL) \
> > +   if (estack.ss_sp == NULL && \
> > +       (estack.ss_sp = malloc(SIGSTKSZ)) == NULL) \
> >       perror("malloc"); \
> >     estack.ss_size = SIGSTKSZ; \
> >     estack.ss_flags = 0; \
> 
> Here I'd like to ask a favor -- start the FreeBSD.h file with #include
> "linux.h", and then #undef and #ifdef as needed.  All of this looks
> the same as in linux.h, except the need to handle the
> __ELF_NATIVE_CLASS.  BTW, Mjoin is now in notcomp.h, so you may not
> need to define it here.  (Not sure about the include order, we can
> move it higher if necessary.)

Yeah. I'll do that. Thanks!

> > Index: h/bsd.h
> > ===================================================================
> > RCS file: /cvsroot/gcl/gcl/h/bsd.h,v
> > retrieving revision 1.4
> > diff -u -d -r1.4 bsd.h
> > --- h/bsd.h 20 Jul 2002 07:10:55 -0000      1.4
> > +++ h/bsd.h 5 Oct 2003 14:01:08 -0000
> > @@ -1,8 +1,8 @@
> > -#define BSD 1
> 
> I'll look into this.

The specific error is "symbol BSD redefined". LOTS of them.

> > +#include <sys/param.h>
> > +
> 
> ???

Defines BSD :-)

> >  #define UNIX
> >  #define AV
> >  #define SFASL
> > -#define HAVE_AOUT <a.out.h>
> >  
> 
> I'll look into this too.

NO BSD system is A.OUT anymore. The free ones are all ELF, and OS/X is
something else.

> > diff -u -d -r1.48 new_decl.h
> > --- h/new_decl.h    3 Oct 2003 16:03:16 -0000       1.48
> > +++ h/new_decl.h    5 Oct 2003 14:01:08 -0000
> > @@ -1,8 +1,8 @@
> > -      EXTER object fLbye (fixnum exitc);
> > -      EXTER object fLquit (fixnum exitc);
[ snip ]
> 
> This as we know is a generated file.

Yeah. But its checked in. So when differences come, you get CVS noise.
Any way round this? I'd vote for not modifying it in situ, and periodically
checkin it in, as needed.

> > -all: gcl-tk.info gcl-si.info gcl.info $(GCL_DVI) $(GCL_HTML)
> > +all: gcl-tk.info gcl-si.info gcl.info
> >  
> 
> no dvi and html docs?

Yeah. Too much external cruft needed to build this.

> >  .texi.info:
> > -   rm -f $*.*gz
> > -   -$(MAKEINFO) $*.texi
> > -   - gzip $*.info-*
> > +   rm -f $*gz
> > +   rm -f $*.info
> > +   -$(MAKEINFO) --no-split $*.texi
> >  
> 
> GCL can read compressed info files.  The --no-split may be a good idea
> -- what are the pros and cons?

It seems to be a GNU-ish standard. Some tools whine if you split the files.
Single files are easier to read with less(1), and overall single files
are faster.

Downside, single files are big.

> >  GCL_SI= number.texi sequence.texi character.texi list.texi io.texi \
> >     form.texi compile.texi symbol.texi system.texi structure.texi \
> > @@ -32,19 +32,16 @@
> >     TEXINPUTS=.:$$TEXINPUTS tex --interaction nonstopmode gcl-si.texi || tr
> ue
> >  
> >  gcl-si.info: ${GCL_SI} gcl-si.texi
> > -   -$(MAKEINFO) gcl-si.texi        
> >  
> >  gcl-tk.dvi: ${GCL_TK} gcl-tk.texi
> >     TEXINPUTS=.:$$TEXINPUTS tex --interaction nonstopmode gcl-tk.texi || tr
> ue
> >  
> >  gcl-tk.info: ${GCL_TK} gcl-tk.texi
> > -   -$(MAKEINFO) gcl-tk.texi
> >  
> >  gcl.dvi: ${GCL_MAN} gcl.texi
> >     TEXINPUTS=.:$$TEXINPUTS tex --interaction nonstopmode gcl.texi || true
> >  
> >  gcl.info: ${GCL_MAN} gcl.texi
> > -   -$(MAKEINFO) gcl.texi
> >  
> 
> Are these rules makefile defaults?

Yes.

> >  gcl-si_toc.html: ${GCL_SI} gcl-si.texi
> >     $(HTML_CMD) gcl-si.texi
> > @@ -61,20 +58,7 @@
> >  install:
> >     mkdir -p $(DESTDIR)${INFO_DIR}
> >     [ -f $(DESTDIR)$(INFO_DIR)dir ] || touch $(DESTDIR)$(INFO_DIR)dir
> > -   grep -q gcl-si $(DESTDIR)${INFO_DIR}dir || \
> > -   echo "* GCL Doc: (gcl-si.info). GNU Common Lisp specific Documentation.
> " >> $(DESTDIR)${INFO_DIR}dir
> > -   grep -q gcl-tk $(DESTDIR)${INFO_DIR}dir || \
> > -   echo "* GCL TK Doc: (gcl-tk.info).      TK window GCL interface." >> $(
> DESTDIR)${INFO_DIR}dir
> > -   grep -q gcl.info $(DESTDIR)${INFO_DIR}dir || \
> > -   echo "* GCL Ansi Doc: (gcl.info).  Ansi Common Lisp Specification." >> 
> $(DESTDIR)${INFO_DIR}dir
> >     cp *.info* $(DESTDIR)${INFO_DIR}
> > -   mkdir -p $(DESTDIR)$(INFO_DIR)../doc/gcl-doc/gcl.html
> > -   mkdir -p $(DESTDIR)$(INFO_DIR)../doc/gcl-doc/gcl-si.html
> > -   mkdir -p $(DESTDIR)$(INFO_DIR)../doc/gcl-doc/gcl-tk.html
> > -   cp gcl_*html $(DESTDIR)$(INFO_DIR)../doc/gcl-doc/gcl.html
> > -   cp gcl-si_*html $(DESTDIR)$(INFO_DIR)../doc/gcl-doc/gcl-si.html
> > -   cp gcl-tk_*html $(DESTDIR)$(INFO_DIR)../doc/gcl-doc/gcl-tk.html
> > -   cp *dvi $(DESTDIR)$(INFO_DIR)../doc/gcl-doc
> >  
> 
> Perhaps we should break out these steps into separate makefile
> targets?  They appear needed at least on some systems.

Yeah. The above is a coarse hack.

> > Index: o/gcl_readline.d
> > ===================================================================
> > RCS file: /cvsroot/gcl/gcl/o/gcl_readline.d,v
> > retrieving revision 1.2
> > diff -u -d -r1.2 gcl_readline.d
> > --- o/gcl_readline.d        14 Sep 2003 02:43:07 -0000      1.2
> > +++ o/gcl_readline.d        5 Oct 2003 14:01:32 -0000
> > @@ -94,7 +94,6 @@
> >     the word to complete.  We can use the entire contents of rl_line_buffer
> >     in case we want to do some simple parsing.  Return the array of matches
> ,
> >     or NULL if there aren't any. */
> > -extern char **completion_matches(char *,char *(*)(char *,int));
> >  static char **rl_completion(char *text, int start, int end) {
> >     return completion_matches(text, rl_completion_words);
> 
> Will look into this .

Its in the readline header, and conflicts with it.

> > @@ -100,10 +101,10 @@
> >  
> >  ifneq ($(NIFLAGS),)
> >  new_init.o: new_init.c
> > -   $(CC) -c $(NIFLAGS) $(DEFS) $< -o $@
> > +   $(CC) -c $(NIFLAGS) $(CFLAGS) $(DEFS) $< -o $@
> >  endif
> 
> Can't do this, this is a work-around for a long-standing gcc bug on
> ppc.  Have to decrease the optimization on this file alone.  Could
> recheck now that the ini setup has changed with the ia64 fixes.

CFLAGS contains stuff other than optimization.

> > Index: o/sfaslelf.c
> > ===================================================================
> > RCS file: /cvsroot/gcl/gcl/o/sfaslelf.c,v
[ snip ]
> 
> All of this is going int, thanks!  But I thought you were using bfd
> for relocation, i.e. sfaslbfd.c?  This should only be included when
> using --enable-custreloc.

We are using --enable-custreloc :-)

> >  # remake the sys-package.lisp and sys-proclaim.lisp files
> > Index: unixport/makefile
> > ===================================================================
> > RCS file: /cvsroot/gcl/gcl/unixport/makefile,v
> > retrieving revision 1.48
> > diff -u -d -r1.48 makefile
> > --- unixport/makefile       24 Sep 2003 16:30:12 -0000      1.48
> > +++ unixport/makefile       5 Oct 2003 14:03:52 -0000
> > @@ -14,29 +14,11 @@
> >  PORTDIR = $(shell pwd)
> >  
> >  LD_LIBS_PRE=$(addprefix -u ,$(PATCHED_SYMBOLS))
> > -LD_LIBS_POST=$(LIBS) $(LIBC) -lgclp
> > +LD_LIBS_POST=$(LIBS) $(LIBC) -lgclp ${OBJ}/${SYS}/lib/libspad.a

> Pleaxe consider my axiom advice above.

Yeah, will do.

> Take care,

Likewise! Thanks for the feedback! :-)

M
--
Mark Murray
iumop ap!sdn w,I idlaH




reply via email to

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