annotate clang/lib/Driver/ToolChains/AVR.h @ 221:79ff65ed7e25

LLVM12 Original
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 15 Jun 2021 19:15:29 +0900
parents 1d019706d866
children c4bab56944e8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 //===--- AVR.h - AVR Tool and ToolChain Implementations ---------*- C++ -*-===//
anatofuz
parents:
diff changeset
2 //
anatofuz
parents:
diff changeset
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
anatofuz
parents:
diff changeset
4 // See https://llvm.org/LICENSE.txt for license information.
anatofuz
parents:
diff changeset
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
anatofuz
parents:
diff changeset
6 //
anatofuz
parents:
diff changeset
7 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
8
anatofuz
parents:
diff changeset
9 #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_AVR_H
anatofuz
parents:
diff changeset
10 #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_AVR_H
anatofuz
parents:
diff changeset
11
anatofuz
parents:
diff changeset
12 #include "Gnu.h"
anatofuz
parents:
diff changeset
13 #include "InputInfo.h"
anatofuz
parents:
diff changeset
14 #include "clang/Driver/ToolChain.h"
anatofuz
parents:
diff changeset
15 #include "clang/Driver/Tool.h"
anatofuz
parents:
diff changeset
16
anatofuz
parents:
diff changeset
17 namespace clang {
anatofuz
parents:
diff changeset
18 namespace driver {
anatofuz
parents:
diff changeset
19 namespace toolchains {
anatofuz
parents:
diff changeset
20
anatofuz
parents:
diff changeset
21 class LLVM_LIBRARY_VISIBILITY AVRToolChain : public Generic_ELF {
anatofuz
parents:
diff changeset
22 public:
anatofuz
parents:
diff changeset
23 AVRToolChain(const Driver &D, const llvm::Triple &Triple,
anatofuz
parents:
diff changeset
24 const llvm::opt::ArgList &Args);
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
25 void
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
26 AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
27 llvm::opt::ArgStringList &CC1Args) const override;
150
anatofuz
parents:
diff changeset
28
anatofuz
parents:
diff changeset
29 protected:
anatofuz
parents:
diff changeset
30 Tool *buildLinker() const override;
anatofuz
parents:
diff changeset
31
anatofuz
parents:
diff changeset
32 private:
anatofuz
parents:
diff changeset
33 /// Whether libgcc, libct, and friends should be linked.
anatofuz
parents:
diff changeset
34 ///
anatofuz
parents:
diff changeset
35 /// This is not done if the user does not specify a
anatofuz
parents:
diff changeset
36 /// microcontroller on the command line.
anatofuz
parents:
diff changeset
37 bool LinkStdlib;
anatofuz
parents:
diff changeset
38
anatofuz
parents:
diff changeset
39 llvm::Optional<std::string> findAVRLibcInstallation() const;
anatofuz
parents:
diff changeset
40 };
anatofuz
parents:
diff changeset
41
anatofuz
parents:
diff changeset
42 } // end namespace toolchains
anatofuz
parents:
diff changeset
43
anatofuz
parents:
diff changeset
44 namespace tools {
anatofuz
parents:
diff changeset
45 namespace AVR {
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
46 class LLVM_LIBRARY_VISIBILITY Linker : public Tool {
150
anatofuz
parents:
diff changeset
47 public:
anatofuz
parents:
diff changeset
48 Linker(const llvm::Triple &Triple, const ToolChain &TC, bool LinkStdlib)
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
49 : Tool("AVR::Linker", "avr-ld", TC), Triple(Triple),
150
anatofuz
parents:
diff changeset
50 LinkStdlib(LinkStdlib) {}
anatofuz
parents:
diff changeset
51
anatofuz
parents:
diff changeset
52 bool hasIntegratedCPP() const override { return false; }
anatofuz
parents:
diff changeset
53 bool isLinkJob() const override { return true; }
anatofuz
parents:
diff changeset
54 void ConstructJob(Compilation &C, const JobAction &JA,
anatofuz
parents:
diff changeset
55 const InputInfo &Output, const InputInfoList &Inputs,
anatofuz
parents:
diff changeset
56 const llvm::opt::ArgList &TCArgs,
anatofuz
parents:
diff changeset
57 const char *LinkingOutput) const override;
anatofuz
parents:
diff changeset
58
anatofuz
parents:
diff changeset
59 protected:
anatofuz
parents:
diff changeset
60 const llvm::Triple &Triple;
anatofuz
parents:
diff changeset
61 bool LinkStdlib;
anatofuz
parents:
diff changeset
62 };
anatofuz
parents:
diff changeset
63 } // end namespace AVR
anatofuz
parents:
diff changeset
64 } // end namespace tools
anatofuz
parents:
diff changeset
65 } // end namespace driver
anatofuz
parents:
diff changeset
66 } // end namespace clang
anatofuz
parents:
diff changeset
67
anatofuz
parents:
diff changeset
68 #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_AVR_H