forked from OSchip/llvm-project
[clang][cli] Port PreprocessorOpts simple string based options to new option parsing system
Depends on D84671 Reviewed By: Bigcheese Original patch by Daniel Grumberg. Differential Revision: https://reviews.llvm.org/D84672
This commit is contained in:
parent
aec2991d08
commit
d1b3f82e51
|
@ -2615,7 +2615,8 @@ def image__base : Separate<["-"], "image_base">;
|
|||
def include_ : JoinedOrSeparate<["-", "--"], "include">, Group<clang_i_Group>, EnumName<"include">,
|
||||
MetaVarName<"<file>">, HelpText<"Include file before parsing">, Flags<[CC1Option]>;
|
||||
def include_pch : Separate<["-"], "include-pch">, Group<clang_i_Group>, Flags<[CC1Option]>,
|
||||
HelpText<"Include precompiled header file">, MetaVarName<"<file>">;
|
||||
HelpText<"Include precompiled header file">, MetaVarName<"<file>">,
|
||||
MarshallingInfoString<"PreprocessorOpts->ImplicitPCHInclude">;
|
||||
def relocatable_pch : Flag<["-", "--"], "relocatable-pch">, Flags<[CC1Option]>,
|
||||
HelpText<"Whether to build a relocatable precompiled header">,
|
||||
MarshallingInfoFlag<"FrontendOpts.RelocatablePCH">;
|
||||
|
@ -4857,7 +4858,8 @@ def foverride_record_layout_EQ : Joined<["-"], "foverride-record-layout=">,
|
|||
HelpText<"Override record layouts with those in the given file">;
|
||||
def pch_through_header_EQ : Joined<["-"], "pch-through-header=">,
|
||||
HelpText<"Stop PCH generation after including this file. When using a PCH, "
|
||||
"skip tokens until after this file is included.">;
|
||||
"skip tokens until after this file is included.">,
|
||||
MarshallingInfoString<"PreprocessorOpts->PCHThroughHeader">;
|
||||
def pch_through_hdrstop_create : Flag<["-"], "pch-through-hdrstop-create">,
|
||||
HelpText<"When creating a PCH, stop PCH generation after #pragma hdrstop.">,
|
||||
MarshallingInfoFlag<"PreprocessorOpts->PCHWithHdrStopCreate">;
|
||||
|
@ -4904,7 +4906,9 @@ def fconstant_string_class : Separate<["-"], "fconstant-string-class">,
|
|||
HelpText<"Specify the class to use for constant Objective-C string objects.">,
|
||||
MarshallingInfoString<"LangOpts->ObjCConstantStringClass">;
|
||||
def fobjc_arc_cxxlib_EQ : Joined<["-"], "fobjc-arc-cxxlib=">,
|
||||
HelpText<"Objective-C++ Automatic Reference Counting standard library kind">, Values<"libc++,libstdc++,none">;
|
||||
HelpText<"Objective-C++ Automatic Reference Counting standard library kind">, Values<"libc++,libstdc++,none">,
|
||||
NormalizedValues<["ARCXX_libcxx", "ARCXX_libstdcxx", "ARCXX_nolib"]>,
|
||||
MarshallingInfoString<"PreprocessorOpts->ObjCXXARCStandardLibrary", "ARCXX_nolib">, AutoNormalizeEnum;
|
||||
def fobjc_runtime_has_weak : Flag<["-"], "fobjc-runtime-has-weak">,
|
||||
HelpText<"The target Objective-C runtime supports ARC weak operations">;
|
||||
def fobjc_dispatch_method_EQ : Joined<["-"], "fobjc-dispatch-method=">,
|
||||
|
|
|
@ -3115,11 +3115,8 @@ static bool isStrictlyPreprocessorAction(frontend::ActionKind Action) {
|
|||
static void ParsePreprocessorArgs(PreprocessorOptions &Opts, ArgList &Args,
|
||||
DiagnosticsEngine &Diags,
|
||||
frontend::ActionKind Action) {
|
||||
Opts.ImplicitPCHInclude = std::string(Args.getLastArgValue(OPT_include_pch));
|
||||
Opts.PCHWithHdrStop = Args.hasArg(OPT_pch_through_hdrstop_create) ||
|
||||
Args.hasArg(OPT_pch_through_hdrstop_use);
|
||||
Opts.PCHThroughHeader =
|
||||
std::string(Args.getLastArgValue(OPT_pch_through_header_EQ));
|
||||
Opts.AllowPCHWithCompilerErrors =
|
||||
Args.hasArg(OPT_fallow_pch_with_errors, OPT_fallow_pcm_with_errors);
|
||||
|
||||
|
@ -3187,19 +3184,6 @@ static void ParsePreprocessorArgs(PreprocessorOptions &Opts, ArgList &Args,
|
|||
Opts.addRemappedFile(Split.first, Split.second);
|
||||
}
|
||||
|
||||
if (Arg *A = Args.getLastArg(OPT_fobjc_arc_cxxlib_EQ)) {
|
||||
StringRef Name = A->getValue();
|
||||
unsigned Library = llvm::StringSwitch<unsigned>(Name)
|
||||
.Case("libc++", ARCXX_libcxx)
|
||||
.Case("libstdc++", ARCXX_libstdcxx)
|
||||
.Case("none", ARCXX_nolib)
|
||||
.Default(~0U);
|
||||
if (Library == ~0U)
|
||||
Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args) << Name;
|
||||
else
|
||||
Opts.ObjCXXARCStandardLibrary = (ObjCXXARCStandardLibraryKind)Library;
|
||||
}
|
||||
|
||||
// Always avoid lexing editor placeholders when we're just running the
|
||||
// preprocessor as we never want to emit the
|
||||
// "editor placeholder in source file" error in PP only mode.
|
||||
|
|
Loading…
Reference in New Issue