diff options
author | Chris Lattner <sabre@nondot.org> | 2009-07-13 20:29:08 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-07-13 20:29:08 +0000 |
commit | d1d820ed51074053b9eb22af1bb2ebe49f9dfb4b (patch) | |
tree | 9ca25b3f107c90871641bbe0f8555ec872fe2731 /clang/lib/Basic/Targets.cpp | |
parent | e3ac197457a173120415e6f463168de2aa66d76e (diff) | |
download | bcm5719-llvm-d1d820ed51074053b9eb22af1bb2ebe49f9dfb4b.tar.gz bcm5719-llvm-d1d820ed51074053b9eb22af1bb2ebe49f9dfb4b.zip |
add netbsd support, patch by Krister Kalfridsson!
llvm-svn: 75492
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 0ff88123147..65c5264eb11 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -321,6 +321,24 @@ public: } }; +// NetBSD Target +template<typename Target> +class NetBSDTargetInfo : public OSTargetInfo<Target> { +protected: + virtual void getOSDefines(const LangOptions &Opts, const char *Triple, + std::vector<char> &Defs) const { + // NetBSD defines; list based off of gcc output + Define(Defs, "__NetBSD__", "1"); + Define(Defs, "__unix__", "1"); + Define(Defs, "__ELF__", "1"); + } +public: + NetBSDTargetInfo(const std::string &triple) + : OSTargetInfo<Target>(triple) { + this->UserLabelPrefix = ""; + } +}; + // OpenBSD Target template<typename Target> class OpenBSDTargetInfo : public OSTargetInfo<Target> { @@ -1372,6 +1390,7 @@ TargetInfo* TargetInfo::CreateTargetInfo(const std::string &T) { // Additions and corrections are welcome. bool isDarwin = T.find("-darwin") != std::string::npos; bool isDragonFly = T.find("-dragonfly") != std::string::npos; + bool isNetBSD = T.find("-netbsd") != std::string::npos; bool isOpenBSD = T.find("-openbsd") != std::string::npos; bool isFreeBSD = T.find("-freebsd") != std::string::npos; bool isSolaris = T.find("-solaris") != std::string::npos; @@ -1411,6 +1430,8 @@ TargetInfo* TargetInfo::CreateTargetInfo(const std::string &T) { return new DarwinX86_64TargetInfo(T); if (isLinux) return new LinuxTargetInfo<X86_64TargetInfo>(T); + if (isNetBSD) + return new NetBSDTargetInfo<X86_64TargetInfo>(T); if (isOpenBSD) return new OpenBSDX86_64TargetInfo(T); if (isFreeBSD) @@ -1433,6 +1454,8 @@ TargetInfo* TargetInfo::CreateTargetInfo(const std::string &T) { return new LinuxTargetInfo<X86_32TargetInfo>(T); if (isDragonFly) return new DragonFlyBSDTargetInfo<X86_32TargetInfo>(T); + if (isNetBSD) + return new NetBSDTargetInfo<X86_32TargetInfo>(T); if (isOpenBSD) return new OpenBSDI386TargetInfo(T); if (isFreeBSD) |