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 | 66791df8d8b65c68de9ecf3246e895919af75bc2 (patch) | |
tree | 044620697110ce2e5f85173df2d9d2d8173b6114 /lib/Frontend/InitPreprocessor.cpp | |
parent | ce2b41dab3378750a79db518ab3ba8a5c8f39457 (diff) |
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.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101450 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/InitPreprocessor.cpp')
-rw-r--r-- | lib/Frontend/InitPreprocessor.cpp | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/lib/Frontend/InitPreprocessor.cpp b/lib/Frontend/InitPreprocessor.cpp index 8bcd3a83c0..aacae49540 100644 --- a/lib/Frontend/InitPreprocessor.cpp +++ b/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) { |