[m-dev.] For review: fix an alt install dir annoyance
Fergus Henderson
fjh at cs.mu.OZ.AU
Tue Jan 11 10:36:49 AEDT 2000
OK, given your responses I'm happy for you to go ahead and commit this one.
On 09-Jan-2000, Warwick Harvey <wharvey at cs.monash.edu.au> wrote:
> Fergus wrote:
> > On 07-Jan-2000, Warwick Harvey <wharvey at cs.monash.edu.au> wrote:
> > > Added some extra dependencies to the generated `.d' files, so that local
> > > `.int', `.opt', etc. files shadow the installed versions properly (e.g. for
> > > when you're trying to build a new version of an already installed library).
> > ...
> > > (In theory, perhaps this change shouldn't be needed; however, Make has a
> > > habit of ignoring pattern rules whenever it feels like it.)
> >
> > It would be better if we understood why those pattern rules
> > were being ignored (I'm not a big fan of "voodoo" programming ;-).
>
> OK, here's what it does, all in accordance with the Make documentation:
>
> It looks in the current directory, does not find the `.int' file. So it
> searches the path, and finds the one in the library directory. It then
> tries applying a bunch of pattern rules, and cannot figure out how to
> rebuild the `.int' file in the library directory (since there is no
> corresponding `.m' file in the library directory). Since they were only
> pattern rules, it figures the `.int' file didn't need to be rebuilt and does
> nothing. If instead we have explicit (non-pattern) dependencies, it decides
> that there _is_ something wrong, and that the `.int' file needs to be
> rebuilt. It then tries to rebuild the `.int' file, but in the current
> directory this time. In the current directory, the `.m' file is found, and
> the `.int' file is rebuilt correctly.
>
> Based on the above, pattern rules of the form:
>
> $(MERCURY_INT_DIR)/%.int : %.date
> @:
>
> (a la those in extras/clpr/Mmakefile) would also fix the problem --- but
> only for the standard installation location. I don't know whether or not
> one could devise appropriate hackery to get it to include all extra
> directories specified by the user, and I don't particularly want to try.
>
> > > -# Be very careful about changing the following rules.
> > > -# The `@:' is a silent do-nothing command.
> > > -# It is used to force GNU Make to recheck the timestamp
> > > -# on the target file. (It is a pity that GNU Make doesn't
> > > -# have a way of handling these sorts of rules in a nicer manner.)
> >
> > That comment should remain;
> > if the places where `@:' is used are different,
> > then the comment should be moved, not deleted.
>
> Yup, sorry, fixed:
>
> --- save/compiler/modules.m Sun Jan 9 23:09:11 2000
> +++ compiler/modules.m Sun Jan 9 23:10:03 2000
> @@ -1689,6 +1689,15 @@
> module_name_to_file_name(ModuleName, ".date3", no,
> Date3FileName),
>
> + /*
> + ** Be very careful about changing the following rules.
> + ** The `@:' is a silent do-nothing command.
> + ** It is used to force GNU Make to recheck the timestamp
> + ** on the target file. (It is a pity that GNU Make doesn't
> + ** have a way of handling these sorts of rules in a nicer
> + ** manner.)
> + */
> +
> io__write_strings(DepStream, [
> "\n",
> Int0FileName, " : ", Date0FileName, "\n",
>
> > Also, with this change in place, should the following
> > code from extras/clpr/Mmakefile be deleted?
>
> It shouldn't hurt either way. It could also be converted to try using the
> builtin library installation support, but it works the way it is.
>
> I'm currently playing with this stuff for clpz (my integer solver plugged
> into clpr). Once I've got it working satisfactorily, I'll be porting it to
> clpr, and at that point it shouldn't be too hard to back-patch the Mmakefile
> in the main branch.
>
> Warwick
>
> --------------------------------------------------------------------------
> mercury-developers mailing list
> Post messages to: mercury-developers at cs.mu.oz.au
> Administrative Queries: owner-mercury-developers at cs.mu.oz.au
> Subscriptions: mercury-developers-request at cs.mu.oz.au
> --------------------------------------------------------------------------
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh> | of excellence is a lethal habit"
PGP: finger fjh at 128.250.37.3 | -- the last words of T. S. Garp.
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to: mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions: mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------
More information about the developers
mailing list