Crosscompiling ECL for Windows

Daniel Kochmański daniel at turtleware.eu
Wed Nov 16 15:57:31 UTC 2016


Wolfgang Dautermann writes:

> On 2016-11-14 16:20, Daniel Kochmański wrote:
>> Your patch added to the develop branch.
>> 
>> Best regards,
>> Daniel
>
> Thank you. That branch I could not (cross)compile. The native
> compiliation works, but when I crosscompile, I get error messages, where
> I was not able to find the reason:
>
> First the 'preprocessor' emits some warnings:
>
>
> dpp:
> /home/dauti/Software/ecl-crosscompiling/build/ecl-prefix/src/ecl/src/c/symbol.d
> -> c/symbol.c
> dpp:
> /home/dauti/Software/ecl-crosscompiling/build/ecl-prefix/src/ecl/src/c/package.d
> -> c/package.c
>
> Unknown symbol: si::*ignore-package-locks*
>
> Unknown symbol: si::*ignore-package-locks*
>
>
> And later there are compilation errors because of this unknown symbol:
>
> Compiling c/package.o...
> In file included from ./ecl/ecl.h:89:0,
>                  from
> /home/dauti/Software/ecl-crosscompiling/build/ecl-prefix/src/ecl/src/c/package.d:16:
> /home/dauti/Software/ecl-crosscompiling/build/ecl-prefix/src/ecl/src/c/package.d:
> In function ‘ecl_rename_package’:
> /home/dauti/Software/ecl-crosscompiling/build/ecl-prefix/src/ecl/src/c/package.d:250:22:
> error: ‘unknown’ undeclared (first use in this function)
>                       @'si::*ignore-package-locks*') == ECL_NIL) {
>                       ^
> ./ecl/stacks.h:59:47: note: in definition of macro ‘ECL_SYM_VAL’
>  # define ECL_SYM_VAL(env,s) (ecl_bds_read(env,s))
>
> (further errors follow).                                               ^
>

It seems, that your host ECL has different version than sources you
compile. Make sure, that you remove build/ directory (for instance with
make distclean), rebuild host ECL and cross-compile target ECL with the
new host.

>
> But the "build-clean" branch (which you recommended, that I should use)
> is okay (with that patch) - no errors occur there.

develop branch has now build-clean branch merged. Please use it instead
now. Thanks.

> Hm. If both compilers (bytecode & C) are enabled, how can one select
> which one should be used? Or which should be the default?

as you have mentioned, you should use ext:install-bytecodes-compiler or
ext:install-c-compiler

> Somewhere I found that
> "(ext::install-bytecodes-compiler)" works. This should probably be added
> to the manual where compiliation mentioned
> (https://common-lisp.net/project/ecl/manual/ch34s06.html)

> That seems to work now. And if I call ecl with
> ecl.exe --eval "(ext::install-bytecodes-compiler)" [further parameters]
> the bytecode compiler is called by default. Perhaps I am able to
> crosscompile Maxima with it. There is no easier command line option (or
> configuration value somewhere) for that?

Not yet. bytecodes compiler is usually installed by default on Windows
though.

Best regards,
Daniel

-- 
Daniel Kochmański ;; aka jackdaniel | Przemyśl, Poland
TurtleWare - Daniel Kochmański      | www.turtleware.eu

"Be the change that you wish to see in the world." - Mahatma Gandhi



More information about the ecl-devel mailing list