I have split the change into two, as I normally do in the ECL source tree itself.
The first change only pertains asdf.lisp and it adds a slot, FLAGS, to COMPILE-OP. These are additional flags for COMPILE-FILE. It is used by ECL because we want to produce two files per source file: an object file and the FASL itself. These files can be separately used for building larger things (shared libraries, programs...) or for immediate loading.
The second set of changes is isolated in a single file, asdf-ecl.lisp, which is more complex. This file contains a number of extensions, which may or may not be adapted to other platforms (I believe it is possible, at least for some things). What it implements:
- COMPILED-FILE, a new component for distribution of pre-compiled files. I use it to build pre-packaged versions of RT, the compiler and other things that now can be included as dependencies.
- A number of operations for creating shared libraries, programs, etc. These operations use traverse in a funny way to find out the order in which files should be combined. I call them BUNDLEs because the result is a single binary file that combines many lisp sources, compiled. It has an important advantage for ECL, apart from distribution, for it takes less resources to load a single file.
- A function, MAKE-BUILD, which uses those operations hiding the details.
- A new operation, LOAD-FASL-OP, which uses those "bundles".
- A hook into REQUIRE using LOAD-FASL-OP.
What is implemented more or less follows this http://ecls.sourceforge.net/new-manual/ch16.html Comments are welcome.
Juanjo