From eac7aee3a2e8ce74274ecf8be7ab9cf04cebdf9b Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 23 Aug 2008 18:23:14 +0000 Subject: [PATCH] Add dragonfly target support, patch by Sascha Wildner git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55241 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Basic/Targets.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index fae0a71d60..dfaef75980 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -47,6 +47,18 @@ static void getDarwinDefines(std::vector &Defs) { Define(Defs, "__PASCAL_STRINGS__"); } +static void getDragonFlyDefines(std::vector &Defs) { + // DragonFly defines; list based off of gcc output + Define(Defs, "__DragonFly__"); + Define(Defs, "__DragonFly_cc_version", "100001"); + Define(Defs, "__ELF__"); + Define(Defs, "__KPRINTF_ATTRIBUTE__"); + Define(Defs, "__tune_i386__"); + Define(Defs, "unix"); + Define(Defs, "__unix"); + Define(Defs, "__unix__"); +} + static void getLinuxDefines(std::vector &Defs) { // Linux defines; list based off of gcc output Define(Defs, "__unix__"); @@ -664,6 +676,19 @@ public: }; } // end anonymous namespace +namespace { +// x86-32 DragonFly target +class DragonFlyX86_32TargetInfo : public X86_32TargetInfo { +public: + DragonFlyX86_32TargetInfo(const std::string& triple) : X86_32TargetInfo(triple) { + } + virtual void getTargetDefines(std::vector &Defines) const { + X86_32TargetInfo::getTargetDefines(Defines); + getDragonFlyDefines(Defines); + } +}; +} // end anonymous namespace + namespace { // x86-32 Linux target class LinuxX86_32TargetInfo : public X86_32TargetInfo { @@ -924,6 +949,7 @@ TargetInfo* TargetInfo::CreateTargetInfo(const std::string &T) { // OS detection; this isn't really anywhere near complete. // Additions and corrections are welcome. bool isDarwin = T.find("-darwin") != std::string::npos; + bool isDragonFly = T.find("-dragonfly") != std::string::npos; bool isSolaris = T.find("-solaris") != std::string::npos; bool isLinux = T.find("-linux") != std::string::npos; bool isWindows = T.find("-windows") != std::string::npos || @@ -968,6 +994,8 @@ TargetInfo* TargetInfo::CreateTargetInfo(const std::string &T) { return new DarwinI386TargetInfo(T); if (isLinux) return new LinuxX86_32TargetInfo(T); + if (isDragonFly) + return new DragonFlyX86_32TargetInfo(T); if (isWindows) return new WindowsX86_32TargetInfo(T); return new X86_32TargetInfo(T); -- 2.40.0