On 10/15/2012 3:44 AM, Walter Bright wrote:
On 10/14/2012 6:08 PM, Andrej Mitrovic wrote:
 > Ok so we're only supposed to compile with -c when using -m64? I don't
 > suppose DMD could automatically invoke the VC linker?
 >

It does automatically invoke the VC linker.

You'll need to set the VCINSTALLDIR environment variable. I set it with
sc.ini as:

---------------------
[Environment]
LIB=c:\cbx\mars\phobos;c:\cbx\mars\druntime\lib;c:\dm\lib\;c:\curl\lib
DDFLAGS=-Ic:\cbx\mars\phobos
DFLAGS=-Ic:\cbx\mars\phobos;c:\cbx\mars\druntime\import
#LINKCMD=c:\dm\bin\link.exe
VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\
WindowsSdkDir=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\
----------------------

I guess there should be different environments for each architecture specified in sc.ini. Especially the LIB variable will never mix because the windows sdk libraries are called the same on both architectures.

A problem with that is the DFLAGS variable: it is read before the command line, so you don't know whether -m32 or -m64 is passed (and it might even specify the switch itself), so you don't know which architecture to use.

A solution might be to have additional environment blocks [Environment32] and [Environment64] that are evaluated after the command line processing.

Reply via email to