diff options
Diffstat (limited to 'lib/Driver/ToolChains/AVR.h')
| -rw-r--r-- | lib/Driver/ToolChains/AVR.h | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/lib/Driver/ToolChains/AVR.h b/lib/Driver/ToolChains/AVR.h index a7479a7f5652e..d244fc4f90e90 100644 --- a/lib/Driver/ToolChains/AVR.h +++ b/lib/Driver/ToolChains/AVR.h @@ -1,9 +1,8 @@ //===--- AVR.h - AVR Tool and ToolChain Implementations ---------*- C++ -*-===// // -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// @@ -20,11 +19,21 @@ namespace driver { namespace toolchains { class LLVM_LIBRARY_VISIBILITY AVRToolChain : public Generic_ELF { -protected: - Tool *buildLinker() const override; public: AVRToolChain(const Driver &D, const llvm::Triple &Triple, const llvm::opt::ArgList &Args); + +protected: + Tool *buildLinker() const override; + +private: + /// Whether libgcc, libct, and friends should be linked. + /// + /// This is not done if the user does not specify a + /// microcontroller on the command line. + bool LinkStdlib; + + llvm::Optional<std::string> findAVRLibcInstallation() const; }; } // end namespace toolchains @@ -33,13 +42,20 @@ namespace tools { namespace AVR { class LLVM_LIBRARY_VISIBILITY Linker : public GnuTool { public: - Linker(const ToolChain &TC) : GnuTool("AVR::Linker", "avr-ld", TC) {} + Linker(const llvm::Triple &Triple, const ToolChain &TC, bool LinkStdlib) + : GnuTool("AVR::Linker", "avr-ld", TC), Triple(Triple), + LinkStdlib(LinkStdlib) {} + bool hasIntegratedCPP() const override { return false; } bool isLinkJob() const override { return true; } void ConstructJob(Compilation &C, const JobAction &JA, const InputInfo &Output, const InputInfoList &Inputs, const llvm::opt::ArgList &TCArgs, const char *LinkingOutput) const override; + +protected: + const llvm::Triple &Triple; + bool LinkStdlib; }; } // end namespace AVR } // end namespace tools |
