Targets.h revision 341825
1341825Sdim//===------- Targets.h - Declare target feature support ---------*- C++ -*-===//
2326941Sdim//
3326941Sdim//                     The LLVM Compiler Infrastructure
4326941Sdim//
5326941Sdim// This file is distributed under the University of Illinois Open Source
6326941Sdim// License. See LICENSE.TXT for details.
7326941Sdim//
8326941Sdim//===----------------------------------------------------------------------===//
9326941Sdim//
10326941Sdim// This file declares things required for construction of a TargetInfo object
11326941Sdim// from a target triple. Typically individual targets will need to include from
12326941Sdim// here in order to get these functions if required.
13326941Sdim//
14326941Sdim//===----------------------------------------------------------------------===//
15326941Sdim
16326941Sdim#ifndef LLVM_CLANG_LIB_BASIC_TARGETS_H
17326941Sdim#define LLVM_CLANG_LIB_BASIC_TARGETS_H
18326941Sdim
19326941Sdim#include "clang/Basic/LangOptions.h"
20326941Sdim#include "clang/Basic/MacroBuilder.h"
21326941Sdim#include "clang/Basic/TargetInfo.h"
22326941Sdim#include "llvm/ADT/StringRef.h"
23326941Sdim
24326941Sdimnamespace clang {
25326941Sdimnamespace targets {
26326941Sdim
27326941SdimLLVM_LIBRARY_VISIBILITY
28326941Sdimclang::TargetInfo *AllocateTarget(const llvm::Triple &Triple,
29326941Sdim                                  const clang::TargetOptions &Opts);
30326941Sdim
31326941Sdim/// DefineStd - Define a macro name and standard variants.  For example if
32326941Sdim/// MacroName is "unix", then this will define "__unix", "__unix__", and "unix"
33326941Sdim/// when in GNU mode.
34326941SdimLLVM_LIBRARY_VISIBILITY
35326941Sdimvoid DefineStd(clang::MacroBuilder &Builder, llvm::StringRef MacroName,
36326941Sdim               const clang::LangOptions &Opts);
37326941Sdim
38326941SdimLLVM_LIBRARY_VISIBILITY
39326941Sdimvoid defineCPUMacros(clang::MacroBuilder &Builder, llvm::StringRef CPUName,
40326941Sdim                     bool Tuning = true);
41326941Sdim
42326941SdimLLVM_LIBRARY_VISIBILITY
43326941Sdimvoid addMinGWDefines(const llvm::Triple &Triple, const clang::LangOptions &Opts,
44326941Sdim                     clang::MacroBuilder &Builder);
45326941Sdim
46326941SdimLLVM_LIBRARY_VISIBILITY
47326941Sdimvoid addCygMingDefines(const clang::LangOptions &Opts,
48326941Sdim                       clang::MacroBuilder &Builder);
49326941Sdim} // namespace targets
50326941Sdim} // namespace clang
51326941Sdim#endif // LLVM_CLANG_LIB_BASIC_TARGETS_H
52