Files need to be marked properly for compiling
We essentially have 3 compilers with 2 compile extensions and files marked with only one of 2 FILETYPE's. We won't be able to automatically recompile the whole system until the FILETYPE's get properly aligned with the compilers.
The compilers: BCOMPL/TCOMPL(BRECOMPILE): produces LCOM, FILETYPE is BCOMPL (or maybe NIL) CL:COMPILE-FILE: produces DFASL, FILETYPE is CL:COMPILE-FILE (no per-function recompiling FAKE-COMPILE-FILE: Also produces LCOM using the byte compiler, but no per function RE-FAKE-COMPILE-FILE
Some files that currently have .LCOM must be compiled with either CL:COMPILE-FILE or FAKE-COMPILE-FILE. These are files that have DEFUN, DEFOPTIMIZER, maybe some other commonlisp things. It appears that at least some of these are marked with COMPILE-FILE, and it seems that CLEANUP will invoke CL:COMPILE-FILE for those to produce a correct DFASL. But then we have both an LCOM and a DFASL for the same file, and it isn't clear which one will get loaded.
FAKE-COMPILE-FILE appears to compile the commonlisp expressions correctly, to produce the .LCOM. LCOM's have the advantage over DFASLs that individual functions can be LOADFNSed.
As a first step towards consistency, the FILETYPE property for all files that have corresponding .LCOM (and not DFASL) FILETYPE properties should be changed from COMPILE-FILE to FAKE-COMPILE-FILE. If all the properties are correct (in particular, all files with problematic commonlisp components are marked as FAKE-COMPILE-FILE or COMPILE-FILE), it should be possible to automatically compile everything (with exports.all loaded).
Also, a user-level interface function should be provided that selects the right compiler (with an argument that specifies what functions must be recompiled, if the compiler can support that feature). Currently, that selection for CLEANUP happens somewhere down in MAKEFILE, it should be brought out.
if we are going to get to the point where we can make changes to the Maiko virtual machine and recompile everything, this is essential.