Cross-compilation of user code

The main changes are:

  • User interface: with-compilation-unit and compile-file get a new :target argument.
  • Build procedure: when cross-compiling ECL, the information about the target environment gets dumped to a file which is installed alongside the rest of ECL. The information in this file ends up in the new :target argument to compile-file.
  • Compiler: various changes to select target dependent code paths or data structures based on runtime information instead of static dispatch at compile time.
  • Tests: new cross compilation test framework that allows for running our own tests and the ansi-tests in an environment where compile and compile-file dispatches to another version of ECL that cross compiles to the target on which the tests are run.

ASDF integration is left for future work.

@jackdaniel: I think the discussion in the documentation about possible issues one might encounter when cross compiling Common Lisp could also be expanded into a post on our website. In my opinion this is of interest for anyone thinking about cross compiling Lisp and as far as I know, these kind of issues haven't been discussed anywhere else. What do you think?

Merge request reports

Loading