1//===--- TargetOptions.h ----------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9/// 10/// \file 11/// \brief Defines the clang::TargetOptions class. 12/// 13//===----------------------------------------------------------------------===// 14 15#ifndef LLVM_CLANG_BASIC_TARGETOPTIONS_H 16#define LLVM_CLANG_BASIC_TARGETOPTIONS_H 17 18#include <string> 19#include <vector> 20#include "clang/Basic/OpenCLOptions.h" 21#include "llvm/Target/TargetOptions.h" 22 23namespace clang { 24 25/// \brief Options for controlling the target. 26class TargetOptions { 27public: 28 /// The name of the target triple to compile for. 29 std::string Triple; 30 31 /// When compiling for the device side, contains the triple used to compile 32 /// for the host. 33 std::string HostTriple; 34 35 /// If given, the name of the target CPU to generate code for. 36 std::string CPU; 37 38 /// If given, the unit to use for floating point math. 39 std::string FPMath; 40 41 /// If given, the name of the target ABI to use. 42 std::string ABI; 43 44 /// The EABI version to use 45 llvm::EABI EABIVersion; 46 47 /// If given, the version string of the linker in use. 48 std::string LinkerVersion; 49 50 /// \brief The list of target specific features to enable or disable, as written on the command line. 51 std::vector<std::string> FeaturesAsWritten; 52 53 /// The list of target specific features to enable or disable -- this should 54 /// be a list of strings starting with by '+' or '-'. 55 std::vector<std::string> Features; 56 57 std::vector<std::string> Reciprocals; 58 59 /// Supported OpenCL extensions and optional core features. 60 OpenCLOptions SupportedOpenCLOptions; 61 62 /// \brief The list of OpenCL extensions to enable or disable, as written on 63 /// the command line. 64 std::vector<std::string> OpenCLExtensionsAsWritten; 65}; 66 67} // end namespace clang 68 69#endif 70