* ocamlbuild and c libraries
@ 2007-06-27 16:14 Andrew Warshaver
2007-06-27 16:35 ` [Caml-list] " Andrew Warshaver
0 siblings, 1 reply; 2+ messages in thread
From: Andrew Warshaver @ 2007-06-27 16:14 UTC (permalink / raw)
To: caml-list
For the most part I tried to follow Nicolas's example on the previous
thread with similar name, but unfortunately I get an error that I do not
entirely understand.
My target is intern/live_query/live_query.native. It uses an ocaml/c
library called jane that lives in janebase/lb (thanks Nicolas, for the
renaming tip). In there exists a jane.mlpack, and a libjane.clib. Also
there is a couple of _tags file:
$ cat janebase/lb/_tags
<*.cmx>: for-pack(Jane)
<*.cmo>: for-pack(Jane)
<jane.cmx>: -for-pack(Jane)
<jane.cmo>: -for-pack(Jane)
<cephes>: include
<jane.cm{x,}a>: use_libjane
$ cat intern/live_query/_tags
<{single,live}_query.{byte,native}>: use_jane (i also tried
include_jane, this results in a different error message; in fact the
same error if I omit this _tags altogether, it says undefined references
in jane.o)
Also, myocamlbuild.ml :
$ cat myocamlbuild.ml
open Ocamlbuild_plugin;;
open Command;;
let packages = "bigarray,pcre,res,netstring"
let headers = ["janebase/lb/cephes/mconf.h";
"janebase/lb/cephes/protos.h"];;
let ocamlfind cmd =
S [A "ocamlfind"; A cmd; A "-package"; A packages;
A "-I"; A "+camlp4"; A "-pp"; A "camlp4orf";
A "-pp"; A "camlp4o /home/awarshaver/multi-oc/lib/pa_type_conv.cmo
/home/awarshaver/multi-oc/lib/pa_sexp_conv.cmo"];;
flag ["ocaml"; "compile"] (A"-thread");;
flag ["ocaml"; "link"; "program"] (S[A"-linkpkg"; A"-thread"]);;
dispatch begin function
| After_options ->
Options.ocamlc := ocamlfind "c";
Options.ocamlopt := ocamlfind "opt";
Options.ocamldep := ocamlfind "dep";
| After_rules ->
ocaml_lib "jane";
flag ["link"; "library"; "ocaml"; "byte"; "use_libjane"]
(S[A"-dllib"; A"-ljane"; A"-cclib"; A"-ljane"]);
flag ["link"; "library"; "ocaml"; "native"; "use_libjane"]
(S[A"-cclib"; A"-ljane"]);
dep ["link"; "ocaml"; "use_libjane"] ["janebase/lb/libjane.a"];
dep ["compile"; "c"] headers;
| _ -> ()
end
I can build the library ok...
$ ocamlbuild janebase/lb/jane.cmxa
+ ocamlfind c -package bigarray,pcre,res,netstring -I +camlp4 -pp
camlp4orf -pp 'camlp4o /home/awarshaver/multi-oc/lib/pa_type_conv.cmo
/home/awarshaver/multi-oc/lib/pa_sexp_conv.cmo' -c janebase/lb/cephes/main.c
janebase/lb/cephes/main.c: In function ‘main’:
janebase/lb/cephes/main.c:9: warning: control reaches end of non-void
function
Finished, 286 targets (0 cached) in 00:01:12.
But not my target..
$ ocamlbuild intern/live_query/live_query.native
Solver failed:
Ocamlbuild knows of no rules that apply to a target named jane.cmx.
This can happen if you ask Ocamlbuild to build a target with the wrong
extension (e.g. .opt instead of .native) or if the source files live in
directories that have not been specified as include directories.
Backtrace:
- Failed to build the target intern/live_query/live_query.native
- Building intern/live_query/live_query.native:
- Building jane.a:
- Failed to build all of these:
- Building jane.cmx
- Building jane.mllib
Compilation unsuccessful after building 358 targets (358 cached) in
00:00:28.
Insights appreciated!
Thanks,
Andrew
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Caml-list] ocamlbuild and c libraries
2007-06-27 16:14 ocamlbuild and c libraries Andrew Warshaver
@ 2007-06-27 16:35 ` Andrew Warshaver
0 siblings, 0 replies; 2+ messages in thread
From: Andrew Warshaver @ 2007-06-27 16:35 UTC (permalink / raw)
To: caml-list
Andrew Warshaver wrote:
> For the most part I tried to follow Nicolas's example on the previous
> thread with similar name, but unfortunately I get an error that I do not
> entirely understand.
>
> My target is intern/live_query/live_query.native. It uses an ocaml/c
> library called jane that lives in janebase/lb (thanks Nicolas, for the
> renaming tip). In there exists a jane.mlpack, and a libjane.clib. Also
> there is a couple of _tags file:
>
> $ cat janebase/lb/_tags
> <*.cmx>: for-pack(Jane)
> <*.cmo>: for-pack(Jane)
> <jane.cmx>: -for-pack(Jane)
> <jane.cmo>: -for-pack(Jane)
> <cephes>: include
> <jane.cm{x,}a>: use_libjane
>
> $ cat intern/live_query/_tags
> <{single,live}_query.{byte,native}>: use_jane (i also tried
> include_jane, this results in a different error message; in fact the
> same error if I omit this _tags altogether, it says undefined references
> in jane.o)
>
> Also, myocamlbuild.ml :
>
> $ cat myocamlbuild.ml
> open Ocamlbuild_plugin;;
> open Command;;
>
> let packages = "bigarray,pcre,res,netstring"
>
> let headers = ["janebase/lb/cephes/mconf.h";
> "janebase/lb/cephes/protos.h"];;
>
> let ocamlfind cmd =
> S [A "ocamlfind"; A cmd; A "-package"; A packages;
> A "-I"; A "+camlp4"; A "-pp"; A "camlp4orf";
> A "-pp"; A "camlp4o /home/awarshaver/multi-oc/lib/pa_type_conv.cmo
> /home/awarshaver/multi-oc/lib/pa_sexp_conv.cmo"];;
>
> flag ["ocaml"; "compile"] (A"-thread");;
> flag ["ocaml"; "link"; "program"] (S[A"-linkpkg"; A"-thread"]);;
>
> dispatch begin function
> | After_options ->
> Options.ocamlc := ocamlfind "c";
> Options.ocamlopt := ocamlfind "opt";
> Options.ocamldep := ocamlfind "dep";
> | After_rules ->
> ocaml_lib "jane";
>
> flag ["link"; "library"; "ocaml"; "byte"; "use_libjane"]
> (S[A"-dllib"; A"-ljane"; A"-cclib"; A"-ljane"]);
>
> flag ["link"; "library"; "ocaml"; "native"; "use_libjane"]
> (S[A"-cclib"; A"-ljane"]);
>
> dep ["link"; "ocaml"; "use_libjane"] ["janebase/lb/libjane.a"];
>
> dep ["compile"; "c"] headers;
> | _ -> ()
> end
>
> I can build the library ok...
>
> $ ocamlbuild janebase/lb/jane.cmxa
> + ocamlfind c -package bigarray,pcre,res,netstring -I +camlp4 -pp
> camlp4orf -pp 'camlp4o /home/awarshaver/multi-oc/lib/pa_type_conv.cmo
> /home/awarshaver/multi-oc/lib/pa_sexp_conv.cmo' -c
> janebase/lb/cephes/main.c
> janebase/lb/cephes/main.c: In function ‘main’:
> janebase/lb/cephes/main.c:9: warning: control reaches end of non-void
> function
> Finished, 286 targets (0 cached) in 00:01:12.
>
> But not my target..
>
> $ ocamlbuild intern/live_query/live_query.native
> Solver failed:
> Ocamlbuild knows of no rules that apply to a target named jane.cmx.
> This can happen if you ask Ocamlbuild to build a target with the wrong
> extension (e.g. .opt instead of .native) or if the source files live in
> directories that have not been specified as include directories.
> Backtrace:
> - Failed to build the target intern/live_query/live_query.native
> - Building intern/live_query/live_query.native:
So I think I know why this is bad, it thinks that jane lives in the root
directory of my project. This is probably a result of my line ocaml_lib
"jane" in myocamlbuild.
Removing that, I'm not sure how I should specify to live_query.native
that it needs to use jane.cmxa (otherwise, it seems to think it only
needs jane.cmx).
> - Building jane.a:
> - Failed to build all of these:
> - Building jane.cmx
> - Building jane.mllib
> Compilation unsuccessful after building 358 targets (358 cached) in
> 00:00:28.
>
> Insights appreciated!
>
> Thanks,
> Andrew
>
> _______________________________________________
> 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
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2007-06-27 16:35 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-06-27 16:14 ocamlbuild and c libraries Andrew Warshaver
2007-06-27 16:35 ` [Caml-list] " Andrew Warshaver
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox