Hi Russel,

thanks for the quick reply.

On 09.08.2014 14:02, Russel Winder wrote:
On Fri, 2014-08-08 at 19:07 +0200, Dirk Bächle wrote:
Hi there,

we have another user reporting trouble with SCons 2.3.2, in connection
to the D tool...so it's time for us to act. I checked the sources, and
the user's analysis appears to be partly correct: even when no D tool is
present in the current system, the "dmd" tool gets loaded (meaning
SCons.Tool.dmd.generate is executed).
That should not be the case, and wasn't for the tests I made. However I
only tested on Linux and OSX and this user is using Windows, a platform
I cannot test on and no-one else bothered to.

Can you do the following test please:

- In the D tools of your local installation, change the names of the executables that get detected...such that they can't possibly be found in the system (in exists() rename dmd -> foodmd, ...).
- Then create a simple SConstruct:

  env = Environment()
  print env.Dump()

- Run through SCons, and observe that the Environment has D variables (= dmd.py Tool got loaded anyway)


This happens, because the line

     d_compiler = FindTool(d_compilers, env) or d_compilers[0]

adds "dmd" to the tool list anyway. In the "default" Tool's generate() method, the returned list is simply loaded without checking the existence of tools again.


It is okay, and wanted, for as many Tools to get loaded by default...as long as their variables don't clash. The "STATIC_AND_SHARED" variable is only set by:

- C/C++ compilers (where only the first match gets selected, based on the current platform) and - masm (only under Windows, where it sets the same value as a Windows C/C++ compiler -> no clash)

Only the D tools are forcing it back to "0", and this is not compatible with the setting that the "msvc" and "mingw" Tool make. This is the main culprit, and we either have to remove the explicit setting of "STATIC_AND_SHARED" from the D tools (relying on the C/C++ tools to do the right thing, or, if they really need the setting under Windows, we have to remove the D tools from the "default" toolchain.

So, is "STATIC_AND_SHARED=0" *required* for the D tools to work properly under Windows?

Best regards,

Dirk

_______________________________________________
Scons-dev mailing list
[email protected]
http://two.pairlist.net/mailman/listinfo/scons-dev

Reply via email to