[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