|  | //===------- Targets.h - Declare target feature support ---------*- C++ -*-===// | 
|  | // | 
|  | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | 
|  | // See https://llvm.org/LICENSE.txt for license information. | 
|  | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  | // | 
|  | // This file declares things required for construction of a TargetInfo object | 
|  | // from a target triple. Typically individual targets will need to include from | 
|  | // here in order to get these functions if required. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | #ifndef LLVM_CLANG_LIB_BASIC_TARGETS_H | 
|  | #define LLVM_CLANG_LIB_BASIC_TARGETS_H | 
|  |  | 
|  | #include "clang/Basic/LangOptions.h" | 
|  | #include "clang/Basic/MacroBuilder.h" | 
|  | #include "clang/Basic/TargetInfo.h" | 
|  | #include "llvm/ADT/StringRef.h" | 
|  |  | 
|  | namespace clang { | 
|  | namespace targets { | 
|  |  | 
|  | LLVM_LIBRARY_VISIBILITY | 
|  | clang::TargetInfo *AllocateTarget(const llvm::Triple &Triple, | 
|  | const clang::TargetOptions &Opts); | 
|  |  | 
|  | /// DefineStd - Define a macro name and standard variants.  For example if | 
|  | /// MacroName is "unix", then this will define "__unix", "__unix__", and "unix" | 
|  | /// when in GNU mode. | 
|  | LLVM_LIBRARY_VISIBILITY | 
|  | void DefineStd(clang::MacroBuilder &Builder, llvm::StringRef MacroName, | 
|  | const clang::LangOptions &Opts); | 
|  |  | 
|  | LLVM_LIBRARY_VISIBILITY | 
|  | void defineCPUMacros(clang::MacroBuilder &Builder, llvm::StringRef CPUName, | 
|  | bool Tuning = true); | 
|  |  | 
|  | LLVM_LIBRARY_VISIBILITY | 
|  | void addCygMingDefines(const clang::LangOptions &Opts, | 
|  | clang::MacroBuilder &Builder); | 
|  | } // namespace targets | 
|  | } // namespace clang | 
|  | #endif // LLVM_CLANG_LIB_BASIC_TARGETS_H |