Add more support for xBSD type OS.

Use the same code for FreeBSD, NetBSD, OpenBSD and DragonFly BSD.
This commit is contained in:
Kai Nacke 2016-01-19 22:04:14 +01:00
parent f94c34ea33
commit 8df1f7ec1a
4 changed files with 34 additions and 7 deletions

View file

@ -176,6 +176,8 @@ static int linkObjToBinaryGcc(bool sharedLib, bool fullyStatic) {
// fallthrough
case llvm::Triple::FreeBSD:
case llvm::Triple::NetBSD:
case llvm::Triple::OpenBSD:
case llvm::Triple::DragonFly:
addSoname = true;
args.push_back("-lpthread");
args.push_back("-lm");

View file

@ -125,9 +125,8 @@ static std::string getX86TargetCPU(const llvm::Triple &triple) {
// Intel Macs are relatively recent, take advantage of that.
if (triple.isOSDarwin()) {
return triple.isArch64Bit() ? "core2" : "yonah";
// Everything else goes to x86-64 in 64-bit mode.
}
// Everything else goes to x86-64 in 64-bit mode.
if (triple.isArch64Bit()) {
return "x86-64";
}
@ -145,9 +144,15 @@ static std::string getX86TargetCPU(const llvm::Triple &triple) {
}
if (triple.getOSName().startswith("netbsd")) {
return "i486";
// All x86 devices running Android have core2 as their common
// denominator. This makes a better choice than pentium4.
}
if (triple.getOSName().startswith("openbsd")) {
return "i486";
}
if (triple.getOSName().startswith("dragonfly")) {
return "i486";
}
// All x86 devices running Android have core2 as their common
// denominator. This makes a better choice than pentium4.
if (triple.getEnvironment() == llvm::Triple::Android) {
return "core2";

View file

@ -67,7 +67,17 @@ unsigned Target::critsecsize() {
if (global.params.targetTriple.isOSWindows()) {
return global.params.is64bit ? 40 : 24;
}
if (global.params.targetTriple.getOS() == llvm::Triple::FreeBSD) {
if (global.params.targetTriple.isOSFreeBSD() ||
#if LDC_LLVM_VER > 305
global.params.targetTriple.isOSNetBSD() ||
global.params.targetTriple.isOSOpenBSD() ||
global.params.targetTriple.isOSDragonFly()
#else
global.params.targetTriple.getOS() == llvm::Triple::NetBSD ||
global.params.targetTriple.getOS() == llvm::Triple::OpenBSD ||
global.params.targetTriple.getOS() == llvm::Triple::DragonFly
#endif
) {
return sizeof(size_t);
}
return sizeof(pthread_mutex_t);

View file

@ -662,8 +662,18 @@ LLStructType *DtoMutexType() {
return mutex;
}
// FreeBSD
if (global.params.targetTriple.getOS() == llvm::Triple::FreeBSD) {
// FreeBSD, NetBSD, OpenBSD, DragonFly
if (global.params.targetTriple.isOSFreeBSD() ||
#if LDC_LLVM_VER > 305
global.params.targetTriple.isOSNetBSD() ||
global.params.targetTriple.isOSOpenBSD() ||
global.params.targetTriple.isOSDragonFly()
#else
global.params.targetTriple.getOS() == llvm::Triple::NetBSD ||
global.params.targetTriple.getOS() == llvm::Triple::OpenBSD ||
global.params.targetTriple.getOS() == llvm::Triple::DragonFly
#endif
) {
// Just a pointer
return LLStructType::get(gIR->context(), DtoSize_t());
}