September 27, 2013
I know this topic has come up in various forms, but no good resolution has yet been codified.  I need to reduce the amount of hand hacking done inside the auto-tester that's specific to visual studio paths and win64.  The local patches conflicted with a pull request that's also trying to do some cleanup in this area.  I just pulled that request and re-did my local changes, but I think the problem needs to be addressed.  The paths wander from version to version, including the directory structure inside the compiler main directory.  IMHO, the makefiles need to stop trying to set the paths an instead pull them from the environment.

What I've done with the auto-tester is:

1) set in the environment 4 variables:

    export VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC"
    export SDKDIR="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A"
    export VCBIN_DIR="$VCDIR\bin\x86_amd64"
    export INCLUDE="$VCDIR\include"


2) apply a set of patches to druntime/win64.mak, phobos/win64.mak, phobos/etc/c/zlib/win64.mak that look basically like:

diff --git a/win64.mak b/win64.mak
index daee7f6..b381a34 100644
--- a/win64.mak
+++ b/win64.mak
@@ -2,14 +2,11 @@

 MODEL=64

-VCDIR=\Program Files (x86)\Microsoft Visual Studio 10.0\VC
-SDKDIR=\Program Files (x86)\Microsoft SDKs\Windows\v7.0A
-
 DMD=dmd

-CC="$(VCDIR)\bin\amd64\cl"
-LD="$(VCDIR)\bin\amd64\link"
-LIB="$(VCDIR)\bin\amd64\lib"
+CC="$(VCBIN_DIR)\cl"
+LD="$(VCBIN_DIR)\link"
+LIB="$(VCBIN_DIR)\lib"
 CP=cp

 DOCDIR=doc


A similar one to use the env rather than a hardcoded value in dmd/test/d_do_test.d.

I hate breaking changes, so any thoughts on how to make this suck less without breaking people building on win64?  Alternately, if you're among the probably relatively few people building on win64, would you object to this change?

Thoughts?

Thanks,
Brad
_______________________________________________
phobos mailing list
phobos@puremagic.com
http://lists.puremagic.com/mailman/listinfo/phobos

September 30, 2013
On 28.09.2013 00:13, Brad Roberts wrote:
> I know this topic has come up in various forms, but no good resolution
> has yet been codified.  I need to reduce the amount of hand hacking done
> inside the auto-tester that's specific to visual studio paths and
> win64.  The local patches conflicted with a pull request that's also
> trying to do some cleanup in this area.  I just pulled that request and
> re-did my local changes, but I think the problem needs to be addressed.
> The paths wander from version to version, including the directory
> structure inside the compiler main directory.  IMHO, the makefiles need
> to stop trying to set the paths an instead pull them from the environment.
>
> What I've done with the auto-tester is:
>
> 1) set in the environment 4 variables:
>
>      export VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC"
>      export SDKDIR="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A"
>      export VCBIN_DIR="$VCDIR\bin\x86_amd64"
>      export INCLUDE="$VCDIR\include"
>
>
> 2) apply a set of patches to druntime/win64.mak, phobos/win64.mak,
> phobos/etc/c/zlib/win64.mak that look basically like:
>
> diff --git a/win64.mak b/win64.mak
> index daee7f6..b381a34 100644
> --- a/win64.mak
> +++ b/win64.mak
> @@ -2,14 +2,11 @@
>
>   MODEL=64
>
> -VCDIR=\Program Files (x86)\Microsoft Visual Studio 10.0\VC
> -SDKDIR=\Program Files (x86)\Microsoft SDKs\Windows\v7.0A
> -
>   DMD=dmd
>
> -CC="$(VCDIR)\bin\amd64\cl"
> -LD="$(VCDIR)\bin\amd64\link"
> -LIB="$(VCDIR)\bin\amd64\lib"
> +CC="$(VCBIN_DIR)\cl"
> +LD="$(VCBIN_DIR)\link"
> +LIB="$(VCBIN_DIR)\lib"
>   CP=cp
>
>   DOCDIR=doc
>
>
> A similar one to use the env rather than a hardcoded value in
> dmd/test/d_do_test.d.
>
> I hate breaking changes, so any thoughts on how to make this suck less
> without breaking people building on win64?  Alternately, if you're among
> the probably relatively few people building on win64, would you object
> to this change?
>
> Thoughts?
>
> Thanks,
> Brad

What I do is to use the VS console and pass CC and AR on the command line as well:

set dm_make=c:\l\dmd2\windows\bin\make
set DMD=../windows/bin/dmd.exe
set cl64=c:\l\vs10\vc\bin\amd64\cl.exe
set ar64=c:/l/vs10/vc/bin/amd64/lib.exe

cd druntime
%dm_make% -f win64.mak DMD=%DMD% "CC=\"%cl64%\"" target
cd ..\phobos
%dm_make% -f win64.mak DMD=%DMD% "CC=\"%cl64%\"" MAKE=%dm_make% "AR=\"%ar64%\"" LIB=..\lib64\phobos64.lib

I'm not sure if the mix of forward and backward slashes is necessary. Probably not for win64.mak, but for posix.mak which I normally use under windows, too.

_______________________________________________
phobos mailing list
phobos@puremagic.com
http://lists.puremagic.com/mailman/listinfo/phobos