caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "Nicolás Ojeda Bär" <nicolas.ojeda.bar@lexifi.com>
To: Robert Muller <robert.muller2@gmail.com>
Cc: Ocaml Mailing List <caml-list@inria.fr>
Subject: Re: [Caml-list] make -> dune: recommended structure
Date: Sun, 13 Jan 2019 14:07:39 +0000	[thread overview]
Message-ID: <CADK7aFOvuuGgrQDH3zARuderd8c5H=UOTTbFUhvUOh-CGZ7KOg@mail.gmail.com> (raw)
In-Reply-To: <CAKmYinmUJ4_PEPv6muNd5_axSq9SV9=ZhOo9ZpVQaGJW+QxZKQ@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2201 bytes --]

Dear Bob,

Your present directory structure is just fine. A single `dune` file at `src/dune` with the contents

    (executable
     (name compile)
     (public_name translate))

should be enough. Here I am assuming that all modules in `src/` are part of the compiler. If this is not the case you need to specify the modules you want to include as follows:

    (executable
     (name compile)
     (public_name translate)
     (modules compile ast symbol ...))

Note: if you have a file `parser.mly` in your project that needs to be processed with `ocamlyacc` then you need to declare this in its own stanza:

    (ocamlyacc parser)

Similarly an `ocamllex` file `lexer.mll` needs to be declared with

    (ocamllex lexer)

Finally, you need to make sure there is a `<foo>.opam` file at the root of your project. This file can be be empty if you do not actually use `opam` but the name `foo` is used by `dune` to identify the "package" your executable belongs to. Once these files are in place, you can build your project with

    dune build

Best wishes,
Nicolás

On Sun, 13 Jan 2019 at 14:31, Robert Muller <robert.muller2@gmail.com<mailto:robert.muller2@gmail.com>> wrote:
Greetings. I have a toy compiler made up of ~20 modules:

ast.mli ast.ml<http://ast.ml> symbol.mli symbol.ml<http://symbol.ml> ...

and a top-level in compile.ml<http://compile.ml>. These sources are compiled and linked using a Makefile which invokes ocamlc. I'll call the resulting compiler "translate".

At present I have *all* of these files resident in a single src/ directory. I'm considering converting the build to dune for the semester. What would the recommended directory structure be and what would the dune file(s?) and stanzas look like? I assume this is in the middle of dune's wheelhouse but I wasn't able to find anything on it in the examples or documents. I assume/hope I don't have to put the modules in a library.
Thank you,
Bob Muller

-- 
Caml-list mailing list.  Subscription management and archives:
https://sympa.inria.fr/sympa/arc/caml-list https://inbox.ocaml.org/caml-list
Forum: https://discuss.ocaml.org/
Bug reports: http://caml.inria.fr/bin/caml-bugs

[-- Attachment #2: Type: text/html, Size: 3317 bytes --]

  reply	other threads:[~2019-01-13 14:07 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-13 13:31 Robert Muller
2019-01-13 14:07 ` Nicolás Ojeda Bär [this message]
2019-01-13 14:22   ` Robert Muller
2020-01-12 22:24   ` Robert Muller
2020-01-13  0:20     ` Yawar Amin

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='CADK7aFOvuuGgrQDH3zARuderd8c5H=UOTTbFUhvUOh-CGZ7KOg@mail.gmail.com' \
    --to=nicolas.ojeda.bar@lexifi.com \
    --cc=caml-list@inria.fr \
    --cc=robert.muller2@gmail.com \
    /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;
as well as URLs for NNTP newsgroup(s).