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: Gabriel Dos Reis
Subject: Re: [Gcl-devel] Re: gcl-2.6.8
Date: Sat, 07 Aug 2010 10:28:31 -0500

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.

  (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
 
| 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.)

| 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.


| 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.

| 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.

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")
  <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



reply via email to

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