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 Andricstatic 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 Andricint 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