forked from OSchip/llvm-project
[Driver] Compute MacOS/iOS version from triple if/when we actually need it. NFC.
llvm-svn: 240065
This commit is contained in:
parent
cf5c220da5
commit
905c802f5b
|
@ -49,22 +49,8 @@ MachO::MachO(const Driver &D, const llvm::Triple &Triple,
|
|||
}
|
||||
|
||||
/// Darwin - Darwin tool chain for i386 and x86_64.
|
||||
Darwin::Darwin(const Driver & D, const llvm::Triple & Triple,
|
||||
const ArgList & Args)
|
||||
: MachO(D, Triple, Args), TargetInitialized(false) {
|
||||
// Compute the initial Darwin version from the triple
|
||||
unsigned Major, Minor, Micro;
|
||||
if (!Triple.getMacOSXVersion(Major, Minor, Micro))
|
||||
getDriver().Diag(diag::err_drv_invalid_darwin_version) <<
|
||||
Triple.getOSName();
|
||||
llvm::raw_string_ostream(MacosxVersionMin)
|
||||
<< Major << '.' << Minor << '.' << Micro;
|
||||
|
||||
// Compute the initial iOS version from the triple
|
||||
Triple.getiOSVersion(Major, Minor, Micro);
|
||||
llvm::raw_string_ostream(iOSVersionMin)
|
||||
<< Major << '.' << Minor << '.' << Micro;
|
||||
}
|
||||
Darwin::Darwin(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
|
||||
: MachO(D, Triple, Args), TargetInitialized(false) {}
|
||||
|
||||
types::ID MachO::LookupTypeForExtension(const char *Ext) const {
|
||||
types::ID Ty = types::lookupTypeForExtension(Ext);
|
||||
|
@ -489,8 +475,8 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
|
|||
} else if (!OSXVersion && !iOSVersion) {
|
||||
// If no deployment target was specified on the command line, check for
|
||||
// environment defines.
|
||||
StringRef OSXTarget;
|
||||
StringRef iOSTarget;
|
||||
std::string OSXTarget;
|
||||
std::string iOSTarget;
|
||||
if (char *env = ::getenv("MACOSX_DEPLOYMENT_TARGET"))
|
||||
OSXTarget = env;
|
||||
if (char *env = ::getenv("IPHONEOS_DEPLOYMENT_TARGET"))
|
||||
|
@ -510,15 +496,24 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
|
|||
}
|
||||
|
||||
// If no OSX or iOS target has been specified, try to guess platform
|
||||
// from arch name.
|
||||
// from arch name and compute the version from the triple.
|
||||
if (OSXTarget.empty() && iOSTarget.empty()) {
|
||||
StringRef MachOArchName = getMachOArchName(Args);
|
||||
unsigned Major, Minor, Micro;
|
||||
if (MachOArchName == "armv7" || MachOArchName == "armv7s" ||
|
||||
MachOArchName == "arm64")
|
||||
iOSTarget = iOSVersionMin;
|
||||
else if (MachOArchName != "armv6m" && MachOArchName != "armv7m" &&
|
||||
MachOArchName != "armv7em")
|
||||
OSXTarget = MacosxVersionMin;
|
||||
MachOArchName == "arm64") {
|
||||
getTriple().getiOSVersion(Major, Minor, Micro);
|
||||
llvm::raw_string_ostream(iOSTarget) << Major << '.' << Minor << '.'
|
||||
<< Micro;
|
||||
} else if (MachOArchName != "armv6m" && MachOArchName != "armv7m" &&
|
||||
MachOArchName != "armv7em") {
|
||||
if (!getTriple().getMacOSXVersion(Major, Minor, Micro)) {
|
||||
getDriver().Diag(diag::err_drv_invalid_darwin_version)
|
||||
<< getTriple().getOSName();
|
||||
}
|
||||
llvm::raw_string_ostream(OSXTarget) << Major << '.' << Minor << '.'
|
||||
<< Micro;
|
||||
}
|
||||
}
|
||||
|
||||
// Allow conflicts among OSX and iOS for historical reasons, but choose the
|
||||
|
|
|
@ -334,15 +334,6 @@ public:
|
|||
/// The OS version we are targeting.
|
||||
mutable VersionTuple TargetVersion;
|
||||
|
||||
private:
|
||||
/// The default macosx-version-min of this tool chain; empty until
|
||||
/// initialized.
|
||||
std::string MacosxVersionMin;
|
||||
|
||||
/// The default ios-version-min of this tool chain; empty until
|
||||
/// initialized.
|
||||
std::string iOSVersionMin;
|
||||
|
||||
private:
|
||||
void AddDeploymentTarget(llvm::opt::DerivedArgList &Args) const;
|
||||
|
||||
|
|
Loading…
Reference in New Issue