Need help to finish DMD zip/7z release generator (alpha release)
Rainer Schuetze
r.sagitario at gmx.de
Fri Sep 13 23:32:04 PDT 2013
On 13.09.2013 23:31, Nick Sabalausky wrote:
> On Tue, 3 Sep 2013 20:53:11 -0400
> Nick Sabalausky <SeeWebsiteToContactMe at semitwist.com> 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.
More information about the Digitalmars-d
mailing list