Reland [FileCheck] Move FileCheck implementation out of LLVMSupport into its own...
authorRaphael Isemann <teemperor@gmail.com>
Tue, 1 Sep 2020 11:21:18 +0000 (13:21 +0200)
committerRaphael Isemann <teemperor@gmail.com>
Tue, 1 Sep 2020 12:59:28 +0000 (14:59 +0200)
This relands e9a3d1a401b07cbf7b11695637f1b549782a26cd which was originally
missing linking LLVMSupport into LLMVFileCheck which broke the SHARED_LIBS build.

Original summary:

The actual FileCheck logic seems to be implemented in LLVMSupport. I don't see a
good reason for having FileCheck implemented there as it has a very specific use
while LLVMSupport is a dependency of pretty much every LLVM tool there is. In
fact, the only use of FileCheck I could find (outside the FileCheck tool and the
FileCheck unit test) is a single call in GISelMITest.h.

This moves the FileCheck logic to its own LLVMFileCheck library. This way only
FileCheck and the GlobalISelTests now have a dependency on this code.

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D86344

21 files changed:
llvm/include/llvm/FileCheck/FileCheck.h [moved from llvm/include/llvm/Support/FileCheck.h with 97% similarity]
llvm/include/llvm/module.modulemap
llvm/lib/CMakeLists.txt
llvm/lib/FileCheck/CMakeLists.txt [new file with mode: 0644]
llvm/lib/FileCheck/FileCheck.cpp [moved from llvm/lib/Support/FileCheck.cpp with 99% similarity]
llvm/lib/FileCheck/FileCheckImpl.h [moved from llvm/lib/Support/FileCheckImpl.h with 99% similarity]
llvm/lib/Support/CMakeLists.txt
llvm/unittests/CMakeLists.txt
llvm/unittests/CodeGen/GlobalISel/CMakeLists.txt
llvm/unittests/CodeGen/GlobalISel/GISelMITest.h
llvm/unittests/FileCheck/CMakeLists.txt [new file with mode: 0644]
llvm/unittests/FileCheck/FileCheckTest.cpp [moved from llvm/unittests/Support/FileCheckTest.cpp with 99% similarity]
llvm/unittests/Support/CMakeLists.txt
llvm/utils/FileCheck/CMakeLists.txt
llvm/utils/FileCheck/FileCheck.cpp
llvm/utils/gn/secondary/llvm/lib/FileCheck/BUILD.gn [new file with mode: 0644]
llvm/utils/gn/secondary/llvm/lib/Support/BUILD.gn
llvm/utils/gn/secondary/llvm/unittests/BUILD.gn
llvm/utils/gn/secondary/llvm/unittests/CodeGen/GlobalISel/BUILD.gn
llvm/utils/gn/secondary/llvm/unittests/FileCheck/BUILD.gn [new file with mode: 0644]
llvm/utils/gn/secondary/llvm/unittests/Support/BUILD.gn

similarity index 97%
rename from llvm/include/llvm/Support/FileCheck.h
rename to llvm/include/llvm/FileCheck/FileCheck.h
index 1eb609e..f9fd3d7 100644 (file)
@@ -1,4 +1,4 @@
-//==-- llvm/Support/FileCheck.h ---------------------------*- C++ -*-==//
+//==-- llvm/FileCheck/FileCheck.h --------------------------------*- C++ -*-==//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -10,8 +10,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLVM_SUPPORT_FILECHECK_H
-#define LLVM_SUPPORT_FILECHECK_H
+#ifndef LLVM_FILECHECK_FILECHECK_H
+#define LLVM_FILECHECK_FILECHECK_H
 
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/MemoryBuffer.h"
index 0ce3574..22959c6 100644 (file)
@@ -195,6 +195,13 @@ module LLVM_ExecutionEngine {
 
 }
 
+module LLVM_FileCheck {
+  requires cplusplus
+
+  umbrella "FileCheck"
+  module * { export * }
+}
+
 // Orc utilities that don't depend only on Support (not ExecutionEngine or
 // IR). This is a workaround for ExecutionEngine's broken layering, and will
 // be removed in the future.
index 35d204d..851b89b 100644 (file)
@@ -3,6 +3,7 @@
 
 add_subdirectory(IR)
 add_subdirectory(FuzzMutate)
+add_subdirectory(FileCheck)
 add_subdirectory(InterfaceStub)
 add_subdirectory(IRReader)
 add_subdirectory(CodeGen)
diff --git a/llvm/lib/FileCheck/CMakeLists.txt b/llvm/lib/FileCheck/CMakeLists.txt
new file mode 100644 (file)
index 0000000..91c80e1
--- /dev/null
@@ -0,0 +1,8 @@
+add_llvm_component_library(LLVMFileCheck
+  FileCheck.cpp
+
+  ADDITIONAL_HEADER_DIRS
+  "${LLVM_MAIN_INCLUDE_DIR}/llvm/FileCheck"
+)
+
+target_link_libraries(LLVMFileCheck LLVMSupport)
similarity index 99%
rename from llvm/lib/Support/FileCheck.cpp
rename to llvm/lib/FileCheck/FileCheck.cpp
index 0cc3a2d..a0371cf 100644 (file)
@@ -13,7 +13,7 @@
 // as well as various unittests.
 //===----------------------------------------------------------------------===//
 
-#include "llvm/Support/FileCheck.h"
+#include "llvm/FileCheck/FileCheck.h"
 #include "FileCheckImpl.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/StringSet.h"
similarity index 99%
rename from llvm/lib/Support/FileCheckImpl.h
rename to llvm/lib/FileCheck/FileCheckImpl.h
index 7cdeb7c..05b2a52 100644 (file)
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLVM_LIB_SUPPORT_FILECHECKIMPL_H
-#define LLVM_LIB_SUPPORT_FILECHECKIMPL_H
+#ifndef LLVM_LIB_FILECHECK_FILECHECKIMPL_H
+#define LLVM_LIB_FILECHECK_FILECHECKIMPL_H
 
-#include "llvm/Support/FileCheck.h"
 #include "llvm/ADT/Optional.h"
 #include "llvm/ADT/StringMap.h"
 #include "llvm/ADT/StringRef.h"
+#include "llvm/FileCheck/FileCheck.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/SourceMgr.h"
 #include <map>
index 5e0d43b..9eefea5 100644 (file)
@@ -134,7 +134,6 @@ add_llvm_component_library(LLVMSupport
   Error.cpp
   ErrorHandling.cpp
   ExtensibleRTTI.cpp
-  FileCheck.cpp
   FileCollector.cpp
   FileUtilities.cpp
   FileOutputBuffer.cpp
index 850bc14..4076642 100644 (file)
@@ -24,6 +24,7 @@ add_subdirectory(CodeGen)
 add_subdirectory(DebugInfo)
 add_subdirectory(Demangle)
 add_subdirectory(ExecutionEngine)
+add_subdirectory(FileCheck)
 add_subdirectory(Frontend)
 add_subdirectory(FuzzMutate)
 add_subdirectory(InterfaceStub)
index 7ca77b9..4b27821 100644 (file)
@@ -2,6 +2,7 @@ set(LLVM_LINK_COMPONENTS
   ${LLVM_TARGETS_TO_BUILD}
   CodeGen
   Core
+  FileCheck
   GlobalISel
   MC
   MIRParser
index db3f2b9..336915c 100644 (file)
@@ -21,8 +21,8 @@
 #include "llvm/CodeGen/TargetInstrInfo.h"
 #include "llvm/CodeGen/TargetLowering.h"
 #include "llvm/CodeGen/TargetSubtargetInfo.h"
+#include "llvm/FileCheck/FileCheck.h"
 #include "llvm/InitializePasses.h"
-#include "llvm/Support/FileCheck.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/TargetSelect.h"
diff --git a/llvm/unittests/FileCheck/CMakeLists.txt b/llvm/unittests/FileCheck/CMakeLists.txt
new file mode 100644 (file)
index 0000000..7fe4f0c
--- /dev/null
@@ -0,0 +1,10 @@
+set(LLVM_LINK_COMPONENTS
+  FileCheck
+  Support
+)
+
+add_llvm_unittest(FileCheckTests
+  FileCheckTest.cpp
+)
+
+target_link_libraries(FileCheckTests PRIVATE LLVMTestingSupport)
similarity index 99%
rename from llvm/unittests/Support/FileCheckTest.cpp
rename to llvm/unittests/FileCheck/FileCheckTest.cpp
index e986c43..c5eaa5f 100644 (file)
@@ -1,4 +1,4 @@
-//===- llvm/unittest/Support/FileCheckTest.cpp - FileCheck tests --===//
+//===- llvm/unittest/FileCheck/FileCheckTest.cpp - FileCheck tests --------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "llvm/Support/FileCheck.h"
-#include "../lib/Support/FileCheckImpl.h"
+#include "llvm/FileCheck/FileCheck.h"
+#include "../lib/FileCheck/FileCheckImpl.h"
 #include "llvm/Support/Regex.h"
 #include "llvm/Testing/Support/Error.h"
 #include "gtest/gtest.h"
index 19fabfe..30de294 100644 (file)
@@ -33,7 +33,6 @@ add_llvm_unittest(SupportTests
   ErrorOrTest.cpp
   ErrorTest.cpp
   ExtensibleRTTITest.cpp
-  FileCheckTest.cpp
   FileCollectorTest.cpp
   FileOutputBufferTest.cpp
   FileUtilitiesTest.cpp
index 32e948a..d170343 100644 (file)
@@ -2,4 +2,4 @@ add_llvm_utility(FileCheck
   FileCheck.cpp
   )
 
-target_link_libraries(FileCheck PRIVATE LLVMSupport)
+target_link_libraries(FileCheck PRIVATE LLVMFileCheck LLVMSupport)
index 81889b2..66b0a97 100644 (file)
 //
 //===----------------------------------------------------------------------===//
 
+#include "llvm/FileCheck/FileCheck.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/Process.h"
 #include "llvm/Support/WithColor.h"
 #include "llvm/Support/raw_ostream.h"
-#include "llvm/Support/FileCheck.h"
 #include <cmath>
 using namespace llvm;
 
diff --git a/llvm/utils/gn/secondary/llvm/lib/FileCheck/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/FileCheck/BUILD.gn
new file mode 100644 (file)
index 0000000..af211df
--- /dev/null
@@ -0,0 +1,7 @@
+static_library("FileCheck") {
+  output_name = "LLVMFileCheck"
+  deps = [ "//llvm/lib/Support" ]
+  sources = [
+    "FileCheck.cpp",
+  ]
+}
index 93270c2..150847a 100644 (file)
@@ -71,7 +71,6 @@ static_library("Support") {
     "Error.cpp",
     "ErrorHandling.cpp",
     "ExtensibleRTTI.cpp",
-    "FileCheck.cpp",
     "FileCollector.cpp",
     "FileOutputBuffer.cpp",
     "FileUtilities.cpp",
index 5a23567..ae233fd 100644 (file)
@@ -20,6 +20,7 @@ group("unittests") {
     "ExecutionEngine/JITLink:JITLinkTests",
     "ExecutionEngine/MCJIT:MCJITTests",
     "ExecutionEngine/Orc:OrcJITTests",
+    "FileCheck:FileCheckTests",
     "Frontend:LLVMFrontendTests",
     "FuzzMutate:FuzzMutateTests",
     "IR:IRTests",
index 5104716..7933f8c 100644 (file)
@@ -5,6 +5,7 @@ unittest("GlobalISelTests") {
     "//llvm/lib/CodeGen",
     "//llvm/lib/CodeGen/GlobalISel",
     "//llvm/lib/CodeGen/MIRParser",
+    "//llvm/lib/FileCheck",
     "//llvm/lib/IR",
     "//llvm/lib/MC",
     "//llvm/lib/Support",
diff --git a/llvm/utils/gn/secondary/llvm/unittests/FileCheck/BUILD.gn b/llvm/utils/gn/secondary/llvm/unittests/FileCheck/BUILD.gn
new file mode 100644 (file)
index 0000000..85eef06
--- /dev/null
@@ -0,0 +1,9 @@
+import("//llvm/utils/unittest/unittest.gni")
+
+unittest("FileCheckTests") {
+  deps = [
+    "//llvm/lib/FileCheck",
+    "//llvm/lib/Support",
+  ]
+  sources = [ "FileCheckTest.cpp" ]
+}
index be757fe..f47e5a9 100644 (file)
@@ -36,7 +36,6 @@ unittest("SupportTests") {
     "ErrorOrTest.cpp",
     "ErrorTest.cpp",
     "ExtensibleRTTITest.cpp",
-    "FileCheckTest.cpp",
     "FileCollectorTest.cpp",
     "FileOutputBufferTest.cpp",
     "FileUtilitiesTest.cpp",