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