blob: 0fdceb75b9632be56f73e9ac90eda1f8be7b87dc [file] [log] [blame]
Anton Korobeynikov93165d62019-01-15 19:44:05 +00001//===--- MSP430.h - MSP430-specific Tool Helpers ----------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MSP430_H
11#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MSP430_H
12
13#include "Gnu.h"
14#include "InputInfo.h"
15#include "clang/Driver/Driver.h"
16#include "clang/Driver/DriverDiagnostic.h"
17#include "clang/Driver/Tool.h"
18#include "clang/Driver/ToolChain.h"
19#include "llvm/ADT/StringRef.h"
20#include "llvm/Option/Option.h"
21
22#include <string>
23#include <vector>
24
25namespace clang {
26namespace driver {
27namespace toolchains {
28
29class LLVM_LIBRARY_VISIBILITY MSP430ToolChain : public Generic_ELF {
30public:
31 MSP430ToolChain(const Driver &D, const llvm::Triple &Triple,
32 const llvm::opt::ArgList &Args);
33 void
34 AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
35 llvm::opt::ArgStringList &CC1Args) const override;
36 void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs,
37 llvm::opt::ArgStringList &CC1Args,
38 Action::OffloadKind) const override;
39
40protected:
41 Tool *buildLinker() const override;
42
43private:
44 std::string computeSysRoot() const;
45};
46
47} // end namespace toolchains
48
49namespace tools {
50namespace msp430 {
51
52class LLVM_LIBRARY_VISIBILITY Linker : public GnuTool {
53public:
54 Linker(const ToolChain &TC)
55 : GnuTool("MSP430::Linker", "msp430-elf-ld", TC) {}
56 bool hasIntegratedCPP() const override { return false; }
57 bool isLinkJob() const override { return true; }
58 void ConstructJob(Compilation &C, const JobAction &JA,
59 const InputInfo &Output, const InputInfoList &Inputs,
60 const llvm::opt::ArgList &TCArgs,
61 const char *LinkingOutput) const override;
62};
63
64void getMSP430TargetFeatures(const Driver &D, const llvm::opt::ArgList &Args,
65 std::vector<llvm::StringRef> &Features);
66} // end namespace msp430
67} // end namespace tools
68} // end namespace driver
69} // end namespace clang
70
71#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MSP430_H