gcl-devel
[Top][All Lists]
Advanced

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

Re: [Gcl-devel] Re: gcl-2.6.8


From: Camm Maguire
Subject: Re: [Gcl-devel] Re: gcl-2.6.8
Date: Sun, 08 Aug 2010 23:28:38 -0400
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux)

Greetings!

Gabriel Dos Reis <address@hidden> writes:

> Hi Camm,
>
> Camm Maguire <address@hidden> writes:
>
> | Greetings!
> | 
> | OK, I've committed an immediate fix to your compiler link problem.  I
> | don't know how this ever worked on windows, but gcl needs to figure
> | out the init name for each lisp .o passed to compiler link, and this
> | simply failed with an unsupported error.
>
> Ah!  I've attached to this mail the OpenAxiom build log with a trace of
> SYSTEM.  The build still fails at the same point.  However, I do not see
> anything obviously wrong with call to SYSTEM.
>
> Here are some facts:
>   (1) the executable base-lisp.exe created with SAVE properly works.
>

Great!

>   (2) we use base-lisp.exe to create a new image lisp.exe that contains 
>       all our C functions, theough COMPILER::LINK.  An 'executable'
>       lisp.exe is created.  But it does not seem to be doing anything at
>       all.  Also, I find it bizarre that its size is far less than that
>       of base-lisp.exe:
>
> $ ls -l src/lisp/*.exe
> -rwxr-xr-x 1 gdr Administrators 10428312 Aug  7 10:02 src/lisp/base-lisp.exe
> -rwxr-xr-x 1 gdr Administrators  4728040 Aug  7 10:02 src/lisp/lisp.exe
> -rwxr-xr-x 1 gdr Administrators   525884 Aug  7 10:02 
> src/lisp/raw_lisp_map.exe
> -rwxr-xr-x 1 gdr Administrators    19232 Aug  7 10:02 src/lisp/rsym.exe
>  

See below.

> | Separately, we have a number of wine path issues to work out.
> | 
> | It is useful to build under wine, and I'd like the tree to do this
> | transparently.  In order to do this, all executables but one are built
> | with mingw compilers, the exception being unixport/msys.  
> | 
> | I had this originally to get around a global CC setting:
> | 
> |     PATH=/usr/bin:$$PATH cc $< -o $@ # Unix binary if running wine
> | 
> | but Don' system had no cc, so I replaced with
> | 
> |     PATH=/usr/bin:$$PATH $(CC) $< -o $@ # Unix binary if running wine
> | 
> | now, which defeats the wine purpose, as $(CC) picks up the mingw
> | compiler.
>
> Do you have a list of the executables that need to be built with the
> host compiler, and the one that needs to be built with the target compiler?
> It is true that under msys/mingw there is no 'cc';  Only 'gcc' (or some
> other variants for cross-compilation.)
>

I'm going to try 'gcc' in the makefile, OK Donald?  Only one gcl file
needs building as a unix binary -- 'msys'.  (found in
unixport/msys.c).

> | Secondly, to build under wine, all pathnames passed through system
> | need to be absolute.  The standard gcl 'compile and 'compile-file do
> | this automatically.  Likewise, link can easily handle the files list
> | argument, and the destination executable, etc.  But the files in
> | extra-libs have to be parsed as a string, and distinctions made
> | between genuine files and options like -lm.  
>
> Hardcoding absolute path for OpenAxiom itself has proved to create lot
> of troubles (the same is true for FriCAS, and probaly Tim's Axiom I think.)
> So, we use path relative to the final installation directory (which is
> absolute of course.)  The relative paths make it possible to:
>   (1) build and test in the build directory
>   (2) install and run from final directory
>   (3) possibly moving the entire system around -- this is useful for some
>       people who want to move the system to USB keys, etc.
>

OK, I think I can do this within lisp for compiler link.

>
> | You also redirect compiler::*cc* to libtool.  This might work, but
> | again the path needs to be absolute for wine testing.
>
> Ideally we would like to use libtool for linking purposes (that is what
> we do with Lisps that support dynamic linking) as it takes care of lots
> of platform dependency stuff for us.  However, on msys/mingw it is not
> used at all (as you can see from the Makefile and the build.log attached
> to this message.)  I will install wine and see what is going wrong there.
>

OK, again this is tractable as is.

> | Finally, your axiom configure does not propagate the CC setting, so
> | bsdsignal etc are compiled as elf by the normal system gcc.
>
> That is odd.  I'll look into that and update you.  I believe it is just
> a cross-compilation issue.  Apparently the current build assumes a
> native build, whereas when you use wine you are doing a cross-compilation.
> It should not be hard to fix that -- I know OpenAxiom's build system was
> originally designed to support cross-compilation; so I think this should
> be easy to fix.

OK.  gcl builds natively as a mingw binary under wine, and is not
cross-compiled.  mingw binaries need to run as part of the build
process.  I just set CC and PATH, enable wine binaries as valid
binfmts on my Debian linux system, do ./configure --host=mingw32, and
everything in gcl works as if I was on windows, sans the
no-wait-on-system() issue.  With the same system settings, but without
the --host command to axiom's configure, open-axiom picked up the
native gcc to compile the system extras linked in via compiler::link.
(I think).
 
>
> In the build.log below, do you spot anything obviously wrong with the
> invokation of COMPILER::LINK?
>

> Thanks!
>
> -- Gaby
>
> gcl -batch \
>               -eval '(progn (compile-file "core.lisp") (quit))'
>
> Compiling core.lisp.
> End of Pass 1.  
>
> ;; Note: Tail-recursive call of |processCommandLine| was replaced by 
> iteration.
> ;; Note: Tail-recursive call of |processCommandLine| was replaced by 
> iteration.
> ;; Note: Tail-recursive call of DO-IMPORT-MODULE was replaced by iteration.
> End of Pass 2.  
> OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3
> Finished compiling core.lisp.
> gcl \
>               -eval '(load "core")' \
>               -eval '(|AxiomCore|::|link| "base-lisp.exe" (quote nil) 
> "|AxiomCore|::|topLevel|")'
> GCL (GNU Common Lisp)  2.6.8 CLtL1    Aug  6 2010 11:40:11
> Source License: LGPL(gcl,gmp), GPL(unexec,bfd,xgcl)
> Binary License:  GPL due to GPL'ed components: (UNEXEC)
> Modifications of this banner must retain notice of a compatible license
> Dedicated to the memory of W. Schelter
>
> Use (help) to get some basic information on how to use GCL.
> Temporary directory for compiler files set to ../../build/i686-pc-mingw32/
> Warning: SYSTEM is being redefined.d=`echo "(format nil \"~a\" 
> si::*system-directory*)" | gcl | grep "/gcl.*/" | sed -e "s,\",,g"`; cp 
> $d/rsym.exe .
> echo '(let* ((sys-cc compiler::*cc*) ' \
>            '      (sys-ld compiler::*ld*) ' \
>            '      (compiler::*cc* (concatenate (quote string) ' \
>            '                                   ""    ' \
>            '                                   sys-cc))       ' \
>            '      (compiler::*ld* (concatenate (quote string) ' \
>            '                                   ""    ' \
>            '                                   sys-ld)))       ' \
>              '(compiler::link (quote ("core.lisp")) "lisp.exe" ' \
>              ' (format nil "(progn (let ((*load-path* (cons ~S *load-path*))'\
>                                         ' (si::*load-types* ~S)))' \
>                                   ' (when (fboundp (quote si::sgc-on))' \
>                                         ' (si::sgc-on nil))' \
>                                 ' (setq si::*top-level-hook* 
> (read-from-string \"|AxiomCore|::|topLevel|\")))"' \
>                       ' si::*system-directory* (quote (list ".lsp")))' \
>                '  "./../../src/lib/bsdsignal.o ./../../src/lib/cfuns-c.o 
> ./../../src/lib/sockio-c.o -lwsock32 -lm"))' \
>             | ./base-lisp.exe
> GCL (GNU Common Lisp)  2.6.8 CLtL1    Aug  6 2010 11:40:11
> Source License: LGPL(gcl,gmp), GPL(unexec,bfd,xgcl)
> Binary License:  GPL due to GPL'ed components: (UNEXEC)
> Modifications of this banner must retain notice of a compatible license
> Dedicated to the memory of W. Schelter
>
> Use (help) to get some basic information on how to use GCL.
> Temporary directory for compiler files set to ../../build/i686-pc-mingw32/
>
> AxiomCore>
>   1> (SYSTEM "gcc -c -Wall -DVOL=volatile -fsigned-char -pipe 
> -fno-zero-initialized-in-bss -mms-bitfields -march=i386  
> -IC:/msys/1.0/local/lib/gcl-2.6.8/unixport/../h  -O3  -c -w \"./user-init.c\" 
> -o \"./user-init.o\"")
>   <1 (SYSTEM 0 0)
>   1> (SYSTEM "gcc  -o  raw_lisp.exe ./user-init.o  
> -LC:/msys/1.0/local/lib/gcl-2.6.8/unixport/ -Wl,-Map raw_lisp_map.exe  
> C:/msys/1.0/local/lib/gcl-2.6.8/unixport/../o/firstfile.o  -lgcl -lm 
> -lmingwex  -lwsock32  -lgclp 
> C:/msys/1.0/local/lib/gcl-2.6.8/unixport/../o/lastfile.o 
> ./../../src/lib/bsdsignal.o ./../../src/lib/cfuns-c.o 
> ./../../src/lib/sockio-c.o -lwsock32 -lm")

I think the issue is here.  firstfile.o has to be first, and
lastfile.o last on the link line.  You can try this by hand and see if
it works if you like.  compiler::link will need to rewrite the link
command if so.  Again, a simple fix, if it works for you.

Has this ever been tested on mingw before?

Take care,


>   <1 (SYSTEM 0 0)
>   1> (SYSTEM "raw_lisp.exe C:/msys/1.0/local/lib/gcl-2.6.8/unixport/ < 
> init_lisp.lsp")
> GCL (GNU Common Lisp)  April 1994  131072 pages
> Building symbol table for 
> c:/Docume~1/gdr/Desktop/sandbox/oa-build/src/lisp/raw_lisp.exe ..
> loading C:/msys/1.0/local/lib/gcl-2.6.8/unixport/../lsp/gcl_export.lsp
> Initializing gcl_defmacro.o
> Initializing gcl_evalmacros.o
> Initializing gcl_top.o
> Initializing gcl_module.o
> loading C:/msys/1.0/local/lib/gcl-2.6.8/unixport/../lsp/gcl_autoload.lsp
>
>>
> ("core")
>
>>
> #<"COMPILER" package>
>
>>
> #<"SLOOP" package>
>
>>
> #<"SERROR" package>
>
>>
> #<"ANSI-LOOP" package>
>
>>
> #<"DEFPACKAGE" package>
>
>>
> #<"TK" package>
>
>>
> #<"SYSTEM" package>
>
> SYSTEM>
> *COMMAND-ARGS*
>
> SYSTEM>Initializing gcl_predlib.o
> Initializing gcl_setf.o
> Initializing gcl_arraylib.o
> Initializing gcl_assert.o
> Initializing gcl_defstruct.o
> Initializing gcl_describe.o
> Initializing gcl_iolib.o
> Initializing gcl_listlib.o
> Initializing gcl_mislib.o
> Initializing gcl_numlib.o
> Initializing gcl_packlib.o
> Initializing gcl_seq.o
> Initializing gcl_seqlib.o
> Initializing gcl_trace.o
> Initializing gcl_sloop.o
> Initializing gcl_serror.o
> Initializing gcl_destructuring_bind.o
> Initializing gcl_loop.o
> Initializing gcl_defpackage.o
> Initializing gcl_make_defpackage.o
> Initializing gcl_cmpinline.o
> Initializing gcl_cmputil.o
> Initializing gcl_debug.o
> Initializing gcl_info.o
> Initializing gcl_cmptype.o
> Initializing gcl_cmpbind.o
> Initializing gcl_cmpblock.o
> Initializing gcl_cmpcall.o
> Initializing gcl_cmpcatch.o
> Initializing gcl_cmpenv.o
> Initializing gcl_cmpeval.o
> Initializing gcl_cmpflet.o
> Initializing gcl_cmpfun.o
> Initializing gcl_cmpif.o
> Initializing gcl_cmplabel.o
> Initializing gcl_cmplam.o
> Initializing gcl_cmplet.o
> Initializing gcl_cmploc.o
> Initializing gcl_cmpmap.o
> Initializing gcl_cmpmulti.o
> Initializing gcl_cmpspecial.o
> Initializing gcl_cmptag.o
> Initializing gcl_cmptop.o
> Initializing gcl_cmpvar.o
> Initializing gcl_cmpvs.o
> Initializing gcl_cmpwt.o
>
> Loading /msys/1.0/local/lib/gcl-2.6.8/unixport/../lsp/sys-proclaim.lisp
> Finished loading 
> /msys/1.0/local/lib/gcl-2.6.8/unixport/../lsp/sys-proclaim.lisp
> Loading /msys/1.0/local/lib/gcl-2.6.8/unixport/../cmpnew/sys-proclaim.lisp
> Finished loading 
> /msys/1.0/local/lib/gcl-2.6.8/unixport/../cmpnew/sys-proclaim.lisp
> Loading /msys/1.0/local/lib/gcl-2.6.8/unixport/../gcl-tk/tk-package.lsp
> Finished loading 
> /msys/1.0/local/lib/gcl-2.6.8/unixport/../gcl-tk/tk-package.lsp
> Loading /msys/1.0/local/lib/gcl-2.6.8/unixport/../cmpnew/gcl_cmpmain.lsp
> Warning: COMPILE-FILE is being redefined.
> Warning: COMPILE is being redefined.
> Warning: DISASSEMBLE is being redefined.
> Finished loading 
> /msys/1.0/local/lib/gcl-2.6.8/unixport/../cmpnew/gcl_cmpmain.lsp
> Loading /msys/1.0/local/lib/gcl-2.6.8/unixport/../cmpnew/gcl_lfun_list.lsp
> Finished loading 
> /msys/1.0/local/lib/gcl-2.6.8/unixport/../cmpnew/gcl_lfun_list.lsp
> Loading /msys/1.0/local/lib/gcl-2.6.8/unixport/../cmpnew/gcl_cmpopt.lsp
> Finished loading 
> /msys/1.0/local/lib/gcl-2.6.8/unixport/../cmpnew/gcl_cmpopt.lsp
> Loading /msys/1.0/local/lib/gcl-2.6.8/unixport/../lsp/gcl_auto_new.lsp
> Finished loading 
> /msys/1.0/local/lib/gcl-2.6.8/unixport/../lsp/gcl_auto_new.lsp
>
> Loading core.lisp...
> Warning: SYSTEM is being redefined.Finished core.lisp...
>
> T
>
>>
> |AxiomCore|::|topLevel|
>
>>  <1 (SYSTEM 0 0)
> "lisp.exe"
>
> AxiomCore>mkdir -p ../../build/i686-pc-mingw32/bin
> cp -p lisp.exe ../../build/i686-pc-mingw32/bin
> echo timestamp > stamp
> make[2]: Leaving directory `/home/gdr/Desktop/sandbox/oa-build/src/lisp'
> make[2]: Entering directory `/home/gdr/Desktop/sandbox/oa-build/src/boot'
> mkdir -p stage2
> echo timestamp > stage2/.started
> ../lisp/lisp.exe -- --compile --output=stage2/initial-env.o 
> ../../../open-axiom.svn/trunk/src/boot/initial-env.lisp
> make[2]: *** [stage2/initial-env.o] Error 5
> make[2]: Leaving directory `/home/gdr/Desktop/sandbox/oa-build/src/boot'
> make[1]: *** [all-boot] Error 2
> make[1]: Leaving directory `/home/gdr/Desktop/sandbox/oa-build/src'
> make: *** [all-src] Error 2
>
>
>
>

-- 
Camm Maguire                                        address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah



reply via email to

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