1 //===--- Options.h - Option info & table ------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLVM_CLANG_DRIVER_OPTIONS_H
10 #define LLVM_CLANG_DRIVER_OPTIONS_H
11 
12 #include "llvm/Option/OptTable.h"
13 #include "llvm/Option/Option.h"
14 
15 namespace clang {
16 namespace driver {
17 
18 namespace options {
19 /// Flags specifically for clang options.  Must not overlap with
20 /// llvm::opt::DriverFlag.
21 enum ClangFlags {
22   NoXarchOption = (1 << 4),
23   LinkerInput = (1 << 5),
24   NoArgumentUnused = (1 << 6),
25   Unsupported = (1 << 7),
26   LinkOption = (1 << 8),
27   Ignored = (1 << 9),
28   TargetSpecific = (1 << 10),
29 };
30 
31 // Flags specifically for clang option visibility. We alias DefaultVis to
32 // ClangOption, because "DefaultVis" is confusing in Options.td, which is used
33 // for multiple drivers (clang, cl, flang, etc).
34 enum ClangVisibility {
35   ClangOption = llvm::opt::DefaultVis,
36   CLOption = (1 << 1),
37   CC1Option = (1 << 2),
38   CC1AsOption = (1 << 3),
39   FlangOption = (1 << 4),
40   FC1Option = (1 << 5),
41   DXCOption = (1 << 6),
42 };
43 
44 enum ID {
45     OPT_INVALID = 0, // This is not an option ID.
46 #define OPTION(...) LLVM_MAKE_OPT_ID(__VA_ARGS__),
47 #include "clang/Driver/Options.inc"
48     LastOption
49 #undef OPTION
50   };
51 }
52 
53 const llvm::opt::OptTable &getDriverOptTable();
54 }
55 }
56 
57 #endif
58