Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

#140 cross compilation failure when ECL_LONG_FLOAT is not defined

open
nobody
None
5
2012-07-25
2011-02-02
Anton Vodonosov
No

I am building ECL on by a compiler which doesn't have function sinl, cosl, etc.
In result ECL_LONG_FLOAT=0 (see aclocal.m4 line 9).

During compilation I have the following error:

In function 'cl_coerce': lsp/predlib.c:1947: error: 'struct cl_core_struct' has no member named 'longfloat_zero'

I suppose (based on the acloca.m4 code) this may be reproduced by passing --enable_longdouble=no to the configure.

Discussion

  • Could you try this?

    • Enter the build directory
    • Execute
      ./ecl_min bare
    • At the prompt type
      features
      and look at the content. Is there :LONG-FLOAT??? Because otherwise I do not see how this reference to cl_core.long_float could have appeared!
     
  • Important thing I didn't specified, is that it's a cross compilation.

    Therefore ecl_min from the build machine ecl_min is used, but configure determines presence of sinl, cosl using the corss compiler.

    Here is the featues of fresh ecl_min (but not "ecl_min bare")

    (:UNAME :ECL-MIN :ECL-READ-WRITE-LOCK :LONG-LONG :UINT64-T :UINT32-T :UINT16-T :RELATIVE-PACKAGE-NAMES :LONG-FLOAT :CLOS-STREAMS :CMU-FORMAT :UNIX :ECL-PDE :DLOPEN :CLOS :THREADS :BOEHM-GC :ANSI-CL :COMMON-LISP :IEEE-FLOATING-POINT :PREFIXED-API :FFI :PENTIUM3 :COMMON :ECL).

    Also, here the features when ecl_min is in debugger after gcc failure:

    (:STAGE1 :DLOPEN :FORMATTER :LINUX :FORMATTER :WANTS-BYTECMP :WANTS-SOCKETS :WANTS-DLOPEN :CROSS :UNAME :ECL-READ-WRITE-LOCK :LONG-LONG :UINT64-T :UINT32-T :UINT16-T :RELATIVE-PACKAGE-NAMES :LONG-FLOAT :CLOS-STREAMS :CMU-FORMAT :UNIX :ECL-PDE :DLOPEN :CLOS :THREADS :BOEHM-GC :ANSI-CL :COMMON-LISP :IEEE-FLOATING-POINT :PREFIXED-API :FFI :PENTIUM3 :COMMON :ECL)

     
  • Of course, cross-compilation right now assumes that the features of the host and the target are the same. I know it is inconvenient, but we have not debugged the compiler to free it from host-dependent features.

    In the mean time, a workaround is to remove :LONG-FLOAT from FEATURES

     
  • Could you advice the best way to remove :LONG-FLOAT from features?

    ecl_min is started automatically by make, the question is how to hook into this process and customize features before the compilation happens

     
  • OK, I recompiled the build machine's ECL with --enable_longdouble=no so that both the "build" ECL and the "target/host" ECL are the same in this regard. This problem has gone. (Although I have another problem, with I'll report separately when I understand it better).

     


Anonymous


Cancel   Add attachments