Am Fri, 09 Dec 2016 15:59:07 +0000 schrieb Eduard Staniloiu <edi33...@gmail.com>:
> 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 > Archlinux uses /usr/include/dlang/[dmd|gdc|ldc]. Maybe debian/ubuntu should do that as well or maybe we could even change the path in upstream GDC.