
This means that it will be possible to generate a Darwin binary on any platform (Windows, Linux, and MacOS of course), including CGo. Of course, the resulting binaries can only run on MacOS itself. The binary links against libSystem.dylib, which is a shared library. The macos-minimal-sdk repository contains open source header files and generated symbol stubs so we can generate a stub libSystem.dylib without copying any closed source code.
29 строки
799 Б
C++
29 строки
799 Б
C++
// +build byollvm
|
|
|
|
// This file provides C wrappers for liblld.
|
|
|
|
#include <lld/Common/Driver.h>
|
|
|
|
extern "C" {
|
|
|
|
bool tinygo_link_elf(int argc, char **argv) {
|
|
std::vector<const char*> args(argv, argv + argc);
|
|
return lld::elf::link(args, false, llvm::outs(), llvm::errs());
|
|
}
|
|
|
|
bool tinygo_link_macho(int argc, char **argv) {
|
|
std::vector<const char*> args(argv, argv + argc);
|
|
return lld::macho::link(args, false, llvm::outs(), llvm::errs());
|
|
}
|
|
|
|
bool tinygo_link_mingw(int argc, char **argv) {
|
|
std::vector<const char*> args(argv, argv + argc);
|
|
return lld::mingw::link(args, false, llvm::outs(), llvm::errs());
|
|
}
|
|
|
|
bool tinygo_link_wasm(int argc, char **argv) {
|
|
std::vector<const char*> args(argv, argv + argc);
|
|
return lld::wasm::link(args, false, llvm::outs(), llvm::errs());
|
|
}
|
|
|
|
} // external "C"
|