On 2016-09-16 10:36, Daniel KochmaĆski wrote:
Wolfgang Dautermann writes:
Dear ECL-developers,
Can one crosscompile ECL for Windows (on a Linux based system)?
it should, but apparently it doesn't.
Dear ECL-developers,
I think it works now. If someone wants to try it - get http://wolfgang.dautermann.at/ecl/ecl-crosscompiling.tar.gz and follow the instructions from http://wolfgang.dautermann.at/ecl/ecl-crosscompiling/Readme-crosscompiling.t...
This will get & compile libgmp (currently needed for the host-ecl), then ECL (currently the most recent GIT commit from the 'build-clean' branch - and currently fixed to that commit since I need to include a patch (http://wolfgang.dautermann.at/ecl/ecl-crosscompiling/ecl-uname-mingw.patch). Then ECL will be build twice - first for Linux (ecl-host), then for Windows and an installer is created. (tested on Debian/Ubuntu). The crosscompiled ECL was tested with Wine/Linux and Windows10. You can get the compiled installer also from: http://wolfgang.dautermann.at/ecl/ecl-crosscompiling
If you find it useful, feel free to include my code in ECL.
Some minor issues: I build ECL currently with the bytecode compiler (--with-cmp=no) - as the current Windows installer is build. That works, but if I try a compile example from https://common-lisp.net/project/ecl/manual/ch34s06.html it seems to try the native compiler:
(compile-file "hello.lisp")
Condition of type: FILE-ERROR Filesystem error with pathname #P"SYS:CMP.NEWEST".
Shouldnt a bytecode compiler be invoked, if ECL is configured with "--with-cmp=no"?
I can also build it *with* a C compiler (= without "--with-cmp=no" (my idea is to include tdm-gcc (https://sourceforge.net/projects/tdm-gcc/), but the issue is:
During the compiliaton of ECL I need the crosscompiler (i686-w64-mingw32-gcc). It does build fine with that.
But in the installed ECL (when it runs on Windows (or in Wine)) I would need the native compiler (from the tdm-gcc project). ECL seems to use the same compiler (when configured with "./configure --host=i686-w64-mingw32") for building and execution afterwards. Is there a way to specify a distinct compiler (linker, etc.) which will be invoked when the installed ECL runs?
Best regards, Wolfgang