[clang-tools-extra] r219609 - Re-structure clang-rename into a library and the tool.
Manuel Klimek
klimek at google.com
Mon Oct 13 04:30:27 PDT 2014
Author: klimek
Date: Mon Oct 13 06:30:27 2014
New Revision: 219609
URL: http://llvm.org/viewvc/llvm-project?rev=219609&view=rev
Log:
Re-structure clang-rename into a library and the tool.
This allows the unit tests to link the library.
Patch by Xin Huang.
Added:
clang-tools-extra/trunk/clang-rename/tool/
clang-tools-extra/trunk/clang-rename/tool/CMakeLists.txt
clang-tools-extra/trunk/clang-rename/tool/ClangRename.cpp
- copied, changed from r219409, clang-tools-extra/trunk/clang-rename/ClangRename.cpp
clang-tools-extra/trunk/clang-rename/tool/Makefile
- copied, changed from r219409, clang-tools-extra/trunk/clang-rename/Makefile
Removed:
clang-tools-extra/trunk/clang-rename/ClangRename.cpp
Modified:
clang-tools-extra/trunk/clang-rename/CMakeLists.txt
clang-tools-extra/trunk/clang-rename/Makefile
clang-tools-extra/trunk/unittests/Makefile
clang-tools-extra/trunk/unittests/clang-rename/Makefile
Modified: clang-tools-extra/trunk/clang-rename/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-rename/CMakeLists.txt?rev=219609&r1=219608&r2=219609&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-rename/CMakeLists.txt (original)
+++ clang-tools-extra/trunk/clang-rename/CMakeLists.txt Mon Oct 13 06:30:27 2014
@@ -1,14 +1,12 @@
set(LLVM_LINK_COMPONENTS support)
-add_clang_executable(clang-rename
- ClangRename.cpp
+add_clang_library(clangRename
USRFinder.cpp
USRFindingAction.cpp
USRLocFinder.cpp
RenamingAction.cpp
- )
-target_link_libraries(clang-rename
+ LINK_LIBS
clangAST
clangBasic
clangFrontend
@@ -17,4 +15,4 @@ target_link_libraries(clang-rename
clangTooling
)
-install(TARGETS clang-rename RUNTIME DESTINATION bin)
+add_subdirectory(tool)
Removed: clang-tools-extra/trunk/clang-rename/ClangRename.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-rename/ClangRename.cpp?rev=219608&view=auto
==============================================================================
--- clang-tools-extra/trunk/clang-rename/ClangRename.cpp (original)
+++ clang-tools-extra/trunk/clang-rename/ClangRename.cpp (removed)
@@ -1,151 +0,0 @@
-//===--- tools/extra/clang-rename/ClangRename.cpp - Clang rename tool -----===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-///
-/// \file
-/// \brief This file implements a clang-rename tool that automatically finds and
-/// renames symbols in C++ code.
-///
-//===----------------------------------------------------------------------===//
-
-#include "USRFindingAction.h"
-#include "RenamingAction.h"
-#include "clang/AST/ASTConsumer.h"
-#include "clang/AST/ASTContext.h"
-#include "clang/Basic/FileManager.h"
-#include "clang/Basic/LangOptions.h"
-#include "clang/Basic/TargetInfo.h"
-#include "clang/Basic/TargetOptions.h"
-#include "clang/Frontend/CommandLineSourceLoc.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/Frontend/FrontendAction.h"
-#include "clang/Frontend/TextDiagnosticPrinter.h"
-#include "clang/Lex/Preprocessor.h"
-#include "clang/Lex/Lexer.h"
-#include "clang/Parse/Parser.h"
-#include "clang/Parse/ParseAST.h"
-#include "clang/Rewrite/Core/Rewriter.h"
-#include "clang/Tooling/CommonOptionsParser.h"
-#include "clang/Tooling/Refactoring.h"
-#include "clang/Tooling/Tooling.h"
-#include "llvm/ADT/IntrusiveRefCntPtr.h"
-#include "llvm/Support/Host.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <ctype.h>
-#include <string>
-#include <vector>
-
-using namespace llvm;
-
-cl::OptionCategory ClangRenameCategory("Clang-rename options");
-
-static cl::opt<std::string>
-NewName(
- "new-name",
- cl::desc("The new name to change the symbol to."),
- cl::cat(ClangRenameCategory));
-static cl::opt<unsigned>
-SymbolOffset(
- "offset",
- cl::desc("Locates the symbol by offset as opposed to <line>:<column>."),
- cl::cat(ClangRenameCategory));
-static cl::opt<bool>
-Inplace(
- "i",
- cl::desc("Overwrite edited <file>s."),
- cl::cat(ClangRenameCategory));
-static cl::opt<bool>
-PrintName(
- "pn",
- cl::desc("Print the found symbol's name prior to renaming to stderr."),
- cl::cat(ClangRenameCategory));
-static cl::opt<bool>
-PrintLocations(
- "pl",
- cl::desc("Print the locations affected by renaming to stderr."),
- cl::cat(ClangRenameCategory));
-
-#define CLANG_RENAME_VERSION "0.0.1"
-
-static void PrintVersion() {
- outs() << "clang-rename version " << CLANG_RENAME_VERSION << "\n";
-}
-
-using namespace clang;
-
-const char RenameUsage[] = "A tool to rename symbols in C/C++ code.\n\
-clang-rename renames every occurrence of a symbol found at <offset> in\n\
-<source0>. If -i is specified, the edited files are overwritten to disk.\n\
-Otherwise, the results are written to stdout.\n";
-
-int main(int argc, const char **argv) {
- cl::SetVersionPrinter(PrintVersion);
- tooling::CommonOptionsParser OP(argc, argv, ClangRenameCategory, RenameUsage);
-
- // Check the arguments for correctness.
-
- if (NewName.empty()) {
- errs() << "clang-rename: no new name provided.\n\n";
- cl::PrintHelpMessage();
- exit(1);
- }
-
- // Get the USRs.
- auto Files = OP.getSourcePathList();
- tooling::RefactoringTool Tool(OP.getCompilations(), Files);
- rename::USRFindingAction USRAction(SymbolOffset);
-
- // Find the USRs.
- Tool.run(tooling::newFrontendActionFactory(&USRAction).get());
- const auto &USRs = USRAction.getUSRs();
- const auto &PrevName = USRAction.getUSRSpelling();
-
- if (PrevName.empty())
- // An error should have already been printed.
- exit(1);
-
- if (PrintName)
- errs() << "clang-rename: found name: " << PrevName;
-
- // Perform the renaming.
- rename::RenamingAction RenameAction(NewName, PrevName, USRs,
- Tool.getReplacements(), PrintLocations);
- auto Factory = tooling::newFrontendActionFactory(&RenameAction);
- int res;
-
- if (Inplace) {
- res = Tool.runAndSave(Factory.get());
- } else {
- res = Tool.run(Factory.get());
-
- // Write every file to stdout. Right now we just barf the files without any
- // indication of which files start where, other than that we print the files
- // in the same order we see them.
- LangOptions DefaultLangOptions;
- IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts =
- new DiagnosticOptions();
- TextDiagnosticPrinter DiagnosticPrinter(errs(), &*DiagOpts);
- DiagnosticsEngine Diagnostics(
- IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()),
- &*DiagOpts, &DiagnosticPrinter, false);
- auto &FileMgr = Tool.getFiles();
- SourceManager Sources(Diagnostics, FileMgr);
- Rewriter Rewrite(Sources, DefaultLangOptions);
-
- Tool.applyAllReplacements(Rewrite);
- for (const auto &File : Files) {
- const auto *Entry = FileMgr.getFile(File);
- auto ID = Sources.translateFile(Entry);
- Rewrite.getEditBuffer(ID).write(outs());
- }
- }
-
- exit(res);
-}
Modified: clang-tools-extra/trunk/clang-rename/Makefile
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-rename/Makefile?rev=219609&r1=219608&r2=219609&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-rename/Makefile (original)
+++ clang-tools-extra/trunk/clang-rename/Makefile Mon Oct 13 06:30:27 2014
@@ -8,13 +8,9 @@
##===----------------------------------------------------------------------===##
CLANG_LEVEL := ../../..
-TOOLNAME = clang-rename
+LIBRARYNAME = clangRename
include $(CLANG_LEVEL)/../../Makefile.config
-LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option
-USEDLIBS = clangFrontend.a clangSerialization.a clangDriver.a \
- clangTooling.a clangParse.a clangSema.a clangIndex.a \
- clangStaticAnalyzerFrontend.a clangStaticAnalyzerCheckers.a \
- clangStaticAnalyzerCore.a clangAnalysis.a clangRewriteFrontend.a \
- clangRewrite.a clangEdit.a clangAST.a clangLex.a clangBasic.a
+
+DIRS = tool
include $(CLANG_LEVEL)/Makefile
Added: clang-tools-extra/trunk/clang-rename/tool/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-rename/tool/CMakeLists.txt?rev=219609&view=auto
==============================================================================
--- clang-tools-extra/trunk/clang-rename/tool/CMakeLists.txt (added)
+++ clang-tools-extra/trunk/clang-rename/tool/CMakeLists.txt Mon Oct 13 06:30:27 2014
@@ -0,0 +1,12 @@
+add_clang_executable(clang-rename ClangRename.cpp)
+
+target_link_libraries(clang-rename
+ clangAST
+ clangBasic
+ clangFrontend
+ clangIndex
+ clangRename
+ clangRewrite
+ clangTooling)
+
+install(TARGETS clang-rename RUNTIME DESTINATION bin)
Copied: clang-tools-extra/trunk/clang-rename/tool/ClangRename.cpp (from r219409, clang-tools-extra/trunk/clang-rename/ClangRename.cpp)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-rename/tool/ClangRename.cpp?p2=clang-tools-extra/trunk/clang-rename/tool/ClangRename.cpp&p1=clang-tools-extra/trunk/clang-rename/ClangRename.cpp&r1=219409&r2=219609&rev=219609&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-rename/ClangRename.cpp (original)
+++ clang-tools-extra/trunk/clang-rename/tool/ClangRename.cpp Mon Oct 13 06:30:27 2014
@@ -13,8 +13,8 @@
///
//===----------------------------------------------------------------------===//
-#include "USRFindingAction.h"
-#include "RenamingAction.h"
+#include "../USRFindingAction.h"
+#include "../RenamingAction.h"
#include "clang/AST/ASTConsumer.h"
#include "clang/AST/ASTContext.h"
#include "clang/Basic/FileManager.h"
Copied: clang-tools-extra/trunk/clang-rename/tool/Makefile (from r219409, clang-tools-extra/trunk/clang-rename/Makefile)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-rename/tool/Makefile?p2=clang-tools-extra/trunk/clang-rename/tool/Makefile&p1=clang-tools-extra/trunk/clang-rename/Makefile&r1=219409&r2=219609&rev=219609&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-rename/Makefile (original)
+++ clang-tools-extra/trunk/clang-rename/tool/Makefile Mon Oct 13 06:30:27 2014
@@ -1,20 +1,12 @@
-##===- tools/extra/clang-rename/Makefile -------------------*- Makefile -*-===##
-#
-# The LLVM Compiler Infrastructure
-#
-# This file is distributed under the University of Illinois Open Source
-# License. See LICENSE.TXT for details.
-#
-##===----------------------------------------------------------------------===##
-
-CLANG_LEVEL := ../../..
+CLANG_LEVEL := ../../../..
TOOLNAME = clang-rename
include $(CLANG_LEVEL)/../../Makefile.config
LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option
-USEDLIBS = clangFrontend.a clangSerialization.a clangDriver.a \
+USEDLIBS = clangRename.a clangFrontend.a clangSerialization.a clangDriver.a \
clangTooling.a clangParse.a clangSema.a clangIndex.a \
clangStaticAnalyzerFrontend.a clangStaticAnalyzerCheckers.a \
clangStaticAnalyzerCore.a clangAnalysis.a clangRewriteFrontend.a \
clangRewrite.a clangEdit.a clangAST.a clangLex.a clangBasic.a
include $(CLANG_LEVEL)/Makefile
+
Modified: clang-tools-extra/trunk/unittests/Makefile
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/Makefile?rev=219609&r1=219608&r2=219609&view=diff
==============================================================================
--- clang-tools-extra/trunk/unittests/Makefile (original)
+++ clang-tools-extra/trunk/unittests/Makefile Mon Oct 13 06:30:27 2014
@@ -10,6 +10,6 @@
CLANG_LEVEL := ../../..
include $(CLANG_LEVEL)/../../Makefile.config
-PARALLEL_DIRS := clang-apply-replacements clang-modernize clang-query clang-tidy
+PARALLEL_DIRS := clang-apply-replacements clang-modernize clang-query clang-tidy clang-rename
include $(CLANG_LEVEL)/Makefile
Modified: clang-tools-extra/trunk/unittests/clang-rename/Makefile
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/clang-rename/Makefile?rev=219609&r1=219608&r2=219609&view=diff
==============================================================================
--- clang-tools-extra/trunk/unittests/clang-rename/Makefile (original)
+++ clang-tools-extra/trunk/unittests/clang-rename/Makefile Mon Oct 13 06:30:27 2014
@@ -13,12 +13,13 @@ include $(CLANG_LEVEL)/../../Makefile.co
TESTNAME = ClangRenameTests
LINK_COMPONENTS := asmparser bitreader support MC MCParser option \
TransformUtils
-USEDLIBS = clangAnalysis.a clangAST.a clangBasic.a clangDriver.a clangEdit.a \
- clangFrontend.a clangFrontendTool.a clangIndex.a clangLex.a \
- clangParse.a clangRewrite.a clangRewriteFrontend.a \
- clangSerialization.a clangSema.a clangTooling.a
+USEDLIBS = clangRename.a clangFrontend.a clangSerialization.a clangDriver.a \
+ clangTooling.a clangParse.a clangSema.a clangIndex.a \
+ clangStaticAnalyzerFrontend.a clangStaticAnalyzerCheckers.a \
+ clangStaticAnalyzerCore.a clangAnalysis.a clangRewriteFrontend.a \
+ clangRewrite.a clangEdit.a clangAST.a clangLex.a clangBasic.a
include $(CLANG_LEVEL)/Makefile
MAKEFILE_UNITTEST_NO_INCLUDE_COMMON := 1
-CPP.Flags += -I(PROJ_SRC_DIR)/../../clang-rename
+CPP.Flags += -I$(PROJ_SRC_DIR)/../../clang-rename
include $(LLVM_SRC_ROOT)/unittests/Makefile.unittest
More information about the cfe-commits
mailing list