Releases: ocaml/ocamlbuild
OCamlbuild 0.15.0
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.
- Remove degraded mode for windows
(#333 by Hugo Heuzard)
- Remove light mode (#332 by Hugo Heuzard)
- Make the codebase work on windows native
(#329, #333, #334, #338, #339, #342, #343, #344 by Hugo Heuzard)
- No longer treat empty path in PATH env variable as the current working directory
(#339 by Hugo Heuzard)
0.14.3
0.14.2
0.14.1
OCamlbuild 0.14.0
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
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
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)