summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-07-13 20:29:08 +0000
committerChris Lattner <sabre@nondot.org>2009-07-13 20:29:08 +0000
commitd1d820ed51074053b9eb22af1bb2ebe49f9dfb4b (patch)
tree9ca25b3f107c90871641bbe0f8555ec872fe2731 /clang/lib/Basic/Targets.cpp
parente3ac197457a173120415e6f463168de2aa66d76e (diff)
downloadbcm5719-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.cpp23
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)
OpenPOWER on IntegriCloud