xref: /freebsd-src/contrib/llvm-project/llvm/tools/llvm-remarkutil/RemarkUtil.cpp (revision 5f757f3ff9144b609b3c433dfd370cc6bdc191ad)
1*5f757f3fSDimitry Andric //===--------- llvm-remarkutil/RemarkUtil.cpp -----------------------------===//
2bdd1243dSDimitry Andric //
3bdd1243dSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4bdd1243dSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5bdd1243dSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6bdd1243dSDimitry Andric //
7bdd1243dSDimitry Andric //===----------------------------------------------------------------------===//
8bdd1243dSDimitry Andric /// Utility for remark files.
9bdd1243dSDimitry Andric //===----------------------------------------------------------------------===//
10bdd1243dSDimitry Andric 
11*5f757f3fSDimitry Andric #include "RemarkUtilRegistry.h"
12bdd1243dSDimitry Andric #include "llvm/Support/InitLLVM.h"
13bdd1243dSDimitry Andric 
14bdd1243dSDimitry Andric using namespace llvm;
15*5f757f3fSDimitry Andric using namespace llvm::remarkutil;
16*5f757f3fSDimitry Andric ExitOnError ExitOnErr;
17bdd1243dSDimitry Andric 
handleSubOptions()18*5f757f3fSDimitry Andric static Error handleSubOptions() {
19*5f757f3fSDimitry Andric   for (auto *SC : cl::getRegisteredSubcommands()) {
20*5f757f3fSDimitry Andric     if (*SC) {
21*5f757f3fSDimitry Andric       // If no subcommand was provided, we need to explicitly check if this is
22*5f757f3fSDimitry Andric       // the top-level subcommand.
23*5f757f3fSDimitry Andric       if (SC == &cl::SubCommand::getTopLevel())
24*5f757f3fSDimitry Andric         break;
25*5f757f3fSDimitry Andric       if (auto C = dispatch(SC)) {
26*5f757f3fSDimitry Andric         return C();
27bdd1243dSDimitry Andric       }
28bdd1243dSDimitry Andric     }
29bdd1243dSDimitry Andric   }
30bdd1243dSDimitry Andric 
31bdd1243dSDimitry Andric   return make_error<StringError>(
32bdd1243dSDimitry Andric       "Please specify a subcommand. (See -help for options)",
33bdd1243dSDimitry Andric       inconvertibleErrorCode());
34bdd1243dSDimitry Andric }
35bdd1243dSDimitry Andric 
main(int argc,char * argv[])36*5f757f3fSDimitry Andric int main(int argc, char *argv[]) {
37bdd1243dSDimitry Andric   InitLLVM X(argc, argv);
38bdd1243dSDimitry Andric   cl::ParseCommandLineOptions(argc, argv, "Remark file utilities\n");
39bdd1243dSDimitry Andric   ExitOnErr.setBanner(std::string(argv[0]) + ": error: ");
40*5f757f3fSDimitry Andric   ExitOnErr(handleSubOptions());
41bdd1243dSDimitry Andric }
42