Thread overview | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
August 22, 2014 Building LDC for the first time | ||||
---|---|---|---|---|
| ||||
Dear All, I downloaded ldc-0.14.0-src.tar.gz and tried following the instructions located at: http://wiki.dlang.org/Building_LDC_on_MinGW_x86 I was only partially successful. $ uname MINGW32_NT-6.1 My version: LDC - the LLVM D compiler (0.14.0): based on DMD v2.065 and LLVM 3.5.0svn Default target: i686-pc-windows-gnu Official version: LDC - the LLVM D compiler (0.14.0): based on DMD v2.065 and LLVM 3.4.2 Default target: i686-pc-mingw32 I realize I used too new LLVM, but nevertheless there's two things puzzling me: 1) My targetTriple.getOS() == llvm::Triple::Win32 which results in my compiler invoking the Visual Studio Linker, which isn't necessarily a bad thing, but it was unexpected, because the official build uses ld from MinGW. 2) The compiler builds fine, but the Druntime/Phobos doesn't. "ldc/import\core\stdc\math.d(672): Error: undefined identifier isnan, did you mean function nan?" I guess that's a consequence of my compiler having an identity crisis, using the wrong version code-path... The combination of these two issues, is a problem since the official build uses a different toolchain so I cannot use the libs from it together with the MS linker, which means I'm stuck. I also tried using VS Express 2013: http://wiki.dlang.org/Building_and_hacking_LDC_on_Windows_using_MSVC But I can't get it to build either... my stdlib.h already defines: long double strtold(const char *p,char **endp); (even if long double is just 8 bytes) But the workaround in \dmd2\root\longdouble.h redefines it as: longdouble strtold(const char *p,char **endp); I didn't find a clean way to solve it, every workaround resulted in a new error down the road until I gave up and switched to using MinGW... Any advice for me? (I can't switch OS right now). |
August 22, 2014 Re: Building LDC for the first time | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel N | Hi Daniel! On Friday, 22 August 2014 at 02:24:10 UTC, Daniel N wrote: > Dear All, > > I downloaded ldc-0.14.0-src.tar.gz and tried following the instructions located at: > http://wiki.dlang.org/Building_LDC_on_MinGW_x86 Thanks for trying LDC! > I was only partially successful. > > $ uname > MINGW32_NT-6.1 > > My version: > LDC - the LLVM D compiler (0.14.0): > based on DMD v2.065 and LLVM 3.5.0svn > Default target: i686-pc-windows-gnu > > Official version: > LDC - the LLVM D compiler (0.14.0): > based on DMD v2.065 and LLVM 3.4.2 > Default target: i686-pc-mingw32 > > I realize I used too new LLVM, but nevertheless there's two things puzzling me: In general, LLVM 3.5 should work, too. But I did not check on MingW. > 1) My targetTriple.getOS() == llvm::Triple::Win32 which results in my compiler invoking the Visual Studio Linker, which isn't necessarily a bad thing, but it was unexpected, because the official build uses ld from MinGW. If you look at the default target triple, you notice the change from mingw32 to windows-gnu. I think I missed to change the linker invocation, too. I'll check this. > 2) The compiler builds fine, but the Druntime/Phobos doesn't. > "ldc/import\core\stdc\math.d(672): Error: undefined identifier isnan, did you mean function nan?" I guess that's a consequence of my compiler having an identity crisis, using the wrong version code-path... I'll check this, too. Sounds like a bug. > The combination of these two issues, is a problem since the official build uses a different toolchain so I cannot use the libs from it together with the MS linker, which means I'm stuck. > > I also tried using VS Express 2013: > http://wiki.dlang.org/Building_and_hacking_LDC_on_Windows_using_MSVC > > But I can't get it to build either... my stdlib.h already defines: > long double strtold(const char *p,char **endp); > (even if long double is just 8 bytes) > > But the workaround in \dmd2\root\longdouble.h redefines it as: > longdouble strtold(const char *p,char **endp); > > I didn't find a clean way to solve it, every workaround resulted in a new error down the road until I gave up and switched to using MinGW... > > Any advice for me? (I can't switch OS right now). I am still using VisualStudio 2012. But I try to fix this, too. I'll give you a hint when I fixes the mingw problems. Then you can use master branch from GitHub instead of the source distribution. Regards, Kai |
August 24, 2014 Re: Building LDC for the first time | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kai Nacke | On Friday, 22 August 2014 at 06:13:07 UTC, Kai Nacke wrote:
> I am still using VisualStudio 2012. But I try to fix this, too.
>
> I'll give you a hint when I fixes the mingw problems. Then you can use master branch from GitHub instead of the source distribution.
>
> Regards,
> Kai
Hi Kai,
Awesome, thanks for confirming the bugs!
Best Regards,
Daniel N
|
August 24, 2014 Re: Building LDC for the first time | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel N | On Sunday, 24 August 2014 at 16:08:02 UTC, Daniel N wrote:
> On Friday, 22 August 2014 at 06:13:07 UTC, Kai Nacke wrote:
>> I am still using VisualStudio 2012. But I try to fix this, too.
>>
>> I'll give you a hint when I fixes the mingw problems. Then you can use master branch from GitHub instead of the source distribution.
>>
>> Regards,
>> Kai
>
> Hi Kai,
>
> Awesome, thanks for confirming the bugs!
>
> Best Regards,
> Daniel N
Hi Daniel!
The linker issue is fixed now in master branch.
Regards,
Kai
|
August 25, 2014 Re: Building LDC for the first time | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kai Nacke | On Sunday, 24 August 2014 at 17:24:22 UTC, Kai Nacke wrote:
>
> Hi Daniel!
>
> The linker issue is fixed now in master branch.
>
> Regards,
> Kai
Hi Kai,
verified, now it behaves as expected. :)
Thanks for the super fast support!
Daniel N
|
August 25, 2014 Re: Building LDC for the first time | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel N | On Monday, 25 August 2014 at 14:45:49 UTC, Daniel N wrote:
> On Sunday, 24 August 2014 at 17:24:22 UTC, Kai Nacke wrote:
>>
>> Hi Daniel!
>>
>> The linker issue is fixed now in master branch.
>>
>> Regards,
>> Kai
>
> Hi Kai,
>
> verified, now it behaves as expected. :)
>
> Thanks for the super fast support!
> Daniel N
Hi Daniel,
I could not verify the second issue - but I only tried after fixing the linker issue. I have to use VS 2013 soon as LLVM project discusses to raise the minimum VS version to 2013 for version 3.6
Regards,
Kai
|
August 26, 2014 Re: Building LDC for the first time | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kai Nacke | On Monday, 25 August 2014 at 16:26:33 UTC, Kai Nacke wrote:
> Hi Daniel,
>
> I could not verify the second issue - but I only tried after fixing the linker issue. I have to use VS 2013 soon as LLVM project discusses to raise the minimum VS version to 2013 for version 3.6
>
> Regards,
> Kai
Dear Kai,
I made some progress in identifying the Runtime build issue.
Basically version(LDC) && version(Win32) is true, but version(MinGW) isn't.
I tried a workaround, but MinGW is reserved I was not allowed to set it.
version( LDC )
{
// version( Win32 )
// version = MinGW;
version( Win64 )
version = MSVC_RUNTIME;
}
If I hack the file, so that the MinGW codepath is taken, then it compiles perfectly(until I hit the same issue in another file).
I haven't backtracked how 'version' is implemented yet, I guess the issue could originate all the way from cmake?
Best Regards,
Daniel N
PS Is there a switch to print the built-in versions? I couldn't find it.
|
August 26, 2014 Re: Building LDC for the first time | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel N | On Tuesday, 26 August 2014 at 08:06:40 UTC, Daniel N wrote: > On Monday, 25 August 2014 at 16:26:33 UTC, Kai Nacke wrote: >> Hi Daniel, >> >> I could not verify the second issue - but I only tried after fixing the linker issue. I have to use VS 2013 soon as LLVM project discusses to raise the minimum VS version to 2013 for version 3.6 >> >> Regards, >> Kai PS I found the bug: \ldc_master\driver\main.cpp OLD Code: #if LDC_LLVM_VER >= 306 if (global.params.targetTriple.isWindowsGNUEnvironment()) { VersionCondition::addPredefinedGlobalIdent("mingw32"); // For backwards compatibility. VersionCondition::addPredefinedGlobalIdent("MinGW"); } Working Code: #if LDC_LLVM_VER >= 305 Best Regards, Daniel N |
August 26, 2014 Re: Building LDC for the first time | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel N | On Tuesday, 26 August 2014 at 08:36:26 UTC, Daniel N wrote:
> On Tuesday, 26 August 2014 at 08:06:40 UTC, Daniel N wrote:
>> On Monday, 25 August 2014 at 16:26:33 UTC, Kai Nacke wrote:
>>> Hi Daniel,
>>>
>>> I could not verify the second issue - but I only tried after fixing the linker issue. I have to use VS 2013 soon as LLVM project discusses to raise the minimum VS version to 2013 for version 3.6
>>>
>>> Regards,
>>> Kai
>
> PS I found the bug:
> \ldc_master\driver\main.cpp
>
> OLD Code:
> #if LDC_LLVM_VER >= 306
> if (global.params.targetTriple.isWindowsGNUEnvironment())
> {
> VersionCondition::addPredefinedGlobalIdent("mingw32"); // For backwards compatibility.
> VersionCondition::addPredefinedGlobalIdent("MinGW");
> }
> Working Code:
> #if LDC_LLVM_VER >= 305
>
> Best Regards,
> Daniel N
Thanks for debugging! I commit this asap.
Regards,
Kai
|
August 26, 2014 Re: Building LDC for the first time | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel N | On Tuesday, 26 August 2014 at 08:06:40 UTC, Daniel N wrote: > PS Is there a switch to print the built-in versions? I couldn't find it. If you just want a list of all of them, it's in dmd2/cond.c: https://github.com/ldc-developers/ldc/blob/master/dmd2/cond.c#L153 If you want to know what's currently enabled for any particular invocation of the compiler, add the -v flag and it'll show them at the top. |
Copyright © 1999-2021 by the D Language Foundation