On 13.09.2013 23:31, Nick Sabalausky wrote:
On Tue, 3 Sep 2013 20:53:11 -0400
Nick Sabalausky <[email protected]> wrote:

- Windows 7 (64-bit OS): This is where I'm having the biggest trouble.
   I can coaxing it to handle v2.063.2 just fine (ie, if I update the
   "tools" makefiles as described above, and comment out all the
   "libcurl" and "chm" stuff.) However, on master, after it compiles
   DMD/druntime/phobos, the resulting DMD/phobos can't compile anything
   that uses phobos because OPTLINK will spew out a bunch of errors. I
   am *completely* at a loss on this one. It seems like an sc.ini
issue, but I've spent days checking everything and I still can't make
heads or tails of it.


That issue is still blocking the release generator (seems to be the
same issue at least one other person was already having):
http://d.puremagic.com/issues/show_bug.cgi?id=10729

Can anyone who is able to build a *working* 32-bit DMD/phobos from
master on Windows pop into that issue page and see what this does for
them?:

mkdir junk
create_dmd_release master --extras=junk --only-32 -v


The generated sc.ini in dmd/src is no good, the LIB environment variable should be set like this:

LIB="%@P%\..\..\phobos"

Even if you do so, it does not work because optlink is also looking for an sc.ini (contrary or in addition to the documentation that mentions optlink.cfg) and extracts the LIB environment variable. If the link.exe in the PATH is from a different version of dmd, the wrong phobos.lib is taken.

It is easiest to always put link.exe into the same directory as dmd.exe.

While you are at it, I'd recommend an sc.ini that looks about like this in the release:

; environment for both 32/64 bit
[Environment]
LIB="%@P%\..\lib"
DFLAGS="-I%@P%\..\..\src\phobos" "-I%@P%\..\..\src\druntime\import"
LINKCMD=%@P%\link.exe

[Environment64]
; VS2008 and VS2012
LINKCMD64=%VCINSTALLDIR%\bin\amd64\link.exe
; VS2012
; LINKCMD64=%VCINSTALLDIR%\bin\x86_amd64\link.exe
; needed with /DEBUG to find mspdb*.dll
PATH=%PATH%;%VCINSTALLDIR%\bin\x86_amd64;%VCINSTALLDIR%\..\Common7\IDE

; needed to avoid COMDAT folding (bugzilla 10664)
DFLAGS=%DFLAGS% -L/OPT:NOICF

LIB="%@P%\..\lib64"

;;;; search path for C Runtime libraries
; the following lib path works with VS2008, VS2010 and VS2012
LIB=%LIB%;"%VCINSTALLDIR%\lib\amd64"

;;;; search path for Platform libraries
; the following lib path works with Windows SDK 6.x and 7.x
LIB=%LIB%;%WindowsSdkDir%\Lib\x64

; the following lib path works with Windows SDK 8.0
LIB=%LIB%;%WindowsSdkDir%\Lib\win8\um\x64


This includes the install of win64 libraries into a lib64 folder instead of mixing it with OMF libraries in the lib folder.


3 more nitpicks:
- the working directory defaultWorkDir is never created
- I get an error that '.' cannot be removed, but I can continue answering 'n' to the following question for retry - my copies of the Windows SDKs 6 and 7 don't have folders License, Redist, Samples and Setup. I would just skip these tests.

Reply via email to