1313
1414using namespace CppSharp ::CppParser;
1515
16- void Parser::Link (const std::string& File, const CppLinkerOptions* LinkerOptions)
16+ bool Parser::Link (const std::string& File, const CppLinkerOptions* LinkerOptions)
1717{
1818 std::vector<const char *> args;
1919 llvm::StringRef Dir (llvm::sys::path::parent_path (File));
@@ -27,33 +27,29 @@ void Parser::Link(const std::string& File, const CppLinkerOptions* LinkerOptions
2727 switch (Triple.getEnvironment ())
2828 {
2929 case llvm::Triple::EnvironmentType::MSVC:
30- LinkWindows (LinkerOptions, args, Dir, Stem);
31- break ;
30+ return LinkWindows (LinkerOptions, args, Dir, Stem);
3231
3332 case llvm::Triple::EnvironmentType::GNU:
34- LinkWindows (LinkerOptions, args, Dir, Stem, true );
35- break ;
33+ return LinkWindows (LinkerOptions, args, Dir, Stem, true );
3634
3735 default :
3836 throw std::invalid_argument (" Target triple environment" );
3937 }
4038 break ;
4139
4240 case llvm::Triple::OSType::Linux:
43- LinkELF (LinkerOptions, args, Dir, Stem);
44- break ;
41+ return LinkELF (LinkerOptions, args, Dir, Stem);
4542
4643 case llvm::Triple::OSType::Darwin:
4744 case llvm::Triple::OSType::MacOSX:
48- LinkMachO (LinkerOptions, args, Dir, Stem);
49- break ;
45+ return LinkMachO (LinkerOptions, args, Dir, Stem);
5046
5147 default :
5248 throw std::invalid_argument (" Target triple operating system" );
5349 }
5450}
5551
56- void Parser::LinkWindows (const CppLinkerOptions* LinkerOptions,
52+ bool Parser::LinkWindows (const CppLinkerOptions* LinkerOptions,
5753 std::vector<const char *>& args,
5854 const llvm::StringRef& Dir, llvm::StringRef& Stem, bool MinGW)
5955{
@@ -104,11 +100,13 @@ void Parser::LinkWindows(const CppLinkerOptions* LinkerOptions,
104100 std::string Out (" -out:" + std::string (Output));
105101 args.push_back (Out.data ());
106102
107- lld::coff::link (args, false , outs (), errs ());
103+ return lld::coff::link (args, false , outs (), errs ());
104+ #else
105+ return false ;
108106#endif
109107}
110108
111- void Parser::LinkELF (const CppLinkerOptions* LinkerOptions,
109+ bool Parser::LinkELF (const CppLinkerOptions* LinkerOptions,
112110 std::vector<const char *>& args,
113111 llvm::StringRef& Dir, llvm::StringRef& Stem)
114112{
@@ -143,11 +141,13 @@ void Parser::LinkELF(const CppLinkerOptions* LinkerOptions,
143141 std::string Out (Output);
144142 args.push_back (Out.data ());
145143
146- lld::elf::link (args, false , outs (), errs ());
144+ return lld::elf::link (args, false , outs (), errs ());
145+ #else
146+ return false ;
147147#endif
148148}
149149
150- void Parser::LinkMachO (const CppLinkerOptions* LinkerOptions,
150+ bool Parser::LinkMachO (const CppLinkerOptions* LinkerOptions,
151151 std::vector<const char *>& args,
152152 llvm::StringRef& Dir, llvm::StringRef& Stem)
153153{
@@ -182,6 +182,8 @@ void Parser::LinkMachO(const CppLinkerOptions* LinkerOptions,
182182 std::string Out (Output);
183183 args.push_back (Out.data ());
184184
185- lld::macho::link (args, false , outs (), errs ());
185+ return lld::macho::link (args, false , outs (), errs ());
186+ #else
187+ return false ;
186188#endif
187189}
0 commit comments