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 <memory> 13 14 namespace llvm { 15 namespace opt { 16 class OptTable; 17 } 18 } 19 20 namespace clang { 21 namespace driver { 22 23 namespace options { 24 /// Flags specifically for clang options. Must not overlap with 25 /// llvm::opt::DriverFlag. 26 enum ClangFlags { 27 DriverOption = (1 << 4), 28 LinkerInput = (1 << 5), 29 NoArgumentUnused = (1 << 6), 30 Unsupported = (1 << 7), 31 CoreOption = (1 << 8), 32 CLOption = (1 << 9), 33 CC1Option = (1 << 10), 34 CC1AsOption = (1 << 11), 35 NoDriverOption = (1 << 12), 36 Ignored = (1 << 13) 37 }; 38 39 enum ID { 40 OPT_INVALID = 0, // This is not an option ID. 41 #define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ 42 HELPTEXT, METAVAR, VALUES) \ 43 OPT_##ID, 44 #include "clang/Driver/Options.inc" 45 LastOption 46 #undef OPTION 47 }; 48 } 49 50 const llvm::opt::OptTable &getDriverOptTable(); 51 } 52 } 53 54 #endif 55