Le 11 sept. 11 à 16:42, Török Edwin a écrit :
On 2011-09-11 17:31, Jocelyn Sérot wrote:
Thanks for your answer, Edwin.
Did you mean to reply to me directly?
If not please CC the ML too.
No. I did CC but from a mail account different from the one i used to
subscribe to the list. Need to correct this.
Thanks for the pointers, anyway. Will have a look at mingw32/64 !
Best wishes
Jocelyn
Le 11 sept. 11 à 15:46, Török Edwin a écrit :
On 2011-09-11 16:35, [email protected] wrote:
Hello,
This may be a trivial question for people working on multiple
platforms but,
having worked for a long time only on Unix-like platforms
(including Mac OS X),
i'm a bit puzzled..
What is the "best" (simplest both for the programmer and, most
importantly, the
end user) way to develop a program in Ocaml in order to
distribute it to people
having only MS Windows platforms ?
Is it possible to cross-compile (from what i've read, no) ?
mingw32-ocaml can cross-compile, Debian and Fedora includes it.
Ok. But since i'm running MacOS X, this means that i'll have to
reboot under Debian/Fedora Linux (or run it using VB).
Sorry I don't have a Mac OS X to give more detailed instructions,
maybe someone else on this list can help.
Try compiling OCaml with mingw32 on your Mac (see mingw.org and http://mingw-w64.sourceforge.net/)
,
or find a pre-packaged cross-compiler for Mac (in the ports?).
If you try to build a cross-compiler yourself you might need to
patch OCaml, AFAIK
Debian has to patch upstream OCaml to make it build with mingw32
cross-compiler.
Have a look at the mingw32-ocaml-3.12.0+debian3/debian/patches
directory:
ftp://ftp.debian.org/debian/pool/main/m/mingw32-ocaml/mingw32-ocaml_3.12.0+debian3.tar.gz
You'll need to cross-compile all the OCaml (and native) libs you
use though (Fedora might provide pre-cross-compiled libs, not sure).
Unfortunately there doesn't seem to be an easy way to cross-
compile for Win64 in Debian
(might be possible if an mingw-w64-ocaml package is created based
on mingw-w64), but 32-bit
executables run just there too.
Windows XP is 32b and Seven is 64b, aren't they ?
There is a 64-bit version of XP (although less popular), and there
is a 32-bit version of Win7 too.
The 64-bit version can run 32-bit apps just fine though.
Do i have to install a ocaml distribution on a machine running
windows, compile
my program with the installed tools (ocamlc/ocamlopt) and
distribute the
resulting .exe ?
That'd work of course, but you have the inconvenience of booting
windows everytime.
Aux question : In the Unix version, arguments are passed on the
command line. I
understand that the same can be done under Windows using some
kind of "shell"
(under Cygwin). But this may be disruptive to many Windows users
who are used
to the "click to launch" approach. Is there some kind of tool
that could
automatically wrap a command-line-based app into a click-to-
launch app (with
some additionnal pop-ups to enter arguments for ex) ?
Not that I know of, but one could be written using ocaml-win32 (or
lablgtk).
Is your app purely console based otherwise, or does its Unix
version have a GUI?
Purely console-based for now, but writing a GUI should not be too
difficult.
Sorry if these questions sound trivial but despite a long
experience in Ocaml
programming (>15 yrs), i've never been exposed to sw dev under
windows (in fact
i deliberately avoid this terrain ;)
Btw, for those interested, the program i'm trying to port is a
compiler
generating VHDL code for FPGAs from high-level actor-dataflow
descriptions
(more info here :
http://wwwlasmea.univ-bpclermont.fr/Personnel/Jocelyn.Serot/caph.html)
.
For the moment, i'm distributing a bytecode but this requires the
target
audience to have a ocaml distrib installed on their machine
(which, from
experience, most of them view it as an hindrance).
Does that mean that you don't use 3rdparty libs, or only use
ones that can be compiled to pure bytecode (without native code)?
If so cross-compiling with mingw32-ocaml should work fairly well.
The app only uses libs from the ocaml distrib (unix.cm[x]a and
dynlink.cm[x]a).
Another alternative would be to distribute ocamlrun.exe alongside
your program.
Good idea. Can i do this (i mean, is it allowed by the licence
conditions) ?
IANAL, but I think you can distribute ocamlrun.exe under the terms
of the OCaml license:
http://caml.inria.fr/ocaml/license.en.html,
and distribute the bytecode itself under your own license.
Of course bytecode is slower than native, so getting cross-
compilation working somehow might still be worth it.
Best regards,
--Edwin
--
Caml-list mailing list. Subscription management and archives:
https://sympa-roc.inria.fr/wws/info/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs