Hi, ECL community
I met some problems when compiling usocket on ECL 9.4.0, below is the
error outputs:
=============
;;; gcc -g -O2 -fPIC -fno-common -D_THREAD_SAFE -Ddarwin -O "-I/
Users/binghe/include/" -w -c "/private/var/folders/3x/
3xMxiHaQGSqRfjv9Z200B++++TI/-Tmp-/ECLINIThcmJG7.c" -o "/private/var/
folders/3x/3xMxiHaQGSqRfjv9Z200B++++TI/-Tmp-/ECLINIThcmJG7.o"
;;; Note: Invoking external command:
Undefined symbols:
"_cl_alloc_atomic", referenced from:
_L2fdset_alloc in sbcl.o
_L7get_host_name in sbcl.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
(SYSTEM "gcc -o \"/Volumes/User/Lisp/usocket/trunk/backend/sbcl.fas\" -
L\"/Users/binghe/lib/\" \"/private/var/folders/3x/3xMxiHaQGSqRfjv9Z200B
++++TI/-Tmp-/ECLINIThcmJG7.o\" \"/Volumes/User/Lisp/usocket/trunk/
backend/sbcl.o\" -bundle -lecl -lpthread -lm ") returned non-
zero value 1
;;; gcc -o "/Volumes/User/Lisp/usocket/trunk/backend/sbcl.fas" -L"/
Users/binghe/lib/" "/private/var/folders/3x/3xMxiHaQGSqRfjv9Z200B+++
+TI/-Tmp-/ECLINIThcmJG7.o" "/Volumes/User/Lisp/usocket/trunk/backend/
sbcl.o" -bundle -lecl -lpthread -lm Broken at
SI:BYTECODES.Available restarts:
1. (CONTINUE) Continues anyway.
2. (TRY-RECOMPILING) Try recompiling sbcl
3. (RETRY) Retry performing #<ASDF:COMPILE-OP NIL 29930936> on
#<ASDF:CL-SOURCE-FILE "sbcl" "usocket" 29830384>.
4. (ACCEPT) Continue, treating #<ASDF:COMPILE-OP NIL 29930936> on
#<ASDF:CL-SOURCE-FILE "sbcl" "usocket" 29830384> as having been
successful.
=============
I think following code in usocket break above build:
(defun fdset-alloc ()
(ffi:c-inline () () :pointer-void
"cl_alloc_atomic(sizeof(fd_set))" :one-liner t))
It seems that the function "cl_alloc_atomic" doesn't exist anymore.
1. What should we (usocket) do instead in ECL 9.4.0?
2. Is there anyway to detect the exist of "cl_alloc_atomic" in any ECL
versions? (ECL doesn't put any version information in CL *features*,
and we (usocket) want to support more ECL versions as many as possible)
Regards,
Chun Tian (binghe)