diff options
author | Logan Chien <tzuhsiang.chien@gmail.com> | 2013-05-29 18:23:17 +0800 |
---|---|---|
committer | Logan Chien <tzuhsiang.chien@gmail.com> | 2014-09-10 03:46:59 +0800 |
commit | 0d033108b0fcf467e0367f9d933724178534a341 (patch) | |
tree | 661380347db3be0a65c56d85faf028fc903ef58a | |
parent | 6bd3ee2c81d31a69eb5eab790782e13c96eaba26 (diff) | |
download | clang-0d033108b0fcf467e0367f9d933724178534a341.tar.gz |
[ndk][pndk] Define __le32__ for target le32-none-ndk
Also define whatever LinuxTargetInfo define, because target
le32-none-ndk implies Android which is based on Linux.
-rw-r--r-- | lib/Basic/Targets.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index 7b21db46e0..8cfa8dfc73 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -682,8 +682,15 @@ class AndroidTargetInfo : public OSTargetInfo<Target> { protected: virtual void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const { - Builder.defineMacro("__ANDROID__"); + DefineStd(Builder, "unix", Opts); + DefineStd(Builder, "linux", Opts); + Builder.defineMacro("__gnu_linux__"); Builder.defineMacro("__ELF__"); + Builder.defineMacro("__ANDROID__", "1"); + if (Opts.POSIXThreads) + Builder.defineMacro("_REENTRANT"); + if (Opts.CPlusPlus) + Builder.defineMacro("_GNU_SOURCE"); } public: AndroidTargetInfo(const llvm::Triple &triple) @@ -5909,6 +5916,9 @@ class AndroidNDKTargetInfo : public TargetInfo { public: AndroidNDKTargetInfo(const llvm::Triple& Triple); + virtual void getArchDefines(const LangOptions &Opts, + MacroBuilder &Builder) const; + virtual void getTargetDefines(const LangOptions& Opts, MacroBuilder& Builder) const; @@ -5968,10 +5978,17 @@ AndroidNDKTargetInfo::AndroidNDKTargetInfo(const llvm::Triple& Triple) "v128:64:128-a0:0:64-n32-S64"; } -void AndroidNDKTargetInfo::getTargetDefines(const LangOptions& Opts, +void AndroidNDKTargetInfo::getArchDefines(const LangOptions& Opts, MacroBuilder& Builder) const { + Builder.defineMacro("__le32__"); Builder.defineMacro("__ANDROID__"); +} + +void AndroidNDKTargetInfo::getTargetDefines(const LangOptions& Opts, + MacroBuilder& Builder) const { Builder.defineMacro("__ELF__"); + Builder.defineMacro("__LITTLE_ENDIAN__"); + getArchDefines(Opts, Builder); } } // end anonymous namespace |