Commit Graph

9552 Commits (63e31394eb2cb73943e242902549d1fdbacd3234)

Author SHA1 Message Date
Alain Frisch eb0f68d351 Fix order of application of ppx rewriters (matching the order on the command-line).
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14086 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-10 14:15:47 +00:00
Alain Frisch e01f145c2e More direct style, remove the temporary file created by -pp processor right after it has been read.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14085 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-10 13:48:43 +00:00
Alain Frisch 0769ab46a7 Introduce and use higher-level wrappers around parsing routine for .ml/.mli files, taking care of -pp and -ppx preprocessors.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14084 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-10 13:44:34 +00:00
Alain Frisch 202483b02c Cleanup.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14083 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-10 12:21:45 +00:00
Alain Frisch a3dbe15046 Move some tools to a dedicated external project (https://github.com/alainfrisch/ppx_tools).
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14082 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-09 16:59:23 +00:00
Alain Frisch c33ca79107 Some more helper functions.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14081 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-09 16:43:59 +00:00
Alain Frisch 30d350779f Support for patterns in concrete syntax.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14080 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-09 13:04:09 +00:00
Alain Frisch 1c7e67c782 Use Ast_helper.default_loc instead of Location.none by default.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14079 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-09 12:23:32 +00:00
Alain Frisch 0a93a84a06 Doc, cleanup.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14078 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-09 12:12:33 +00:00
Xavier Clerc e82104a755 Remove labltk from the distribution (will be available as a third-party library).
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14077 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-09 09:32:00 +00:00
Xavier Clerc 83ca86dd23 PR#6166: document -ocamldoc option of ocamlbuild
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14076 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-09 08:52:42 +00:00
Fabrice Le Fessant a20f6e647b Fix PR#6164
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14075 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-07 07:14:19 +00:00
Alain Frisch abdbda7e33 Cosmetic.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14073 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-06 16:21:00 +00:00
Gabriel Scherer b57aca60ad ocamlbuild: make -plugin-tags and -use-ocamlfind interact better
When both those features are used together, we use ocamlfind packages
instead of hardlinking unix.cmxa and ocamlbuildlib.cmxa during the
ocamlbuild plugin compilation. This helps to avoid double-linking
errors (with unix.cmxa and "-package unix") when -plugin-tags request
ocamlfind packages depending on unix (or ocamlbuild).

This change was designed and implemented in collaboration with Jun Maillard.

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14069 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-06 11:36:32 +00:00
Jacques Garrigue 1d1b6c157b add test results for PR#6163
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14066 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-06 05:44:48 +00:00
Jacques Garrigue d09dee8f9c Fix PR#6163
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14065 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-06 05:35:55 +00:00
Jacques Garrigue 567bca77d2 Fix PR#6158
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14063 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-05 08:26:01 +00:00
Jacques Garrigue 7185e693f5 Fix PR#6158
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14062 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-05 08:25:30 +00:00
Damien Doligez fe6ff6a033 remove leftover conflicts from .depend
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14061 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-04 15:37:10 +00:00
Damien Doligez 7844495624 Merge branch 4.01 from branching point to 4.01.0+rc1
Command line used:
  svn merge --accept postpone -r 13776:14055 $REPO/version/4.01 .


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14060 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-04 15:12:37 +00:00
Alain Frisch e972313976 #6146: emulate Unix.kill with signal = Sys.sigkill under Windows.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14059 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-03 13:10:56 +00:00
Alain Frisch cb146ec66b Doc, export a convenience function.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14058 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-03 08:59:23 +00:00
Alain Frisch 462d83344f Porting pa_matches.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14050 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-30 14:55:37 +00:00
Alain Frisch bc05874f5d Accept changes.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14049 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-30 14:31:27 +00:00
Alain Frisch bbb30a93b2 PR#6148: speed improvement for Buffer (patch by John Whitington).
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14048 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-30 13:12:47 +00:00
Alain Frisch 6afbdfb724 Mention extension_points in Changes.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14047 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-30 13:11:16 +00:00
Alain Frisch f6e4122b85 Do not compile or install by default ocamlast.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14045 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-29 12:51:03 +00:00
Alain Frisch 76d35efd0a Reintegrate the extension_point branch.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14044 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-29 11:42:23 +00:00
Alain Frisch 6f15a5da7b These two files slipped through a synchronization with trunk.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@14043 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-29 10:06:50 +00:00
Alain Frisch 842f6794a9 Synchronize with trunk.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@14042 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-28 17:10:04 +00:00
Jacques Garrigue a18853fde9 Test not generalizing local lets
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14038 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-28 09:59:11 +00:00
Gabriel Scherer cb1d7a036d ocamlbuild: get myocamlbuild.ml tags from a new -plugin-tag(s) option instead of _tags
The previous approach to use _tags to get tags to compile
myocamlbuild.ml had one irritating downside: it would also take the
tags of the (true: foo) lines, which are certainly not intended by the
user to be applied to plugin compilation as well.

These additional tags looked mostly harmless. Of course, it turns out
that there is one case where they're not: as the plugin compilation
command already links "unix.cma" with the plugin, a user having
`true: use_unix` or `true: package(unix)` in its _tags file would get
a plugin compilation error due to double-linking of unix.cmxa. This
caused a regression breaking build in some projects, which is not
acceptable.

The current approach of using a specific command-line option is a bit
more annoying for end-users (you have to retype it each time, or script
ocamlbuild invocation from somewhere else), so we expect it to get
less widely used. It is still interesting for OASIS for example, or
people already using a convenience wrapper (eg. corebuild).

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14035 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-24 20:46:05 +00:00
Jacques Garrigue 3831bcee99 types
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14034 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-23 08:16:00 +00:00
Jacques Garrigue d1c176690e add unification example using GADTs
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14032 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-21 10:01:47 +00:00
Gabriel Scherer 5e9836d003 bootstrap myocamlbuild.boot and adapt build/boot.sh
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14028 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-20 16:02:41 +00:00
Gabriel Scherer 93f0dd4dad ocamlbuild: fix plugin rebuild when no target is given
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14027 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-20 16:02:39 +00:00
Gabriel Scherer 2fa50bab5f ocamlbuild testsuite: minor fixes
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14026 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-20 16:02:37 +00:00
Jacques Garrigue 7a6d827026 Fix PR#6123
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14021 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-20 03:00:19 +00:00
Gabriel Scherer e8bef60f8d ocamlbuild testsuite: test modular plugin compilation
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14016 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-19 07:42:39 +00:00
Gabriel Scherer 6929678509 ocamlbuild: polish the interaction between Param_tags.init() and plugin execution
Before this path, [Param_tags.init()] was run before
[Plugin.execute_plugin_if_needed()]. It had the downside of making
plugin compilation warn about any unknown parametrized tag present in
a _tags file, even those that would be defined by the plugin
itself. The fix is to [really_acknowledge] only the tags used for the
plugin compilation, and delay the full [Param_tags.init()] call to
after plugin execution.

This was discussed in detail in PR#5680, comment 0010186.

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14015 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-19 07:42:36 +00:00
Hongbo Zhang 58d23575b7 fix let a = ( *) 1 problem
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14012 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-18 02:26:00 +00:00
Gabriel Scherer 70026195b6 ocamlbuild testsuite: teset terminal colors when leaving ocamlbuild_test
(Patch by Gabriel Kerneis)

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14003 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-13 15:34:07 +00:00
Gabriel Scherer 29e3dca2eb ocamlbuild: use all the tags applying to "myocamlbuild.ml" to compile the plugin
The long-term goal is to allow composability of myocamlbuild.ml
plugins, as discussed in PR#5680 and PR#6093. The current attempt is
to give to the myocamlbuild.ml all the tags that apply to it according
to the _tags file and other configuration options passed to
ocamlbuild. For example, if -use-ocamlfind is used, any
(true: package(foo)) or ("myocamlbuild.ml": package(foo)) line would
have the ocamlfind package `foo` usable from myocamlbuild.ml.

The present implementation has two downsides:

(1) Relying on _tags is a bit unpleasant because people that write
    (true: foo) lines do not expect it to get also applied to the
    plugin compilation (though in fact the previous implementation
    used "profile" and "debug" tags passed in this way). There might
    be case of build breaking because the (true: tags) passed make
    myocamlbuild.ml compilation fail. A workaround would be to add
    ("myocamlbuild.ml": -foo) for any problematic tag `foo` -- I don't
    expect this situation to happen in practice, but you never know.

(2) The general tags passed to the myocamlbuild.ml compilation have
    been rather arbitrarily set to (ocaml,program,link,byte)
    (or native). OCamlbuild doesn't really have tags to describe going
    straight from a .ml (or several) to an executable, as its usual
    rules enforce separate compilation and linking steps. This means
    that some ocamlbuild rule might misbehave due to the absence of
    the "compile" step, but in practice most tag-driven compilation
    options are such that the link-options are a superset of the
    compile-options, so this will still work in many case
    (in particular for ocamlfind packages). Long-term, it may be
    better to split myocamlbuild.ml compilation in the usual compile
    then link steps.

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13999 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-13 11:43:16 +00:00
Gabriel Scherer c068aac93b ocamlbuild: move plugin second-run to the end of the initialization phase
If in the future we want to be able to use information from _tags when
compiling the myocamlbuild.ml plugin, we should compile the plugin
*after* the OCaml-tags rules of Ocaml_specific have been loaded
(OCaml_specific.init()). This patch does not change the plugin
compilation, but it delays it to the end of the initialization phase
to allow such future changes.

This means that the parsing of configuration files
(including traversing directories to find _tags files in depth) will
be done twice (once during the first run to compile the plugin, and
then once when run from the plugin). Of these operations, the only
that has user-visible consequences (and the first candidate to
performance degradations) is the hygiene checking, which we therefore
disable during the first run. Note that checksumming files is not
duplicated (it is done after the initialization phase).

Note that the semantics of _tags files in subdirectories is that they
are only ranging over files in that subhierarchy (even "true: foo"
lines do not apply to the files in ancestor or
sibling directories). This means that no _tags file in a subdirectory
can add tags to "myocamlbuild.ml". If performance of file traversing
ever was to become an issue, we could therefore skip it and read only
the root _tags file if present.

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13998 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-13 11:43:14 +00:00
Gabriel Scherer c944d63422 ocamlbuild: really stop compilation after plugin compilation when -just-plugin is called
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13997 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-13 11:43:12 +00:00
Maxence Guesdon cde8ad8a75 PR#5149: (point 15) add line breaks in html source before <pre> tags
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13991 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-12 06:37:59 +00:00
Gabriel Scherer 9c568f1c4b ocamlbuild: portable -output-obj target names (e.g. foo.byte.obj is accepted if configured as so)
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13988 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-06 18:55:21 +00:00
Gabriel Scherer 53d32510db ocamlbuild: remove the deprecated ~tags from ocaml_specific.ml, and warn on use
The parameter ~tags of Rule.rule has been ignored and deprecated for
a while, but our own code in ocaml_specific.ml was still using it --
confusing several plugin writers. This patch, inspired by a patch
proposal by Anil Madhavapeddy on PR#6059, also makes Rule.rule emit
a warning when this parameter is used. Anil originally removed it
completely from the interface, but I would like to avoid breaking the
compilation of plugin code.

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13987 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-06 16:46:00 +00:00
Gabriel Scherer a37a895592 minor: fix the Changes
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13986 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-06 14:20:24 +00:00
Maxence Guesdon 36c3ae71af ocamldoc|html: Add missing space in record fields
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13985 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-08-05 12:52:12 +00:00