Hello, everyone.

So I have found that installing ldc will break gdc.

The setup:

I have a VM running a 64bit Ubuntu 16.04, as you can see from the output of uname -a:

Linux ubuntu-xenial 4.4.0-51-generic #72-Ubuntu SMP Thu Nov 24 18:29:54 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

I have installed:
  dmd --version: DMD64 D Compiler v2.072.0
gdc --version: gdc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609

With this setup, in /usr/include we can find dmd/
/usr/include/dmd
|-- druntime
|   `-- import
|       |-- core
|       |-- etc

As far as I can tell(guess), both dmd and gdc are using this one.

I installed ldc2 (using apt-get install ldc):
  ldc2 --version: LDC - the LLVM D compiler (0.17.1):
                  based on DMD v2.068.2 and LLVM 3.8.0
                  Default target: x86_64-pc-linux-gnu

After installing ldc2, in /usr/include a new folder, d/, was created
/usr/include/d
|-- core
|-- etc
|-- ldc
`-- std

And now, the issue:
After the steps above, when I try to compile something using gdc, it fails with the following error:

/usr/include/d/core/stdc/stdarg.d:48:5: error: undefined identifier _va_list_tag
     alias __va_list = __va_list_tag;
     ^

Based on my previous assumtion (both dmd and gdc use /usr/include/dmd/) and the error above, I am inclined to believe that after installing ldc, gdc is using /usr/include/d/ and it breaks.

Maybe we should consider having a separate folder in /usr/include/ for each compiler?

Cheers,
Eduard

Reply via email to