[mercury-users] Wow! It worked on Mingw [was: Many data elements...]

Fergus Henderson fjh at cs.mu.OZ.AU
Mon Feb 10 17:42:49 AEDT 2003


On 10-Feb-2003, Douglas Auclair <dauclair at msn.com> wrote:
> The mingw system is great! 

Thanks ;-)

> I've run into a few issues:
> 
> 1) mmc --make seems not to work.  On whatever module I try it, it complains 
> that it cannot find builtin.m (whether it's a single module that produces 
> an executable or a group of modules).  mmc does not have this problem.  So, 
> I'm currently using mmake <module>.depend and mmake <module> to deliver my 
> executables for groups of modules and mmc <module> for a single-module 
> executable.

That sounds like a bug.  However, I can't reproduce it here.
For me, `mmc --make' works OK (except that on Windows it always relinks,
even if relinking is not needed -- this is a known issue in 0.11.0
which IIRC is fixed in our CVS repository).

Do you have the file
"/usr/local/mercury-0.11.0-mingw/lib/mercury/ints/builtin.module_dep"
and the symbolic link
"/usr/local/mercury-0.11.0-mingw/lib/mercury/ints/Mercury/module_deps",
which should link to ".."?

What's the output of `mmc --make --verbose --debug-make hello'?

> 2) The generated executable needs cygwin1.dll to run, which seems to 
> indicate a cygwin dependency, even when using mercury_compile.mingw (which 
> is not a problem, but should I then include cygwin1.dll with my 
> deliveries?).

Ouch!  That is definitely not supposed to happen.

Ah, I see...  I've just had a look at that one, and I see what is causing
the problem.  On Cygwin, `gcc -mno-cygwin ... -lm' results in cygwin1.dll
being linked in.  The solution is to not use `-lm'.  Fortunately there
is a simple work-around: set the MERCURY_MATH_LIB environment variable
to the empty string.  I am currently testing a patch which should avoid
the need for this.

> 3) There's a hard-coded path dependency:  I installed the compiler into 
> h:\languages\mercury (aka /cygdrive/h/languages/mercury), but when I did 
> that, mmc complained that it could not find 
> /usr/local/mercury-0.11.0-mingw/bin/i686-pc-cygwin/mercury-compile[.mingw], 

There is a hard-coded path dependency, but it's only a hard-coded
dependency on the Cygwin path, not the Windows path.  So if you
want to install it on h:\languages\mercury, that's OK, but you
need to use the Cygwin "mount" command to mount that directory
to /usr/local/mercury-0.11.0-mingw.  Or alternatively you could
use a symbolic link, e.g. "ln -s /cygdrive/h/languages/mercury
/usr/local/mercury-0.11.0-mingw".

> even though I had my MERCURY_HOME environmental variable set.

I'm not sure where you got the idea that setting MERCURY_HOME
would help.  As far as I can tell, neither the Mercury documentation
nor the source code mention "MERCURY_HOME".

Cheers,
	Fergus.

-- 
Fergus Henderson <fjh at cs.mu.oz.au>  |  "I have always known that the pursuit
The University of Melbourne         |  of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh>  |     -- the last words of T. S. Garp.
--------------------------------------------------------------------------
mercury-users mailing list
post:  mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-users-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------



More information about the users mailing list