[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: clang for Windows
From: |
Bruno Haible |
Subject: |
Re: clang for Windows |
Date: |
Wed, 05 Aug 2020 19:13:40 +0200 |
User-agent: |
KMail/5.1.3 (Linux/4.4.0-186-generic; KDE/5.18.0; x86_64; ; ) |
Gisle Vanem wrote:
> With clang-cl I get link-results like:
What is this clang for Windows? I mean the download from [1].
I don't mean the combination with mingw [2].
As far as I can see,
* It's meant to be used with the MSVC headers and libraries.
* There are two compiler drivers, 'clang' (C) / 'clang-c++' (C++)
and 'clang-cl'.
They produce nearly identical code.
They have different command-line options:
- 'clang'/'clang-c++' has GCC compatible options (and can thus be
used directly with the GNU build system), whereas
- 'clang-cl' has MSVC compatible options (and thus needs the Automake
'compile' script when used with the GNU build system).
* It predefines the symbols __clang__, _MSC_VER but not __GNUC__.
So, it disguises as MSVC, with some small behaviour differences [3].
And you just discovered that
extern int foo();
static int foo() { ... }
produces an external symbol 'foo' with clang, but not with MSVC.
* But it supports the GCC built-ins, despite not defining __GNUC__ !
I'll start a series of patches to support this variant of clang.
(Maybe there will be other variants of clang in the future that don't
advertise __GNUC__.)
I'll do that for clang version 4.0.0 onward. clang 3.9.x is 3.5 years old;
less worth the investment of time, I think.
Bruno
[1] https://releases.llvm.org/download.html#10.0.0
[2]
https://stackoverflow.com/questions/39871656/how-to-use-clang-with-mingw-w64-headers-on-windows
[3] https://clang.llvm.org/docs/MSVCCompatibility.html