English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
crosscompile problem
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2005-08-26 (22:47)
From: skaller <skaller@u...>
Subject: Re: [Caml-list] crosscompile problem
On Fri, 2005-08-26 at 14:00 +0200, Enrico Weigelt wrote:

> it seems that crosscompiling ocaml is currently impossible. 

> Since almost all packages have to cope with this problem and
> also widely used buildsystems like autoconf also have no clean
> way of handling this, I suggest moving away this configuration
> from individual packages to some central point - an global 
> config database.

Acceptance would require standardisation of some kind.

> We query this database by simply calling some given commandline
> with the variable name as parameter. The value is simply printed
> out on stdout, without linefeed.

> This can be easily solved by a tiny shellscript and some carefully
> maintained text database. (see attachement)

Not so easy. Briefly, I am porting Felix to full cross-compilation
support right now. This includes supporting Windows and OSX, as well
as all Unix variants. I have to distinguish FOUR separate platforms:

* build machine -- where package source is built
* host machine -- where developers run Felix
* target machine -- where the generated code is compiled 
* run machine -- where the compiled code is run

BTW: please do not use the archaic term 'Ansi C'. Responsibility
for C was taken over by ISO decades ago. References to the 
ISO C Standard differ in numbering to Ansi-C. It is particularly
strange to see non-American people using this terminology.

You need to recognize that the 'sizes' are dependent on many
factors including the compiler and options. For example gcc
can be coaxed into generating 32 bit code on a 64 bit platform
by using -m32 option.

For Ocaml in general there will be 3 machines: build/host, target, and
run platforms. 

Note that using bytecode compiler, you can cross-compile ..

It isn't clear that it is all that easy to 'cross-compile' native
code, since it is not just a matter of emitting architecture
dependent instructions -- it also depends on the availability
of libraries, and assemblers and linkers with cross-compilation support,
eg not everyone uses ELF object files.

John Skaller <skaller at users dot sourceforge dot net>