RE: [Caml-list] how to use c wrapper files in libraries

2009-07-21 Thread RABIH.ELCHAAR
I think that if you install your library along with the obj file, let's say to 
directory install, and if you pass to ocamlc -I install sndfile.cma ... maybe 
he will find the obj file and pass it to the linker.

I didn't do the experimentation though, maybe it won't work.

Rabih


-Message d'origine-
De : caml-list-boun...@yquem.inria.fr [mailto:caml-list-boun...@yquem.inria.fr] 
De la part de Aaron Bohannon
Envoyé : lundi 20 juillet 2009 18:22
À : EL CHAAR Rabih SGAM/AI/SAM
Cc : caml-list@yquem.inria.fr
Objet : Re: [Caml-list] how to use c wrapper files in libraries

Thank you.  This does clarify some things.  Everything works like
clockwork after reworking things this way.

Based on the output of ocamlc -verbose, it seems that if you pass
file.o file to ocamlc -a, it does nothing except remember the name
file.o and pass it to gcc when the OCaml library is later used,
which is a pretty useless and confusing behavior---in general, you
will not be in the same directory that contains file.o when you use
the OCaml library and I don't know of any gcc options that will make
gcc look in other directories for object files.  It would seem better
for ocamlc -a to ignore .o files and display an appropriate
warning.

 - Aaron

On Mon, Jul 20, 2009 at 10:58 AM, rabih.elch...@sgam.com wrote:
 I am not familiar with this specific library.
 In the general approach, you compile your c code, and package it into a 
 library, let's say libA.a

 Then while building your sndfile.cma, you should pass the option
 ocamlc -a -o sndfile.cma -cclib -lA ...

 A caml executable linked with your library will have also libA.a passed in 
 the linking phase.

 Using ocamlc -verbose could give you a hint to which files are missing.

 Hope this helps,

 Rabih

 -Message d'origine-
 De : caml-list-boun...@yquem.inria.fr 
 [mailto:caml-list-boun...@yquem.inria.fr] De la part de Aaron Bohannon
 Envoyé : lundi 20 juillet 2009 16:28
 À : caml-list@yquem.inria.fr
 Objet : [Caml-list] how to use c wrapper files in libraries

 Hello,

 I am trying to use the wrapper for libsndfile contributed by Erik de
 Castro Lopo (http://caml.inria.fr/cgi-bin/hump.en.cgi?contrib=556).
 The wrapper code compiles just fine.  And the tests that use the OCaml
 library it builds work just fine.  However, I am having a frustrating
 compile-time error when I try to compile my program in a different
 directory.

 The wrapper code is being packaged into an OCaml library using the
 following command:

 ocamlc -a -o sndfile.cma -custom sndfile_stub.o sndfile.cmo \
  -ccopt -L/usr/local/lib -cclib -lsndfile

 Within the same directory, the test program can be successfully compiled with:

 ocamlc -o test_sndfile sndfile.cma test_sndfile.ml

 Within a different directory, I used:

 ocamlc -o mytest -I /path/to/libsndfile-ocaml/files/   sndfile.cma   mytest.ml

 And I get:

 powerpc-apple-darwin8-gcc-4.0.1: sndfile_stub.o: No such file or directory
 Error while building custom runtime system

 I have tried setting every path-related option I could find, and
 nothing helped.  I tried reading everything I could find about
 compiling and using c wrappers for OCaml, but there is a severe lack
 of documentation on the topic.  In particular, I could find no example
 of a c object file being given as an argument to an ocamlc -a
 command, so I am not sure what that is supposed to do, which makes it
 impossible for me to understand this error message.

 I am using OCaml 3.10.1 on OS X 10.4.  Any help would be appreciated.

  - Aaron

 ___
 Caml-list mailing list. Subscription management:
 http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
 Archives: http://caml.inria.fr
 Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
 Bug reports: http://caml.inria.fr/bin/caml-bugs
 This message and any attachments (the message) are confidential, intended 
 solely for the addressee(s), and may contain legally privileged information.
 Any unauthorised use or dissemination is prohibited.
 E-mails are susceptible to alteration.
 Neither Societe Generale Asset Management nor any of its subsidiaries or 
 affiliates shall be liable for the message if altered, changed or falsified.

 Find out more about Societe Generale Asset Management's proposal on 
 www.sgam.com

                                

 Ce message et toutes les pieces jointes (ci-apres le message) sont 
 confidentiels et susceptibles de contenir des informations couvertes par le 
 secret professionnel.
 Ce message est etabli a l'intention exclusive de ses destinataires.
 Toute utilisation ou diffusion non autorisee est interdite.
 Tout message electronique est susceptible d'alteration. Societe Generale 
 Asset Management et ses filiales declinent toute responsabilite au titre de 
 ce message s'il a ete altere, deforme ou falsifie.

 Decouvrez l'offre et les services de Societe Generale Asset Management sur le 
 site www.sgam.fr

Re: [Caml-list] how to use c wrapper files in libraries

2009-07-21 Thread Aaron Bohannon
I thought so too, but it doesn't work.  ocamlc does pass the option
-I install to gcc, but gcc only uses -I directories to search for
header files, not object files.  gcc uses -L directories to search
for library (.a) files, but this also has no effect on where gcc
looks for .o files.

 - Aaron

On Tue, Jul 21, 2009 at 4:48 AM, rabih.elch...@sgam.com wrote:
 I think that if you install your library along with the obj file, let's say 
 to directory install, and if you pass to ocamlc -I install sndfile.cma ... 
 maybe he will find the obj file and pass it to the linker.

 I didn't do the experimentation though, maybe it won't work.

 Rabih


 -Message d'origine-
 De : caml-list-boun...@yquem.inria.fr 
 [mailto:caml-list-boun...@yquem.inria.fr] De la part de Aaron Bohannon
 Envoyé : lundi 20 juillet 2009 18:22
 À : EL CHAAR Rabih SGAM/AI/SAM
 Cc : caml-list@yquem.inria.fr
 Objet : Re: [Caml-list] how to use c wrapper files in libraries

 Thank you.  This does clarify some things.  Everything works like
 clockwork after reworking things this way.

 Based on the output of ocamlc -verbose, it seems that if you pass
 file.o file to ocamlc -a, it does nothing except remember the name
 file.o and pass it to gcc when the OCaml library is later used,
 which is a pretty useless and confusing behavior---in general, you
 will not be in the same directory that contains file.o when you use
 the OCaml library and I don't know of any gcc options that will make
 gcc look in other directories for object files.  It would seem better
 for ocamlc -a to ignore .o files and display an appropriate
 warning.

  - Aaron

 On Mon, Jul 20, 2009 at 10:58 AM, rabih.elch...@sgam.com wrote:
 I am not familiar with this specific library.
 In the general approach, you compile your c code, and package it into a 
 library, let's say libA.a

 Then while building your sndfile.cma, you should pass the option
 ocamlc -a -o sndfile.cma -cclib -lA ...

 A caml executable linked with your library will have also libA.a passed in 
 the linking phase.

 Using ocamlc -verbose could give you a hint to which files are missing.

 Hope this helps,

 Rabih

 -Message d'origine-
 De : caml-list-boun...@yquem.inria.fr 
 [mailto:caml-list-boun...@yquem.inria.fr] De la part de Aaron Bohannon
 Envoyé : lundi 20 juillet 2009 16:28
 À : caml-list@yquem.inria.fr
 Objet : [Caml-list] how to use c wrapper files in libraries

 Hello,

 I am trying to use the wrapper for libsndfile contributed by Erik de
 Castro Lopo (http://caml.inria.fr/cgi-bin/hump.en.cgi?contrib=556).
 The wrapper code compiles just fine.  And the tests that use the OCaml
 library it builds work just fine.  However, I am having a frustrating
 compile-time error when I try to compile my program in a different
 directory.

 The wrapper code is being packaged into an OCaml library using the
 following command:

 ocamlc -a -o sndfile.cma -custom sndfile_stub.o sndfile.cmo \
  -ccopt -L/usr/local/lib -cclib -lsndfile

 Within the same directory, the test program can be successfully compiled 
 with:

 ocamlc -o test_sndfile sndfile.cma test_sndfile.ml

 Within a different directory, I used:

 ocamlc -o mytest -I /path/to/libsndfile-ocaml/files/   sndfile.cma   
 mytest.ml

 And I get:

 powerpc-apple-darwin8-gcc-4.0.1: sndfile_stub.o: No such file or directory
 Error while building custom runtime system

 I have tried setting every path-related option I could find, and
 nothing helped.  I tried reading everything I could find about
 compiling and using c wrappers for OCaml, but there is a severe lack
 of documentation on the topic.  In particular, I could find no example
 of a c object file being given as an argument to an ocamlc -a
 command, so I am not sure what that is supposed to do, which makes it
 impossible for me to understand this error message.

 I am using OCaml 3.10.1 on OS X 10.4.  Any help would be appreciated.

  - Aaron

 ___
 Caml-list mailing list. Subscription management:
 http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
 Archives: http://caml.inria.fr
 Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
 Bug reports: http://caml.inria.fr/bin/caml-bugs
 This message and any attachments (the message) are confidential, intended 
 solely for the addressee(s), and may contain legally privileged information.
 Any unauthorised use or dissemination is prohibited.
 E-mails are susceptible to alteration.
 Neither Societe Generale Asset Management nor any of its subsidiaries or 
 affiliates shall be liable for the message if altered, changed or falsified.

 Find out more about Societe Generale Asset Management's proposal on 
 www.sgam.com

                                

 Ce message et toutes les pieces jointes (ci-apres le message) sont 
 confidentiels et susceptibles de contenir des informations couvertes par le 
 secret professionnel.
 Ce message est etabli a l'intention exclusive de ses destinataires

[Caml-list] how to use c wrapper files in libraries

2009-07-20 Thread Aaron Bohannon
Hello,

I am trying to use the wrapper for libsndfile contributed by Erik de
Castro Lopo (http://caml.inria.fr/cgi-bin/hump.en.cgi?contrib=556).
The wrapper code compiles just fine.  And the tests that use the OCaml
library it builds work just fine.  However, I am having a frustrating
compile-time error when I try to compile my program in a different
directory.

The wrapper code is being packaged into an OCaml library using the
following command:

ocamlc -a -o sndfile.cma -custom sndfile_stub.o sndfile.cmo \
  -ccopt -L/usr/local/lib -cclib -lsndfile

Within the same directory, the test program can be successfully compiled with:

ocamlc -o test_sndfile sndfile.cma test_sndfile.ml

Within a different directory, I used:

ocamlc -o mytest -I /path/to/libsndfile-ocaml/files/   sndfile.cma   mytest.ml

And I get:

powerpc-apple-darwin8-gcc-4.0.1: sndfile_stub.o: No such file or directory
Error while building custom runtime system

I have tried setting every path-related option I could find, and
nothing helped.  I tried reading everything I could find about
compiling and using c wrappers for OCaml, but there is a severe lack
of documentation on the topic.  In particular, I could find no example
of a c object file being given as an argument to an ocamlc -a
command, so I am not sure what that is supposed to do, which makes it
impossible for me to understand this error message.

I am using OCaml 3.10.1 on OS X 10.4.  Any help would be appreciated.

 - Aaron

___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs


RE: [Caml-list] how to use c wrapper files in libraries

2009-07-20 Thread RABIH.ELCHAAR
I am not familiar with this specific library.
In the general approach, you compile your c code, and package it into a 
library, let's say libA.a

Then while building your sndfile.cma, you should pass the option
ocamlc -a -o sndfile.cma -cclib -lA ...

A caml executable linked with your library will have also libA.a passed in the 
linking phase.

Using ocamlc -verbose could give you a hint to which files are missing.

Hope this helps,

Rabih

-Message d'origine-
De : caml-list-boun...@yquem.inria.fr [mailto:caml-list-boun...@yquem.inria.fr] 
De la part de Aaron Bohannon
Envoyé : lundi 20 juillet 2009 16:28
À : caml-list@yquem.inria.fr
Objet : [Caml-list] how to use c wrapper files in libraries

Hello,

I am trying to use the wrapper for libsndfile contributed by Erik de
Castro Lopo (http://caml.inria.fr/cgi-bin/hump.en.cgi?contrib=556).
The wrapper code compiles just fine.  And the tests that use the OCaml
library it builds work just fine.  However, I am having a frustrating
compile-time error when I try to compile my program in a different
directory.

The wrapper code is being packaged into an OCaml library using the
following command:

ocamlc -a -o sndfile.cma -custom sndfile_stub.o sndfile.cmo \
  -ccopt -L/usr/local/lib -cclib -lsndfile

Within the same directory, the test program can be successfully compiled with:

ocamlc -o test_sndfile sndfile.cma test_sndfile.ml

Within a different directory, I used:

ocamlc -o mytest -I /path/to/libsndfile-ocaml/files/   sndfile.cma   mytest.ml

And I get:

powerpc-apple-darwin8-gcc-4.0.1: sndfile_stub.o: No such file or directory
Error while building custom runtime system

I have tried setting every path-related option I could find, and
nothing helped.  I tried reading everything I could find about
compiling and using c wrappers for OCaml, but there is a severe lack
of documentation on the topic.  In particular, I could find no example
of a c object file being given as an argument to an ocamlc -a
command, so I am not sure what that is supposed to do, which makes it
impossible for me to understand this error message.

I am using OCaml 3.10.1 on OS X 10.4.  Any help would be appreciated.

 - Aaron

___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs
This message and any attachments (the message) are confidential, intended 
solely for the addressee(s), and may contain legally privileged information. 
Any unauthorised use or dissemination is prohibited. 
E-mails are susceptible to alteration. 
Neither Societe Generale Asset Management nor any of its subsidiaries or 
affiliates shall be liable for the message if altered, changed or falsified. 
  
Find out more about Societe Generale Asset Management's proposal on www.sgam.com
  
 
  
Ce message et toutes les pieces jointes (ci-apres le message) sont 
confidentiels et susceptibles de contenir des informations couvertes par le 
secret professionnel.
Ce message est etabli a l'intention exclusive de ses destinataires.
Toute utilisation ou diffusion non autorisee est interdite. 
Tout message electronique est susceptible d'alteration. Societe Generale Asset 
Management et ses filiales declinent toute responsabilite au titre de ce 
message s'il a ete altere, deforme ou falsifie. 

Decouvrez l'offre et les services de Societe Generale Asset Management sur le 
site www.sgam.fr

___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs


Re: [Caml-list] how to use c wrapper files in libraries

2009-07-20 Thread Erik de Castro Lopo
Aaron Bohannon wrote:

 I am trying to use the wrapper for libsndfile contributed by Erik de
 Castro Lopo (http://caml.inria.fr/cgi-bin/hump.en.cgi?contrib=556).
 The wrapper code compiles just fine.

Oh wow, I never realised that made it into the Hump.

I did the wrapper as part of an experiement which I never followed
through on.

If you or anyone else is interested in maintaining it, please do
so.

Cheers,
Erik
-- 
--
Erik de Castro Lopo
http://www.mega-nerd.com/

___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs