#140 cross compilation failure when ECL_LONG_FLOAT is not defined

Anton Vodonosov

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.


  • Could you try this?

    • Enter the build directory
    • Execute
      ./ecl_min bare
    • At the prompt type
      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")


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


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



Cancel   Add attachments