Hello,
Wolfgang Dautermann writes:
Dear ECL-developers,
Can one crosscompile ECL for Windows (on a Linux based system)?
it should, but apparently it doesn't.
Currently it fails - both the latest release and the current GIT - with:
$ ./configure --host=i686-w64-mingw32 $ make [...] i686-w64-mingw32-gcc -DECLDIR=""/u2sr/local/lib/ecl-16.1.2"" -I. -I/tmp/ecl/build -I/tmp/ecl/src/c -I../ecl/gc -DECL_API -DECL_NO_LEGACY -g -O2 -D_THREAD_SAFE -Dmingw32 -c -o threads/process.o threads/process.o.c /tmp/ecl/src/c/threads/process.d:40:22: error: conflicting types for 'GC_CreateThread' extern HANDLE WINAPI GC_CreateThread( ^ In file included from /tmp/ecl/build/ecl/config.h:84:0, from /tmp/ecl/build/ecl/ecl.h:37, from /tmp/ecl/src/c/threads/process.d:20: /tmp/ecl/build/ecl/gc/gc.h:1536:26: note: previous declaration of 'GC_CreateThread' was here GC_API HANDLE WINAPI GC_CreateThread( ^ /tmp/ecl/src/c/threads/process.d: In function 'mp_exit_process': /tmp/ecl/src/c/threads/process.d:604:1: warning: 'noreturn' function does return Makefile:85: recipe for target 'threads/process.o' failed make[2]: *** [threads/process.o] Error 1 make[2]: Leaving directory '/tmp/ecl/build/c' Makefile:120: recipe for target 'libeclmin.a' failed make[1]: *** [libeclmin.a] Error 2 make[1]: Leaving directory '/tmp/ecl/build' Makefile:70: recipe for target 'all' failed make: *** [all] Error 2
What is the problem here?
It seems that we have patched bdwgc (external project) definitions in our project for Windows before the mentioned project did exaclty the same and we have a conflicting declaration.
That is defienetely ECL bug. I've created an issue on GitLab:
https://gitlab.com/embeddable-common-lisp/ecl/issues/288
there is some potential fix (I didn't include it, because of the comment in our own source code - this needs to be verified). If you could check, if the compilation finishes succesfully for you now with the mentioned diff applied, it would be great.
(Background: I developed a crosscompiled Windows installer for the (Lisp based) computer algebra system 'Maxima' (using 'Wine' (does ECL work with the emulator 'wine'?)), currently based on CLISP and SBCL - and probably I can support ECL too - but for that I should be able to crosscompile it.
Best regards, Wolfgang
Best regards, Daniel