[cfe-commits] r72237 - /cfe/trunk/lib/Basic/Targets.cpp
Douglas Gregor
dgregor at apple.com
Thu May 21 16:51:31 PDT 2009
Author: dgregor
Date: Thu May 21 18:51:30 2009
New Revision: 72237
URL: http://llvm.org/viewvc/llvm-project?rev=72237&view=rev
Log:
Improve target support for Solaris.
Modified:
cfe/trunk/lib/Basic/Targets.cpp
Modified: cfe/trunk/lib/Basic/Targets.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=72237&r1=72236&r2=72237&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/Targets.cpp (original)
+++ cfe/trunk/lib/Basic/Targets.cpp Thu May 21 18:51:30 2009
@@ -63,9 +63,10 @@
// Defines specific to certain operating systems.
//===----------------------------------------------------------------------===//
-static void getSolarisDefines(std::vector<char> &Defs) {
- Define(Defs, "__SUN__");
- Define(Defs, "__SOLARIS__");
+static void getSolarisDefines(const LangOptions &Opts, std::vector<char> &Defs) {
+ DefineStd(Defs, "sun", Opts);
+ DefineStd(Defs, "unix", Opts);
+ Define(Defs, "__ELF__", "1");
}
static void getFreeBSDDefines(const LangOptions &Opts, bool is64Bit,
@@ -886,6 +887,23 @@
} // end anonymous namespace
namespace {
+// x86-32 Solaris target
+class SolarisX86_32TargetInfo : public X86_32TargetInfo {
+public:
+ SolarisX86_32TargetInfo(const std::string& triple) : X86_32TargetInfo(triple) {
+ UserLabelPrefix = "";
+ WCharType = WCharType = SignedLong;
+ }
+ virtual void getTargetDefines(const LangOptions &Opts,
+ std::vector<char> &Defines) const {
+ X86_32TargetInfo::getTargetDefines(Opts, Defines);
+ getSolarisDefines(Opts, Defines);
+ }
+};
+} // end anonymous namespace
+
+
+namespace {
// x86-32 Windows target
class WindowsX86_32TargetInfo : public X86_32TargetInfo {
public:
@@ -967,6 +985,22 @@
} // end anonymous namespace
namespace {
+// x86-64 Solaris target
+class SolarisX86_64TargetInfo : public X86_64TargetInfo {
+public:
+ SolarisX86_64TargetInfo(const std::string& triple) : X86_64TargetInfo(triple) {
+ UserLabelPrefix = "";
+ WCharType = WCharType = SignedLong;
+ }
+ virtual void getTargetDefines(const LangOptions &Opts,
+ std::vector<char> &Defines) const {
+ X86_64TargetInfo::getTargetDefines(Opts, Defines);
+ getSolarisDefines(Opts, Defines);
+ }
+};
+} // end anonymous namespace
+
+namespace {
// x86-64 Darwin (OS X) target
class DarwinX86_64TargetInfo : public X86_64TargetInfo {
public:
@@ -1246,7 +1280,7 @@
virtual void getTargetDefines(const LangOptions &Opts,
std::vector<char> &Defines) const {
SparcV8TargetInfo::getTargetDefines(Opts, Defines);
- getSolarisDefines(Defines);
+ getSolarisDefines(Opts, Defines);
}
};
} // end anonymous namespace.
@@ -1420,6 +1454,8 @@
return new LinuxX86_64TargetInfo(T);
if (isFreeBSD)
return new FreeBSDX86_64TargetInfo(T);
+ if (isSolaris)
+ return new SolarisX86_64TargetInfo(T);
return new X86_64TargetInfo(T);
}
@@ -1438,6 +1474,8 @@
return new DragonFlyX86_32TargetInfo(T);
if (isFreeBSD)
return new FreeBSDX86_32TargetInfo(T);
+ if (isSolaris)
+ return new SolarisX86_32TargetInfo(T);
if (isWindows)
return new WindowsX86_32TargetInfo(T);
return new X86_32TargetInfo(T);
More information about the cfe-commits
mailing list