Date: From: Richard Jones <rich@a...> Subject: ANNOUNCE: Windows cross-compiler (was: Re: [Caml-list] OCaml 3.11.0+beta1 cross-compiler)

[Oh well, the overwhelming rush of answers seems to indicate we are entering into new territory here ...] Here is a Linux -> Win32 OCaml cross-compiler, developed and sponsored by Red Hat's Fedora MinGW project[1]. Red Hat are sponsoring this project so that we can build our OCaml virt tools for Windows without the hassle of using Windows. http://hg.et.redhat.com/misc/fedora-mingw--devel/ (There is no direct link - to get the latest version you have to click "manifest" then "ocaml"). If you're not familiar with RPM builds, then start with the .spec file and the patches. Pay close attention to the 'BuildRequires' which are the parts of the MinGW project you will need to build it - in particular, we use a version of FlexDLL which we have modified for cross-compilation. It's probably best to say what does work, because the list of what _doesn't_ work is quite long. But with this you get: i686-pc-mingw32-ocamlopt The cross-compiler replacement for ocamlopt (bytecode so you need a corresponding ocamlrun interpreter to use it) *.cmx, *.cmxa The usual OCaml stdlib libraries, eg. nums, dynlink, unix, threads (only lightly tested) eg: $ cat /tmp/test.ml open Printf let () = printf "reported os_type = %S

" Sys.os_type; printf "ok

" $ boot/ocamlrun i686-pc-mingw32-ocamlopt -verbose -I stdlib /tmp/test.ml \ -o /tmp/test.exe + i686-pc-mingw32-as -o '/tmp/test.o' '/tmp/camlasm56b36c.s' + i686-pc-mingw32-as -o '/tmp/camlstartup4b26a5.o' '/tmp/camlstartup76cf6d.s' + flexlink -chain mingw -exe -o '/tmp/test.exe' -I'/usr/lib64/i686-pc-mingw32-ocaml' '-Lstdlib' '-L/usr/lib64/i686-pc-mingw32-ocaml' '/tmp/camlstartup4b26a5.o' 'stdlib/std_exit.o' '/tmp/test.o' 'stdlib/stdlib.a' 'stdlib/libasmrun.a' $ file /tmp/test.exe /tmp/test.exe: PE32 executable for MS Windows (console) Intel 80386 32-bit $ wine /tmp/test.exe reported os_type = "Win32" ok There are about a million things to fix, but this should be enough to get people started. Rich. [1] https://fedoraproject.org/wiki/MinGW -- Richard Jones Red Hat