Lift AddLinkRuntimeLibArgs into Darwin tool chain.
llvm-svn: 82212
This commit is contained in:
parent
d5bd81e869
commit
26d482a1a9
|
@ -154,6 +154,52 @@ void Darwin::AddLinkSearchPathArgs(const ArgList &Args,
|
|||
"/../../.."));
|
||||
}
|
||||
|
||||
void Darwin::AddLinkRuntimeLibArgs(const ArgList &Args,
|
||||
ArgStringList &CmdArgs) const {
|
||||
unsigned MacosxVersionMin[3];
|
||||
getMacosxVersionMin(Args, MacosxVersionMin);
|
||||
|
||||
// Derived from libgcc and lib specs but refactored.
|
||||
if (Args.hasArg(options::OPT_static)) {
|
||||
CmdArgs.push_back("-lgcc_static");
|
||||
} else {
|
||||
if (Args.hasArg(options::OPT_static_libgcc)) {
|
||||
CmdArgs.push_back("-lgcc_eh");
|
||||
} else if (Args.hasArg(options::OPT_miphoneos_version_min_EQ)) {
|
||||
// Derived from darwin_iphoneos_libgcc spec.
|
||||
if (isIPhone()) {
|
||||
CmdArgs.push_back("-lgcc_s.1");
|
||||
} else {
|
||||
CmdArgs.push_back("-lgcc_s.10.5");
|
||||
}
|
||||
} else if (Args.hasArg(options::OPT_shared_libgcc) ||
|
||||
// FIXME: -fexceptions -fno-exceptions means no exceptions
|
||||
Args.hasArg(options::OPT_fexceptions) ||
|
||||
Args.hasArg(options::OPT_fgnu_runtime)) {
|
||||
// FIXME: This is probably broken on 10.3?
|
||||
if (isMacosxVersionLT(MacosxVersionMin, 10, 5))
|
||||
CmdArgs.push_back("-lgcc_s.10.4");
|
||||
else if (isMacosxVersionLT(MacosxVersionMin, 10, 6))
|
||||
CmdArgs.push_back("-lgcc_s.10.5");
|
||||
} else {
|
||||
if (isMacosxVersionLT(MacosxVersionMin, 10, 3, 9))
|
||||
; // Do nothing.
|
||||
else if (isMacosxVersionLT(MacosxVersionMin, 10, 5))
|
||||
CmdArgs.push_back("-lgcc_s.10.4");
|
||||
else if (isMacosxVersionLT(MacosxVersionMin, 10, 6))
|
||||
CmdArgs.push_back("-lgcc_s.10.5");
|
||||
}
|
||||
|
||||
if (isIPhone() || isMacosxVersionLT(MacosxVersionMin, 10, 6)) {
|
||||
CmdArgs.push_back("-lgcc");
|
||||
CmdArgs.push_back("-lSystem");
|
||||
} else {
|
||||
CmdArgs.push_back("-lSystem");
|
||||
CmdArgs.push_back("-lgcc");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Darwin::getMacosxVersionMin(const ArgList &Args,
|
||||
unsigned (&Res)[3]) const {
|
||||
if (Arg *A = Args.getLastArg(options::OPT_mmacosx_version_min_EQ)) {
|
||||
|
|
|
@ -124,6 +124,10 @@ public:
|
|||
/// (prefixed by -L) to.
|
||||
void AddLinkSearchPathArgs(const ArgList &Args, ArgStringList &CmdArgs) const;
|
||||
|
||||
/// AddLinkRuntimeLibArgs - Add the linker arguments to link the compiler
|
||||
/// runtime library.
|
||||
void AddLinkRuntimeLibArgs(const ArgList &Args, ArgStringList &CmdArgs) const;
|
||||
|
||||
bool isIPhone() const { return IsIPhone; }
|
||||
|
||||
/// }
|
||||
|
|
|
@ -2020,49 +2020,8 @@ void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
|
||||
// link_ssp spec is empty.
|
||||
|
||||
// Derived from libgcc and lib specs but refactored.
|
||||
if (Args.hasArg(options::OPT_static)) {
|
||||
CmdArgs.push_back("-lgcc_static");
|
||||
} else {
|
||||
if (Args.hasArg(options::OPT_static_libgcc)) {
|
||||
CmdArgs.push_back("-lgcc_eh");
|
||||
} else if (Args.hasArg(options::OPT_miphoneos_version_min_EQ)) {
|
||||
// Derived from darwin_iphoneos_libgcc spec.
|
||||
if (getDarwinToolChain().isIPhone()) {
|
||||
CmdArgs.push_back("-lgcc_s.1");
|
||||
} else {
|
||||
CmdArgs.push_back("-lgcc_s.10.5");
|
||||
}
|
||||
} else if (Args.hasArg(options::OPT_shared_libgcc) ||
|
||||
// FIXME: -fexceptions -fno-exceptions means no exceptions
|
||||
Args.hasArg(options::OPT_fexceptions) ||
|
||||
Args.hasArg(options::OPT_fgnu_runtime)) {
|
||||
// FIXME: This is probably broken on 10.3?
|
||||
if (getDarwinToolChain().isMacosxVersionLT(MacosxVersionMin, 10, 5))
|
||||
CmdArgs.push_back("-lgcc_s.10.4");
|
||||
else if (getDarwinToolChain().isMacosxVersionLT(MacosxVersionMin,
|
||||
10, 6))
|
||||
CmdArgs.push_back("-lgcc_s.10.5");
|
||||
} else {
|
||||
if (getDarwinToolChain().isMacosxVersionLT(MacosxVersionMin, 10, 3, 9))
|
||||
; // Do nothing.
|
||||
else if (getDarwinToolChain().isMacosxVersionLT(MacosxVersionMin,
|
||||
10, 5))
|
||||
CmdArgs.push_back("-lgcc_s.10.4");
|
||||
else if (getDarwinToolChain().isMacosxVersionLT(MacosxVersionMin,
|
||||
10, 6))
|
||||
CmdArgs.push_back("-lgcc_s.10.5");
|
||||
}
|
||||
|
||||
if (getDarwinToolChain().isIPhone() ||
|
||||
getDarwinToolChain().isMacosxVersionLT(MacosxVersionMin, 10, 6)) {
|
||||
CmdArgs.push_back("-lgcc");
|
||||
CmdArgs.push_back("-lSystem");
|
||||
} else {
|
||||
CmdArgs.push_back("-lSystem");
|
||||
CmdArgs.push_back("-lgcc");
|
||||
}
|
||||
}
|
||||
// Let the tool chain choose which runtime library to link.
|
||||
getDarwinToolChain().AddLinkRuntimeLibArgs(Args, CmdArgs);
|
||||
}
|
||||
|
||||
if (!Args.hasArg(options::OPT_A) &&
|
||||
|
|
Loading…
Reference in New Issue