[Gcl-devel] Re: [Maxima] Compilation problems with latest maxima
Subject: [Gcl-devel] Re: [Maxima] Compilation problems with latest maxima
From: Vadim V. Zhytnikov
Date: Sun, 29 Sep 2002 23:08:38 +0300
Thank you for explanation!
Just one suggestion. Now make install
installs cmpinclude.h into <libdir>/gcl-<ver>/h.
But in present setup this file is useless unless
user don't make appropriate export C_INCLUDE_PATH
So maybe install should take care of it
and insert
export C_INCLUDE_PATH=<libdir>/gcl-<ver>/h
into gcl wrapper script automatically?
Camm Maguire ÐÉÛÅÔ:
> Hi Vadim!
>
> In short, one needs cmpinclude.h on the system if cone compiles with
> :system-p turned on. This in turn is necessary if the initialization
> routine is to be uniquely named, i.e. not init_code in every file.
> This in turn is required if one is to link the .o files using ld into
> the text section of the executable as opposed to loading the .o into
> the lisp core with 'load' and dumping the image with save-system.
> This in turn i required if one uses dlopen instead of bfd for
> relocations. This in turn is currently required on 5 of the 11 Debian
> architectures until we get a bfd patch.
>
> In principle, we could rework :system-p to put cmpinclude.h in
> explicitly as well, but this has not been done yet. Should not be an
> issue in any case, even if you don't install the gcl build -- just set
> 'export C_INCLUDE_PATH=<gcl source>/h'
>
> Take care,
>
> "Vadim V. Zhytnikov" <vvzhy@mail.ru> writes:
>
>
>>Hi Camm!
>>
>>Actually you are not quite right about cmpinclude.h.
>>In general this file it is not required by GCL.
>>GCL has built-in variable compiler::*cmpinclude-string*
>>which holds text of cmpinclude.h. If this variable is
>>not NIL then compiler inserts it explicitly
>>in every foo.c generated by (compile-file "foo.lisp").
>>And only if compiler::*cmpinclude-string* is NIL then
>>compiler inserts usual #include and you _must_ have
>>cmpinclude.h in the include path.
>>
>>Older version of GCL 2.5.0 worked fine to me without
>>any cmpinclude.h installed. But somewhere in August I
>>also start getting the problem with building
>>Maxima with GCL CVS. If I take sloop.lisp
>>from maxima/src directory, start gcl
>>and make (compile-file "sloop.lisp")
>>then everything goes just fine. I see that
>>very large sloop.c explicitly containing
>>cmpinclude.h text in the beginning.
>>But due to unknown reason if I try to
>>build Maxima with the same GCL then
>>sloop.c contains #include <cmpinclude.h>
>>I don't know why yet.
>>
>>
>>Camm Maguire ÐÉÛÅÔ:
>> > Greetings!
>> >
>> > 1) cmpinclude.h is generated by the gcl build process. If you then do
>> > 'make install', it should be installed along with the other files
>> > where your compiler can find it.
>> >
>> > 2) old versions are not likely to have the same function/variable
>> > definitions in all cases, as cvs gcl is under development.
>> >
>> > 3) If you don't want to bother installing libbfd et. al., gcl now
>> > ships with its own local version. Check out the options with
>> > ../configure --help. --disable-statsysbfd disables the search for
>> > a static bfd lib for relocations. --enable-locbfd uses the local
>> > bfd source. There is also --enable-custreloc for the old hand
>> > tuned version, --enable-dynsysbfd for a shared bfd lib on your
>> > system, and --enable-dlopen. Likewise, an external gmp lib can be
>> > used with --enable-dynsysgmp.
>> >
>> > 4) The idea is that you *install* your gcl build, then build maxima
>> > without reference to the gcl source tree. If you don't want to do
>> > that, you can still direct the maxima build to the right places in
>> > the (built) gcl source tree with 'export PATH=<gcl source>bin:$PATH
>> > ; export C_INCLUDE_PATH=<gcl source/h'.
>> >
>> > Take care,
>> >
>> > Valerij Pipin <"vpipin@irk.ru, pip"@iszf.irk.ru> writes:
>> >
>> >
>> >>Hello,
>> >>Something is going wrong for me... I did not find "cmpinclude.h"
>>nether in the latest gcl-cvs nor in gcl-2.4.3.tgz.
>> >>Fortunately, I have the copy of the old version of cvs-gcl made in
>>August where I found this cmpinclude.h.
>> >>I put it in /usr/include and tried to compile maxima. The number of
>>errors is much less then before but still
>> >>I have
>> >>Compiling sloop.lisp.
>> >>; (DEFUN FIRST-SLOOP-FOR ...) is being compiled.
>> >>;; The variable *LOOP-INCREMENT* is undefined.
>> >>;; The compiler will assume this variable is a global.
>> >>End of Pass 1.
>> >>End of Pass 2.
>> >>sloop.c: In function `L30':
>> >>sloop.c:2088: called object is not a function
>> >>sloop.c: In function `L65':
>> >>sloop.c:4964: called object is not a function
>> >>sloop.c:4978: called object is not a function
>> >>
>> >>Error: (SYSTEM "(cd binary-gcl/ ;kgcc -pipe -fwritable-strings
>>-DVOL=volatile -I/usr/src/RPM/BUILD/gcl-2.5.0/o -fsigned-char -Wall
>>-O4 -c sloop.c -w)") returned a non-zero value 0.
>> >>Fast links are on: do (si::use-fast-links nil) for debugging
>> >>Error signalled by UNLESS.
>> >>Broken at CERROR. Type :H for Help.
>> >>SLOOP>>
>> >>
>> >>rgds,
>> >>Valerij.
>> >>
>> >>PS I've succefully build the latest cvs-gcl on my linux-duron after
>>updating the binutils libbfd and liberty to the latest versions.
>> >>
>> >>On 20 Sep 2002 20:35:32 -0400
>> >>Camm Maguire <camm@enhanced.com> wrote:
>> >>
>> >>
>> >>>Greetings! The gcl/maxima build has been reworked so that one does
>> >>>not need the source tree any longer to build maxima. this of course
>> >>>then assumes that one has installed the gcl package. Doing so
>> >>>installs the cmpinclude.h file in your system include directory. If
>> >>>you want to build maxima from an uninstalled gcl source tree, just set
>> >>>the C_INCLUDE_PATH environment variable to <gcl tree path>/h.
>> >>>
>> >>>Gcl issues to gcl-devel@gnu.org, please. Almost missed this one.
>> >>>
>> >>>take care,
>> >>>
>> >>>Valerij Pipin <pip@iszf.irk.ru> writes:
>> >>>
>> >>>
>> >>>>On 19 Sep 2002 14:34:41 -0500
>> >>>>Jay Belanger <belanger@truman.edu> wrote:
>> >>>>
>> >>>>
>> >>>>>When I try compiling the latest cvs Maxima with the latest cvs gcl, I
>> >>>>>get an error complaining about a missing file cmpinclude.h.
>> >>>>>(The error message is at the end of this letter.)
>> >>>>>I get the same problem with gcl-2.4.3, but not with an earlier cvs
>> >>>>>maxima I was using, and not with clisp.
>> >>>>>(Everything was compiled with gcc-3.2.)
>> >>>>>Is this a local problem, or has anyone else come across it?
>> >>>>>
>> >>>>>Jay
>> >>>>>
>> >>>>
>> >>>>Yes, I confirm this. I have the same error messages and there were
>>no such errors with clisp and cmucl.
>> >>>>In addition, I tried gcc-2.96 and kgcc with the same effect.
>> >>>>
>> >>>>I have another problem with building the latest cvs-gcl itself.
>>Though I compiled it on Linux-P3,
>> >>>>I was not able to do it on Linux-Duron750. The problem is with bfd
>>routines.
>> >>>>The error remains if I change the configure options to
>>--disable-bfd --host=i586-linux-gnu.
>> >>>>The building gcl-2.4.3 is OK on both systems.
>> >>>>
>> >>>>Valerij.
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>>~ $ cd maxima
>> >>>>>~/maxima $ ./bootstrap
>> >>>>>+ aclocal
>> >>>>>+ automake --add-missing --copy
>> >>>>>configure.in: installing `./install-sh'
>> >>>>>configure.in: installing `./mkinstalldirs'
>> >>>>>configure.in: installing `./missing'
>> >>>>>configure.in:6: installing `./config.guess'
>> >>>>>configure.in:6: installing `./config.sub'
>> >>>>>+ autoconf
>> >>>>>~/maxima $ ./configure --enable-gcl
>> >>>>>[Much deleted, no complaints from configure]
>> >>>>>
>> >>>>>Summary:
>> >>>>>GCL enabled. Executable name gcl
>> >>>>>default lisp: gcl
>> >>>>>~/maxima $ make
>> >>>>>Making all in src
>> >>>>>make[1]: Entering directory `/home/belanger/maxima/src'
>> >>>>>test -d binary-gcl || mkdir binary-gcl
>> >>>>>test -d binary-gcl/numerical || mkdir binary-gcl/numerical
>> >>>>>test -d binary-gcl/numerical/slatec || mkdir
>>binary-gcl/numerical/slatec
>> >>>>>LISPTYPE=gcl ; export LISPTYPE ;\
>> >>>>>GCL=gcl ; export GCL ;\
>> >>>>>/home/belanger/maxima/lisp-utils/maxima-run-lisp \
>> >>>>> -x '(load
>>"/home/belanger/maxima/lisp-utils/defsystem.lisp")(funcall (intern
>>"OPERATE-ON-SYSTEM" :mk) "maxima" :compile :verbose t)' && \
>> >>>>> /home/belanger/maxima/lisp-utils/maxima-run-lisp \
>> >>>>> -x '(load
>>"/home/belanger/maxima/lisp-utils/defsystem.lisp")(funcall (intern
>>"OPERATE-ON-SYSTEM" :mk) "maxima" :load :verbose t)' \
>> >>>>> -d binary-gcl/maxima
>> >>>>>gcl -batch -eval (let ((argv '())) (declare (ignorable argv))
>>(progn (load "/home/belanger/maxima/lisp-utils/defsystem.lisp")(funcall
>>(intern "OPERATE-ON-SYSTEM" :mk) "maxima" :compile :verbose t)) (values))
>> >>>>>
>> >>>>>Warning: REQUIRE is being redefined.
>> >>>>>; - Compiling defsystem "maxima"
>> >>>>>; - Loading module "package"
>> >>>>>; - Loading source file "maxima-package.lisp"
>> >>>>>Loading maxima-package.lisp
>> >>>>>Finished loading maxima-package.lisp
>> >>>>>
>> >>>>>; - Compiling module "info"
>> >>>>>; - Compiling module "sloop"
>> >>>>>; - Compiling source file "sloop.lisp"
>> >>>>>Compiling sloop.lisp.
>> >>>>>; (DEFUN FIRST-SLOOP-FOR ...) is being compiled.
>> >>>>>;; The variable *LOOP-INCREMENT* is undefined.
>> >>>>>;; The compiler will assume this variable is a global.
>> >>>>>End of Pass 1.
>> >>>>>End of Pass 2.
>> >>>>>sloop.c:2:24: cmpinclude.h: No such file or directory
>> >>>>>sloop.c: In function `init_sloop':
>> >>>>>sloop.c:4: `object' undeclared (first use in this function)
>> >>>>>sloop.c:4: (Each undeclared identifier is reported only once
>> >>>>>sloop.c:4: for each function it appears in.)
>> >>>>>sloop.c:4: parse error before ')' token
--
Vadim V. Zhytnikov
<vvzhy@mail.ru>
<vvzhy@netorn.ru>
<vvzhy@yandex.ru>
<vvzhy@td.lpi.ac.ru>