[Ecls-list] -dir doesn't really work & build musing

Hannu Koivisto azure at iki.fi
Tue Dec 4 10:31:05 UTC 2001


install.html suggests:

If you want to test the fresh new executable before installing. You
you should invoke ECL from withing the build directory using the
"-dir ./" argument to advice him about the right place to find
header files, libraries, etc. For instance, under linux the build
directory is "linux" and we would do

$ ./configure --prefix=$HOME
$ cd build
$ make
$ ./ecl -dir ./

This doesn't work.  Witness:

[lynx] ./ecl -dir ./

ECL (Embeddable Common-Lisp) 0.5
Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya
Copyright (C) 1993 Giuseppe Attardi
Copyright (C) 2000 Juan J. Garcia-Ripoll
        ECL is free software, and you are welcome to redistribute
under certain conditions; see file 'Copyright' for details.
Type :h for Help.  Top level.
> (compile nil '(lambda () t))
;;; End of Pass 1.
;;; Calling the C compiler...
"gcc -g -O2 -Dlinux  -O -I.//h -w -c gazonk000.c -o gazonk000.o"gazonk000.c:2: ecl-cmp.h: No such file or directory

(SYSTEM "gcc -g -O2 -Dlinux  -O -I.//h -w -c gazonk000.c -o gazonk000.o") returned non-zero value 1
Broken at COMPILE.

ecl-cmp.h is indeed not in the build/h directory.

I'm not sure what would be the best fix for this.  I find the whole
include file business a bit messy.  For example, why GMP's headers
are copied to the build tree but GC's headers aren't.  GMP's
headers are not generated either (the reason for config.h et al to
be there).  Also, headers are installed by c subdirectory's
Makefile.  I find that somewhat odd.

How about linking all the needed headers that are not generated
from src tree?  Makefile could then use HDIR=../h instead of
HDIR=$(top_srcdir)/h (or HDIR could be defined in the build
directory).  Linking doesn't work in all systems, but they can
always be copied in such cases (changes to headers in source tree
go unnoticed but does it matter in such limited cases,
i.e. Windows).  I would also make build directory's Makefile
install headers and define HFILES at that level (probably in a
separate file if use of recursive make is to be retained and
someone wants to recompile stuff in build/c directory).

Yet another case that proves that recursive make is harmful (not
surprisingly, there were some problems with parallel builds too but
I'll look into that later).

Local gmp installation can be used with ./configure
--enable-local-gmp.  Could a similar choice be made for Boehm GC?
I would check whether there are ECL-specific changes to it but it
isn't imported to a vendor branch.  Why?  The same applies to GMP
and loop2.

Please don't send copies of list mail

More information about the ecl-devel mailing list