Cross-compilation of user code
The main changes are:
- User interface:
with-compilation-unitandcompile-fileget a new:targetargument. - 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
:targetargument tocompile-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
compileandcompile-filedispatches 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?