js created this revision. Herald added subscribers: kbarton, nemanjai. Herald added a project: All. js requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
This adds MorphOS to Target and sets up the required defines. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D136089 Files: clang/lib/Basic/Targets.cpp clang/lib/Basic/Targets/OSTargets.h clang/lib/Basic/Targets/PPC.h Index: clang/lib/Basic/Targets/PPC.h =================================================================== --- clang/lib/Basic/Targets/PPC.h +++ clang/lib/Basic/Targets/PPC.h @@ -522,6 +522,12 @@ using AIXTargetInfo::AIXTargetInfo; }; +class LLVM_LIBRARY_VISIBILITY MorphOSPPC32TargetInfo : + public MorphOSTargetInfo<PPC32TargetInfo> { +public: + using MorphOSTargetInfo::MorphOSTargetInfo; +}; + } // namespace targets } // namespace clang #endif // LLVM_CLANG_LIB_BASIC_TARGETS_PPC_H Index: clang/lib/Basic/Targets/OSTargets.h =================================================================== --- clang/lib/Basic/Targets/OSTargets.h +++ clang/lib/Basic/Targets/OSTargets.h @@ -991,6 +991,37 @@ } }; +// MorphOS target +template <typename Target> +class LLVM_LIBRARY_VISIBILITY MorphOSTargetInfo : public OSTargetInfo<Target> { +protected: + void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, + MacroBuilder &Builder) const override { + Builder.defineMacro("__MORPHOS__"); + Builder.defineMacro("__morphos__"); + Builder.defineMacro("__amigaos"); + Builder.defineMacro("__amigaos__"); + Builder.defineMacro("amigaos"); + Builder.defineMacro("AMIGA"); + Builder.defineMacro("_AMIGA"); + Builder.defineMacro("__AMIGA"); + Builder.defineMacro("__ELF__"); + Builder.defineMacro("_CALL_SYSV"); + Builder.defineMacro("libnix"); + Builder.defineMacro("__libnix"); + Builder.defineMacro("__libnix__"); + Builder.defineMacro("__saveds", "__attribute__((__saveds__))"); + } + +public: + MorphOSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) + : OSTargetInfo<Target>(Triple, Opts) { + this->SizeType = TargetInfo::UnsignedInt; + this->IntPtrType = TargetInfo::SignedLong; + this->PtrDiffType = TargetInfo::SignedLong; + } +}; + } // namespace targets } // namespace clang #endif // LLVM_CLANG_LIB_BASIC_TARGETS_OSTARGETS_H Index: clang/lib/Basic/Targets.cpp =================================================================== --- clang/lib/Basic/Targets.cpp +++ clang/lib/Basic/Targets.cpp @@ -345,6 +345,8 @@ return new RTEMSTargetInfo<PPC32TargetInfo>(Triple, Opts); case llvm::Triple::AIX: return new AIXPPC32TargetInfo(Triple, Opts); + case llvm::Triple::MorphOS: + return new MorphOSTargetInfo<PPC32TargetInfo>(Triple, Opts); default: return new PPC32TargetInfo(Triple, Opts); }
Index: clang/lib/Basic/Targets/PPC.h =================================================================== --- clang/lib/Basic/Targets/PPC.h +++ clang/lib/Basic/Targets/PPC.h @@ -522,6 +522,12 @@ using AIXTargetInfo::AIXTargetInfo; }; +class LLVM_LIBRARY_VISIBILITY MorphOSPPC32TargetInfo : + public MorphOSTargetInfo<PPC32TargetInfo> { +public: + using MorphOSTargetInfo::MorphOSTargetInfo; +}; + } // namespace targets } // namespace clang #endif // LLVM_CLANG_LIB_BASIC_TARGETS_PPC_H Index: clang/lib/Basic/Targets/OSTargets.h =================================================================== --- clang/lib/Basic/Targets/OSTargets.h +++ clang/lib/Basic/Targets/OSTargets.h @@ -991,6 +991,37 @@ } }; +// MorphOS target +template <typename Target> +class LLVM_LIBRARY_VISIBILITY MorphOSTargetInfo : public OSTargetInfo<Target> { +protected: + void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, + MacroBuilder &Builder) const override { + Builder.defineMacro("__MORPHOS__"); + Builder.defineMacro("__morphos__"); + Builder.defineMacro("__amigaos"); + Builder.defineMacro("__amigaos__"); + Builder.defineMacro("amigaos"); + Builder.defineMacro("AMIGA"); + Builder.defineMacro("_AMIGA"); + Builder.defineMacro("__AMIGA"); + Builder.defineMacro("__ELF__"); + Builder.defineMacro("_CALL_SYSV"); + Builder.defineMacro("libnix"); + Builder.defineMacro("__libnix"); + Builder.defineMacro("__libnix__"); + Builder.defineMacro("__saveds", "__attribute__((__saveds__))"); + } + +public: + MorphOSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) + : OSTargetInfo<Target>(Triple, Opts) { + this->SizeType = TargetInfo::UnsignedInt; + this->IntPtrType = TargetInfo::SignedLong; + this->PtrDiffType = TargetInfo::SignedLong; + } +}; + } // namespace targets } // namespace clang #endif // LLVM_CLANG_LIB_BASIC_TARGETS_OSTARGETS_H Index: clang/lib/Basic/Targets.cpp =================================================================== --- clang/lib/Basic/Targets.cpp +++ clang/lib/Basic/Targets.cpp @@ -345,6 +345,8 @@ return new RTEMSTargetInfo<PPC32TargetInfo>(Triple, Opts); case llvm::Triple::AIX: return new AIXPPC32TargetInfo(Triple, Opts); + case llvm::Triple::MorphOS: + return new MorphOSTargetInfo<PPC32TargetInfo>(Triple, Opts); default: return new PPC32TargetInfo(Triple, Opts); }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits