parent
4cb4e1d72b
commit
d580dc0a4b
|
@ -0,0 +1,84 @@
|
|||
//===--- HostInfo.h - Host specific information -----------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef CLANG_DRIVER_HOSTINFO,_H_
|
||||
#define CLANG_DRIVER_HOSTINFO_H_
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace clang {
|
||||
namespace driver {
|
||||
class ArgList;
|
||||
class ToolChain;
|
||||
|
||||
/// HostInfo - Config information about a particular host which may
|
||||
/// interact with driver behavior.
|
||||
///
|
||||
/// The host information is used for controlling the parts of the
|
||||
/// driver which interact with the platform the driver is ostensibly
|
||||
/// being run from. For testing purposes, the HostInfo used by the
|
||||
/// driver may differ from the actual host.
|
||||
class HostInfo {
|
||||
std::string Arch, Platform, OS;
|
||||
|
||||
protected:
|
||||
HostInfo(const char *Arch, const char *Platform, const char *OS);
|
||||
|
||||
public:
|
||||
virtual ~HostInfo();
|
||||
|
||||
/// useDriverDriver - Whether the driver should act as a driver
|
||||
/// driver for this host and support -arch, -Xarch, etc.
|
||||
virtual bool useDriverDriver() const = 0;
|
||||
|
||||
/// getToolChain - Construct the toolchain to use for this host.
|
||||
///
|
||||
/// \param Args - The argument list, which may be used to alter the
|
||||
/// default toolchain, for example in the presence of -m32 or -m64.
|
||||
///
|
||||
/// \param ArchName - The architecture to return a toolchain for, or
|
||||
/// 0 if unspecified. This will only be non-zero for hosts which
|
||||
/// support a driver driver.
|
||||
virtual ToolChain *getToolChain(const ArgList &Args,
|
||||
const char *ArchName) const = 0;
|
||||
};
|
||||
|
||||
/// DarwinHostInfo - Darwin host information implementation.
|
||||
class DarwinHostInfo : public HostInfo {
|
||||
/// Darwin version of host.
|
||||
unsigned DarwinVersion[3];
|
||||
|
||||
/// GCC version to use on this host.
|
||||
unsigned GCCVersion[3];
|
||||
|
||||
public:
|
||||
DarwinHostInfo(const char *Arch, const char *Platform, const char *OS);
|
||||
|
||||
virtual bool useDriverDriver() const;
|
||||
|
||||
virtual ToolChain *getToolChain(const ArgList &Args,
|
||||
const char *ArchName) const;
|
||||
};
|
||||
|
||||
/// UnknownHostInfo - Generic host information to use for unknown
|
||||
/// hosts.
|
||||
class UnknownHostInfo : public HostInfo {
|
||||
public:
|
||||
UnknownHostInfo(const char *Arch, const char *Platform, const char *OS);
|
||||
|
||||
virtual bool useDriverDriver() const;
|
||||
|
||||
virtual ToolChain *getToolChain(const ArgList &Args,
|
||||
const char *ArchName) const;
|
||||
};
|
||||
|
||||
} // end namespace driver
|
||||
} // end namespace clang
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue