1d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar//===--- TargetOptions.h ----------------------------------------*- C++ -*-===// 2d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar// 3d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar// The LLVM Compiler Infrastructure 4d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar// 5d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar// This file is distributed under the University of Illinois Open Source 6d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar// License. See LICENSE.TXT for details. 7d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar// 8d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar//===----------------------------------------------------------------------===// 92f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// 102f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// \file 112f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// \brief Defines the clang::TargetOptions class. 122f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// 132f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett//===----------------------------------------------------------------------===// 14d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar 15d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar#ifndef LLVM_CLANG_FRONTEND_TARGETOPTIONS_H 16d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar#define LLVM_CLANG_FRONTEND_TARGETOPTIONS_H 17d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar 18d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar#include <string> 19d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar#include <vector> 20d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar 21d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbarnamespace clang { 22d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar 23af50aab0c317462129d73ae8000c6394c718598dJames Dennett/// \brief Options for controlling the target. 24ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesclass TargetOptions { 25d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbarpublic: 26d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar /// If given, the name of the target triple to compile for. If not given the 27d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar /// target will be selected to match the host. 28d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar std::string Triple; 29d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar 30d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar /// If given, the name of the target CPU to generate code for. 31d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar std::string CPU; 32d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar 335389b84a780ac17b63c10ad97cd5e3aaa41595b7Rafael Espindola /// If given, the unit to use for floating point math. 345389b84a780ac17b63c10ad97cd5e3aaa41595b7Rafael Espindola std::string FPMath; 355389b84a780ac17b63c10ad97cd5e3aaa41595b7Rafael Espindola 36d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar /// If given, the name of the target ABI to use. 37d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar std::string ABI; 38d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar 3939065a5494613952b4810d1d6b28348cef155e12Daniel Dunbar /// If given, the version string of the linker in use. 4039065a5494613952b4810d1d6b28348cef155e12Daniel Dunbar std::string LinkerVersion; 4139065a5494613952b4810d1d6b28348cef155e12Daniel Dunbar 4257016dda61498294120b1a881d9e6606337b29d9Douglas Gregor /// \brief The list of target specific features to enable or disable, as written on the command line. 4357016dda61498294120b1a881d9e6606337b29d9Douglas Gregor std::vector<std::string> FeaturesAsWritten; 4457016dda61498294120b1a881d9e6606337b29d9Douglas Gregor 45d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar /// The list of target specific features to enable or disable -- this should 46d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar /// be a list of strings starting with by '+' or '-'. 47d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar std::vector<std::string> Features; 48d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar}; 49d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar 50d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar} // end namespace clang 51d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar 52d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0Daniel Dunbar#endif 53