[MLton] bootstrap problem

Stephen Weeks MLton@mlton.org
Tue, 9 Aug 2005 10:14:57 -0700


> There's also a bug in the dependency information for *.grm.* and  
> *.lex.*.

> I seem to recall that there is a reason for this, not related to
> recursive make invocations.

I also have vague recollections of many struggles with these
dependencies, involving bootstrapping, using cmcat, whether one uses
the SML/NJ ml{lex,yacc} or the MLton ones, ...

I looked through the archives and found a few threads on the topic

"ml.lex/ml.grm"
  http://mlton.org/pipermail/mlton/2000-November/018196.html

"another Makefile fix"
  http://mlton.org/pipermail/mlton/2001-October/thread.html

"upgrade-basis hangs"
  http://mlton.org/pipermail/mlton/2004-January/024926.html

But none of them cleared my memory very much.  I will note that the
stuff from October 2001 involved cmcat issues (due to most people not
having it installed), and that we no longer use cmcat.

> Something having to do with not wanting to rely upon having mllex
> and mlyacc pre-installed (though we do rely upon having mlton
> pre-installed).

That doesn't seem to be true any more.  The January 2004 message above
includes the comment

  To compile with MLton, you need the binary versions of mlton, mllex,
  and mlyacc that come with the MLton binary package.

This is still there on

  http://mlton.org/SelfCompiling

> I'm not adverse to fixing the dependencies (as I've run afoul of
> this as well), but there may be a reason.

I would also be happy to see them fixed.  I'm optimistic that a
straightforward solution will be workable now.

> More generally, this problem stems from recursively invoking make.
> I'm sure everyone has heard the rants about not abusing make in this
> way, and I imagine the current scheme is in place to avoid requiring
> GNU make, so I won't say anything more on this.

I don't know anthing about these rants, and it wasn't the reason for
the current situation.  I do recall that on some platforms, such as
FreeBSD, I've had to do stuff to make sure the gmake got used instead
of make.  So I suspect that we *do* require GNU make.