History log of /seL4-l4v-10.1.1/HOL4/tools/Holmake/Holmake.sml
Revision Date Author Comments
# aa69c94f 12-Mar-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Holmake: boldify announcements of starting to work in directories


# 1bdfad7e 05-Mar-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Reduce and prettify Holmake's recursive invocation verbiage


# b9ac929e 25-Feb-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Add directory field to dep. graph nodes

This is a first, easy, step towards having Holmake work over multiple
directories at once.


# 4ba33079 16-Jan-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Holmake improvements (bug in caching of dep. analysis; diag change)

Two intertwined patches (bad form I know):
1. Fix the bug in tests/indepchildren.
2. Revise the internal diag function to take a function generating a
string rather than a string; then the work of generating the string
only happens if diagnostics have been asked for.


# 151eb099 13-Jan-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Move holmake-recursion code into Holmake.sml

The move of this code into separate Holmake_tools.sml happened in
order to try to share code between MoscowML and PolyML
implementations. I imagined then that I would have to have the
top-level functions trapped in language-specific implementations, but
that various leaf-level things could be reused. I noticed that the
recursion logic governing the way INCLUDES specs were followed could
be stripped out of Holmake and so moved maybe_recurse into
Holmake_tools.

But now, the much more sensible scheme whereby only specific leaves in
the code-tree are language specific is used, and so the quite
high-level recursion stuff can come back into Holmake.sml.


# 3645d4f0 06-Jan-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Do "last made by" checks even when cleaning in Holmake

This reverts 550b90aca, which doesn't come with enough justification
for me to understand the problem that I thought I was solving in 2010.
The problem with omitting the checks is that if the "wrong" Holmake is
called, and if the Holmakefile contains references to things like
$(HOLDIR), then the wrong cleaning action can occur.

For example, if an INCLUDES line refers to $(HOLDIR), then a recursive
clean will recurse into the wrong directory. Similarly, if an
EXTRA_CLEANS line refers to $(HOLDIR), then the wrong file will get
deleted.


# 7c949327 04-Jan-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix Holmake bug to do with --no_prereqs

Bug is identified in previous commit (and in accompanying test-cases).
It comes down to the fact that even with --no_prereqs specified,
Holmake needs to scan ancestor directories in order to get
dependencies correctly recorded in generated files, particularly
Theory.uo files.


# d56fd8b3 22-Aug-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Update Holmake to cope with Theory.dat files

No tests specific to that feature yet.

Still also need to update for Moscow ML.


# a53703d8 24-Jul-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix a bug in generation of dependencies for Holmake "side products"

Slightly extend test-cases


# 46ee3d3e 13-Jul-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Allow an indication of side-products of theory builds

Basically, write something like

foo: *theorynameScript.sml

to indicate that foo will be built when the theory theoryname is
built. As part of the process, provide much better testing of the
parallel execution of multiple target rules and completely change the
way these are handled.

In particular, the dependency graph that Holmake maintains now does
not have multiple targets for a single node, but instead makes sure
that when a command is executed for a single target, all nodes that
would execute the same command are considered to be running at the
same time, and get the same success/failure status when the command
finishes.

Needs documentation, but is progress with Github issue #429


# 236d8980 25-Jun-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix Holmake's -I flag so it is not applied recursively

The -I flag to Holmake was being re-interpreted with each recursive
entry of a fresh directory, so that when the included directory was
entered, the Holmake process then attempted to again include that path
in the newly entered directory. This is fine if the path is
absolute (the loop detection will stop the recursion), but if it's
relative, the path won't be present in that directory and a
file-system IO error occurs.

Closes #413


# 469e528e 05-Jun-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Remove an unused binding in Holmake.sml


# 7323a63d 13-Mar-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Allow c/line switches to appear after "real" arguments in Holmake

Thanks to Magnus for the suggestion.


# a870a911 23-Jan-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Rebuild .uo and .ui files without forcing unnecessary extra work

This is by analogy with what has already been attempted for heaps, and
is progress with github issue #105.

Also fix a bug with the heap handling if the heap was in a
directory with script-files (not the case with the heaps in HOL/src):
the dependency graph built for the directory spotted that there was a
dependency from the heap to the script files, and even though the
heap's time-stamp was set appropriately, the existence of the link in
the graph meant that the rest of the graph got executed.

The fix for this (in both the case of the heap and the .uo/.ui file)
is for execution of graph nodes to check at the time the node is made
ready to execute if the target really does need to be redone (by
examining time-stamps). Then, the rebuild can be skipped even though
the initial analysis thought it was going to have to happen.

Future work:
- For the moment, both build and Holmake rely on having a particular
environment variable set to enable this option. I will augment
and/or replace this with command-line options. (The buildheap
program needs to retain this use of the environment variable though
because neither Holmake nor build control how that program is
called; instead this program is called by the user via
Holmakefiles.)
- Build needs to take an option to clean a HOL installation of its
heaps and ui/uo files. I don't know how to automatically identify
the heaps, but could just purge those that are identified as such in
Holmakefiles.


# c529f767 12-Sep-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Get Holmake to build targets with no deps again

Closes #348


# 5098a86c 28-Jun-2016 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Patch glitch in Holmake output.

The "usepfx" flag is no longer set when `CLINE_OPTIONS = -j1` appears in the Holmakefile. It will only be set when `-j1` is in the actual command line.

This avoids lines that is too long (due to `Holmake: ` being printed) when recursing into a directory that doesn't have `CLINE_OPTIONS = -j1` in it's Holmakefile.

I suspect `Holmake: ` is not printing when recursing into a directory that does have `CLINE_OPTIONS = -j1`, but this wouldn't result in lines that are too long.


# 7098f9c7 05-Jun-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Handle opentheory intermediate leftovers better

In particular, the parallel process for building .art files creates an
intermediate thyname.artScript.sml file that shouldn't be regarded as a
normal script file. (Indeed, it can't work as a normal script file
because of the presence of the full-stop in the theory name, so there's
a warning emitted for other occurrences of this if seen.)

These intermediates can be cleaned by Holmake as well if they're
found. (Normal execution of Holmake will remove these files after
they're used, but if the build is interrupted for some reason, they get
left behind.)


# 419aceba 03-May-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Ensure Holmakefiles' CLINE_OPTIONS are always read

When a recursive Holmake call happens in another directory, that
directory's Holmakefile's CLINE_OPTIONS need to get a chance to affect
the behaviour of Holmake in that directory.


# bd86c2f5 03-May-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Improve error-reporting in -j1 Holmake

Includes more error messages when --dbg is set


# a6f14e88 03-May-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Remove unused arg to Holmake introduced in b59cee6

I mistakenly thought it was going to be necessary to know if the Holmake
function was being called for the first time or not.


# b59cee6f 02-May-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Provide CLINE_OPTIONS variable in Holmakefiles

This variable is read for a set of default command-line switches which
are treated as if they are being passed on the command-line. Things
actually passed on the command-line are applied after what is in the
Holmakefile, possibly overriding the file's switches. Of course, the
command-line can also change the defaults with both of the
--no_hmakefile and --holmakefile=file switches.

Motivated by the desire to have Holmakefiles be able to contain good -j
options for specific directories.

This pretty well supercedes the OPTIONS variable, so the documentation
in DESCRIPTION has been adjusted accordingly.

Closes #86


# aa7b7a9c 26-Apr-2016 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Clean out .hollogs at the same time as .HOLMK.


# b413a6a1 25-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix Holmake's recursive clean

Includes a test-case.

Closes #338


# 1c326356 20-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Make multibuild output prettier


# 18d1c2f7 20-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Enable multiplexed builds for Poly/ML

Output is horrendous at the moment


# 50c4d56b 18-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Make dep. graph store single commands per node

This is something of a reversal of 8f7f1c9; but there I was worried
about smashing multiple commands into a single string, which is clearly
still a bad thing to have happen. The problem with having multiple
commands in a single node is that a multiplexing implementation has to
execute them as an atomic block, which I don't like.


# 97dcc7a0 16-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Get Holmake to check for circular dependency loops

This check was briefly removed as I switched to the 'create dependency
graph; perform builds' implementation.

Now also with a regression test.


# bf1164c0 15-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Make Holmake less chatty by default

Enable old level of chattiness with -v or --verbose command line option.


# e7c52075 15-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Replace 'print' with Holmake's output functions


# 443a1c20 15-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Re-enable rebuild_deps behaviour in Holmake


# 8c7d50da 14-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix Holmake under Poly/ML

Two significant changes required:
* the dependency graph now records nodes for files that already exist
and don't need rebuilding. The graph marks such nodes as Succeeded.
This gives nodes that depend on these files extra things to point to,
giving them a more complete picture. This change also simplifies the
code for building the dependency graph in the first place, but is
possibly redundant given the second change...
* Before "compiling" a source-file, the Poly/ML implementation runs the
Holdep analysis on that source file in order to get a better picture
of its dependencies stored in the corresponding .uo or .ui file. This
is necessary, because the preliminary dependency analysis may be done
before the source file even exists. (E.g., fooTheory.sig may not exist
when Holmake first starts work in a directory.)


# b6dd58ef 14-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Get "build from graph" Holmake to compile

Poly/ML version fails miserably at boolScript hurdle however.


# 4121aab1 13-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Start to implement building from dependency graph

This code is as yet unconnected to any execution, and is attempting to
replicate the behaviour that we have at the moment (corresponding to
what will eventually be -j 1).

Slightly adjust some types along the way, including changing a
bool*bool*string tuple into a record that identifies what the bools are.


# 6cde3a53 12-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Make dep graph record file-name in dependency link

Nodes in the graph are commands that may build multiple targets at once.
Nonetheless, other nodes may only depend on one of those targets, so we
can record this on the arc from the target to the dependency.


# 8f7f1c9a 12-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Make dep-graphs store commands as lists of strings

This will make it easier to extract and act on leading indicators such
as @ and - on each line. If a line is

-command

then it could be passed to the shell as command ; true. If the command
has the leading @, then that line shouldn't be echoed to the shell. In
a parallelised context, I'm not sure that anything much should be echoed
to the user anyway.

Previously, I had Holmake concatenate the lines from the Holmakefile
with intervening semicolons, which would just make extracting the @ and
- characters that much harder.


# 52682c25 12-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Add unused API to build targets from dep. graph


# f634cab0 12-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Tweak Holmake's usage message


# d716a370 05-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix dep-graph's handling of rules with >1 target

Now such rules (including the implicit/built-in rule that builds
<n>Theory.sig and <n>Theory.sml from one invocation of a script file),
only generate one node in the dependency graph.

Actually, the code will treat

foo: deps
command

bar: deps
command

as if they were written

foo bar: deps
command

because the former is what the latter expands into.


# dd5f56c5 04-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Implement a -n option for Holmake

This uses the new dependency graph technology. It doesn't look
particularly pretty at the moment, but

Holmake -n -q

should be useful. (The -q suppresses useless info about automatic
dependency analysis.)

Closes #283


# aaece817 04-Apr-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Make KERNELID var get its proper value in Holmake

Issue was that Poly/ML evaluates many things at compile time rather than
run-time.


# 7b43df0a 30-Mar-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Remove diffs between poly and mosml Holmake impls

Next step is to actually remove as much as possible of the
tools-poly/Holmake directory.


# 60a69fd8 30-Mar-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Pass more info to the impl-specific BuildCommand

In particular, pass
- the full Holmakefile-derived envlist function (which turns $(...)
references into string lists);
- output functions (warn, die, etc)
- quit_on_failure, which is derived from the Holmakefile and core
command-line options


# 4f0a476c 28-Mar-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Delete bogus comments in both Holmake.sml files


# 6b4d23aa 28-Mar-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Move impl-specific exn stuff to separate files

Interrupt is Interrupt in mosml, but SML90.Interrupt in Poly/ML code
mentioning it should be factored out.


# 92873efe 28-Mar-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Put a main around mosml's Holmake

This makes the Moscow ML version look more like the Poly/ML version.


# 217de548 28-Mar-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Push poly and mosml Holmakes closer together


# bb5d6c17 28-Mar-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Move mosml Interrupt magic to mosml directory


# 85786bb6 28-Mar-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Remove very stale copyright notice on Holmake src


# 4aa9adb2 28-Mar-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Purge Holmake.sml of much Moscow ML specific code

The Moscow ML stuff has moved into mosml/BuildCommand etc

Progress with github issue #77


# c0d1d17f 28-Mar-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Cleanup more Holmake code

This is in pursuit of more unification between Moscow ML and Poly/ML
implementations (github issue #77).


# ded6cefd 28-Mar-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Purge some unused c/line options for Holmake

Unused in the sense that I don't think anyone ever used them and
supporting them was just making the code base unnecessarily complicated.


# 085fe168 28-Mar-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Switch Moscow ML Holmake to GetOpt cline options

This is a precursor to merging more of the Poly/ML and Moscow ML
implementations, as per github issue #77


# 6117e390 22-Sep-2015 Michael Norrish <Michael.Norrish@nicta.com.au>

Systeml's mk_xable returns status, not string

It previously used to return the string of the executable version of the
file. On Windows, this makes sense because making things executable
consists of adding the string ".exe", changing the filename. But we
already have the xable_string function for doing this calculation.


# 9a5d6091 24-Feb-2015 Michael Norrish <michael.norrish@nicta.com.au>

Make Holmake follow INCLUDES recursively, even when given PHONY target

Closes #145


# 227f4708 22-Feb-2015 Michael Norrish <michael.norrish@nicta.com.au>

More progress with Holmake and recursive dependencies

Both depchain selftests pass now on both Poly and Moscow ML.

The treatment of relative and absolute directories is more careful,
for which see the hmdir structure within Holmake_tools. This stuff is
really only as complicated as it is for cosmetic reasons: the various
messages printed to the user try to avoid absolute paths for as long
as possible. However, more/most/all internal uses will now be with
absolute paths, which should help.


# 36e19d76 22-Feb-2015 Michael Norrish <michael.norrish@nicta.com.au>

Remove unnecessary print_list function within Holmake.sml


# 826a0b01 17-Feb-2015 Michael Norrish <michael.norrish@nicta.com.au>

Fix recursive dep problem under Moscow ML (re-enable regression test)

Build commands within Holmake are now passed the correct include
information.


# a72d68fc 16-Feb-2015 Michael Norrish <michael.norrish@nicta.com.au>

Most of a fix for recursive holdep problem.

See test-case in Holmake/tests/depchain1

Test-case still not re-enabled as I don't think this quite works for
Moscow ML yet.

Some incidental progress with sharing more code between Moscow ML and
Poly/ML (github issue #77).


# 07480c25 12-Feb-2015 Michael Norrish <michael.norrish@nicta.com.au>

Slightly adjust Holmake's internal interface.

Just a refactoring to make the recursive calls return a record-option
rather a straight set. Intention is to next make the return value a
bigger record so that it can return a list of extra includes, thereby
allowing a fix for issue illustrated by the holdep test-case under
Holmake/tests.


# 4522c28a 02-Feb-2015 Michael Norrish <michael.norrish@nicta.com.au>

runholdep function moves to Holmake_tools (Poly/ML Holmake affected)

In the latter module, it can be used in the Poly/ML implementation.
This is progress with github issue #77

The Poly/ML implementation now fails the regression test in

tools/Holmake/tests/depchain1/dir3

so comment out that test from the build sequence temporarily. I
believe there will be a Holmake failure in machine-code until the
behaviour is properly fixed. I hope selftest 2 will go through
correctly.

Holmake's output also changes slightly because I've been more
consistent about using the built-in 'info' function instead of print.


# b0bfd575 02-Feb-2015 Michael Norrish <michael.norrish@nicta.com.au>

Do away with use of mosmllex and mosmlyac in Holdep.

These tools are too Moscow ML specific, and unnecessary given that we
have mllex available for all SML implementations.


# 1e80cac7 02-Feb-2015 Michael Norrish <michael.norrish@nicta.com.au>

Isolate writing of Holdep info into file from calculation of info


# 5b4f0510 28-Jan-2015 Michael Norrish <michael.norrish@nicta.com.au>

Start to rationalise Holdep's interface.

There were some strange holdovers still in there from the ancient days
when it was a separate command-line tool. Aim is to ultimately drop
Lexer.lex and Parser.grm and replace those with the Holdep_tokens
lexer. I'm also only doing this to the Moscow ML implementation for
the moment with the ultimate aim being to have the Poly and mosml
implementations using the same Holdep code.


# 91e46ef1 21-Oct-2014 Michael Norrish <michael.norrish@nicta.com.au>

Move generate_all_plausible_targets into common Holmake_tools.

Progress with #77


# 732be988 24-Feb-2014 Michael Norrish <michael.norrish@nicta.com.au>

Share more code between mosml and poly Holmake.

Work on github issue #77


# e63d42fc 17-Jul-2013 Michael Norrish <michael.norrish@nicta.com.au>

Implement recursive cleaning for Holmake.

Closes #125; not extensively tested.


# b6a03eda 10-Oct-2012 Michael Norrish <michael.norrish@nicta.com.au>

Fix a bug in mosml Holmake's handling of SIGOBJs including spaces.

Problem was that the patsubst function was applied and would result in
a command line that looked like

-I first-part-of-path -I second-part-of-path


# 82bd3aea 16-Sep-2012 Michael Norrish <michael.norrish@nicta.com.au>

Copy tweak made by fd4c62c8 to Poly/ML Holmake in Moscow ML version.


# f5f11785 15-Aug-2012 Michael Norrish <michael.norrish@nicta.com.au>

Get recursive Holmake to handle absolute paths in INCLUDES.

This was broken by 44cef4623, handling #64.


# 44cef462 14-Aug-2012 Michael Norrish <michael.norrish@nicta.com.au>

Improve Holmake's messages about recursive invocation.

Closes #64.

Also helps with #77 because the code controlling the recursive
invocations is now in Holmake_tools rather than in both versions of
Holmake.sml.


# 0238565b 10-Sep-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Get mosml Holmake to build with new Holmake_types.


# 239b7fad 22-Mar-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Move more code (including directory cleaning) into common Holmake_tools.


# cadb3c61 22-Mar-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Move Holmake's structured file type into shared Holmake_tools module.


# ec1a0af6 22-Mar-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Use Basis 2002's isSuffix function rather than write my own.


# f101fb0e 11-Oct-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Allow Moscow ML build to happen using (as yet unreleased) v2.10.

Basic strategy is to make adoption of basis 2002 even more
thorough. In particular, the Timer structure is now as per
the 2002 Basis.

It is possible to detect that one is working with Moscow ML 2.10 or
later by checking the Holmakefile variable $(HAVE_BASIS2002), which is
set (to value "1") when in 2.10 or later. It is unset elsewhere. See
an example of its use in help/src-sml/Holmakefile.


# 550b90ac 16-Aug-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Holmake shouldn't do 'last-made-by' check when cleaning.


# b1d73171 09-Aug-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Make Holmake use a 'ignore failure' delete in another place.

This seemed to be tripping up a recent Windows build of mine. Perhaps
because it was trying to delete the Script executable while the
file-system still thought it was being run. I couldn't get the same
error on my virtual machine version of Windows though.


# 318aaf77 10-Jul-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Holmake warns about (and doesn't use) an INCLUDES dir that doesn't exist.


# 7417f76d 02-Jun-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

More diagnostics when the debug flag is passed to Holmake.


# d7631584 09-May-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

New Holmake feature: check to see if it should be being used as builder.

If, as I do, you have multiple HOL installations on the same machine,
it can be a pain to remember to build things with the correct Holmake.
On the other hand, it's certainly convenient having a Holmake in one's
PATH. So, this change gets Holmake to determine if it should be the
Holmake being used, and if it thinks another Holmake should be being
used instead, that other Holmake gets called out to instead. This
"calling out" is done through Systeml.exec, so can even be across
Poly/ML-mosml boundaries.

There are two ways in which a Holmake can decide determine the correct
Holmake to be used. If it sees a .HOLMK/lastmaker file containing a
path, then this is used. This file is written to when a Holmake does
decide it's the rightful make executable. Secondly, if Holmake
determines (by jumping up through the file-system) that it is being
called inside a HOL installation already containing a bin/Holmake,
then that is taken to be correct.

When a second Holmake is called as part of this process, it also gets
passed the --nolmbc flag ("no last made by check") to stop it going
through the whole process all over again.


# 45f15856 05-Apr-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Allow Holmakefiles to specify building of files outside the current directory.


# cbd4505c 30-Mar-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix error in definition of HOLMOSMLC-C makefile variable.


# 8a0ae7fd 30-Mar-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Augment base Holmake environment with ML_SYSNAME, MLLEX and MLYACC.

Also move code implementing this into shared Holmake_types module.


# 07b4229c 23-Feb-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix Holmake's handling of 'remote' targets that don't exist.

Old behaviour didn't complain about targets not in the current directory if
they didn't exist.


# 04d7fdc0 05-Feb-2010 Thomas Tuerk <Thomas.Tuerk@cl.cam.ac.uk>

Added a missing space that prevented the basis2002 being used for compilation, when an "INCLUDES= ???" statement was present in the Holmakefile.


# 2b3c955b 14-Dec-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

New "portable" subdirs per ML implementations in src/portableML.

Hope to do away with Poly/ML specific code in tools-poly eventually,
moving it into src/portableML/poly. tools/build-sequence now records
that the implementation-specific directories have to be included.


# 8aa92e98 02-Oct-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

The Moscow ML Holmake was not recording the dependency on basis2002.uo
correctly. Now that it does, the attempt to do it explicitly in
src/portableML/Holmakefile can be dropped.


# 7acf98f9 02-Aug-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Make the basis hack for Moscow ML correctly identify which version of
the Basis Library we are trying to emulate.


# 29268290 31-Jul-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

More corrections required to our sources when I do the migration to
Basis 97 properly.


# 7154aa49 31-Jul-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Start to implement the Basis 97 extensions that Moscow ML hasn't got
in order to force our codebase to get up-to-date. It should also
mean less bodging around for the Poly/ML code. I haven't checked that
my changes to tools-poly/poly/poly-init2.ML have done all that is
required yet. Feel free to fix problems arising there (I hope it will
just be a matter of deleting things).


# 11562793 30-Jul-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Add yet more diagnosis information for Holmake failures.


# caf33918 29-Jul-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Attempt to get better diagnostics out of a failing make_up_to_date
function. In particular, Poly/ML seems to occasionally cause this
(now altered) handler to fire.


# e9314543 07-Jun-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix a bug whereby the calculation of dependencies was ignoring
PRE_INCLUDES.


# 5edb2585 08-Dec-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Changes to the way Holmake attempts to call it recursively. It should
no longer call itself more than once in the same directory.


# bc7ec069 29-Jul-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Document existence of polyml port in the release notes, and also in
the process of documenting recursive Holmake and the --no_prereqs
option, add a feature to Holmake allowing NO_PREREQS to be an OPTION
as well. Document the latter in the Description (also add some \index
entries there).

(We are going to have to merge the Holmake implementations if at all
possible; having to update two versions is a pain.)


# f8189378 04-Apr-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Implement an idea of Magnus's. Holmake will now recursively attempt
to make directories that are indicated as dependencies via -I flags or
INCLUDES variables. This behaviour can be prevented via the
--no_prereqs toggle on the command-line. The core system seems to
build OK, but there may be some horrific consequence I've overlooked,
so please test.


# a78cd306 26-Feb-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

* Changed Systeml to make it more compatible with the Basis Library,
in particular, by using OS.Process rather than just Process, which
is a MoscowML invention dating back to the times when it couldn't do
nested structures
* This has knock-on effects in a surprising number of places because
Moscow ML doesn't know that OS.Process.status is the same type as
Process.status.
* Also invent a PreProcess structure just to store isSuccess which is
in the most recent Basis, but not Moscow ML.


# cbadbc47 23-May-2007 Michael Norrish <Michael.Norrish@nicta.com.au>

Rework lexing of Holmakefiles so that the system doesn't choke on
Joe's monster example. The result is simpler code (which is a bit
worrying in itself), and one less dependency on mosmllex. It
successfully reads all of the distribution's makefiles, as well as
Joe's.


# 018ce367 06-Apr-2006 Michael Norrish <Michael.Norrish@nicta.com.au>

Attempt to fix occasional bad behaviour of Holmake when unquoting files
(most recently observed by Thomas). I'm not sure even this solution is
perfect. Dealing with Interrupt by pretending it is a synchronous exception
is almost certainly dubious, for all that it works "most of the time".


# 77d5bb1f 13-Mar-2006 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix a problem identified by Tom Ridge with the --rebuild_deps flag to
Holmake. Now the behaviour of this flag is to just call Holmake cleanDeps
before proceeding with the rest of its build.


# dc6146ba 24-Nov-2005 Michael Norrish <Michael.Norrish@nicta.com.au>

Stop Holmake's default behaviour (i.e., what you get if you just type
Holmake) from trying to make files that start with "."
This can still be forced by actually putting such files in the command-line.


# dbff0b41 08-Sep-2005 Michael Norrish <Michael.Norrish@nicta.com.au>

Last change I want to make before releasing; change the MOSMLDIR value
to be the directory containing the mosml binaries, rather than being
the parent of this directory. This should make life easier on those
installations where the mosml install doesn't look like
mosml
+----- bin
+----- lib
(Some do not have bin and lib as siblings. The code using MOSMLDIR
never looks for anything except bin underneath it.)


# ed6d5ae3 14-Oct-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

Mention the --logging option in the usage output.


# 923ecab1 14-Jul-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

Drop the colon from the time-stamps; this causes grief on Windows.


# dee9d917 14-Jul-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

Make holmake actually pay attention to the --logging flag, rather than
just logging invariably.


# 1b091600 14-Jul-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

Update build and Holmake to store theory-build time information in time-
stamped files. Also modify export_theory to support this. This should
help us get some numbers on the effectiveness or otherwise of changes
to the kernel. Document the new option to Holmake in the DESCRIPTION.


# f2630fbd 03-Mar-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix for the bug that saw file-names with spaces recorded in bogus fashion
in .HOLMK .d files. Now, spaces there are escaped with back-slashes.


# 933e7264 29-Feb-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

Implement and document a new option flag for Holmakefiles, to make it easier
to automatically apply the --qof flag.


# c6abcd9c 24-Sep-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix a very minor bug so that Holmake doesn't say "nothing to be done for
foo" immediately after having done a slew of stuff to build foo.


# de85d519 22-Sep-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Keith pointed out that we probably wanted binary copy under Windows, and
that you got this with the /b flag.


# 22a6c527 19-Sep-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Provide a method for moving and copying files from within Holmake that is
OS-independent. Will document in DESCRIPTION on Monday, but I'm going home.


# af709bc9 02-Jul-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix for a problem Konrad identified with the way that Holmake was protecting
its built-in variables (MOSMLCOMP etc). Now Holmake doesn't protect
variables that may be used in situations where they are concatenated
with others, but does protect those that will be used on their own (such
as MOSMLC etc).
This requires the provision of a protect function in make-files, so
this is documented in the DESCRIPTION. I think things should be right,
but please check that this works, particularly anyone on Windows!


# 83fca931 01-Jul-2003 Konrad Slind <konrad.slind@gmail.com>

Change to winNT systeml so that "protect" isn't so protective. What
works for Unix doesn't seem to usually work for Windows.


# 31751c53 25-Feb-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Tweak to automatic dependency analysis: when about to call Holdep, pass
in not only those targets explicitly mentioned in any Holmakefile, but
also those files that we know how to make from these using the standard
implicit rules. These files are then allowed to appear as dependencies
when Holdep calculates them.


# 963e896d 02-Feb-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Failing a catastrophic bug, this should be my last Holmake check-in for a
while. This fixes the behaviour when a Holmakefile contains multiple
rules for the same target. If there is more than one rule with
accompanying commands, then the later rule takes precedence and earlier
command-accompanied rules are ignored. However, it is always OK to have
rules that specify just dependencies. These dependencies are merged together
and added to the last command-accompanied rule, if there is one, or
are merged together and left as they are (without commands).


# 8ba070a4 29-Jan-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Edging ever closer to a complete re-implementation of GNU make with
HOL-shaped knobs on. :-) Added subst and if built-in function. I
actually need the former for my C stuff (believe it or not).
Still to do: handle multiple instances of the same target correctly.


# ded888f8 29-Jan-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Changes in diagnostics, and tidying up of this code. GNU make mimicry
taken to ridiculous lengths.


# 99ba5d83 29-Jan-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

More GNU make mimicry: - and @ characters can be duplicated endlessly at
the start of a makefile's command-line (multiple instances are idempotent).


# c4a88e48 29-Jan-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Some code reorganisation, plus:
* if there is a "clean" target in the Holmakefile, then this takes priority
over the native "clean" functionality.
* fixed a bug in the treatment of the initial - and @ characters on
command-lines within a Makefile. (Caused in turn by the decision to
support HOLMOSMLC and friends as variables, even in the absence of
enclosing $(...) syntax.)


# fd5a55a3 29-Jan-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

If no_sigobj is called for, either on the command-line or within a
Holmakefile, then make this cause no_overlay as well.


# 8b73d6c5 28-Jan-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Previously, I had a slightly ugly hack in place to stop failing theories
attempting to build twice: I claimed that Theory.sig files depended on
Theory.sml files (i.e., that to build one of the former, you needed to
just one of the latter). This was a bit of a perversion of the truth,
and I now have a better way of dealing with things. So, my code needs
to change. I thought I'd made the appropriate change, but it failed.
Looking at my code, I couldn't see how it should work, nor how the
even older, pre-hack, code worked. So, here's another fix.


# 5fa0057d 28-Jan-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Close a directory stream.


# b044ad34 28-Jan-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Fairly drastic change to the way in which Holmake interprets Holmakefiles.
These can now contain arbitrary variable definitions and references, just
like in normal make-files. Rules can also use have multiple targets, and
the special variables $< and $@ have the appropriate meaning. These are
Feature Requests 597666 and 597668. I will attempt to document the changes
more thoroughly in the DESCRIPTION.


# 455f2b6e 08-Nov-2002 Konrad Slind <konrad.slind@gmail.com>

Fixes so that Holmake looks at bin/quote-filter.exe on w2k, instead
of bin/quote-filter.


# 7ec6cef3 08-Nov-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Can now use $(VARNAME) references anywhere inside a Holmakefile. At the
moment, may only refer to two known variables HOLDIR and SIGOBJ, but the
intention is to allow users to define their own variables. This is useful
for constructing rules that depend on the mkword executable, which lives
within the source tree, and for referring to theories that live in
SIGOBJ.


# 84843bd7 30-Sep-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Removed long-standing silliness that saw Holmake blessed with its own
version number.


# 55982dcb 30-Sep-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Modified Holmake to support a -i (or --interactive) command-line flag.
(This is feature request #611879.) Modified documentation to reflect this
and slightly updated some other things in the Description that caught my
eye.


# 947512f9 19-Sep-2002 Keith Wansbrough <keith@lochan.org>

Fix bootstrapping bug: Holmake should use unquote on every file *only
if unquote exists*. Otherwise, it should cross its fingers and hope.

Oops!


# db33f46b 20-Aug-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Revisions to make the documentation and the behaviour conform. I think
the behaviour is now clear.


# 56ddca6d 20-Aug-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Slight functionality update, making the behaviour emulate what I see
(GNU) make do when the user calls for a file to be made, that file is
present, but there is nothing in the Makefile to say what to do with
that file.
Also wrote a comment to clarify something that was confusing me a
great deal.


# b878eadc 23-Apr-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Fixed a long-standing bug that would occasionally cause Holmake to try
to build a failing theory twice. It didn't entirely realise that a
failed attempt to build fooTheory.sig meant that an attempt to build
fooTheory.sml would also fail. Now this is treated by encoding an
explicit dependency of fooTheory.sig on fooTheory.sml. This makes the
algorithm try to build fooTheory.sig by first building fooTheory.sml, and
if this succeeds, it does nothing, because it's happy that having the latter
means having the former.
This scheme fixes the observed bug, but isn't quite right: if you delete
a Theory.sig file but keep the Theory.sml file in place, Holmake won't
rebuild them both. I'm thinking about how to fix this, but it doesn't
seem a likely error. Nor is it hard to work around: simply delete the
Theory.sml file.


# bea501b3 21-Apr-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

When Holmake is run without any command-line arguments, it scans the
directory to look for likely targets to build, and also checks the
Holmakefile if any. This means that the order in which targets are
attempted used to be done in a way that was dependent on the local
file-system's internal directory structure. Now, the list is sorted, which
should ensure reproducible behaviour.


# 9f3056cf 16-Apr-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Fairly radical change. Now all of the "build-time" constants (such as
HOLDIR, MOSMLDIR and things like that) have been moved into the Systeml
file that is built and compiled as practically the first thing that
configure.sml does. This change means that we don't need to specially
generate Holmake.sml, Globals.sml, makebase.sml or build.sml. All of
these files can now just refer to Systeml. (In order to bring this
about for build.sml, I've also shifted the SRCDIRs variable to build.sml.
It had been in configure.sml just so that it could be copied into build.)