Add TableGen-based generator for command line arguments
Upstream moved away from manually declaring `*def` and `*inc` files. These are now auto-generated with tablegen. This patch does the same for cling, making it easier to rebase and maintain.
This commit is contained in:
parent
c5692e71f1
commit
c917ab56f3
@ -546,6 +546,7 @@ if (TARGET clang-headers)
|
||||
list(APPEND LLVM_COMMON_DEPENDS clang-headers)
|
||||
endif()
|
||||
|
||||
add_subdirectory(include/cling/Interpreter)
|
||||
add_subdirectory(lib)
|
||||
|
||||
if( CLING_INCLUDE_TESTS )
|
||||
|
5
include/cling/Interpreter/CMakeLists.txt
Normal file
5
include/cling/Interpreter/CMakeLists.txt
Normal file
@ -0,0 +1,5 @@
|
||||
include_directories(${LLVM_INCLUDE_DIRS})
|
||||
|
||||
set(LLVM_TARGET_DEFINITIONS ClingOptions.td)
|
||||
tablegen(LLVM ClingOptions.inc -gen-opt-parser-defs)
|
||||
add_public_tablegen_target(ClingDriverOptions)
|
@ -1,49 +0,0 @@
|
||||
#ifndef PREFIX
|
||||
#error "Define PREFIX prior to including this file!"
|
||||
#endif
|
||||
|
||||
/////////
|
||||
// Prefixes
|
||||
|
||||
#define COMMA ,
|
||||
PREFIX(prefix_0, {llvm::StringLiteral("")})
|
||||
PREFIX(prefix_1, {llvm::StringLiteral("-") COMMA llvm::StringLiteral("")})
|
||||
PREFIX(prefix_3, {llvm::StringLiteral("-") COMMA llvm::StringLiteral("--") COMMA llvm::StringLiteral("")})
|
||||
PREFIX(prefix_2, {llvm::StringLiteral("--") COMMA llvm::StringLiteral("")})
|
||||
#undef COMMA
|
||||
|
||||
#ifndef OPTION
|
||||
#error "Define OPTION prior to including this file!"
|
||||
#endif
|
||||
|
||||
OPTION(prefix_0, "<input>", INPUT, Input, INVALID, INVALID, 0, 0, 0, 0, 0, 0)
|
||||
OPTION(prefix_0, "<unknown>", UNKNOWN, Unknown, INVALID, INVALID, 0, 0, 0, 0, 0, 0)
|
||||
#ifndef NDEBUG
|
||||
OPTION(prefix_2, "debug-only=", _debugFlags_EQ, Joined, INVALID, INVALID, 0, 0, 0,
|
||||
"Debug flags to enable", 0, 0)
|
||||
OPTION(prefix_2, "debug-only", _debugFlags, Separate, INVALID, INVALID, 0, 0, 0,
|
||||
"Debug flags to enable", 0, 0)
|
||||
#endif
|
||||
OPTION(prefix_2, "errorout", _errorout, Flag, INVALID, INVALID, 0, 0, 0,
|
||||
"Do not recover from input errors", 0, 0)
|
||||
// Re-implement to forward to our help
|
||||
OPTION(prefix_3, "help", help, Flag, INVALID, INVALID, 0, 0, 0,
|
||||
"Print this help text", 0, 0)
|
||||
OPTION(prefix_1, "L", L, JoinedOrSeparate, INVALID, INVALID, 0, 0, 0,
|
||||
"Add directory to library search path", "<directory>", 0)
|
||||
OPTION(prefix_1, "l", l, JoinedOrSeparate, INVALID, INVALID, 0, 0, 0,
|
||||
"Load a library before prompt", "<library>", 0)
|
||||
OPTION(prefix_2, "metastr=", _metastr_EQ, Joined, INVALID, INVALID, 0, 0, 0,
|
||||
"Set the meta command tag, default '.'", 0, 0)
|
||||
OPTION(prefix_2, "metastr", _metastr, Separate, INVALID, INVALID, 0, 0, 0,
|
||||
"Set the meta command tag, default '.'", 0, 0)
|
||||
OPTION(prefix_2, "nologo", _nologo, Flag, INVALID, INVALID, 0, 0, 0,
|
||||
"Do not show startup-banner", 0, 0)
|
||||
OPTION(prefix_3, "noruntime", noruntime, Flag, INVALID, INVALID, 0, 0, 0,
|
||||
"Disable runtime support (no null checking, no value printing)", 0, 0)
|
||||
OPTION(prefix_2, "ptrcheck", _ptrcheck, Flag, INVALID, INVALID, 0, 0, 0,
|
||||
"Enable injection of pointer validity checks", 0, 0)
|
||||
OPTION(prefix_3, "version", version, Flag, INVALID, INVALID, 0, 0, 0,
|
||||
"Print the compiler version", 0, 0)
|
||||
OPTION(prefix_1, "v", v, Flag, INVALID, INVALID, 0, 0, 0,
|
||||
"Enable verbose output", 0, 0)
|
29
include/cling/Interpreter/ClingOptions.td
Normal file
29
include/cling/Interpreter/ClingOptions.td
Normal file
@ -0,0 +1,29 @@
|
||||
//===--- ClingOptions.td - Options for cling -----------------------------------===//
|
||||
//
|
||||
// CLING - the C++ LLVM-based InterpreterG :)
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file defines the options accepted by cling.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// Include the common option parsing interfaces.
|
||||
include "llvm/Option/OptParser.td"
|
||||
|
||||
#ifndef NDEBUG
|
||||
def _debugFlags_EQ : Joined<["--"], "debug-only=">;
|
||||
def _debugFlags : Flag<["--"], "debug-only">;
|
||||
#endif
|
||||
def _errorout : Flag<["--"], "errorout">, HelpText<"Do not recover from input errors">;
|
||||
// Re-implement to forward to our help
|
||||
def help : Flag<["-", "--"], "help">, HelpText<"Print this help text">;
|
||||
def L : JoinedOrSeparate<["-"], "L">, HelpText<"Add directory to library search path">, MetaVarName<"<directory>">;
|
||||
def l : JoinedOrSeparate<["-"], "l">, HelpText<"Load a library before prompt">, MetaVarName<"<library>">;
|
||||
def _metastr_EQ : Joined<["--"], "metastr=">, HelpText<"Set the meta command tag, default '.'">;
|
||||
def _metastr : Separate<["--"], "metastr">, HelpText<"Set the meta command tag, default '.'">;
|
||||
def _nologo : Flag<["--"], "nologo">, HelpText<"Do not show startup-banner">;
|
||||
def noruntime : Flag<["-", "--"], "noruntime">, HelpText<"Disable runtime support (no null checking, no value printing)">;
|
||||
def _ptrcheck : Flag<["--"], "ptrcheck">, HelpText<"Enable injection of pointer validity checks">;
|
||||
def version : Flag<["-", "--"], "version">, HelpText<"Print the compiler version">;
|
||||
def v : Flag<["-"], "v">, HelpText<"Enable verbose output">;
|
@ -47,9 +47,9 @@ set(LLVM_LINK_COMPONENTS
|
||||
|
||||
# clingInterpreter depends on Options.inc to be tablegen-ed
|
||||
# (target ClangDriverOptions) from in-tree builds.
|
||||
set(CLING_DEPENDS)
|
||||
set(CLING_DEPENDS ClingDriverOptions)
|
||||
if(TARGET ClangDriverOptions)
|
||||
set(CLING_DEPENDS ClangDriverOptions)
|
||||
set(CLING_DEPENDS "${CLING_DEPENDS};ClangDriverOptions")
|
||||
endif()
|
||||
# clangSema will make sure all of the dependencies of clingInterpreter are met.
|
||||
if(TARGET clangSema)
|
||||
|
Loading…
Reference in New Issue
Block a user