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 22 namespace clang { 23 24 /// \brief Options for controlling the target. 25 class TargetOptions { 26 public: 27 /// The name of the target triple to compile for. 28 std::string Triple; 29 30 /// When compiling for the device side, contains the triple used to compile 31 /// for the host. 32 std::string HostTriple; 33 34 /// If given, the name of the target CPU to generate code for. 35 std::string CPU; 36 37 /// If given, the unit to use for floating point math. 38 std::string FPMath; 39 40 /// If given, the name of the target ABI to use. 41 std::string ABI; 42 43 /// The EABI version to use 44 std::string EABIVersion; 45 46 /// If given, the version string of the linker in use. 47 std::string LinkerVersion; 48 49 /// \brief The list of target specific features to enable or disable, as written on the command line. 50 std::vector<std::string> FeaturesAsWritten; 51 52 /// The list of target specific features to enable or disable -- this should 53 /// be a list of strings starting with by '+' or '-'. 54 std::vector<std::string> Features; 55 56 std::vector<std::string> Reciprocals; 57 58 /// Supported OpenCL extensions and optional core features. 59 OpenCLOptions SupportedOpenCLOptions; 60 61 /// \brief The list of OpenCL extensions to enable or disable, as written on 62 /// the command line. 63 std::vector<std::string> OpenCLExtensionsAsWritten; 64 }; 65 66 } // end namespace clang 67 68 #endif 69