CrossWindows.h revision 322740
1317019Sdim//===--- CrossWindows.h - CrossWindows ToolChain Implementation -*- C++ -*-===// 2317019Sdim// 3317019Sdim// The LLVM Compiler Infrastructure 4317019Sdim// 5317019Sdim// This file is distributed under the University of Illinois Open Source 6317019Sdim// License. See LICENSE.TXT for details. 7317019Sdim// 8317019Sdim//===----------------------------------------------------------------------===// 9317019Sdim 10317019Sdim#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_CROSSWINDOWS_H 11317019Sdim#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_CROSSWINDOWS_H 12317019Sdim 13317019Sdim#include "Cuda.h" 14317019Sdim#include "Gnu.h" 15317019Sdim#include "clang/Driver/Tool.h" 16317019Sdim#include "clang/Driver/ToolChain.h" 17317019Sdim 18317019Sdimnamespace clang { 19317019Sdimnamespace driver { 20317019Sdimnamespace tools { 21317019Sdim 22317019Sdimnamespace CrossWindows { 23317019Sdimclass LLVM_LIBRARY_VISIBILITY Assembler : public Tool { 24317019Sdimpublic: 25317019Sdim Assembler(const ToolChain &TC) : Tool("CrossWindows::Assembler", "as", TC) {} 26317019Sdim 27317019Sdim bool hasIntegratedCPP() const override { return false; } 28317019Sdim 29317019Sdim void ConstructJob(Compilation &C, const JobAction &JA, 30317019Sdim const InputInfo &Output, const InputInfoList &Inputs, 31317019Sdim const llvm::opt::ArgList &TCArgs, 32317019Sdim const char *LinkingOutput) const override; 33317019Sdim}; 34317019Sdim 35317019Sdimclass LLVM_LIBRARY_VISIBILITY Linker : public Tool { 36317019Sdimpublic: 37317019Sdim Linker(const ToolChain &TC) 38317019Sdim : Tool("CrossWindows::Linker", "ld", TC, RF_Full) {} 39317019Sdim 40317019Sdim bool hasIntegratedCPP() const override { return false; } 41317019Sdim bool isLinkJob() const override { return true; } 42317019Sdim 43317019Sdim void ConstructJob(Compilation &C, const JobAction &JA, 44317019Sdim const InputInfo &Output, const InputInfoList &Inputs, 45317019Sdim const llvm::opt::ArgList &TCArgs, 46317019Sdim const char *LinkingOutput) const override; 47317019Sdim}; 48317019Sdim} // end namespace CrossWindows 49317019Sdim} // end namespace tools 50317019Sdim 51317019Sdimnamespace toolchains { 52317019Sdim 53317019Sdimclass LLVM_LIBRARY_VISIBILITY CrossWindowsToolChain : public Generic_GCC { 54317019Sdimpublic: 55317019Sdim CrossWindowsToolChain(const Driver &D, const llvm::Triple &T, 56317019Sdim const llvm::opt::ArgList &Args); 57317019Sdim 58317019Sdim bool IsIntegratedAssemblerDefault() const override { return true; } 59322740Sdim bool IsUnwindTablesDefault(const llvm::opt::ArgList &Args) const override; 60317019Sdim bool isPICDefault() const override; 61317019Sdim bool isPIEDefault() const override; 62317019Sdim bool isPICDefaultForced() const override; 63317019Sdim 64317019Sdim unsigned int GetDefaultStackProtectorLevel(bool KernelOrKext) const override { 65317019Sdim return 0; 66317019Sdim } 67317019Sdim 68317019Sdim void 69317019Sdim AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, 70317019Sdim llvm::opt::ArgStringList &CC1Args) const override; 71317019Sdim void AddClangCXXStdlibIncludeArgs( 72317019Sdim const llvm::opt::ArgList &DriverArgs, 73317019Sdim llvm::opt::ArgStringList &CC1Args) const override; 74317019Sdim void AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args, 75317019Sdim llvm::opt::ArgStringList &CmdArgs) const override; 76317019Sdim 77317019Sdim SanitizerMask getSupportedSanitizers() const override; 78317019Sdim 79317019Sdimprotected: 80317019Sdim Tool *buildLinker() const override; 81317019Sdim Tool *buildAssembler() const override; 82317019Sdim}; 83317019Sdim 84317019Sdim} // end namespace toolchains 85317019Sdim} // end namespace driver 86317019Sdim} // end namespace clang 87317019Sdim 88317019Sdim#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_CROSSWINDOWS_H 89