summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/InitPreprocessor.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-04-16 06:31:05 +0000
committerDouglas Gregor <dgregor@apple.com>2010-04-16 06:31:05 +0000
commitd2b896ab69844c368f26d5711145f5d01a037a6d (patch)
tree353af4b17060fa619cd23110fc4b8578808993a5 /clang/lib/Frontend/InitPreprocessor.cpp
parent408f79197cddfead5606a0ab9b49cb312252e348 (diff)
downloadbcm5719-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.cpp26
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) {
OpenPOWER on IntegriCloud