brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · a224c63 Raw
89 lines · c
1//===--- MSP430.h - MSP430-specific Tool Helpers ----------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MSP430_H10#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MSP430_H11 12#include "Gnu.h"13#include "clang/Driver/Driver.h"14#include "clang/Driver/DriverDiagnostic.h"15#include "clang/Driver/InputInfo.h"16#include "clang/Driver/Tool.h"17#include "clang/Driver/ToolChain.h"18#include "llvm/ADT/StringRef.h"19#include "llvm/Option/Option.h"20 21#include <string>22#include <vector>23 24namespace clang {25namespace driver {26namespace toolchains {27 28class LLVM_LIBRARY_VISIBILITY MSP430ToolChain : public Generic_ELF {29public:30  MSP430ToolChain(const Driver &D, const llvm::Triple &Triple,31                  const llvm::opt::ArgList &Args);32  void33  AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,34                            llvm::opt::ArgStringList &CC1Args) const override;35  void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs,36                             llvm::opt::ArgStringList &CC1Args,37                             Action::OffloadKind) const override;38 39  bool isPICDefault() const override { return false; }40  bool isPIEDefault(const llvm::opt::ArgList &Args) const override {41    return false;42  }43  bool isPICDefaultForced() const override { return true; }44 45  UnwindLibType46  GetUnwindLibType(const llvm::opt::ArgList &Args) const override {47    return UNW_None;48  }49 50protected:51  Tool *buildLinker() const override;52 53private:54  std::string computeSysRoot() const override;55};56 57} // end namespace toolchains58 59namespace tools {60namespace msp430 {61 62class LLVM_LIBRARY_VISIBILITY Linker final : public Tool {63public:64  Linker(const ToolChain &TC) : Tool("MSP430::Linker", "msp430-elf-ld", TC) {}65  bool hasIntegratedCPP() const override { return false; }66  bool isLinkJob() const override { return true; }67  void ConstructJob(Compilation &C, const JobAction &JA,68                    const InputInfo &Output, const InputInfoList &Inputs,69                    const llvm::opt::ArgList &TCArgs,70                    const char *LinkingOutput) const override;71 72private:73  void AddStartFiles(bool UseExceptions, const llvm::opt::ArgList &Args,74                     llvm::opt::ArgStringList &CmdArgs) const;75  void AddDefaultLibs(const llvm::opt::ArgList &Args,76                      llvm::opt::ArgStringList &CmdArgs) const;77  void AddEndFiles(bool UseExceptions, const llvm::opt::ArgList &Args,78                   llvm::opt::ArgStringList &CmdArgs) const;79};80 81void getMSP430TargetFeatures(const Driver &D, const llvm::opt::ArgList &Args,82                             std::vector<llvm::StringRef> &Features);83} // end namespace msp43084} // end namespace tools85} // end namespace driver86} // end namespace clang87 88#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MSP430_H89