Browse Source

Swich to the new mach-o support for C++ linking

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
mach-o-new
Dimitar Dobrev 4 years ago
parent
commit
bc7cfb24ae
  1. 14
      src/CppParser/CppParser.cpp
  2. 13
      src/CppParser/Link.cpp

14
src/CppParser/CppParser.cpp

@ -95,12 +95,16 @@ LinkerOptions::LinkerOptions(const char* Triple) @@ -95,12 +95,16 @@ LinkerOptions::LinkerOptions(const char* Triple)
case llvm::Triple::OSType::Darwin:
case llvm::Triple::OSType::MacOSX:
addArguments("-lc++");
addArguments("-lSystem");
addArguments("-dylib");
addArguments("-sdk_version");
addArguments("-arch");
addArguments("x86_64");
addArguments("-platform_version");
addArguments("macos");
addArguments("10.12.0");
addArguments("10.12.0");
addArguments("-dylib");
addArguments("-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib");
addArguments("-lc++");
addArguments("-lSystem");
addArguments("-rpath");
addArguments(".");
break;
@ -144,4 +148,4 @@ ParserDiagnostic::ParserDiagnostic(const ParserDiagnostic& rhs) @@ -144,4 +148,4 @@ ParserDiagnostic::ParserDiagnostic(const ParserDiagnostic& rhs)
ParserDiagnostic::~ParserDiagnostic() {}
} }
} }

13
src/CppParser/Link.cpp

@ -147,14 +147,21 @@ void Parser::LinkELF(const LinkerOptions* LinkerOptions, @@ -147,14 +147,21 @@ void Parser::LinkELF(const LinkerOptions* LinkerOptions,
#endif
}
bool linked = false;
void Parser::LinkMachO(const LinkerOptions* LinkerOptions,
std::vector<const char*>& args,
llvm::StringRef& Dir, llvm::StringRef& Stem)
{
if (linked)
{
return;
}
linked = true;
#ifdef __APPLE__
using namespace llvm;
args.push_back("-flavor darwinnew");
args.push_back("-flavor darwin");
for (const std::string& Arg : LinkerOptions->Arguments)
{
args.push_back(Arg.data());
@ -182,6 +189,6 @@ void Parser::LinkMachO(const LinkerOptions* LinkerOptions, @@ -182,6 +189,6 @@ void Parser::LinkMachO(const LinkerOptions* LinkerOptions,
std::string Out(Output);
args.push_back(Out.data());
lld::mach_o::link(args, false, outs(), errs());
lld::macho::link(args, false, outs(), errs());
#endif
}
}

Loading…
Cancel
Save