[llvm] e281d10 - [unittest] Restructure plugin cmake target

Mircea Trofin via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 28 08:33:07 PST 2023


Author: ibricchi
Date: 2023-02-28T08:32:58-08:00
New Revision: e281d102fb73bffae32831b759ed07744e82b751

URL: https://github.com/llvm/llvm-project/commit/e281d102fb73bffae32831b759ed07744e82b751
DIFF: https://github.com/llvm/llvm-project/commit/e281d102fb73bffae32831b759ed07744e82b751.diff

LOG: [unittest] Restructure plugin cmake target

Move plugin source and cmake files into separate directory.
Typically cmake targets in LLVM have a single target per directory.
This change brings this unittest more inline with that structure.

Reviewed By: thakis

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

Added: 
    llvm/unittests/Passes/PassBuilderBindings/CMakeLists.txt
    llvm/unittests/Passes/PassBuilderBindings/PassBuilderBindingsTest.cpp
    llvm/unittests/Passes/Plugins/CMakeLists.txt
    llvm/unittests/Passes/Plugins/DoublerPlugin/CMakeLists.txt
    llvm/unittests/Passes/Plugins/DoublerPlugin/DoublerPlugin.cpp
    llvm/unittests/Passes/Plugins/PluginsTest.cpp
    llvm/unittests/Passes/Plugins/TestPlugin.h
    llvm/unittests/Passes/Plugins/TestPlugin/CMakeLists.txt
    llvm/unittests/Passes/Plugins/TestPlugin/TestPlugin.cpp

Modified: 
    llvm/unittests/Passes/CMakeLists.txt

Removed: 
    llvm/unittests/Passes/DoublerPlugin.cpp
    llvm/unittests/Passes/PassBuilderBindingsTest.cpp
    llvm/unittests/Passes/PluginsTest.cpp
    llvm/unittests/Passes/TestPlugin.cpp
    llvm/unittests/Passes/TestPlugin.h


################################################################################
diff  --git a/llvm/unittests/Passes/CMakeLists.txt b/llvm/unittests/Passes/CMakeLists.txt
index 54bf67b39c1e7..e96a4e12b94b0 100644
--- a/llvm/unittests/Passes/CMakeLists.txt
+++ b/llvm/unittests/Passes/CMakeLists.txt
@@ -1,43 +1,8 @@
-# Needed by LLVM's CMake checks because this file defines multiple targets.
-set(LLVM_OPTIONAL_SOURCES PluginsTest.cpp TestPlugin.cpp DoublerPlugin.cpp PassBuilderBindingsTest.cpp)
-
-# The plugin expects to not link against the Support and Core libraries,
-# but expects them to exist in the process loading the plugin. This doesn't
-# work with DLLs on Windows (where a shared library can't have undefined
-# references), so just skip this testcase on Windows.
-if (NOT WIN32)
-  # On AIX, enable run-time linking to allow symbols from the plugins shared
-  # objects to be properly bound.
-  if(CMAKE_SYSTEM_NAME STREQUAL "AIX")
-    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-brtl")
-  endif()
-  set(LLVM_LINK_COMPONENTS Support Passes Core AsmParser)
-  add_llvm_unittest(PluginsTests
-    PluginsTest.cpp
-    )
-  export_executable_symbols_for_plugins(PluginsTests)
-  target_link_libraries(PluginsTests PRIVATE LLVMTestingSupport)
-
-  set(LLVM_LINK_COMPONENTS)
-  foreach(PLUGIN TestPlugin DoublerPlugin)
-    add_llvm_library(${PLUGIN} MODULE BUILDTREE_ONLY ${PLUGIN}.cpp)
-
-    # Put PLUGIN next to the unit test executable.
-    set_output_directory(${PLUGIN}
-      BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
-      LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
-      )
-    set_target_properties(${PLUGIN} PROPERTIES FOLDER "Tests")
-
-    add_dependencies(${PLUGIN} intrinsics_gen)
-    add_dependencies(PluginsTests ${PLUGIN})
-  endforeach()
-
+# On AIX, enable run-time linking to allow symbols from the plugins shared
+# objects to be properly bound.
+if(CMAKE_SYSTEM_NAME STREQUAL "AIX")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-brtl")
 endif()
 
-set(LLVM_LINK_COMPONENTS Support Passes Core Target native AllTargetsInfos)
-add_llvm_unittest(PassesBindingsTests
-	PassBuilderBindingsTest.cpp
-	)
-target_link_libraries(PassesBindingsTests PRIVATE LLVMTestingSupport)
-
+add_subdirectory(PassBuilderBindings)
+add_subdirectory(Plugins)

diff  --git a/llvm/unittests/Passes/PassBuilderBindings/CMakeLists.txt b/llvm/unittests/Passes/PassBuilderBindings/CMakeLists.txt
new file mode 100644
index 0000000000000..e3b2ecee6313a
--- /dev/null
+++ b/llvm/unittests/Passes/PassBuilderBindings/CMakeLists.txt
@@ -0,0 +1,5 @@
+set(LLVM_LINK_COMPONENTS Support Passes Core Target native AllTargetsInfos)
+add_llvm_unittest(PassesBindingsTests
+PassBuilderBindingsTest.cpp
+)
+target_link_libraries(PassesBindingsTests PRIVATE LLVMTestingSupport)

diff  --git a/llvm/unittests/Passes/PassBuilderBindingsTest.cpp b/llvm/unittests/Passes/PassBuilderBindings/PassBuilderBindingsTest.cpp
similarity index 100%
rename from llvm/unittests/Passes/PassBuilderBindingsTest.cpp
rename to llvm/unittests/Passes/PassBuilderBindings/PassBuilderBindingsTest.cpp

diff  --git a/llvm/unittests/Passes/Plugins/CMakeLists.txt b/llvm/unittests/Passes/Plugins/CMakeLists.txt
new file mode 100644
index 0000000000000..5094adb2b5dc1
--- /dev/null
+++ b/llvm/unittests/Passes/Plugins/CMakeLists.txt
@@ -0,0 +1,16 @@
+# The plugin expects to not link against the Support and Core libraries,
+# but expects them to exist in the process loading the plugin. This doesn't
+# work with DLLs on Windows (where a shared library can't have undefined
+# references), so just skip this testcase on Windows.
+if (NOT WIN32)
+  set(LLVM_LINK_COMPONENTS Support Passes Core AsmParser)
+  add_llvm_unittest(PluginsTests
+    PluginsTest.cpp
+    )
+  export_executable_symbols_for_plugins(PluginsTests)
+  target_link_libraries(PluginsTests PRIVATE LLVMTestingSupport)
+
+  unset(LLVM_LINK_COMPONENTS)
+  add_subdirectory(TestPlugin)
+  add_subdirectory(DoublerPlugin)
+endif()

diff  --git a/llvm/unittests/Passes/Plugins/DoublerPlugin/CMakeLists.txt b/llvm/unittests/Passes/Plugins/DoublerPlugin/CMakeLists.txt
new file mode 100644
index 0000000000000..6a83b890f3730
--- /dev/null
+++ b/llvm/unittests/Passes/Plugins/DoublerPlugin/CMakeLists.txt
@@ -0,0 +1,13 @@
+add_llvm_library(DoublerPlugin MODULE BUILDTREE_ONLY DoublerPlugin.cpp)
+
+# Put PLUGIN next to the unit test executable.
+set_output_directory(DoublerPlugin
+    BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/../
+    LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/../
+    )
+set_target_properties(DoublerPlugin PROPERTIES FOLDER "Tests")
+
+# The plugin depends on some of the output files of intrinsics_gen, so make sure
+# it is built before the plugin.
+add_dependencies(DoublerPlugin intrinsics_gen)
+add_dependencies(PluginsTests DoublerPlugin)

diff  --git a/llvm/unittests/Passes/DoublerPlugin.cpp b/llvm/unittests/Passes/Plugins/DoublerPlugin/DoublerPlugin.cpp
similarity index 100%
rename from llvm/unittests/Passes/DoublerPlugin.cpp
rename to llvm/unittests/Passes/Plugins/DoublerPlugin/DoublerPlugin.cpp

diff  --git a/llvm/unittests/Passes/PluginsTest.cpp b/llvm/unittests/Passes/Plugins/PluginsTest.cpp
similarity index 100%
rename from llvm/unittests/Passes/PluginsTest.cpp
rename to llvm/unittests/Passes/Plugins/PluginsTest.cpp

diff  --git a/llvm/unittests/Passes/TestPlugin.h b/llvm/unittests/Passes/Plugins/TestPlugin.h
similarity index 100%
rename from llvm/unittests/Passes/TestPlugin.h
rename to llvm/unittests/Passes/Plugins/TestPlugin.h

diff  --git a/llvm/unittests/Passes/Plugins/TestPlugin/CMakeLists.txt b/llvm/unittests/Passes/Plugins/TestPlugin/CMakeLists.txt
new file mode 100644
index 0000000000000..bce5e1fe3f838
--- /dev/null
+++ b/llvm/unittests/Passes/Plugins/TestPlugin/CMakeLists.txt
@@ -0,0 +1,13 @@
+add_llvm_library(TestPlugin MODULE BUILDTREE_ONLY TestPlugin.cpp)
+
+# Put PLUGIN next to the unit test executable.
+set_output_directory(TestPlugin
+    BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/../
+    LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/../
+    )
+set_target_properties(TestPlugin PROPERTIES FOLDER "Tests")
+
+# The plugin depends on some of the output files of intrinsics_gen, so make sure
+# it is built before the plugin.
+add_dependencies(TestPlugin intrinsics_gen)
+add_dependencies(PluginsTests TestPlugin)

diff  --git a/llvm/unittests/Passes/TestPlugin.cpp b/llvm/unittests/Passes/Plugins/TestPlugin/TestPlugin.cpp
similarity index 97%
rename from llvm/unittests/Passes/TestPlugin.cpp
rename to llvm/unittests/Passes/Plugins/TestPlugin/TestPlugin.cpp
index edc71aaf3ff07..f9623b700172a 100644
--- a/llvm/unittests/Passes/TestPlugin.cpp
+++ b/llvm/unittests/Passes/Plugins/TestPlugin/TestPlugin.cpp
@@ -9,7 +9,7 @@
 #include "llvm/Passes/PassBuilder.h"
 #include "llvm/Passes/PassPlugin.h"
 
-#include "TestPlugin.h"
+#include "../TestPlugin.h"
 
 using namespace llvm;
 


        


More information about the llvm-commits mailing list