Commit Graph

1236 Commits (master)

Author SHA1 Message Date
David Allsopp 7156b9cd15 Verify that configure.ac generates configure 2019-04-02 16:35:36 +01:00
Mark Shinwell 72ea849d2a
Move some middle-end files around (#2281)
* Various file moves in the middle end: this is the first stage of improving separation between the middle end and backend.
* Creation of file_formats/ directory (with associated file moves) to hold the definitions of compilation artifact formats.
* Creation of lambda/ directory (with associated file moves) to hold Lambda language definition files, transformation passes and construction passes from Typedtree.
* Disable (hopefully temporarily) dynlink, debugger and ocamldoc for the dune build.
2019-04-01 17:18:47 +01:00
David Allsopp ed2ec2537f Ensure that files marked executable are #! scripts 2019-03-27 10:32:40 +00:00
David Allsopp 3f91e8750b Skip files in .gitignore in check-typo 2019-03-27 10:32:40 +00:00
David Allsopp db215dda8f Quote directories in pre-commit hook
Belt-and-braces, since we don't use spaces.
2019-03-27 10:32:40 +00:00
David Allsopp ff26bf7a72 Ensure awk supports interval expressions
Travis already added the required option for old versions of GNU awk,
but this was still a problem on current Ubuntu systems if gawk is not
installed - mawk (the default) does not support them.
2019-03-27 10:17:41 +00:00
Anton Kochkov 4405395e9f Fix the bug reporting URL in release-checklist 2019-03-25 21:23:11 +08:00
Damien Doligez 46f901bb94 Small fixes to release-checklist 2019-03-22 15:13:41 +01:00
Stephen Dolan f495bfb7cb
Merge pull request #8514 from stedolan/boot-ocamlc-opt
Use boot/ocamlc.opt for building, if available.
2019-03-22 12:22:14 +00:00
Stephen Dolan 46c427f519 Use boot/ocamlc.opt for building, if available. 2019-03-20 10:31:46 +00:00
Mark Shinwell dbede46c2e
Improve the packing mechanism used to build Dynlink (#2268) 2019-03-19 10:26:35 +00:00
Jérémie Dimino c413136fa3 Delete otherlib/{graph,win32graph} (#2318)
The Graphics library is now distributed as a separate package.
The sources are at https://github.com/ocaml/graphics .

Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2019-03-18 15:05:57 +01:00
Xavier Leroy c5efbb42a4
MPR#3249: ocamlmklib does not support .cmxa files as arguments (#8512)
That's because ocamlopt -a doesn't support .cmxa files as arguments.
It is better to reject those files in ocamlmklib than later.
The manual never said that ocamlmklib accepts .cmxa files.

Closes: #3249
2019-03-18 09:11:36 +01:00
Mark Shinwell 2cc1ea26b9 Remove gprof support (#2314)
This commit removes support for gprof-based profiling (the -p option to ocamlopt).  It follows a discussion on the core developers' list, which indicated that removing gprof support was a reasonable thing to do. The rationale is that there are better easy-to-use profilers out there now, such as perf for Linux and Instruments on macOS; and the gprof support has always been patchy across targets. We save a whole build of the runtime and simplify some other parts of the codebase by removing it.
2019-03-16 19:56:53 +01:00
Nicolás Ojeda Bär bd69c678c2 Add CSV file with Mantis=>GitHub renumbering information 2019-03-15 00:01:48 +01:00
Mark Shinwell 0bd539ae24 GPR#2082: New option -no-insn-sched 2019-03-13 15:03:49 +00:00
David Allsopp 6e84987715 Restore -vmthreads flag as an error (#2312)
This GPR restores -vmthread with an adapted version of the deprecation message as an error message and also keeps the use_vmthreads part of ppx contexts.

* Partially revert #2289
* Convert -vmthread to an error
* Neuter use_vmthreads in ppx context
* Remove Clflags.use_vmthreads
2019-03-13 10:46:30 +01:00
Sébastien Hinderer 2ac104cd3c Update Inria's bootstrap CI job
This commit adapts Inria's bootstrap CI job to take into account the
removal of the threads library. More precisely, it updates the patch
that removes the sinh primitive from the runtime to not patch
otherlibs/threads/stdlib.ml any longer since this file has been removed
from the repository.
2019-03-12 03:33:26 +01:00
Sébastien Hinderer 32dc5b8290 Fix typo in CI script 2019-03-12 03:28:20 +01:00
Jérémie Dimino 705054b346 Delete the vmthreads library (#2289)
* Delete the deprecated vmthreads library

It was deprecated in 4.08.

* Remove the byte/native argument of init_path

It is no longer necessary.

* Error out when passing --{enable,disable}-vmthreads to ./configure

Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2019-03-11 19:38:16 +01:00
Jules Aguillon a241675676 Fix tools/caml-tex printing of sub message locations
List printer fields explicitly to avoid the same problem from happening again
2019-03-11 13:27:48 +01:00
David Allsopp 1befa5bb3e Ensure failed build terminates AppVeyor run
The mingw32 build log is post-processed for AppVeyor, but this was done
without setting -o pipefail.
2019-03-05 17:49:28 +00:00
Xavier Leroy 15cb5caf8a Use "git clean" to start CI from a clean state
Otherwise leftover files from a previous CI build can cause problems.
2019-03-02 19:31:28 +01:00
Xavier Leroy 176cb2dad1 Allow race condition in caml_leave_blocking_section
Since commit 08ed1e8 (GPR#2211) caml_leave_blocking_section writes
to caml_signals_are_pending, a variable that has known race conditions.
2019-03-02 18:29:37 +01:00
Damien Doligez 66117d2cc4 small fixes to release-checklist 2019-03-01 12:00:27 +01:00
Sébastien Hinderer 652cc148a9 Disable rebase on Cygwin 64 in Inria's CI
We do not perform the rebase which is not necessary when building
shared libraries.
2019-03-01 09:26:33 +01:00
Fourchaux 1946594bd7 Fixing typos in various files (#2246)
Note: Typos found with https://github.com/codespell-project/codespell

Here is the (semi-manual) command used to get (and correct) the typos:

$ codespell -i 3 -w --skip=".png,.gif,./ocaml/boot,./ocaml/.git,./ocaml/manual/styles,./ocaml/manual/manual/htmlman" -L minimise,instal,contructor,"o'caml",cristal,pres,clos,cmo,uint,iff,te,objext,nto,nd,mut,upto,larg,exten,leage,mthod,delte,tim,atleast,langage,hten,iwth,mke,contant,succint,methids,eles,valu,clas,modul,que,classe,missings,froms,defaut,correspondance,differents,configury,reachs,cas,approche,normale,dur,millon,amin,oje,transfert
2019-02-13 14:04:56 +01:00
Sébastien Hinderer 3a2ae8c462 Revert "temporary patch to work around a problem with BSD/ocamltest/fork"
This reverts commit 309bad6197.

The problem that made this commit necessary has since bben fixed, in
commit 6015d60fc6.
2019-02-11 16:38:58 +01:00
Damien Doligez 2b2670e72a small fixes to release checklist 2019-02-08 16:21:55 +01:00
Damien Doligez 309bad6197 temporary patch to work around a problem with BSD/ocamltest/fork 2019-02-05 16:07:11 +01:00
Florian Angeletti f15ee3be5d
Merge pull request #1941 from sliquister/ocamlcp-dedup3
reduce boilerplate in compiler command line parsing
2019-02-04 17:03:27 +01:00
Jeremie Dimino 7e0862a212 Refactor load path management and initial environment
- Add a Load_path module which caches files lookup

- Instead of falling back to the external environment, allow to
  declare in the environment that a module comes from the external
  world. This allows persistent structures to shadows non-persistent
  ones
2019-01-30 16:36:38 +00:00
Valentin Gatien-Baron 427e5a5c59 simplify the ocamlc{,opt}p code forwarding options to ocaml{c,opt} 2019-01-22 20:38:15 -05:00
David Allsopp 832db132d9 Make unix, vmthreads and str optional libraries
--disable-unix-lib, --disable-vmthreads and --disable-str-lib added to
prevent building these three libraries.

ocamldoc, the debugger and caml-tex are automatically disabled if their
prerequisites are not built. Using --enable-debugger and
--enable-ocamldoc will result in errors if these tools cannot be built.
2019-01-08 17:27:42 +01:00
Sébastien Hinderer 8550f71441 Build system: use $(ROOTDIR) rather than hardcoded paths to access ocamlc 2019-01-03 17:02:25 +01:00
Sébastien Hinderer d258bb78ac Build system: use ocamlc -depend rather than ocamldep 2019-01-03 16:43:23 +01:00
Florian Angeletti ebdad4fb74
Merge pull request #2210 from Octachron/camltex_ellipsis_test
test suite: caml-tex, test and tweaks for ellipses
2018-12-21 18:51:05 +01:00
Sébastien Hinderer cc3f70b705 Use autoconf to generate the compiler's configuration script 2018-12-21 16:02:47 +01:00
Florian Angeletti 4694786b75 caml-tex: test and tweak for ellipses 2018-12-21 12:41:40 +01:00
Sébastien Hinderer 0723ac158e Inria CI: add -no-shared-libs to script
This option was specified in the Cygwin64 slave's configuration, but this
makes it impossible to use different values on differnet branches,
which is needed when switching to autoconf.
2018-12-21 11:01:14 +01:00
David Allsopp 2b41b3f0a5 Update the pre-commit-githook for typo.prune 2018-12-20 11:46:34 +01:00
David Allsopp a18647c582 Update comments in tools/check-typo
ocaml-typo=prune => typo.prune
2018-12-20 11:46:34 +01:00
David Allsopp 1b5278a829 Update travis-ci.sh to cope with typo.prune 2018-12-20 11:46:34 +01:00
Gabriel Scherer 295f71cb96 make alldepend (with new one-dep-per-file printing) 2018-12-12 09:38:49 +01:00
Gabriel Scherer 46ef054330 Makefiles: restructure CAMLDEP usage to easily add flags
This change should be a refactoring no-op.

Before, a DEPFLAGS variable existed in some makefiles to contain
include directories to be passed to ocamldep invocations, but no
support for easily adding command-line flags to ocamldep was available
(invocations would systematically use -slash, which was duplicated
across callsites).

With this PR, a new DEPINCLUDES variable contains the include
directories, and DEPFLAGS is repurposed to contain other command-line
flags for the tool -- currently "slash".
2018-12-12 09:30:55 +01:00
Gabriel Scherer b98d3e738f add a variant of check-typo to compare against a git reference
./tools/check-typo-since trunk
./tools/check-typo-since HEAD~10

In most cases, this should be much faster than running check-typo on
the whole directory.
2018-12-09 13:31:26 +00:00
Gabriel Scherer bd29de9efe check-typo: make --check-prune faster
this comment special-cases the prune-detection logic to use the `git
check-attr` layer directly, instead of using the convenience function
`get_attrs ..` which parses its output.

On my machine, calling --check-prune on the testsuite files goes from
17s to 12s when this patch is applied.
2018-12-09 13:31:26 +00:00
Gabriel Scherer bf72878ee3 .gitattributes: prune directories recursively
Before this change, check-typo would run on manual/Makefile for
example, while this file lives within a pruned directory so it
ought to be ignored by the tool.

Note: the check-typo code seems to assume that the only pruned things
are directory, it prints "pruned directory ..." when something is
pruned. I haven't changed this part of the logic; but note that normal
./check-typo invocation will only check pruning for directories.
2018-12-09 13:31:26 +00:00
David Allsopp 89ad24e5cc Update Inria CI scripts to recognise cygwin64
OCAML_ARCH is now cygwin on the Cygwin32 worker and cygwin64 on the
Cygwin64 worker. The rebase "trick" is now only used on the Cygwin64
worker, where it is required.
2018-11-28 19:45:15 +00:00
Leo White 403003cad5 Add support for "let" operators 2018-11-27 13:30:55 +00:00
Runhang Li 97329f30ed Extend `open` to arbritrary module expressions in structures and to
applicative module paths in signatures
2018-11-26 16:20:37 +00:00
Leo White 111d4e1827 Remove positions from paths 2018-11-21 03:39:34 -05:00
Alain Frisch 2e5b9d1ef1
"Alerts" as a generalization of "deprecated" (#1804) 2018-11-15 09:51:35 +01:00
Gabriel Scherer 8396c0b8bc make alldepend 2018-11-11 17:20:27 +01:00
Daniel Bünzli a7afd89003 s/string_of_int/Int.to_string/g 2018-11-07 13:52:02 +01:00
alainfrisch 0d968e357b Move variable printer to Pprintast
- The code responsible for printing Syntaxerr errors is moved to the
  Parse module (so that it can depend on the variable printer in
  Pprintast).

- Pprintast becomes a dependency for a few tools that link some
  compiler modules in an ad hoc way (they would better be implemented
  in terms of compiler-libs).
2018-11-06 13:12:54 +01:00
Gabriel Scherer e63e9c6989 add a minor script to turn ASCII references into Markdown links 2018-10-28 11:29:17 +01:00
Sébastien Hinderer e473b67081 runtime: move the definition of INT64_LITERAL from m.h to config.h 2018-10-23 09:01:29 +02:00
Sébastien Hinderer b799715cae tools: move the definition of mklib from ocamlmklibconfig.ml to ocamlmklib.ml 2018-10-23 09:01:29 +02:00
Sébastien Hinderer 04d24edec0 tools: move the definition of syslib from ocamlmklibconfig.ml to ocamlmklib.ml 2018-10-23 09:01:29 +02:00
Armaël Guéneau 6b16bcc4fe Add option -error-style and environment variable OCAML_ERROR_STYLE 2018-10-20 17:11:35 +02:00
Gabriel Scherer 2c5bde091b address review comments by David and Damien 2018-10-18 13:44:48 +02:00
Gabriel Scherer a18cee9081 tools/check-typo: add a a "--get-attrs <path>" mode for debug purposes 2018-10-18 13:44:48 +02:00
David Allsopp af38eb2c0d Make typo.very-long-line => typo.long-line=may
typo.long-line can still be explicitly set in .gitattributes (and
typo.long-line typo.very-long-line=may will still issue unused if no
lines are more than 80 columns)
2018-10-18 13:44:48 +02:00
Gabriel Scherer 26cec302ee check-typo: simplify implementation by deconstructing the built-in exceptions 2018-10-18 13:44:48 +02:00
Gabriel Scherer 17fa399970 check-typo: make sure that 'prune' attributes on non-directories are honored 2018-10-18 13:44:48 +02:00
Gabriel Scherer 5c0024fe67 rework the relation between .gitattributes and ./tools/check-typo
Before this patch, check-typo is directed by a single git attribute,
ocaml-typo, which is used as a key to set a value:

    ocaml-typo=long-line,missing-header

(the value here is `long-line,missing-header`, and the code splits the
comma later)

This model is very fragile because .gitattributes does not allow to
give attribute keys a collecting/aggregating semantic: each new
setting of the key removes the previous setting, instead of adding to
them. For example,

    testsuite/tests/**                      ocaml-typo=missing-header
    testsuite/tests/win-unicode/*.ml        ocaml-typo=utf8

and

    testsuite/tests/win-unicode/*.ml        ocaml-typo=utf8
    testsuite/tests/**                      ocaml-typo=missing-header

are not equivalent, and instead of using either one we would introduce
redundancy for robustness:

    testsuite/tests/**                      ocaml-typo=missing-header
    testsuite/tests/win-unicode/*.ml        ocaml-typo=missing-header,utf8

With this patch, we switch to a model where each ocaml-typo setting is
its own attribute, of the form `typo.<<attribute>>`. The lines above
would be written, in either order:

    testsuite/tests/**                      typo.missing-header
    testsuite/tests/win-unicode/*.ml        typo.utf8

Not only does this approach make our .gitattributes more robust, it
allows for a more fine-grained treatment of the "unused-prop"
marker. This was used as an attribute to say: don't make it in an
error if the given typo-rule is in fact respected (by default, opting
out of a typo-rule gives an error if the typo-rule is respected). But
because of the single-key nature of ocaml-typo, unused-prop would
range over all settings, not just one of them. For example

    emacs/caml.el ocaml-typo=long-line,unused-prop,missing-header

seems to suggest that 'unused-prop' only qualifies the 'long-line'
rule, but in fact it also ranges over 'missing-header'. In contrast,
with this patch, we write the following:

    emacs/caml.el typo.long-line=may typo.missing-header

the `=may` value setting is used to make an exception to a typo-rule
optional.
Interestingly, most .gitattributes lines worked without extra error
when I turned each unused-prop in a =may setting over the rule just
before, instead of all rules: our checking is now more precise than
before, better capturing the intent of the .gitattributes author.

As I had to rewrite parts of the check-typo code for this, I took the
opportunity to rename a couple variables speaking about SVN (now long
defunct) into more meaningful names:

- `$is_svn` => `$path_in_index`
- `$svnrules` => `$attr_rules`
2018-10-18 13:44:48 +02:00
Gabriel Scherer 69a4952963 check-typo: make (--check-prune .git) work as expected 2018-10-18 13:44:48 +02:00
Gabriel Scherer 41c6f50ec8 shebangs: use `/usr/bin/env bash` instead of `/bin/bash` for BSD compat
Currently our CI machine on FreeBSD fails to build with the following
error message:

```
bytecomp/generate_runtimedef.sh runtime/caml/fail.h runtime/primitives > bytecomp/runtimedef.ml
/bin/sh: bytecomp/generate_runtimedef.sh: not found
```

This PR converts all the files with a `/bin/bash` shebang to
`/usr/bin/env bash`. Some files use `/bin/sh` instead, and they are
unchanged. It may be the case that some 'bash' files could in fact run
using 'sh', but checking this requires more work and I decided to
follow the original author's intent.

(Personally I like using bash explicitly as it gives a consistent
programming environment that I can easily test on my machine; but this
should not be at the expense of portability.)
2018-10-16 09:06:16 +02:00
Thomas Refis d68e0e2077
Provide a way to build the bytecode compiler using Dune (#2093) 2018-10-10 16:16:00 +01:00
Damien Doligez f5f117ea28 more fixes to release-checklist, from releasing 4.07.1 2018-10-10 10:57:19 +02:00
Gabriel Scherer ecd5275ad3 add a release checklist (#1866)
* add a release checklist

Currently this list isn't publicly available, it sits in various
different versions on @damiendoligez's filesystems. He sent me a copy
when I took care of some of the recent releases. The present
presentation is a result of significant cleanups and changes to the
checklist -- in particular, some mistakes may have jumped in.

This is not a scripted process, it is very informal and it is likely
that there are some mistakes/omissions in the list. Yet, it sounds
better to have it somewhere in the source repository than not have it
around at all. It was certainly helpful to me, and it probably would
be to other release-help volunteers.

(The list is put in tools/ because there isn't a clearly better place
for it. This choice was suggested by Damien.)
2018-10-04 14:32:14 +02:00
Mark Shinwell 2b5f13c913 GPR#2056 (Backend_var) 2018-09-28 17:59:01 +02:00
Sébastien Hinderer ba6362a07d Move config/Makefile to Makefile.config
In order to prepare the transition to autoconf, this commit moves the
configuration Makefile out of the config directory which will disappear
and gives it the name it will have once intstalled, namely Makefile.config.
2018-09-17 14:23:35 +02:00
Nicolás Ojeda Bär ae0bbae177 Add support for -args and -args0 to ocamlmklib 2018-09-14 15:33:42 +02:00
David Allsopp 9c1f5f13d7 Split the AppVeyor build into two jobs 2018-09-07 08:41:54 +02:00
David Allsopp b069f692b4 Remove space from end of FLEXLINK_ENV 2018-09-07 08:34:53 +02:00
David Allsopp ad07b6d9b5 Use $(addprefix ...) and spacing adjustments 2018-09-07 08:34:53 +02:00
David Allsopp 4756a576f0 Move FLEXLINK_ENV definition to Makefile.common 2018-09-07 08:34:53 +02:00
David Allsopp cd64e2ac33 Always use ROOTDIR in tools Makefile 2018-09-07 08:34:53 +02:00
David Allsopp c13c200f87 Standardise setting and use of OCAML_FLEXLINK
Some Makefiles were using export to set OCAML_FLEXLINK "globally" while
others set a variable FLEXLINK_ENV and set the environment explicitly.

All Makefiles now use FLEXLINK_ENV and also only invoke it on linking
commands (rather than, for example, all invocations of ocamlopt).
2018-09-07 08:34:53 +02:00
Florian Angeletti 0a05dc8382
Merge pull request #2008 from gasche/manual-examples
Manual examples
2018-09-06 18:54:27 +02:00
Gabriel Scherer 549ec6536b caml_tex: also provide error output on Lexing errors
I hit a Lexer error by mistakenly closing an environment with

    \end{caml_example*}{verbatim}

instead of

    \end{caml_example*}

and caml_tex would not quote the wrong input or indicate
at which line the error was, which makes debugging painful.
2018-09-06 12:38:29 +02:00
Gabriel Scherer 9e84a038cb Makefile: make the parser.mly timestamp heuristic more robust
Reviewed by Sébastien Hinderer.

(no change entry needed)
2018-09-06 12:17:17 +02:00
Gabriel Scherer ac265e9ea3 (minor) remove unused CAMLYACC variables 2018-09-01 23:17:06 +02:00
Gabriel Scherer d09349f631 rename parsing/parser_menhir into parsing/parser 2018-09-01 23:17:06 +02:00
Gabriel Scherer f571282d7d menhir parser: rename MenhirLib into CamlinternalMenhirLib
The goal of this change is to avoid conflicts encountered by
compiler-libs users that would also use their own MenhirLib runtime
for their own parsers.

I first tried to implement a solution to this module-name-conflict
issue using module aliases and -open, but this proven too fragile and
too difficult to get right.
2018-09-01 23:17:04 +02:00
Gabriel Scherer 9a38c848fc Setup and use a Menhir parser for the OCaml grammar (REBASE POINT)
Uses the new $symbolstartpos feature of Menhir
to get locations identical to the OCamlYacc ones.

REBASE POINT: at the point of this commit, using a diff program
on parser.mly and parser_menhir.mlyp should give identical results
after the header code. If you rebase the Menhir-parser patchset
against a newer ocamlyacc parser (parser.mly), those two files
will have diverged, and you need to merge the parser.mly change
back into parser_menhir.mlyp -- and then deal with them in the
rest of the patch series.
2018-09-01 23:17:03 +02:00
Gabriel Scherer 6e2891c324
Merge pull request #1945 from gasche/stop-after-parse
new -stop-after-parse option: stop after the parsing phase
2018-09-01 07:43:40 +02:00
Gabriel Scherer 294934299e new -stop-after option: stop after the given compiler pass (parsing, typing) 2018-08-31 22:49:23 +02:00
Sébastien Hinderer 84821420b5 Fix the remove-sinh-primitive patch
This patch is used during the bootstrap CI job.

Moreover, the patch should be exempted from the long-line check-typo rule.
2018-08-28 08:37:03 +02:00
Jérémie Dimino 9124ab82d1
Deprecate Pervasives (#1605)
- inline Pervasives in Stdlib and re-add Pervasives as a deprecated
module that aliases all elements of Stdlib except the stdlib modules.

- remove special case for Stdlib.Pervasives in printtyp.ml
2018-08-27 12:42:14 +01:00
Gabriel Scherer d5af6d972f caml_etex: use the location of the attribute, now available 2018-08-27 07:42:31 +02:00
Gabriel Scherer 87855ffcae make alldepend 2018-08-09 22:10:54 +02:00
Armaël Guéneau c0820e30cb Location: significantly rework the code printing errors and warnings 2018-08-08 17:42:08 +02:00
Hugo Heuzard 8043144494 Add locations to attributes
Changes

fix typo
2018-08-06 13:19:28 +01:00
Hugo Heuzard c4dd1e67b5 Add locations to toplevel directives 2018-08-06 11:06:30 +01:00
Xavier Clerc 7e29162582 Pass the elements from `BUILD_PATH_PREFIX_MAP` to the assembler (#1930) 2018-07-27 12:25:23 +02:00
sliquister ae1317caae Add option to dump the output of e.g. -dlambda in a file (#1913) 2018-07-27 08:51:53 +01:00
Nicolás Ojeda Bär 40bab2d768 Implement reviewer suggestions 2018-07-25 17:58:32 +02:00
François Bobot da3f9f34f5 Use reraise_raw_backtrace in Misc.try_finally
And add labels ~always for previous cleanup function and
    ~exceptionally for new cleanup function in exceptional case
2018-07-25 17:58:32 +02:00
Florian Angeletti 4be6cafcc3
manual, code example preprocessor : full conversion to compiler-libs (#1863)
* manual tools: use toploop directly in caml_tex2
* manual tool: improved error messages
* manual: always print errors and warnings
* fix nefarious interaction with GPR#1120
* move manual/tools/caml_tex2 to tools/caml_tex
* Basic text for caml-tex
2018-07-25 10:38:08 +02:00
Sébastien Hinderer cc2b15ee3f Fix typos in tools/ci/inria/main 2018-07-24 18:26:06 +02:00
Nicolás Ojeda Bär 84bc3621b4 Build tools with debugging information 2018-07-24 13:39:39 +02:00
Gabriel Radanne 1be47bf7ab Just some tbl things. (#1699) 2018-07-23 13:19:41 +01:00
Gabriel Scherer dca053d6e7
Merge pull request #1906 from sliquister/doutput-prepare
Minor cleanup around printing in the compiler (warnings, errors, etc)
2018-07-17 11:44:47 +02:00
Thomas Refis 369ea5f432 allow exceptions under or-patterns 2018-07-16 10:41:55 +01:00
Valentin Gatien-Baron 3d0299a185 Create warning 64, for uses of -unsafe with a -pp that returns a marshalled ast
Instead of the current print to stderr. This way it's treated the same
as other warnings: it has a position, colors, can be made an error,
disabled, goes in the expected formatter, is documented.
2018-07-15 15:08:38 -04:00
whitequark 1ebc9f5a4c Remove the Sort module. (PR7812)
It has been deprecated since 2000, shown a deprecation warning
since 4.02, and Sort.merge is documented to have undefined behavior
when the lists being merged are not sorted in the first place.
2018-07-13 16:04:49 +02:00
David Allsopp e41dec72e4 Finally use the correct commit range for check-typo 2018-07-11 20:00:57 +01:00
David Allsopp 0c9c50b134 Restore check-typo... 2018-07-11 19:38:14 +01:00
David Allsopp 60481d0d4b (Hopefully) restore Travis trunk tests 2018-07-11 19:34:48 +01:00
David Allsopp 30763b5754 Correct commit deepening test on Travis. 2018-07-11 15:23:37 +01:00
David Allsopp 1931276ab7 Work-around stale TRAVIS_COMMIT variable
There seem to be occasions when rebuilding PRs where the TRAVIS_COMMIT
variable (which should be the SHA of the merge commit) is out-of-date.
When this happens, and the commit referred to does not exist, update
TRAVIS_COMMIT to be FETCH_HEAD as retrieved from GitHub instead.
2018-07-11 11:42:38 +01:00
David Allsopp 0c5719347d Deepen the Git clone on Travis for old PRs
If a PR is based on an older commit, the Travis default clone of 50
commits for the target branch may not be sufficient to compute the
merge-base.
2018-07-11 11:20:50 +01:00
David Allsopp 968a41f6fb More debugging info in Travis 2018-07-11 10:34:36 +01:00
David Allsopp 6f3ae41e29 Fix error in githook when no files in index
For example, when amending a commit message.
2018-07-04 11:51:34 +02:00
David Allsopp 4f6e89527e Use version number in the Git pre-commit hook
Otherwise it'll get irritating when working with older-based branches.
2018-07-04 11:51:34 +02:00
David Allsopp 8ac6fab4a8 Tweak Travis script invocation
Display TRAVIS_COMMIT information and move the set -x into the script
(after the echoing of status variables).
2018-07-04 09:54:04 +01:00
David Allsopp 9b44db6997 Wrong range used for Travis check-typo test
Travis was incorrectly reading the files to run through check-typo from
just the tip commit of the PR branch, instead of the entire commit
range (wrong parameter number).
2018-07-03 13:07:06 +01:00
David Allsopp 0250de3cce Simplify f395dfc
No need for a third parameter - all the reads should take place from the
merge commit on a PR.
2018-07-03 13:07:06 +01:00
David Allsopp f395dfc96b Run check-typo over merge commit
When checking an entire branch, check-typo was reading files from the
tip of the pull request branch, which is only correct if the branch is
based on trunk - it should read from the merge commit instead.

This affects branches based on older trunk before check-typo compliance
was enforced, since it can cause now-corrected check-typo violations to
re-appear.
2018-07-02 11:32:49 +02:00
Nicolás Ojeda Bär 396ede46f8 check-typo: escape slash in awk character range for greater compatibility 2018-07-01 17:19:25 +02:00
David Allsopp bc3deddbb2 Ensure check-typo exits with an error
Not just with the exit status of the last file.
2018-07-01 08:20:10 +01:00
David Allsopp 38caf1cc97 Prefix calls to check-typo with ./
This ensures that check-typo's default rules are picked up!
2018-06-30 17:41:48 +01:00
David Allsopp 3f8c68b9d4 Allow for ocaml-typo=prune 2018-06-30 16:54:47 +01:00
David Allsopp 5af8d6d946 Don't test deleted files 2018-06-30 16:46:59 +01:00
David Allsopp 225d57883d Run check-typo in Inria extra-checks 2018-06-30 16:43:34 +01:00
David Allsopp f1815fe487 Upgrade warning for githook 2018-06-30 16:43:34 +01:00
David Allsopp c48645626a Don't check individual GPR commits 2018-06-30 16:43:34 +01:00
David Allsopp 7e2331da1e Travis sanity checks should use PR commits
TRAVIS_COMMIT_RANGE is not correct unless a PR is based on the tip of
the target branch - it will include commits being merged from the target
branch as well.

The check-typo, changes and tests builds now use
$TRAVIS_BRANCH..$TRAVIS_PULL_REQUEST_SHA which gives the precise range
of commits included in the pull request (i.e. the author's) only.
2018-06-30 16:43:34 +01:00
David Allsopp 54402920b7 Run tools/check-typo in Travis CI 2018-06-30 16:43:34 +01:00
David Allsopp 772b052312 Allow tools/check-typo to work with Ubuntu 12.4.5 2018-06-30 16:43:34 +01:00
David Allsopp db4e919878 Allow tools/check-typo to analyse non-HEAD commits
Three alterations to tools/check-typo:

1. Binary check may be on any commit where the default is HEAD
2. .gitattributes may be read from any commit, rather than just the
   working tree
3. Detection of files under version control may be relative to a
   specific commit, rather than relying on git ls-files
2018-06-30 16:43:34 +01:00
David Allsopp 546dd121cb Supply a Git pre-commit hook for tools/check-typo
Automatically runs tools/check-typo and rejects the commit if they don't
pass.
2018-06-30 16:43:32 +01:00
Sébastien Hinderer d3e73595e5 Merge the asmrun and byterun directories into the runtime directory 2018-06-28 17:50:33 +02:00
Xavier Clerc 9c182f7e24 Add -dcamlprimc + pass -fdebug-prefix-map when available (#1845)
- Introduce `-dcamlprimc`, to keep the generated C file containing the primitive list
- Use `-fdebug-prefix-map` for compiling temporary C files when this option is supported
2018-06-27 14:56:29 +01:00
Gabriel Scherer f3aca2376f
Merge pull request #1821 from gasche/makefiles-consistent-opt-targets
Makefiles: consistently offer `allopt` and `opt.opt` targets
2018-06-24 00:46:50 +02:00
Sébastien Hinderer 85fa27f7e9 Rename C compiler related build variables
This commit renames a few C compiler related build variables so that
they are reserved for the build system. They will then be re-introduced,
but this time as user varialbes whose value can be freely customized
when compiling the package, without risking to conflict with those
command-line flags that are required by the build system itself.

Here are the variables this commit renames:

- CFLAGS -> OC_CFLAGS
- CPPFLAGS -> OC_CPPFLAGS
- LDFLAGS -> OC_LDFLAGS

Note: before this commit the compilation of scheduler.c in
otherlibs/threads was relying on make's implicit rule to compile C files.

Since this commit stops using the standard variables for flags,
it is necessary to introduce an explicit rule to compile C files
and that makes use of the newly introduced variables.
2018-06-20 14:01:42 +02:00
poechsel 71d0d57d8d ocamloptp: fix wrong name for -inline-max-unroll option (#1843)
When using ocamlopt with the argument -inline-max-unroll, ocamloptp would pass it as -unroll to ocamlopt, thus leading to an error.
2018-06-20 12:03:10 +02:00
David Allsopp b5d1929e87 Whitespace and overlong line fixes. 2018-06-14 15:15:34 +01:00
David Allsopp 4c3c7fda25 Break long lines in Inria CI scripts
It's tricky to do this elegantly in sh, sadly...
2018-06-13 09:37:49 +01:00
David Allsopp 6885aeeedb Validate the encoding of files marked UTF-8
tools/check-typo validates the encoding of any file with ocaml-typo=utf8
and will not proceed if the test fails.
2018-06-11 22:53:47 +01:00
David Allsopp 7a7c156d3f Add utf8 rule to tools/check-typo
The utf8 rule allows UTF-8 sequences anywhere in a file and line-length
calculations take this into account.
2018-06-11 22:53:47 +01:00
David Allsopp 91a91aea2d Build check_all_arches on AppVeyor too 2018-06-11 22:52:00 +01:00
David Allsopp fb5c3683ad Build and test debug runtime on AppVeyor 2018-06-09 10:01:58 +01:00
Sébastien Hinderer 4de595e373 Inria CI extra-checks: remove left-over from commit 12aa0caf5a 2018-06-08 15:08:53 +02:00
Gabriel Scherer a1bc562d8a makefiles: consistently offer *both* 'allopt' and 'opt.opt' targets
Some makefiles (lex, stdlib, otherlibs) would only offer allopt, while
others (ocamldoc, tools) only offered opt.opt. It is inconvenient to
have to remember which target name to use while going through various
repositories.
2018-06-07 09:54:13 +02:00
Sébastien Hinderer 3e085186a7 Add script to test the bootstrap on Inria's CI 2018-06-06 11:59:54 +02:00
Sébastien Hinderer 69944e9e73 Remove CI scrippts from tools
Now that the CI scripts have been moved also on the 4.07 branch and that the
Jenkins jobs have been updated to call the scripts from their new locations,
get rid of the legacy ones.
2018-06-05 16:42:14 +02:00
Dwight Guth 6a06a1123a add advanced option to tune performance of pattern matching compiler in case of exponential blowup 2018-06-01 23:51:56 +02:00
Sébastien Hinderer b2240b9878 Make sure the make_opcode tool is run using byterun/ocamlrun
This tool is used to compile ocamlc. Given that make_opcodes is itself
recompiled as part of the bootstrap process, it needs to be run on the new
(rather than old) runtime. In other words, make_opcodes needs to be run
using byterun/ocamlrun rather than boot/ocamlrun.

This commit fixes this.
2018-05-31 14:35:57 +02:00
Sébastien Hinderer 12aa0caf5a Inria CI: extra-checks job improvement
Use the new SKIP_TESTS mechanism to skip the stackoverflow test
rather than modifying the header files.
2018-05-29 09:59:17 +02:00
Sébastien Hinderer a6fd97312e Inria CI: skip a few tests in the extra-checks job 2018-05-28 22:01:00 +02:00
Xavier Leroy 16b01bd98f Make CI script inria/extra-checks executable 2018-05-27 10:37:12 +02:00
Xavier Leroy a9aa1d2983 CI testing with "sanitizers" applied to the C code
This CI script builds and tests the system using Clang and GCC
"sanitizers" to perform additional run-time checks on the C code,
e.g. out-of-bound memory accesses.

Currently, we use the Address, Undefined Behavior and Thread sanitizers.
The Memory sanitizer (reads from uninitialized memory) doesn't quite
work and is commented out in the script.
2018-05-27 09:36:44 +02:00
Sébastien Hinderer a9186772fe Inria CI main job fix
This commit stops enabling the instrumented and debug runtime at
configure time. Given that they are now enabled by default this is
no longer necessary.
2018-05-25 14:55:15 +02:00
Sébastien Hinderer a2586680a0 Remove the Makefile.nt files 2018-05-25 00:36:56 +02:00
Sébastien Hinderer e3f792a14b Fix CI script filenames
This is a follow-up to GPR#1796
2018-05-24 09:40:10 +02:00
Sébastien Hinderer 8ab50ec1e3 Move the CI-related scripts to dedicated directories 2018-05-24 09:18:56 +02:00
Xavier Leroy 4adae1b9bd Add parallelism and "runtime cleanup" configuration
* Test memory-cleanup-at-exit runtime mode (OCAMLRUNPARAM="c=1")
* Run with -j8 because we have plenty of cores on the test machine
2018-05-23 20:40:06 +02:00
Mark Shinwell 8054e4f819 Add configure option to not install ".byte" executables (#1776)
In environments where the executables compiled to native code,
such as ocamlopt.opt, are always used in preference to the bytecode
versions then space can be saved by not installing the latter.
This patch provides a configure option to do such. It is relatively lightly
engineered; in particular, it won't complain if the native code executables
aren't themselves being built; but given this is an option for knowledgeable
users we think that it is reasonable.
2018-05-14 10:44:01 +02:00
Mark Shinwell ea2d6a1e31
Add configure options to control installation of source artifacts (#1777) 2018-05-14 08:15:44 +01:00
Gabriel Scherer 559206b4e0 ocamlc -config: new -config-var option to print specific configuration variables
The proposed behavior of `-config-var s` is as follows:
- if `s` is an existing configuration variable, print its value as
  a string and exit with a success return value (0)
- if `s` is not an existing configuration variable, print nothing
  and exit with a failure return value (non-0)

Note that we do not print a newline after the value of the
configuration variable. In particular, if the value is an empty
string, the output is undistinguishable from the output for
non-existing variables, the return value has to be considered instead.

The following alternative behaviors were considered:

- We could print a newline after the configuration value, which
  would let users distinguish empty values from non-existing variables
  by counting the lines of output, and would also be more pleasant for
  users invoking the option from the command-line. However, the way
  bash works on Windows means that $(ocamlc -config-var foo) would keep
  a trailing \r in its output, and portable scripts would have to use
  $(ocamlc -config-var foo | tr -d '\r') instead, which is a pain.
  (This issue was pointed out by David Allsopp)

- We could print a message on the error output if the configuration
  variable does not exist. This is clearer to a human user, but it is
  annoying for scripts if they forget to silence the error output and
  get their output mixed with our error messages. The main use of this
  new feature is for scripting purposes.
2018-04-27 19:54:08 +02:00
Nicolás Ojeda Bär 5f38a63b2a tools/make-version-header.sh: fix minor version extraction
bash considers sequences of integers starting with zero to be octal, so e.g. a
$minor value of "08" will be taken as an (illegal) octal number, causing an
error.

To fix this, we drop any leading zero when extracting the minor version.
2018-04-11 10:07:34 +02:00
Leo White bc9f032e2a Reduce cmx sizes by sharing variable names (#1627) 2018-04-09 08:43:47 +01:00
Damien Doligez d42422a0cf Revert "Continuation of GPR#1580 (022051e7bd): bootstrap to remove Lambda.Const_pointer"
This reverts commit b4fa820b78.
2018-04-06 16:09:53 +02:00
Pierre Chambart 0a42259060 Turn flambda invariants checks off by default (#1686) 2018-04-06 09:49:57 +01:00
Sébastien Hinderer e84965c839 ocamlobjinfo: make sure -null-crc is taken into account everywhere 2018-04-05 23:05:12 +02:00
Sébastien Hinderer c20b26178d Rename and slightly modify ocamlobjinfo's -no-crc command-line option
Instead of printing no CRC at all, this option should rather preserve the
distinction between no CRC at all (represented by a dummy CRC
consisting of 32 '-' characters) and a real CRC represented by a
null CRC consisting of 32 '0' characters.

This commit thus renames the option from -no-crc to -null-crc.
2018-04-05 19:17:18 +02:00
Sébastien Hinderer 4a26e8047d ocamlobjinfo: add the -no-crc command-line option
When this option is used, the CRCs of ipmported interfaces are not
displayed. This is useful e.g. in the testsuite.
2018-04-05 14:24:12 +02:00
Gabriel Scherer 3702f53692 factorize common makefile definitions in Makefile.common 2018-03-29 17:04:05 +02:00
Gabriel Scherer afcd29eb0c makefiles: turn the 'install' command into a variable
(Suggestion made by Sébastien Hinderer during review.)
2018-03-29 14:40:23 +02:00
Gabriel Scherer ecfd39f127 makefiles: use 'install' instead of 'cp' in 'make install' targets
I can observe weird performance bottlenecks on my machine caused by
the use of 'cp' in the 'install' scripts of OCaml. When installing
into a directory that is already populated by an existing
installation, 'make install' can routinely take 10s on my machine¹. After this
change it reliably takes 1.5s, independently of whether the
destination is already populated or not.

¹: a brtfs filesystem on an old-ish SSD

Why I care
----------

An extra 10s delay due to 'make install' can be noticeable in tight
change-build-install-test feedback loops for a compiler change where
we change the compiler, have a fast 'make world.opt' due to
incremental builds, install the change and test it -- possibly after
installing a couple opam packages, which can be fairly quick.

Partial diagnosis
-----------------

The performance issue seems to be caused by the fact that 'cp' (at
least the GNU coreutils version), when the file already exists,
replaces it by opening it in writeonly+truncate mode and writing the
file content ('strace' shows that the delay is caused within an
'openat' call). In particular, using the --remove-destination option
(which changes 'cp' to just remove the destination file before
copying) removes the performance issue, but this option seems missing
from the BSD/OSX 'cp' so it could cause portability issue.

Change
------

The present commit rewrites the 'install' targets of all Makefiles to
use the 'install' command instead. 'install' by default gives
executable-like permission to the destination file, instead of reusing
the source file's permissions, so we specify manually the permission
modes, depending on whether the installed file is an executable (or
dynamically-linked library) or just data (including other compiled
object files).

Testing
-------

I checked manually that the permissions of the installed files are
identical to the ones of the current 'cp'-using targets, except for
some '.mli' file in middle_end which currently have +x bits enabled
for no good reason.

Remark: To test this, playing with the DESTDIR variable is very useful
(this lets you install to a new directory (or the same as before)
without having to re-run the configure script). I used the following,
fairly slow shell script to collect permissions:

    for f in $(find $DESTDIR); do \
      echo $(basename $f) $(ls -l $f | cut -d' ' -f1); \
    done | sort

Remark: it is important to run `sync` in-between 'make install' runs
to avoid timing effects due to filesystem or disk caching
strategies. I believe that this corresponds to the natural time delay
(and unrelated disk activity) that would occur in realistic
change-install-test feedback loops.
2018-03-29 14:40:22 +02:00
Sébastien Hinderer 94fbfe2e79 Fix name of ocamltest program in tools/ci-build 2018-03-16 07:40:58 +01:00
Hugo Heuzard ad6304d7ec Rename instructions GET/SETSTRINGCHAR -> GET/SETBYTESCHAR 2018-03-15 18:25:31 +01:00
Hugo Heuzard 1c233b6b69 Add bytecode instruction to access string, different from the bytes one. 2018-03-15 18:25:31 +01:00
Mark Shinwell b4fa820b78 Continuation of GPR#1580 (022051e7bd): bootstrap to remove Lambda.Const_pointer 2018-03-15 10:12:13 +00:00
Sébastien Hinderer ef96890adb ci-build improvements
This commit contains two improvements to the cleanup done by ci-build on
Windows machines:

1. When a task is killed, also kill its subtasks (taskkill's /t option).

2. Add ocamltest.byte and ocamltest.opt to the list of tasks to kill.
2018-03-08 16:11:31 +01:00
Gabriel Scherer 0489cfaf9e build_path_prefix_map: update .depend and Makefiles 2018-03-01 17:41:28 +01:00
Sébastien Hinderer fa7019437c Add the -dunique-ids and -dno-unique-ids options to the compilers
These options allow to control whether identifiers are made unique by
appending a stamp to them when dumping intermediate representations or not.

The default is to print the stamp, as is done currently.

The "-dno-unique-ids" option is useful e.g. to simplify the comparison
between a produced intermediate reprsentation (-dlambda, say) and the
expected one, in the context of the testsuite, for instance.
2018-02-20 18:02:35 +01:00
Gabriel Scherer cc5b7ef6be make alldepend 2018-02-05 19:30:48 +01:00
David Allsopp cd86b6fb88 Add reference to Cygwin64 rebase issue in flexlink 2018-01-11 14:05:08 +00:00
Sébastien Hinderer b41a4c3090 Also test -no-flat-float-array on Inria's CI
The test is done by the other-configs job
2017-12-13 15:15:55 +01:00
Sébastien Hinderer 7ab1656e0f tools/ci-build-other-configs should stop on errors 2017-12-13 15:10:55 +01:00
Gabriel Scherer 3882302fa6
Merge pull request #1434 from damiendoligez/makefile-cleanup
Makefile cleanup
2017-12-10 17:14:12 +01:00
Gabriel Scherer cfac8525ab fix minor bug in tools/check-symbol-names
(cherry picked from commit d609dc57f8c863d613250e506f39fefe6674100a)
2017-11-10 17:21:56 +01:00
David Allsopp bfff8f9251 Warn if a file contains UTF-8 and Latin-1
Add a new warning non-ascii-utf8 displayed only if the non-ascii
attribute is specified and UTF-8 characters were ignored in the
copyright or authors lines in the header.
2017-10-25 23:54:39 +01:00
David Allsopp 49723e5fd4 Ignore very long URLs in tools/check-typo
This is only to allow for a few specific instances, so for the time
being implemented for long-long and not very-long-line.
2017-10-25 23:54:39 +01:00
David Allsopp 29f80504ad Add missing copyright header 2017-10-25 23:54:39 +01:00
David Allsopp 965a9d6f6f Correct copyright header 2017-10-25 23:54:39 +01:00
David Allsopp 3ab069cedf Correct licence for tools/make_opcodes.mll
Incorrectly copied from an old QPL header.
2017-10-25 23:54:39 +01:00
David Allsopp 96bc6522ce Permit UTF-8 characters in copyright and authors
Allows names to include accented characters, but only in a comment.
2017-10-25 23:54:39 +01:00
Damien Doligez af78f02368 take some reviewers' remarks into account 2017-10-19 17:15:52 +02:00
Damien Doligez 41ee22b842 ci-build: remove now-redundant `make coldstart` 2017-10-18 17:32:09 +02:00
Sébastien Hinderer 715fbc49c6 Introduce tools/ci-build-other-configs
Inria's CI uses an "other-configs" job to test various, less
widespread configurations of the OCaml compiler.

Before this commit, the list of configurations to test was part of the
configuration of the Jenkins job itself, making it impossible to
have branch-specific configurations.
This commit introduces the tools/ci-build-other-configs script, which
can vary from branch to branch.

The job's configuration has been updated to execute the script when
it exists and to fallback to the former, built-in list of
configurations on the branches where this script is not present.
2017-10-03 14:24:43 +02:00
Xavier Leroy 5741d2fda3 Use the new "make parallel" mode for the test suite if -j option given 2017-09-23 11:38:58 +02:00
Damien Doligez f086eda9c0 add -no-flat-float-array configure option 2017-09-15 18:24:36 +02:00
Mark Shinwell b65096678b Register availability analysis (#856) 2017-09-15 11:08:14 +01:00
Xavier Leroy 5701b299d0 ci-build: add support for parallel make
OCAML_JOBS environment variable and "-j" command-line option.

Also: document the interesting environment variables.
2017-09-10 11:19:45 +02:00
Xavier Leroy 0eb129e276 ci-build: be nice to other users and run at lower priority 2017-09-10 11:12:27 +02:00
Xavier Leroy 76f5f62dda ci-build: silence the make distclean
This saves several hundred lines of noise in the build logs and make them easier to analyze.
2017-09-10 11:07:24 +02:00
Damien Doligez 19f435dc54 cygwin CI: rebase to avoid fork problems 2017-09-05 01:08:35 +02:00
Alain Frisch 7eba1178ea Remove spurious semicolons after non-unit expressions (#1305) 2017-08-29 15:14:50 +01:00
David Allsopp a0325185b7 Allow -l option to ocamlmklib on MSVC ports (#1189) 2017-08-14 07:10:31 +01:00
Alain Frisch fd47ba9649 Support 'let open' in class and class type expressions (#1249)
* Support 'let open' in class and class type expressions.

* Adapt ocamlprof.

* Adapt ocamldoc.

* Add tests.

* Changelog.

* Manual.
2017-07-20 08:17:30 +02:00
sliquister 3f76c0525b generalize -dtimings to show allocation, top heap size (#1152) 2017-06-09 12:29:21 +01:00
Fabrice Le Fessant 8daa184d95 New -depend option for ocamlc/ocamlopt 2017-06-01 15:56:30 +02:00
Fabrice Le Fessant fb2a4421a6 Fix tools/read_cmt (#1036)
Install tools/read_cmt as ocamlcmt
* Add option -save-cmt-info to add more info in .annot files
* Provide more annotations
* Add option -I <dir> to find .cmi files
2017-05-11 13:56:19 +02:00
Sébastien Hinderer a9f31f0f0c On CI, check that 'make alldepend' works only if native compiler si built 2017-04-28 15:56:08 +02:00
Sébastien Hinderer 1a30ec8cc0 Fix tools/ci-build
No spaces allowed in varialbe assignments.
2017-04-28 10:58:15 +02:00
Sébastien Hinderer 255720556f Simplify installation of OCaml header (.h) files
The tools/cleanup-header script has no effect any more, so stop
calling it during make install and remove it from the repository.
2017-04-26 19:28:17 +02:00
Sébastien Hinderer 40fcbb5f0a Move configuration header files from the config to the byterun/caml directory
This commit moves:
  - config/m.h to byterun/caml/m.h
  - config/s.h to byterun/caml/s.h

Consequently, m.h and s.h now get installed alongside other
OCaml header files.

This commit also updates the .depend files, introducing updates in the
dependencies which are not consequences of this commit itself.
2017-04-26 19:28:17 +02:00
Sébastien Hinderer c8103128c1 Let CI check that 'make alldepend' still works.
This is done on a few slaves only.
2017-04-26 18:37:35 +02:00
Sébastien Hinderer 67276a09af tools/ci-build: install to a different directory for each build
This commit ensures the install directory will be distinct for each build,
with the two following motivations:

1. If required, it will make it possible to have several builds running
concurrently on the same slave without conflicts between their make install

2. So far, if for any reason make install fails, then the build script
gets stopped and the install directory will not be removed.
Thus if a future build tries to install to the same directory, its
installation could in principle fail, not because it is broken but because
the previous build has left the install directory in a corrupted state.

So this commit ensures that make install will be done in an empty
directory.
2017-04-26 11:49:33 +02:00
Sébastien Hinderer 023f3e3fa2 tools/ci-build: honor instdir on non-configure builds
The instdir environment variable is used by ci-build to define where
make install should install the compiler. Before this commit, a value was
assigned to instdir for the Windows builds that do not use configure,
but then this value was not taken into account, making the assignments useless
for those builds that do not use configure.

This commit fixes this by using instdir to override the value of PREFIX
in config/Makefile.
2017-04-26 11:41:36 +02:00
Sébastien Hinderer 1918a6fed2 Fix Windows installation directory in tools/ci-build
This commit sets the installation directory for the Windows build to the
same value as in the config/Makefile.m* files.

So, in itself this commit is a no-op. It however introduces the next one
which will ensure ci-build's instdir setting is honored even for
the builds that do not use configure.
2017-04-26 10:29:09 +02:00
Sébastien Hinderer 7d6a661471 Replace legacy CI build script by new one
Since there are no jobs left on Inria's CI that use the legacy
ci-build script, replace it by the new one.
2017-04-18 16:23:44 +02:00
Sébastien Hinderer 24b028c1fc Add support for building and testing with flambda to the new CI script
If the flambda environment variable is set to true, the feature is
enabled in the build system.
2017-04-14 19:27:03 +02:00
Sébastien Hinderer 878508c6ba On Linux, also build the instrumented runtime during CI 2017-04-14 19:15:28 +02:00
Sébastien Hinderer fdc63806c3 In the new CI script, enable build of runtime with debugging support
This is done by passing the -with-debug-runtime option to the configure
script on the non-Windows systems.

On Windows, a sed invocation is used to set RUNTIMED to true in
config/Makefile.
2017-04-14 18:53:34 +02:00
Sébastien Hinderer d847e077e8 Add a new simpler CI build script
This script is used on Inria's infrastructure

Once all Inria CI jobs will use this script, it will replace the
legacy one.
2017-04-14 15:55:31 +02:00
Sébastien Hinderer d96f81177d Integrate the cleanup of remaining Windows processes to ci-build
So far, the cleanup of processes on the windows nodes of Inria's CI was
done in a .bat file called by the Windows jobs.

This commit integrates this process cleanup into ci-build.
2017-04-13 14:46:20 +02:00
David Allsopp 0301576685 Fix \r problems on recent Cygwins
The Cygwin packages for awk, grep and sed were updated on 20 February
2017 so that they no longer automatically strip \r characters on binary
mounts. This affects the OCaml build system in a few places, requiring
the addition of a few tr calls.

References:
  * https://cygwin.com/ml/cygwin/2017-02/msg00152.html
  * https://cygwin.com/ml/cygwin/2017-02/msg00189.html
  * https://cygwin.com/ml/cygwin/2017-02/msg00188.html
2017-04-13 14:17:28 +02:00
David Allsopp 65fd726329 Install bootstrapped FlexDLL objects to flexdll/
The install-flexdll target now puts the object files for FlexDLL in a
subdirectory flexdll of the Standard Library instead of in the Standard
Library itself.

A configuration tweak means that -I +flexdll is effectively added to all
compiler invocations and also a pseudo-option -L+flexdll to ocamlmklib
calls to Config.mkdll which fixes PR#7373.
2017-04-09 19:00:06 +02:00
Sébastien Hinderer 3564aade19 Introduce and use the OUTPUTEXE and OUTPUTOBJ build variables 2017-03-29 11:10:06 +02:00
Sébastien Hinderer f2d5d60376 Define new build variables for C compiler and preprocessor flags 2017-03-29 11:10:06 +02:00
Sébastien Hinderer cc7ad5650a Get rid of BYTECC and NATIVECC
Use the same C compiler, CC, in all the build system.
2017-03-29 11:10:06 +02:00
Sébastien Hinderer 1effaeb058 Use only one variable for rpath
Before this commit there was BYTECCRPATH and NATIVECCRPATH, but they
were actually identical to each other.

This commit gets rid of them and uses the RPATH variable.
2017-03-29 11:10:05 +02:00
Damien Doligez f9c6cef483 use `git clean` in ci-build script (see GPR#1067) 2017-03-27 15:54:56 +02:00
Xavier Leroy 17fc532c74 Remove dependencies from objinfo_helper to OCaml runtime (continued)
Removal in commit 2c3a9d3 was too brutal, "config/s.h" must be included so that HAS_BFD is seen.
2017-03-21 15:46:58 +01:00
Sébastien Hinderer 9e81b0fb4b Update .depend files 2017-03-09 17:12:02 +01:00
sliquister 356d8a9c0c Changing the display of fatal warnings (#948) 2017-03-08 09:16:01 +00:00
Stephen Dolan 0c61ce8d5c Fix some globally-visible names, and add a tool for them (#973) 2017-03-07 08:21:41 +00:00
Fabrice Le Fessant b7b0a64d33 ocamldep: add -plugin and use compilerlibs to build (#1015)
* ocamldep: add -plugin argument, and use compilerlibs to build
2017-03-02 16:45:58 +01:00
Xavier Leroy cfb0715075 Remove dependencies from objinfo_helper to OCaml runtime
This is cleaner and should address PR#7407 item 3.
2017-02-23 16:39:01 +01:00
Nicolas Ojeda Bar e75c87dc48 Initial import of linear-scan-register-allocator
The code in this commit was written by Marcell Fischbach & Benedikt Meurer.
See [Mantis#5324](http://caml.inria.fr/mantis/view.php?id=5324) for some
context.

The code (which was originally written against 3.12) was ported to trunk by
doing

```bash
git clone https://github.com/bmeurer/ocaml-experimental/
cd ocaml-experimental
git diff master...linear-scan-register-allocator > t.diff
```

and then applying the diff by hand.
2017-02-22 17:09:18 +01:00
Gabriel Scherer 4f46291fa3 Merge pull request #916 from edwintorok/add-missing-since-annots
Add missing @since annotations for 4.00 .. 4.05
2017-02-21 13:27:39 -05:00
Török Edwin d1cd849d3f Documentation tool: add tools/lintapidiff.ml
Run 'make lintapidiff' in the root of a git checkout to get a list of
potentially missing or wrong @since annotations.

The tool is not built by default, you have to first run 'make
world.opt', and then run 'make lintapidiff'.

lintapidiff doesn't support stop comments: add explicit list of changes to ignore.

see copyright header for license.
2017-02-21 17:13:38 +02:00
Damien Doligez 922aafb357 undo 13c8c60f39 on tools/ci-build because this script is still used by CI on 4.04 2017-02-20 15:36:22 +01:00
Xavier Leroy 141ac5408d Merge branch 'trunk' into liberal-cr 2017-02-19 12:27:15 +01:00
octachron f59fb0e640 -shared option for ocamldep 2017-02-17 11:54:06 +01:00
David Allsopp fffde17d52 Make ocamlyacc and make_opcodes ignore \r on Unix
ocamlyacc doesn't correctly handle \r on Unix meaning that long strings
with escaped newlines cause unterminated string warnings.

Similarly, the make_opcodes script in the build system cannot cope with
a CRLF checkout of the header files.
2017-02-15 13:02:11 +00:00
Sébastien Hinderer 13c8c60f39 Update documentation and scripts to use Makefile even on Windows 2017-02-15 11:19:07 +01:00
David Allsopp 080992e951 Ensure tools/make_opcodes is cleaned 2017-01-27 15:58:57 +01:00
Nicolas Ojeda Bar 77dba7758e Add make_opcodes 2016-12-29 08:22:37 +05:30
Damien Doligez afbd5a389a ci golf, second shot 2016-12-19 17:42:48 +01:00
Damien Doligez 4b76b3b8a6 A variant of CI golf: ci-build-script golf. Try to make the CI build work in the directory checked out by Jenkins, even for Windows (with CRLF line endings).
Also adapt to the new unified Makefiles (where Makefile.nt is gone).
2016-12-19 17:02:06 +01:00
Stephane Glondu 7c6c1f3624 objinfo: dump globals defined in bytecode executables 2016-12-14 08:44:55 -05:00
David Allsopp d168db2c78 make alldepend 2016-12-14 13:14:21 +00:00