You've already forked linux-packaging-mono
acceptance-tests
data
debian
docs
external
Newtonsoft.Json
api-doc-tools
api-snapshot
aspnetwebstack
bdwgc
binary-reference-assemblies
bockbuild
boringssl
cecil
cecil-legacy
corefx
corert
helix-binaries
ikdasm
ikvm
illinker-test-assets
linker
llvm-project
clang
INPUTS
bindings
cmake
docs
examples
include
lib
ARCMigrate
AST
ASTMatchers
Analysis
Basic
CodeGen
CrossTU
Driver
ToolChains
Arch
AMDGPU.cpp
AMDGPU.h
AVR.cpp
AVR.h
Ananas.cpp
Ananas.h
BareMetal.cpp
BareMetal.h
Clang.cpp.REMOVED.git-id
Clang.h
CloudABI.cpp
CloudABI.h
CommonArgs.cpp
CommonArgs.h
Contiki.cpp
Contiki.h
CrossWindows.cpp
CrossWindows.h
Cuda.cpp
Cuda.h
Darwin.cpp
Darwin.h
DragonFly.cpp
DragonFly.h
FreeBSD.cpp
FreeBSD.h
Fuchsia.cpp
Fuchsia.h
Gnu.cpp
Gnu.h
Haiku.cpp
Haiku.h
Hexagon.cpp
Hexagon.h
Lanai.h
Linux.cpp
Linux.h
MSVC.cpp
MSVC.h
MSVCSetupApi.h
MinGW.cpp
MinGW.h
Minix.cpp
Minix.h
MipsLinux.cpp
MipsLinux.h
Myriad.cpp
Myriad.h
NaCl.cpp
NaCl.h
NetBSD.cpp
NetBSD.h
OpenBSD.cpp
OpenBSD.h
PS4CPU.cpp
PS4CPU.h
Solaris.cpp
Solaris.h
TCE.cpp
TCE.h
WebAssembly.cpp
WebAssembly.h
XCore.cpp
XCore.h
Action.cpp
CMakeLists.txt
Compilation.cpp
Distro.cpp
Driver.cpp.REMOVED.git-id
DriverOptions.cpp
InputInfo.h
Job.cpp
Multilib.cpp
Phases.cpp
SanitizerArgs.cpp
Tool.cpp
ToolChain.cpp
Types.cpp
XRayArgs.cpp
Edit
Format
Frontend
FrontendTool
Headers
Index
Lex
Parse
Rewrite
Sema
Serialization
StaticAnalyzer
Tooling
CMakeLists.txt
runtime
tools
unittests
utils
www
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt
CODE_OWNERS.TXT
INSTALL.txt
LICENSE.TXT
ModuleInfo.txt
NOTES.txt
README.txt
clang-tools-extra
compiler-rt
libcxx
libcxxabi
libunwind
lld
lldb
llvm
openmp
polly
nuget-buildtasks
nunit-lite
roslyn-binaries
rx
xunit-binaries
how-to-bump-roslyn-binaries.md
ikvm-native
llvm
m4
man
mcs
mk
mono
msvc
netcore
po
runtime
samples
scripts
support
tools
COPYING.LIB
LICENSE
Makefile.am
Makefile.in
NEWS
README.md
acinclude.m4
aclocal.m4
autogen.sh
code_of_conduct.md
compile
config.guess
config.h.in
config.rpath
config.sub
configure.REMOVED.git-id
configure.ac.REMOVED.git-id
depcomp
install-sh
ltmain.sh.REMOVED.git-id
missing
mkinstalldirs
mono-uninstalled.pc.in
test-driver
winconfig.h
89 lines
3.0 KiB
C
89 lines
3.0 KiB
C
![]() |
//===--- BareMetal.h - Bare Metal Tool and ToolChain -------------*- C++ -*-===//
|
||
|
//
|
||
|
// The LLVM Compiler Infrastructure
|
||
|
//
|
||
|
// This file is distributed under the University of Illinois Open Source
|
||
|
// License. See LICENSE.TXT for details.
|
||
|
//
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
|
||
|
#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_BAREMETAL_H
|
||
|
#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_BAREMETAL_H
|
||
|
|
||
|
#include "clang/Driver/Tool.h"
|
||
|
#include "clang/Driver/ToolChain.h"
|
||
|
|
||
|
#include <string>
|
||
|
|
||
|
namespace clang {
|
||
|
namespace driver {
|
||
|
|
||
|
namespace toolchains {
|
||
|
|
||
|
class LLVM_LIBRARY_VISIBILITY BareMetal : public ToolChain {
|
||
|
public:
|
||
|
BareMetal(const Driver &D, const llvm::Triple &Triple,
|
||
|
const llvm::opt::ArgList &Args);
|
||
|
~BareMetal() override;
|
||
|
|
||
|
static bool handlesTarget(const llvm::Triple &Triple);
|
||
|
protected:
|
||
|
Tool *buildLinker() const override;
|
||
|
|
||
|
public:
|
||
|
bool useIntegratedAs() const override { return true; }
|
||
|
bool isCrossCompiling() const override { return true; }
|
||
|
bool isPICDefault() const override { return false; }
|
||
|
bool isPIEDefault() const override { return false; }
|
||
|
bool isPICDefaultForced() const override { return false; }
|
||
|
bool SupportsProfiling() const override { return false; }
|
||
|
|
||
|
RuntimeLibType GetDefaultRuntimeLibType() const override {
|
||
|
return ToolChain::RLT_CompilerRT;
|
||
|
}
|
||
|
CXXStdlibType GetDefaultCXXStdlibType() const override {
|
||
|
return ToolChain::CST_Libcxx;
|
||
|
}
|
||
|
|
||
|
const char *getDefaultLinker() const override { return "ld.lld"; }
|
||
|
|
||
|
std::string getRuntimesDir() const;
|
||
|
void AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
|
||
|
llvm::opt::ArgStringList &CC1Args) const override;
|
||
|
void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs,
|
||
|
llvm::opt::ArgStringList &CC1Args,
|
||
|
Action::OffloadKind DeviceOffloadKind) const override;
|
||
|
std::string findLibCxxIncludePath(ToolChain::CXXStdlibType LibType) const;
|
||
|
void AddClangCXXStdlibIncludeArgs(
|
||
|
const llvm::opt::ArgList &DriverArgs,
|
||
|
llvm::opt::ArgStringList &CC1Args) const override;
|
||
|
void AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args,
|
||
|
llvm::opt::ArgStringList &CmdArgs) const override;
|
||
|
void AddLinkRuntimeLib(const llvm::opt::ArgList &Args,
|
||
|
llvm::opt::ArgStringList &CmdArgs) const;
|
||
|
};
|
||
|
|
||
|
} // namespace toolchains
|
||
|
|
||
|
namespace tools {
|
||
|
namespace baremetal {
|
||
|
|
||
|
class LLVM_LIBRARY_VISIBILITY Linker : public Tool {
|
||
|
public:
|
||
|
Linker(const ToolChain &TC) : Tool("baremetal::Linker", "ld.lld", TC) {}
|
||
|
bool isLinkJob() const override { return true; }
|
||
|
bool hasIntegratedCPP() const override { return false; }
|
||
|
void ConstructJob(Compilation &C, const JobAction &JA,
|
||
|
const InputInfo &Output, const InputInfoList &Inputs,
|
||
|
const llvm::opt::ArgList &TCArgs,
|
||
|
const char *LinkingOutput) const override;
|
||
|
};
|
||
|
|
||
|
} // namespace baremetal
|
||
|
} // namespace tools
|
||
|
|
||
|
} // namespace driver
|
||
|
} // namespace clang
|
||
|
|
||
|
#endif
|