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.
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).
- 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
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.
* ocamllex: exact check for the absence of memory instructions.
Corrects MPR#7760
Lexing automata come in two flavors
(a) Ordinary DFA.
(b) Extended DFA that additionally record positions from the buffer,
so as to implement ocamlex 'as' construct.
For each entry, case (b) is selected when (1) there is come code to
record position in the lexer tables (2) the states that are reachable from
this entry may record positions in memory cell (as shown by the vector
of memory size being of non-zero size).
In case (b), a frech vector of memory cells is allocated and the new lexing
engine (ocaml_new_lex_engine) is called; in case (a) a simpler lexing engine
(ocaml_new_lex_engine) is called.
Example from the PR add as a regression test.
This allows the client code to disable update of those fields, which
accounts for a significant amount of time spend in the generated code.
Perhaps this should rather be controlled more statically (to avoid a
runtime check -- but it is very cheap), by some directive in the lexer
specification itself (global, or on each rule).
Extend the previous patch allowing make -f Makefile.nt flexdll
install-flexdll not to require the install-flexdll stage.
OCAML_FLEXLINK is utilised as required to allow compilation of the entire
system using an in-tree compiled flexlink. The build process simply
required the flexdll target to appear before world.
opt.opt compiles a native code version of flexlink.exe as flexlink.opt.
install always installs flexlink.exe if it was compiled along with any
required .manifest files. It also installs the appropriate .o/.obj files
to $(INSTALL_LIBDIR).
At present, the bootstrapping is not extended to the Cygwin ports.