From: Kenneth Adam Miller <kennethadammiller@gmail.com>
To: caml users <caml-list@inria.fr>
Subject: Re: [Caml-list] oasis and C wrapper
Date: Sun, 27 Aug 2017 01:19:10 -0400 [thread overview]
Message-ID: <CAK7rcp9+TZMw4ALS81Qtn6nKRN1G4f5QpD4Ao+m0q1Vv+LeocA@mail.gmail.com> (raw)
In-Reply-To: <CAK7rcp87iharueS+VZzn9q0YcscsUmt-YfJCc+JMCd6-=po=Ew@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3452 bytes --]
Actually, I think it's that ocamlbuild should be told to link
libdai_stubs.a, and not try and build it. But also, I wanted to reference
an existing work that links with C libraries, and I found ocamlbuild's
example, with-c. I tried to build it, and I found that it isn't built by
the harness default. Also, if you just try and build within just that raw
directory in isolation, that it fails with a similar error I had been
getting earlier. I looked around and found these:
https://stackoverflow.com/questions/19644451/how-to-make-ocamlbuild-compile-and-link-a-c-file-into-an-ocaml-project
https://l-lang.blogspot.com/2012/08/incorporating-c-code-in-ocaml-project.html
https://ocaml.org/learn/tutorials/ocamlbuild/Using_an_external_library.html
And I'm trying to follow, but they each give unique directions, each seem
to not work for me.
On Sat, Aug 26, 2017 at 9:12 PM, Kenneth Adam Miller <
kennethadammiller@gmail.com> wrote:
> Hello,
>
>
> I'm building a pair of companion oasis build spec and opam package setup
> for a C library. libdai I figured out how to get swig and oasis to build
> most things I need, but I'm having trouble getting oasis to not generate
> _stubs targets that aren't found. There is a static C/++ libdai.a file that
> is the product of the project I'm trying to wrap. I can't convince oasis to
> use that instead. Here's my _oasis target:
>
>
> Library "dai"
> Path: ./
> Install: false
> Modules: Swig, Dai
> CompiledObject: best
> CSources: dai_wrap.cxx.c
> CCOpt: -g -xc++ "-I../../include"
>
>
> With a fresh clone of libdai, I get dai_wrap.cxx.c by doing the following
> in ./swig after building libdai:
>
> $(SWIG) -ocaml -c++ dai.i
> mv dai_wrap.cxx dai_wrap.cxx.c
> sed -i -e 's/caml_array_length/caml_array_len/g' dai_wrap.cxx.c
>
> I got my swig and dai ml files by doing the following:
>
> swig2.0 -ocaml -co dai.ml
> swig2.0 -ocaml -co swig.ml
> swig2.0 -ocaml -co swig.mli
>
> I build by doing the following:
>
> ocaml setup.ml -configure
> ocaml setup.ml -build
>
>
> I get the following error:
>
>
> Solver failed:
> Ocamlbuild knows of no rules that apply to a target named
> ./libdai_stubs.a. 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.
> Compilation unsuccessful after building 8 targets (8 cached) in 00:00:00.
> E: Failure("Command ''/usr/bin/ocamlbuild' ./libdai_stubs.a
> ./dlldai_stubs.so ./dai.cma ./dai.cmxa ./dai.a ./dai.cmxs -j 5 -tag debug'
> terminated with error code 6")
>
> I want to make sure that the actual target shared library that was
> produced by the libdai build file itself is linked against. But oasis is
> assuming I have a _stubs target. I read in the documentation here that: "The
> usual idiom is to append _stubs to the name."
> https://ocaml.org/learn/tutorials/setting_up_with_
> oasis.html#Interfacing-with-C-code
>
> And I think that that is the source of the error, but it isn't well
> explained. The ultimate things I originally wanted was to be able to use
> libdai with both the utop or the bytecode interpreter and with fully
> compiled targets. I was going to make libdai a library and then publicize
> it.
>
> If anybody needs to replicate my issue, I have a docker container with
> this already.
>
[-- Attachment #2: Type: text/html, Size: 5439 bytes --]
next prev parent reply other threads:[~2017-08-27 5:19 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-27 1:12 Kenneth Adam Miller
2017-08-27 5:19 ` Kenneth Adam Miller [this message]
2017-08-27 19:56 ` Kenneth Adam Miller
2017-08-28 1:51 ` Kenneth Adam Miller
2017-08-29 13:31 ` Aziem Chawdhary
2017-08-29 13:55 ` Kenneth Adam Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAK7rcp9+TZMw4ALS81Qtn6nKRN1G4f5QpD4Ao+m0q1Vv+LeocA@mail.gmail.com \
--to=kennethadammiller@gmail.com \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox