diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-04-16 06:31:05 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-04-16 06:31:05 +0000 |
commit | d2b896ab69844c368f26d5711145f5d01a037a6d (patch) | |
tree | 353af4b17060fa619cd23110fc4b8578808993a5 /clang/lib/Frontend/InitPreprocessor.cpp | |
parent | 408f79197cddfead5606a0ab9b49cb312252e348 (diff) | |
download | bcm5719-llvm-d2b896ab69844c368f26d5711145f5d01a037a6d.tar.gz bcm5719-llvm-d2b896ab69844c368f26d5711145f5d01a037a6d.zip |
Only predefine the macro _GNU_SOURCE in C++ mode when we're on a
platform that typically uses glibc. Fixes a Boost.Thread compilation
failure.
llvm-svn: 101450
Diffstat (limited to 'clang/lib/Frontend/InitPreprocessor.cpp')
-rw-r--r-- | clang/lib/Frontend/InitPreprocessor.cpp | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index 8bcd3a83c00..aacae495401 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -294,8 +294,30 @@ static void InitializePredefinedMacros(const TargetInfo &TI, // C++ translation unit. Builder.defineMacro("__cplusplus", "199711L"); Builder.defineMacro("__private_extern__", "extern"); - // Ugly hack to work with GNU libstdc++. - Builder.defineMacro("_GNU_SOURCE"); + + // Define _GNU_SOURCE on platforms where we expect to use glibc. + switch (TI.getTriple().getOS()) { + case llvm::Triple::Cygwin: + case llvm::Triple::MinGW64: + case llvm::Triple::MinGW32: + case llvm::Triple::Linux: + case llvm::Triple::Solaris: + case llvm::Triple::AuroraUX: + Builder.defineMacro("_GNU_SOURCE"); + break; + + case llvm::Triple::Darwin: + case llvm::Triple::DragonFly: + case llvm::Triple::FreeBSD: + case llvm::Triple::UnknownOS: + case llvm::Triple::Lv2: + case llvm::Triple::NetBSD: + case llvm::Triple::OpenBSD: + case llvm::Triple::Psp: + case llvm::Triple::Win32: + case llvm::Triple::Haiku: + break; + } } if (LangOpts.Microsoft) { |