Skip to content

Releases: ocaml/ocamlbuild

OCamlbuild 0.15.0

29 Jun 08:58
Compare
Choose a tag to compare

OCamlbuild 0.15.0 comes with first class support for native Windows ports of OCaml
(MinGW64-w64 and MSVC). This support was historically provided by
opam-repository-mingw.

  • Misc: restore CI (unix, macos, windows)
    (#328, #329, #336, #349 by Hugo Heuzard)
  • Remove degraded mode for windows
    (#333 by Hugo Heuzard)
  • No longer treat empty path in PATH env variable as the current working directory
    (#339 by Hugo Heuzard)
  • Emit a warning if several calls are made to
    Ocamlbuild_plugin.dispatch -- all calls before the last one are
    ignored, which may not be what users expect.
    (#30 by Gabriel Scherer, review by whitequark)
  • Rename user-rebindable {LINK,COMP}FLAGS into OCB_{LINK,COMP}FLAGS
    (#303 by Gabriel Scherer)

0.14.3

20 Dec 16:51
Compare
Choose a tag to compare

CHANGES:

  • Add OCaml 5.2 support
    (#325 by Hugo Heuzard)
  • Quote Makefile arguments to allow spaces in paths, especially on Windows.
    Documented in #321 (#324 by Jonah Beckford)

0.14.2

28 Sep 14:44
Compare
Choose a tag to compare

CHANGES:

  • Add OCaml 5.1 support
    (#319 by Kate Deplaix, reviewed by Gabriel Scherer)

0.14.1

09 Feb 11:21
Compare
Choose a tag to compare

Changes:

  • Add OCaml 5.00 support
    (#315 by Kate Deplaix, reviewed by Gabriel Scherer)
  • Fix race conditions when invoking ocamlbuild in parallel from a makefile
    (#302 by Gabriel Scherer)
  • Removes .so from products of all cmxs rules
    (#305 by Ivan Gotovchits, reviewed by Gabriel Scherer)

OCamlbuild 0.14.0

23 Feb 16:00
Compare
Choose a tag to compare

Compared to the previous released version (0.12.0), OCamlbuild 0.14.0
contains new features (ppopt(..) and ppxopt(...) flags, ocamlbuild
options) and support for OCaml 4.08+dev.

  • Revert the change to "pack" handling from the never-released 0.13
    (#272), which turns out to break compatibility with too many
    projects. At this point in the lifetime of ocamlbuild usage, it's
    more important to keep building existing projects than to improve
    the build system for new projects -- of course the latter is also
    nice, but not when it endangers compatibility. (Gabriel Scherer)

The other changes from 0.13 are as follows:

  • #45, #190: add ppopt(arg) and ppxopt(package,arg) when -use-ocamlfind
    (Gabriel Scherer, review by whitequark,
    request by Gabriel Scherer, Gabriel Radanne and Pavel Argentov)

  • #268, #269: add flag support for some ocamlmklib options:
    custom, debug, failsafe, linkall, ccopt(..), cclib(..), rpath(..), ldopt(..)
    (Gabriel Scherer, report by Hannes Mehnert, review by whitequark)

  • #278: typo fixes in the manual
    (Xinzhe Yang)

  • #282: fix compilation with trunk OCaml (4.08+dev)
    (Xavier Clerc and Nandor Licker)

OCamlbuild 0.12.0

11 Nov 17:44
Compare
Choose a tag to compare

OCamlbuild 0.12.0 is a maintenance release containing mostly bugfixes
and a few user-contributed features.

  • #227: install signatures.{mli,cmi,cmti} to help documentation tools
    (Daniel Bünzli and Gabriel Scherer)

  • #232: fix Windows install rules
    (David Allsopp)

  • #234: add "afl_instrument" and "afl_inst_ratio" flags for corresponding
    ocamlopt options.
    (Jeremy Yallop)

  • #237: extend cc/ccopt/cclib flags to apply to "ocaml" compilation as well,
    as tweaking the C linker can be required for pure-OCaml projects -- see #236
    (Gabriel Scherer, report by Nathan Rebours)

  • #253: only run native tests if ocamlopt is available.
    (Ximin Luo, review by whitequark and Gabriel Scherer)

  • #256, #258: pass -keep-docs and -keep-locs when using -pack
    (Gabriel Scherer, report by Vincent Jacques)

  • #257, #259: add _opam to the list of directories ignored by default;
    it is used for package-local opam switches
    (Gabriel Scherer, request by Edwin Török)

OCamlbuild 0.11.0

05 Mar 22:53
Compare
Choose a tag to compare

OCamlbuild 0.11.0 introduces a change to the way .cmxs files are
produced when no .mldylib file is absent: it will now use the exact
same semantics as .cmxa and .mllib file -- in particular, it
should not be necessary anymore to have identical
foo.{mllib,mldylib} files, only foo.mllib should suffice. See the
detailed changelog below for details.

  • #111: added "nostdlib" flag for corresponding ocaml{c,opt} options
    (Thomas Wood)

  • #115: add node_modules to the list of directories ignored by default
    (.svn/, CVS/, .bzr/, .hg/, .git/, _darcs/, node_modules/)
    (Yunxing Dai)

  • #125, #160: added "-toolchain" option for corresponding ocamlfind option.
    (whitequark)

  • #127, #137, #138: install ocamlbuild's man pages, missing since 4.02
    (Adam Sampson and Gabriel Scherer)

  • #130: make sure that -just-plugin always stops after the plugin-build phase
    (Gabriel Scherer, report by whitequark)

  • #132, #159: remove the rule ".cmx -> .cmxs"
    Previously, there was a ".cmx -> .cmxa" rule that would
    pull a module and its dependencies in a .cmxa, and a separate
    ".cmx -> .cmxs" rule that would pull only a module as a .cmxs.

    The latter is a reasonable default choice, the idea being that
    a module's dependencies may often be statically linked with the
    program instead of being dynamically linked. But it conflicts with
    the presence of a rule ".cmxa -> .cmxs" as soon as the library has
    the same name as one of the modules it contains.

    The reason why the rule ".cmxa -> .cmxs" matter is that it can be
    composed with the rule ".mllib -> .cmxa" to build .cmxs files from
    .mllib files, without having to copy each .mllib file into
    a separate .mldylib file.

    In other terms, the previous behaviour would, by default (in absence
    of .mldylib file who always takes priority), only link the module in
    the .cmxs file, and people wishing otherwise would have to write
    a list of modules in a .mldylib file. The new behavior will, by
    default, take the .mllib file or the module dependencies (as for
    .cmxa) to build a .cmxs file, and people wishing otherwise will have
    to write just the module name in a .mldylib file.

    It is unclear whether this change will break some projects on which
    users relied on the previous semantics. It seems equally likely that
    the previous semantics, when it applied, was a source of bugs
    (the .cmxs files didn't have the expected modules) that would not be
    discovered by people not testing dynamic linking. Such bugs have
    been found and fixed in the following cases:

    (Daniel Bünzli, Jérémie Dimino, Armaël Guéneau, Gabriel Scherer, whitequark)

  • #124, #136: do not explicitly pass -shared when building shared libraries;
    let the compiler decide what to build.
    (whitequark)

  • #143-171: migration of Mantis bugtracker issues to the github issue tracker
    (Damien Doligez)

  • #172-175, #177: setting up Continuous Infrastructure (CI) testsuite checks
    (whitequark)

  • #202: install license, changes and readme in opam's docdir for odig
    (Gabriel Scherer, request and review by Daniel Bünzli)

  • "noautolink" tag for ocaml{c,opt}
    (Gabriel Scherer)