[Ecls-list] Cannot set compiler flags for compile-file

szergling senatorzergling at gmail.com
Fri Jan 15 02:16:42 UTC 2010


Hi folks,

Firstly, I understand that I am messing with unpublished API, and
deserve all the trouble I got :) But if anyone has any tips on going
forward in the direction I'm stumbled into, please provide some
guidance.

I am having trouble on my (slightly funny and older) ECL trying to get
compile-file (fiddling with the compiler flags) to work.

Here's an example file:

(print "Hello")
(terpri)
;; (quit)

Here's me trying to compile the example file. I've kept the
intermediate .c, .h and data files just to confirm that they exist.

CL-USER> (trace compile-file)
(COMPILE-FILE)
CL-USER> (compile-file "/arpa/tz/t/tyc20/lisp/ecl-hello/hello.lisp"
:c-file t :h-file t :data-file t)
1> (COMPILE-FILE "/arpa/tz/t/tyc20/lisp/ecl-hello/hello.lisp" :C-FILE
T :H-FILE T :DATA-FILE T)
;;; Compiling /arpa/tz/t/tyc20/lisp/ecl-hello/hello.lisp.
;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=3
;;; End of Pass 1.
;;; Note: Invoking external command:
;;;   cc -I/usr/pkg/include -O2 -mieee -I/usr/pkg/include -mieee -fPIC
 -Dnetbsd -O "-I/arpa/tz/t/tyc20/lisp/imp/ecl/include/" -w -c
"/arpa/tz/t/tyc20/lisp/ecl-hello/hello.c" -o
"/arpa/tz/t/tyc20/lisp/ecl-hello/hello.o"
;;; Note: Invoking external command:
;;;   cc -o "/arpa/tz/t/tyc20/lisp/ecl-hello/hello.fas"
-L"/arpa/tz/t/tyc20/lisp/imp/ecl/lib/ecl-8.12.0/"
"/arpa/tz/t/tyc20/lisp/ecl-hello/hello.o"  -shared -L/usr/pkg/lib
-Wl,-R/usr/pkg/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib  -lecl   -lm
-lgc -lgmp
;;; (SYSTEM "cc -o \"/arpa/tz/t/tyc20/lisp/ecl-hello/hello.fas\"
-L\"/arpa/tz/t/tyc20/lisp/imp/ecl/lib/ecl-8.12.0/\"
\"/arpa/tz/t/tyc20/lisp/ecl-hello/hello.o\"  -shared -L/usr/pkg/lib
-Wl,-R/usr/pkg/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib  -lecl   -lm
-lgc -lgmp") returned non-zero value 1
<1 (COMPILE-FILE NIL T T)
NIL
T
T
CL-USER>

What seems to be going wrong, is that some compiler flags/options
don't seem to reflect what I needed, even though I think I have them
set to the right values. Here's how I've set them up:


(setf c::*ecl-include-directory* #P"/arpa/tz/t/tyc20/lisp/imp/ecl/include/")
(setf c::*ecl-library-directory* #P"/arpa/tz/t/tyc20/lisp/imp/ecl/lib")
(setf c::*ld-flags* "-L/arpa/tz/t/tyc20/lisp/imp/ecl/lib
-Wl,-R/arpa/tz/t/tyc20/lisp/imp/ecl/lib -lecl -lm -lgc -lgmp")
(setf c::*ld-shared-flags* "-shared
-L/arpa/tz/t/tyc20/lisp/imp/ecl/lib
-Wl,-R/arpa/tz/t/tyc20/lisp/imp/ecl/lib -lecl -lm -lgc -lgmp")

It feels to me like some of those flags cannot be changed (hard coded
in some way). I also think some functions have been inlined because I
couldn't trace them (eg C::SHARED-CC, C::BUNDLE-EXTRA-FLAGS, or
C::BUNDLE-CC), with the exception of COMPILE-FILE as seen above.

Not sure what other information I can provide to help, but here's how
I run ECL. I initially got my the ECL binary from

ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/alpha/4.0/lang/ecl%2d8.12.0.tgz

I don't know the configure options. The binary has not been installed
using pkgsrc or what not, and sits as is in my ~/lisp/imp/ecl
directory. I don't know how all that packaging stuff works, and
probably don't have the right permissions anyway. For completeness, I
have tried to show as much as possible below, but I'm not sure what is
useful, so if there is any other information I can help with, do ask.

How I run ECL:

export ECL_PATH=/arpa/tz/t/tyc20/lisp/imp/ecl

LD_LIBRARY_PATH=$ECL_PATH/lib $ECL_PATH/bin/ecl -dir
$ECL_PATH/lib/ecl-8.12.0/ -eval '(progn (load
"/arpa/tz/t/tyc20/lisp/libs/slime/swank-loader.lisp") (funcall (intern
"INIT" :swank-loader)))'


Directory structure:

~/lisp/imp/ecl $ pwd
/arpa/tz/t/tyc20/lisp/imp/ecl
~/lisp/imp/ecl $ ls
+BUILD_INFO    +CONTENTS      +INSTALL       bin            lib
+BUILD_VERSION +DEINSTALL     +SIZE_ALL      ecl-8.12.0.tgz
+COMMENT       +DESC          +SIZE_PKG      include
~/lisp/imp/ecl $ ls -l bin
total 20
-r-xr-xr-x  1 tyc20  arpa  7528 Apr 22  2009 ecl
-r-xr-xr-x  1 tyc20  arpa   646 Apr 22  2009 ecl-config
~/lisp/imp/ecl $ ls -l lib/ecl-8.12.0/
total 4740
-r--r--r--  1 tyc20  arpa     511 Apr 22  2009 BUILD-STAMP
-r-xr-xr-x  1 tyc20  arpa  156056 Apr 22  2009 asdf.fas
-r-xr-xr-x  1 tyc20  arpa  812640 Apr 22  2009 cmp.fas
-r-xr-xr-x  1 tyc20  arpa  170840 Apr 22  2009 defsystem.fas
-r--r--r--  1 tyc20  arpa   89903 Apr 22  2009 dpp
-r--r--r--  1 tyc20  arpa  698173 Apr 22  2009 ecl_min
-r--r--r--  1 tyc20  arpa  186542 Apr 22  2009 help.doc
-r-xr-xr-x  1 tyc20  arpa   40496 Apr 22  2009 profile.fas
-r-xr-xr-x  1 tyc20  arpa   30560 Apr 22  2009 rt.fas
-r-xr-xr-x  1 tyc20  arpa   22800 Apr 22  2009 serve-event.fas
-r-xr-xr-x  1 tyc20  arpa   97096 Apr 22  2009 sockets.fas
-r--r--r--  1 tyc20  arpa   64460 Apr 22  2009 sysfun.lsp
~/lisp/imp/ecl $ ls -l lib
total 3716
drwx------  2 tyc20  arpa      512 Dec  2 21:50 ecl-8.12.0
lrwx------  1 tyc20  arpa       16 Apr 22  2009 libecl.so -> libecl.so.8.12.0
lrwx------  1 tyc20  arpa       16 Apr 22  2009 libecl.so.8 -> libecl.so.8.12.0
lrwx------  1 tyc20  arpa       16 Apr 22  2009 libecl.so.8.12 ->
libecl.so.8.12.0
-r-xr-xr-x  1 tyc20  arpa  1875048 Apr 22  2009 libecl.so.8.12.0
lrwx------  1 tyc20  arpa       26 Jan  6 22:22 libgc.so ->
../../deps/gc/lib/libgc.so
lrwx------  1 tyc20  arpa       28 Jan  6 22:24 libgmp.so ->
../../deps/gmp/lib/libgmp.so
lrwx------  1 tyc20  arpa       16 Jan  6 22:28 libm.so -> /usr/lib/libm.so


The libgc.so, libgmp.so, and libm.so links were added by me, and point
to libraries I downloaded manually. Yes, this is all very painful :)

Additional info on my OS, etc:

~/lisp/imp/ecl $ uname -a
NetBSD otaku 4.0.1_PATCH NetBSD 4.0.1_PATCH (sdf) #0: Sun Dec 27
18:44:24 UTC 2009
root at iceland:/var/netbsd/src/sys/arch/alpha/compile/sdf alpha

CL-USER> *features*
(:NETBSD :FORMATTER :IEEE-FLOATING-POINT :RELATIVE-PACKAGE-NAMES :CLOS-STREAMS
 :CMU-FORMAT :ECL-PDE :DLOPEN :CLOS :BOEHM-GC :ANSI-CL :COMMON-LISP :ECL
 :COMMON :ALPHA :FFI :PREFIXED-API)
CL-USER> (lisp-implementation-version)
"8.12.0 (CVS 2008-07-12 18:54)"
CL-USER> (list c::*cc-flags* c::*ld-flags* c::*ld-shared-flags*
               c::*ecl-include-directory* c::*ecl-library-directory*)
("-I/usr/pkg/include -O2 -mieee -I/usr/pkg/include -mieee -fPIC  -Dnetbsd"
 "-L/arpa/tz/t/tyc20/lisp/imp/ecl/lib
-Wl,-R/arpa/tz/t/tyc20/lisp/imp/ecl/lib -lecl -lm -lgc -lgmp"
 "-shared -L/arpa/tz/t/tyc20/lisp/imp/ecl/lib
-Wl,-R/arpa/tz/t/tyc20/lisp/imp/ecl/lib -lecl -lm -lgc -lgmp"
 "/arpa/tz/t/tyc20/lisp/imp/ecl/include/"
 "/arpa/tz/t/tyc20/lisp/imp/ecl/lib/ecl-8.12.0/")

Here's another funny thing I just noticed:

After the appropriate setf to *ecl-library-directory*:

CL-USER> c::*ecl-library-directory*
#P"/arpa/tz/t/tyc20/lisp/imp/ecl/lib"
CL-USER> (compile-file "/arpa/tz/t/tyc20/lisp/ecl-hello/hello.lisp"
:c-file t :h-file t :\
data-file t)

...snipped...

;;;   cc -o "/arpa/tz/t/tyc20/lisp/ecl-hello/hello.fas"
-L"/arpa/tz/t/tyc20/lisp/imp/ecl/lib/ecl-8.12.0/"
"/arpa/tz/t/tyc20/lisp/ecl-hello/hello.o"  -shared -L/usr/pkg/lib
-Wl,-R/usr/pkg/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib  -lecl   -lm
-lgc -lgmp

...snipped...

CL-USER> c::*ecl-library-directory*
"/arpa/tz/t/tyc20/lisp/imp/ecl/lib/ecl-8.12.0/"

The library directory is only initialisable at startup time with the -dir from
the looks of it.

It looks like my problems might be related to the issue faced by Andy
Hefner in his 2010-01-07 email. Any help would be appreciated, thanks!

Theam Yong Chew.




More information about the ecl-devel mailing list