bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [build_w32.bat] feature request: add optional command line argument


From: Eli Zaretskii
Subject: Re: [build_w32.bat] feature request: add optional command line argument for executable name
Date: Tue, 19 Nov 2019 19:14:26 +0200

> From: Paul Smith <address@hidden>
> Cc: address@hidden, address@hidden
> Date: Tue, 19 Nov 2019 09:22:17 -0500
> 
> On Fri, 2019-11-15 at 15:52 +0200, Eli Zaretskii wrote:
> > Ping!  Paul, did you have a chance to look at this issue?
> 
> Sorry, I'm quite underwater.  I hope to be able to do a bit of make work
> over the next few weeks: get out a final RC and a release.

OK.

> For this, I don't really understand the issue :).  What is the import
> library used for?

It is used to build loadable objects.  Since they call functions that
are implemented inside the Make executable, on Windows you must link
them against the import library that tells where to find the
implementation at run time.

> Make is an executable, right?

Yes.

> Are we talking about creating loadable objects here?

Yes.  But, while normally an import library is used for DLLs, here we
have the reverse situation: a DLL that needs to call a function inside
the Make executable.

> I have no preferences for filenames whatsoever: I used whatever was there
> before.

It isn't about choosing a file name.  This is about the fact that the
name of the executable whose link command produced an import library
is hard-coded into the import library, so that a loadable object
linked against that import library will look for the Make executable
by that name when it tries to invoke one of the API functions.  And we
produce an executable called gnumake.exe, so that's what the loadable
objects will look for -- and will fail, because Make is installed
under a different file name, typically make.exe or mingw32-make.exe.

> The extent of my usage is just making sure that it compiles and runs on
> Windows with MSVC since that's what I have access to.

Did you try to run the tests from the test suite that load shared
objects or verify the API, with the MSVC-compiled Make?  I think they
will all fail if Make's executable file is not called gnumake.exe.

My question was how to allow end-users rename the Make executable,
without breaking the loadable objects.  I proposed several
alternatives.  There's one more, btw: the end-user could link against
make.exe (or whatever it's called) directly, bypassing the import
library.

I'd really like to hear your views and opinions on this issue.  If
this will have to wait until you have more time to think about the
issue, so be it.

Thanks.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]